Difference between revisions of "TypeScripts - Old Content"

From Wiki
Jump to navigation Jump to search
(some cleanup and more hints)
(Oops, forgot to log in and deleted too much...)
Line 18: Line 18:
  
 
% mapping from PostScript name (or visible font name, if it's a TrueType font) to TFM file name
 
% mapping from PostScript name (or visible font name, 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
 
\starttypescript [serif] [gentium, gentium-alt] [\defaultencoding] % mapping is used by two "name" typescripts
 
\definefontsynonym [GentiumAlt-Italic] [\defaultencoding-genai101][encoding=\defaultencoding]
 
\definefontsynonym [GentiumAlt-Italic] [\defaultencoding-genai101][encoding=\defaultencoding]
Line 80: Line 82:
 
% and then use that data within the typescript:
 
% and then use that data within the typescript:
 
\starttypescript  [map]  [gentium] [ec,texnansi,8r,t5,t2a,t2b,qx]
 
\starttypescript  [map]  [gentium] [ec,texnansi,8r,t5,t2a,t2b,qx]
  \loadmapfile   [\typescripttwo-sil-gentium.map]
+
\loadmapfile [\typescriptthree-sil-gentium.map]
 
\stoptypescript
 
\stoptypescript
  
 
% We use the same technique. As the encoding variable shows up in the third
 
% We use the same technique. As the encoding variable shows up in the third
 
% argument, we use \typescriptthree.
 
% argument, we use \typescriptthree.
% The second argument means that these names are loaded with either the 'gentium'
+
\starttypescript  [serif] [gentium] [ec,texnansi,8r,t5,t2a,t2b,qx]
% or 'gentium-alt' names.
+
\definefontsynonym [GentiumAlt-Italic] [\typescriptthree-genai101][encoding=\typescriptthree]
\starttypescript  [serif] [gentium,gentium-alt] [ec,texnansi,8r,t5,t2a,t2b,qx]
+
\definefontsynonym [GentiumAlt] [\typescriptthree-genar101][encoding=\typescriptthree]
  \definefontsynonym [GentiumAlt-Italic] [\typescriptthree-genai101][encoding=\typescriptthree]
+
\definefontsynonym [Gentium-Italic] [\typescriptthree-geni101] [encoding=\typescriptthree]
  \definefontsynonym [GentiumAlt]       [\typescriptthree-genar101][encoding=\typescriptthree]
+
\definefontsynonym [Gentium] [\typescriptthree-genr101] [encoding=\typescriptthree]
  \definefontsynonym [Gentium-Italic]   [\typescriptthree-geni101] [encoding=\typescriptthree]
 
  \definefontsynonym [Gentium]           [\typescriptthree-genr101] [encoding=\typescriptthree]
 
 
\stoptypescript
 
\stoptypescript
  
 
% Getting fancy: occasionally you want to access alternates from the main font:
 
% Getting fancy: occasionally you want to access alternates from the main font:
\starttypescript  [serif] [gentium]      [name] % We use the new (and fast loading) font fallbacks to cover bold markup.
+
\starttypescript  [serif] [gentium]      [name]
 +
\setups            [font:fallback:serif] % We use the new (and 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 a (subtle) font switch:
+
% markup of \Var[alt] results in a (subtle) font switch (Gentium's alternate glyphs change only some diacritics):
  \definefontvariant [Serif] [alt] [Alt]
+
\definefontvariant [Serif] [alt] [Alt]
% unfortunately you need to define eight synonyms to handle the fallback cases:
+
% unfortunately you need to define eight synonyms to handle the fallback cases:
  \definefontsynonym [SerifRegular]       [Serif]
+
\definefontsynonym [SerifRegular] [Serif]
  \definefontsynonym [SerifRegularAlt]     [GentiumAlt] % you must define "Regular" for every additional variant
+
\definefontsynonym [SerifRegularAlt] [GentiumAlt] % you must define "Regular" for every additional variant
  \definefontsynonym [SerifBoldAlt]       [GentiumAlt]
+
\definefontsynonym [SerifBoldAlt] [GentiumAlt]
  \definefontsynonym [SerifCapsAlt]       [GentiumAlt]
+
\definefontsynonym [SerifCapsAlt] [GentiumAlt]
  \definefontsynonym [SerifItalicAlt]     [GentiumAlt-Italic]
+
\definefontsynonym [SerifItalicAlt] [GentiumAlt-Italic]
  \definefontsynonym [SerifSlantedAlt]     [GentiumAlt-Italic]
+
\definefontsynonym [SerifSlantedAlt] [GentiumAlt-Italic]
  \definefontsynonym [SerifBoldItalicAlt] [GentiumAlt-Italic]
+
\definefontsynonym [SerifBoldItalicAlt] [GentiumAlt-Italic]
  \definefontsynonym [SerifBoldSlantedAlt] [GentiumAlt-Italic]
+
\definefontsynonym [SerifBoldSlantedAlt] [GentiumAlt-Italic]
 
\stoptypescript
 
\stoptypescript
  
Line 113: Line 121:
 
% here we define only the serif (rm) version.
 
% here we define only the serif (rm) version.
 
\starttypescript  [sil-gentium] [ec,texnansi,8r,t5,t2a,t2b,qx]
 
\starttypescript  [sil-gentium] [ec,texnansi,8r,t5,t2a,t2b,qx]
  \definetypeface  [sil-gentium] [rm] [serif] [gentium] [default] [encoding=\typescripttwo]
+
\definetypeface  [sil-gentium] [rm] [serif] [gentium] [default] [encoding=\typescripttwo]
% \definetypeface  [sil-gentium] [ss] [sans]  [default] [default] [encoding=\typescripttwo]
+
% \definetypeface  [sil-gentium] [ss] [sans]  [default] [default] [encoding=\typescripttwo]
% \definetypeface  [sil-gentium] [tt] [mono]  [default] [default] [encoding=\typescripttwo]
+
% \definetypeface  [sil-gentium] [tt] [mono]  [default] [default] [encoding=\typescripttwo]
% \definetypeface  [sil-gentium] [mm] [math]  [default] [default] [encoding=\typescripttwo]
+
% \definetypeface  [sil-gentium] [mm] [math]  [default] [default] [encoding=\typescripttwo]
 
\stoptypescript
 
\stoptypescript
  

Revision as of 12:53, 20 November 2005

< Fonts >

Typescripts are the ConTeXt way of using fonts and defining font families.

Basics

Sample typescript for the free text font Gentium. Installation instructions are at Installing a TrueType font, step by step. A typescript must live in your project folder or in another folder in your ConTeXt path (e.g., (texmf)/tex/context/user)

% 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, 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-Italic]	[\defaultencoding-genai101][encoding=\defaultencoding]
	\definefontsynonym	[GentiumAlt]	[\defaultencoding-genar101][encoding=\defaultencoding]
	\definefontsynonym	[Gentium-Italic]	[\defaultencoding-geni101][encoding=\defaultencoding]
	\definefontsynonym	[Gentium]	[\defaultencoding-genr101][encoding=\defaultencoding]
\stoptypescript

% mapping from generic family name to PostScript name
\starttypescript	[serif]	[gentium]	[name]
	\definefontsynonym	[Serif]	[Gentium]
	\definefontsynonym	[SerifItalic]	[Gentium-Italic]
\stoptypescript

% additional mapping to alternate glyphs, not further used
\starttypescript	[serif]	[gentium-alt]	[name]
	\definefontsynonym	[Serif]	[GentiumAlt]
	\definefontsynonym	[SerifItalic]	[GentiumAlt-Italic]
\stoptypescript

% sample family definition
% here we define only the serif (rm) version.
\starttypescript	[my]	[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

The multiple mapping is not strictly needed, but increases flexibility.

To use your new typescript, write the following in your environment file (or single TeX file):

\setupencoding[default=ec] % defines \defaultencoding
\usetypescriptfile[type-sil-gentium]
\usetypescript[my][sil-gentium]
\setupbodyfont	[sil-gentium, rm, 12pt]

\setupbodyfontenvironment[default]	[em=italic] % slanted is default emphasize in ConTeXt

The map file was written by texfont and lives in (texmf)/fonts/map/pdftex/context. It combines raw TFM (metrics), PostScript name, font file and encoding

% ec-sil-gentium.map
ec-raw-genai101 GentiumAlt-Italic 4 < genai101.pfb ec.enc
ec-raw-genar101 GentiumAlt 4 < genar101.pfb ec.enc
ec-raw-geni101 Gentium-Italic 4 < geni101.pfb ec.enc
ec-raw-genr101 Gentium 4 < genr101.pfb ec.enc

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:

% 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]
\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 [GentiumAlt-Italic]	[\typescriptthree-genai101][encoding=\typescriptthree]
	\definefontsynonym [GentiumAlt]	[\typescriptthree-genar101][encoding=\typescriptthree]
	\definefontsynonym [Gentium-Italic]	[\typescriptthree-geni101] [encoding=\typescriptthree]
	\definefontsynonym [Gentium]		[\typescriptthree-genr101] [encoding=\typescriptthree]
\stoptypescript

% Getting fancy: occasionally you want to access alternates from the main font:
\starttypescript  [serif] [gentium]      [name]
	\setups             [font:fallback:serif] % We use the new (and 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 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 (rm) 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

Links