Changes

Jump to navigation Jump to search
no edit summary
< [[Fonts]] >Typescripts are the ConTeXt way of using fonts and defining font families.
Typescripts are Beware, the ConTeXt way of using fonts and defining font familiesexamples on this page work only with MkII / pdfTeX (i.e. neither XeTeX nor LuaTeX).
==Basics==
Sample typescript for the free text font [http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=Gentium Gentium].Installation instructions are at [[Installing a TrueType font, step by step - Old Content]].A typescript must live in your project folder or in another folder in your ConTeXt path (e.g., <tt>(texmf)/tex/context/user</tt>)
<texcode>
% type-sil-gentium.tex
% Typescript for serif family SIL Gentium
% load mapfile
 \starttypescript [map] [gentium] [\defaultencoding] \loadmapfile [\defaultencoding-sil-gentium.map]
\stoptypescript
% mapping from PostScript name (or visible font name, this is if it's a TrueType font) to TFM file name% The second argument means that these names are loaded with either the 'gentium'% or 'gentium-alt' names. \starttypescript [serif] [gentium,gentium-alt] [\defaultencoding]% mapping is used by two "name" typescripts \definefontsynonym [GentiumAlt-ItalicGentium] [\defaultencoding-genai101genr101] [encoding=\defaultencoding] \definefontsynonym [GentiumAltGentium-Italic] [\defaultencoding-genar101geni101] [encoding=\defaultencoding] \definefontsynonym [Gentium-ItalicGentiumAlt] [\defaultencoding-geni101genar101][encoding=\defaultencoding] \definefontsynonym [GentiumGentiumAlt-Italic] [\defaultencoding-genr101genai101][encoding=\defaultencoding]
\stoptypescript
% mapping from generic family name to PostScript name
 \starttypescript [serif] [gentium] [name] \definefontsynonym [SerifBookSerif] [Gentium] \definefontsynonym [SerifBookItalicSerifItalic] [Gentium-Italic]
\stoptypescript
% additional mapping to alternate glyphs, not further used
 \starttypescript [serif] [gentium-alt] [name] \usetypescript [serif] [gentium] [\defaultencoding] % use font name mapping \definefontsynonym [SerifBookSerif] [GentiumAlt] \definefontsynonym [SerifBookItalicSerifItalic] [GentiumAlt-Italic]
\stoptypescript
% sample family definition
% here we define only the serif (rm) version.
 \starttypescript [fiee] [sil-gentium] \definetypeface [sil-gentium] [rm] [serif] [gentium] [default][encoding=\defaultencoding]% \definetypeface [sil-gentium] [ss] [sans] [default] [default][encoding=\defaultencoding]% \definetypeface [sil-gentium] [tt] [mono] [default] [default][encoding=\defaultencoding]% \definetypeface [sil-gentium] [mm] [math] [default] [default][encoding=\defaultencoding]
\stoptypescript
</texcode>
The multiple mapping is not strictly needed, but increases flexibility. To use ityour new typescript, write the following in your environment file (or single TeX file):
<texcode>
\setupencoding[default=ec] % defines \defaultencoding
 
\usetypescriptfile[type-sil-gentium]
\usetypescript[fiee][sil-gentium]
\setupbodyfont [sil-gentium, rm, 12pt]
\usetypescript[sil-gentium]\setupbodyfont[sil-gentium,rm,12pt] \setupbodyfontenvironment[default] [em=italic] % slanted is default emphasize in ConTeXt</texcode> The map file was written by [[texfont]] and lives in <tt>(texmf)/fonts/map/pdftex/context</tt>.It combines raw TFM (metrics), PostScript name, font file and encoding<texcode>% ec-sil-gentium.mapec-raw-genai101 GentiumAlt-Italic 4 < genai101.pfb ec.encec-raw-genar101 GentiumAlt 4 < genar101.pfb ec.encec-raw-geni101 Gentium-Italic 4 < geni101.pfb ec.encec-raw-genr101 Gentium 4 < genr101.pfb ec.enc
</texcode>
==The next step: making it more generic== If you'd like to write a typescript that handles many more encodings, somewhat more generically, here is one model to build upon:<texcode>% type-sil-gentium.tex% Typescript for serif family SIL Gentium % This is the first change we need to make: we list all the encodings it can match,% and then use that data within the typescript: \starttypescript [map] [gentium] [ec,texnansi,8r,t5,t2a,t2b,qx] \loadmapfile [\typescriptthree-sil-gentium.map file was written by ]\stoptypescript % We use the same technique. As the encoding variable shows up in the third% argument, we use \typescriptthree. \starttypescript [serif] [gentium] [ec,texnansi,8r,t5,t2a,t2b,qx] \definefontsynonym [Gentium] [\typescriptthree-genr101] [encoding=\typescriptthree] \definefontsynonym [Gentium-Italic] [\typescriptthree-geni101] [encoding=\typescriptthree] \definefontsynonym [GentiumAlt] [\typescriptthree-genar101][encoding=\typescriptthree] \definefontsynonym [GentiumAlt-Italic] [\typescriptthree-genai101][encoding=\typescriptthree]\stoptypescript % Getting fancy: occasionally you want to access alternates from the main font: \starttypescript [serif] [gentium] [texfontname] \setups [font:fallback:serif] % We use the new (and lives fast loading) font fallbacks to cover bold markup. \definefontsynonym [Serif] [Gentium] \definefontsynonym [SerifItalic] [Gentium-Italic] % Gentium contains only two faces, so we map everything else on Italic \definefontsynonym [SerifSlanted] [SerifItalic] \definefontsynonym [SerifBoldItalic] [SerifItalic] \definefontsynonym [SerifCaps] [SerifItalic] \definefontsynonym [SerifBoldCaps] [SerifItalic] % markup of \Var[alt] results in <tt>a (subtle) font switch (Gentium's alternate glyphs change only some diacritics): \definefontvariant [Serif] [alt] [Alt] % unfortunately you need to define eight synonyms to handle the fallback cases: \definefontsynonym [SerifRegular] [Serif] \definefontsynonym [SerifRegularAlt] [GentiumAlt] % you must define "Regular" for every additional variant \definefontsynonym [SerifBoldAlt] [GentiumAlt] \definefontsynonym [SerifCapsAlt] [GentiumAlt] \definefontsynonym [SerifItalicAlt] [GentiumAlt-Italic] \definefontsynonym [SerifSlantedAlt] [GentiumAlt-Italic] \definefontsynonym [SerifBoldItalicAlt] [GentiumAlt-Italic] \definefontsynonym [SerifBoldSlantedAlt] [GentiumAlt-Italic]\stoptypescript % sample family definition% here we define only the serif (texmfrm)/fonts/map/pdftex/context</version. \starttypescript [sil-gentium] [ec,texnansi,8r,t5,t2a,t2b,qx] \definetypeface [sil-gentium] [rm] [serif] [gentium] [default] [encoding=\typescripttwo]% \definetypeface [sil-gentium] [ss] [sans] [default] [default] [encoding=\typescripttwo]% \definetypeface [sil-gentium] [tt>] [mono] [default] [default] [encoding=\typescripttwo]% \definetypeface [sil-gentium] [mm] [math] [default] [default] [encoding=\typescripttwo]\stoptypescript
</texcode>
==Links==
* [http://www.pragma-ade.com/general/manuals/showfont.pdf examples of using typescripts] by Pragma
* Sample of [http://wwwwiki.rammcontextgarden.chnet/fiee/texnique/?menu=0-1-4&amp;lang=en example exljbris_typescript MkIV typescripts] for free and commercial exljbris fonts, by Hraban (partly outdated)]
* typescripts for some fonts from the FontSite500 CD on the [[Font Site]] page, by Holger Schöner
* typescripts for lazy font combinations on the [[Flexi Face]] page
* some pointers on extending typescripts to accommodate access to &ldquo;variants,&rdquo; like old-style figures, are on the [[Font Variants]] page
* [[Fonts in XeTeX- Old Content]] gives some details about the [[XeTeX]]-specific typescripts in <tt>type-xtx</tt> [[Category:Old Content]]

Navigation menu