Changes

Jump to navigation Jump to search
3,272 bytes added ,  11:50, 1 September 2010
m
modify a (opentype) font at runtime
(This page was written and tested under ConTeXt ver: 2010.08.20 00:00 MKIV)

Recently there was the question how to modify a font at runtime.
For OpenType fonts Khaled recalled an article he wrote in fontspec manual
(section 11) about font feature files: you just load the feature file with featurefile=foo in your font features definition.

This is an example on how missing ligatures can be used:

\definefontfeature[thetimes][default][mode=node,featurefile=times_fl.fea]
\starttypescript [serif] [TimesNR] [name]
\setups[font:fallback:serif]
\definefontsynonym [Serif] [file:Times New Roman.ttf] [features=thetimes]
\definefontsynonym [SerifBold] [file:Times New Roman Bold.ttf] [features=thetimes]
\definefontsynonym [SerifItalic] [file:Times New Roman Italic.ttf] [features=thetimes]
\definefontsynonym [SerifBoldItalic][file:Times New Roman Bold Italic.ttf][features=thetimes]
\stoptypescript

\starttypescript[TimesNR]
\definetypeface [TimesNR] [rm] [serif] [TimesNR] [default]
\stoptypescript

\starttypescript[TheTimes]
\definetypeface [TheTimes] [rm] [serif] [TimesNR] [default]
\stoptypescript

\mainlanguage[de]
\usetypescript[TheTimes]
\setupbodyfont[TheTimes, 10pt]

\starttext

Hoffnung finden: fliegen

\stoptext

The feature file that is used "times_fl.fea" looks like this:

lookup fligatures { lookupflag 0;
sub \f \i by \fi;
sub \f \l by \fl; } fligatures;
feature liga { script DFLT;
language dflt ; lookup fligatures;
script latn; language dflt ;
lookup fligatures; } liga;


This is another example showing how improved kerning can be added to the font via feature files:

\definefontfeature[thetimes][default][mode=node,featurefile=times_kern.fea]
\starttypescript [serif] [TimesNR] [name]
\setups[font:fallback:serif]
\definefontsynonym [Serif] [file:Times New Roman.ttf] [features=thetimes]
\definefontsynonym [SerifBold] [file:Times New Roman Bold.ttf] [features=thetimes]
\definefontsynonym [SerifItalic] [file:Times New Roman Italic.ttf] [features=thetimes]
\definefontsynonym [SerifBoldItalic][file:Times New Roman Bold Italic.ttf][features=thetimes]
\stoptypescript

\starttypescript[TimesNR]
\definetypeface [TimesNR] [rm] [serif] [TimesNR] [default]
\stoptypescript

\starttypescript[TheTimes]
\definetypeface [TheTimes] [rm] [serif] [TimesNR] [default]
\stoptypescript

\mainlanguage[de]
\usetypescript[TheTimes]
\setupbodyfont[TheTimes, 10pt]

\starttext

„W

\stoptext

The feature file that is used here "times_kern.fea" looks like this:
lookup MyKerns {
lookupflag 0;
pos \quotedblbase \W -150;
} MyKerns;

feature kern {
script DFLT;
language dflt ;
lookup MyKerns;
script latn;
language dflt ;
lookup MyKerns;
} kern;


These font features are loaded in the font cache.

Thus, for experimenting and eg. changing the value "-150" one must clear the cache between two runs: mtxrun --script cache --erase

For example when running context minimal in Mac you just enter in Terminal:

source /Users/YourName/context/tex/setuptex /Users/YourName/context/tex
mtxrun --script cache --erase
47

edits

Navigation menu