Вы находитесь на странице: 1из 7

TUGboat, Volume  (), No.

 

In different files Within one OpenType file


Fonts weight (light, black) kerning (VAVAV vs. VAVAV)
width (abc vs. abc) ligatures (fi vs. fi)
The installation and use of OpenType fonts in LATEX optical size figure style ( vs. 1234)
variant (e.g. italics) S C
John D. Owens
Abstract Table : Font features provided by different OpenType files (left)
and within a single OpenType file (right).
The emerging file standard in digital typography is the
OpenType font standard, jointly developed by Microsoft
and Adobe. OpenType fonts are natively supported by segments typeset in Adobe’s OpenType Myriad Pro, using
several popular operating systems and have many fea- the following LATEX commands:
tures and advantages that make them desirable for high-
\usepackage{minion}
quality typography. However, OpenType fonts are not
\usepackage[tt,sf,lining,scale=0.92]{myriad}
natively supported by the standard TEX engine. This ar-
ticle is a practical guide to installing OpenType fonts for What are the different typeface alternatives that can be
use as text fonts in LATEX. part of our font family? (Gelderman provides an intro-
The steps to install an OpenType font for use in LATEX duction to typeface characteristics [].) We can group
are: possible alternatives into several broad categories, and
. For each OpenType font file, and for each combina- then indicate how OpenType handles each category.
tion of attributes for that font file, generate and in- Our first four categories are weight, width, optical
stall font metric and encoding files. size, and variant. The weight of a typeface refers to the
thickness of the strokes that constitute its glyphs. A font
. Next, for each font family, generate and install a font
designer may also vary a typeface’s width relative to its
description (.fd) file that maps LATEX font selection
height. The major advantage of vector font formats (such
commands to the installed font files.
as OpenType, PostScript Type , and TrueType) is their
. Finally, write and install a style (.sty) file that allows ability to be scaled to any size. However, type designers
the user to select the font and its options for use have found that the most visually appealing fonts are ones
within TEX. that are designed for a particular size range, called an op-
We begin by discussing font background, the TEX font tical size. Finally, the standard upright “roman” style for
handling scheme, and existing font tools, then describe fonts is not the only possible style. Font users may also
each of the three steps above in detail. desire italic or oblique or outline forms of a particular
typeface, which together are termed variants. In LATEX’s
 Font basics and font families
New Font Selection Scheme (NFSS), the combination of
The advanced typographic features of the OpenType font weight and width is called series and the variant is called
format have motivated its widespread use in a variety of shape; we use this terminology in Section ..
demanding applications. Before we dive into supporting In OpenType, each unique combination of weight,
OpenType in TEX, however, let’s take a step back and look width, optical size, and variant is associated with a sep-
at our eventual goal. As a TEX user, we are less inter- arate font file. As an example, the Adobe Kepler type-
ested in using just a single font with a single set of options face has several alternatives in each of these categories.
and more interested in using a font family: a collection of Kepler features six weights (light, regular, medium, semi-
compatible font variants, usually from the same typeface, bold, bold, and black), each with four widths (condensed,
that can be used together. For instance, we might want to semicondensed, regular, and extended). Most of Kepler’s
group together a plain and an italic form of a particular combinations of weight and width feature four optical
typeface into a family. We might want to make small caps sizes (from smallest to largest, caption, regular, subhead,
available in our family as well, or perhaps incorporate and display), and each weight-width-optical-size combi-
several different weights or optical sizes. Once we have nation has both an upright and italic variant. Thus it is lit-
defined our font family, we would then like to ask TEX to tle wonder that Kepler’s many combinations require 
enable the entire family with a single command. As an ex- different OpenType files. And after we catch our breath to
ample, this document is typeset in an Adobe OpenType consider all the typographical options already available to
Minion Pro font family with old-style figures, with code us, we dive into a single OpenType file to find still more
options.
Editor’s note: Due to the nature of this article, it is typeset in
the Adobe Minion and Adobe Myriad typefaces. We thank Adobe for In addition to the categories that require different
permission to use these fonts in both the print and web publications. files, the OpenType font format also allows a single font
 TUGboat, Volume  (), No. 

file to specify a variety of other features. Not all of these In this article, we use the “” encoding, an alter-
features are currently supported in TEX, but many of them native to  developed by  that is well-suited
are. For instance, the kerning feature adjusts the spaces for Type--flavored fonts. (Among other advan-
between pairs of glyphs. Enabling ligatures replaces pairs tages, the  encoding maps directly to Adobe’s
of glyphs like ‘f ’ and ‘i’ with a single ‘fi’ glyph. Besides font encoding and thus requires no virtual fonts.)
kerning and ligatures, the two classes of OpenType fea- MAP Finally, the map files tie the above files together.
tures that we cover in this article are the choice of figure map files (and map file formats) are specific to
styles (for example, old-style [] vs. lining [01234]) output drivers and associate tfm and Type  font
and S C. names with pfb files, which contain the shapes of
Table  summarizes the features provided by differ- glyphs in those fonts.
ent OpenType files and within an OpenType file. With Only when these files have been properly installed for a
this overview of the many typeface alternatives that we particular font, and system databases updated, can TEX
would like to assemble into families, we can turn to how then typeset glyphs from that font in a document.
TEX interacts with fonts. Writing all these files by hand would be both tedious
 TEX font handling and error-prone, so two excellent pieces of software have
automated the font installation process.
In modern operating systems such as Microsoft Win-
• fontinst [], by Alan Jeffrey, Rowland McDonnell,
dows and Apple Mac OS X, applications that use Open-
and Lars Hellström, automates the installation of
Type fonts can read font information directly from the
PostScript Type  fonts into TEX. Philipp Lehman’s
OpenType file. TEX, on the other hand, stores font infor-
font installation guide [] is an outstanding tutorial
mation in a variety of files, and the complexity of creating
for fontinst.
and installing these files is the major reason that font han-
dling has traditionally been a tricky task in TEX. However, fontinst does not offer access to Open-
The OpenType font format can contain font data in Type features. Also, fontinst scripts are written in
either of two formats, Adobe PostScript Type  or True- TEX, and are challenging for non-experts to write
Type. In this section we describe the font files that are and use.
associated with Type  and Type--flavored OpenType • Eddie Kohler’s otftotfm [], part of his LCDF Type-
fonts. To support a Type  font, TEX requires the fol- tools suite, creates and installs the required TEX files
lowing files, each with its own function, with file loca- (tfm, pfb, vf, enc, and map) from OpenType font
tions specified by the TEX Directory Structure standard. files. Note that otftotfm generates PostScript Type
More detailed descriptions of these formats can be found  fonts from OpenType; please ensure that the legal
in Alan Hoenig’s TEX Unbound [] and Chapter  of the license for your fonts allows such a format conver-
second edition of The LATEX Companion []. sion. otftotfm is a command-line tool that accepts a
set of options and applies them to a single OpenType
TFM “TEX Font Metrics” (tfm) files describe the dimen-
font file.
sions of each character (glyph), along with a few
Section  describes two tools built around otfto-
font-wide parameter, which together are used by
tfm that both automate calls to otftotfm across mul-
TEX to perform layout.
tiple font options and also create the necessary TEX
PFB For Type  fonts, “Printer Font Binary” (pfb) files fd and sty support files.
contain Adobe PostScript Type  procedures that
In this article, we focus on otftotfm as the underlying
describe the shape of each glyph. These procedures
tool that translates OpenType fonts into a TEX-readable
are included by the output driver (for example, the
form. We also focus on the procedure for setting up text
dvips or pdftex program) in the output file (for ex-
fonts. The setup for math fonts requires additional com-
ample, PostScript or PDF).
mands described in Chapter .. of The LATEX Com-
VF “Virtual Font” files provide a mapping between the panion []. The next section outlines how otftotfm in-
glyphs in the tfm files and the glyph order used by stalls OpenType fonts, and the remainder of the article
TEX (which is, in turn, specified with the encoding describes how to extend otftotfm to handle multiple font
file, below). They are not needed for all fonts. files and font families and how to make the installed fonts
ENC Encoding files specify an ordering of glyphs called available to TEX users.
the “font-encoding vector”. While typeset docu-
ments in English might require only the glyphs  OpenType to TEX
in TEX’s default “” font-encoding vector (used The first step in making OpenType fonts available to TEX
by Computer Modern Roman, for example), other users is to deposit the various font files into the TEX in-
languages or scripts need more or different glyphs. stallation for each variant in the font family. We begin by
TUGboat, Volume  (), No.  

showing how otftotfm installs a single font, using Adobe  Font description (fd) files
Minion Pro’s Semibold Italic font as an example. A font description file is a TEX source file that maps in-
otftotfm -a -e texnansx -fonum -fkern -fliga \ stalled font file names to font attributes as used in (LA)TEX.
MinionPro-SemiboldIt.otf \ Typically, each font family is described by a single fd file.
LY1-MinionPro-SemiboldIt-onum As we previously mentioned, these techniques are appli-
cable to text fonts; math fonts require additional com-
Let’s analyze this example. -a is the magic “auto- mands [].
matic” flag, automatically installing the relevant TEX font Only two TEX commands are necessary in an fd file.
files from Section  (tfm, pfb, vf, enc, and map) into their The first declares a font family, and the second declares
proper locations within the TEX directories. -e texnansx a specific font within that font family. We’ll look at them
specifies the encoding file for the  encoding. Three one at a time.
OpenType features (old-style numerals, kerning, and lig-
atures) are requested with the -f flags, and the final two . \DeclareFontFamily
arguments are the names of the OpenType input font file
The \DeclareFontFamily command indicates that a certain
and the output font name. The otftotfm manual explains
font family is available in a certain encoding scheme. The
these options in detail, and also enumerates available
names of encoding schemes are fixed (as mentioned be-
OpenType features [].
fore, we use  in this paper), but the name of the font
Extending otftotfm to more input fonts and more
family is arbitrary. The most well-known naming scheme
variants is straightforward: simply call otftotfm for each
is Karl Berry’s fontname scheme [], which concatenates
and every combination of desired features. For complex
a unique three-letter code for each typeface with a one-
variant combinations and fully featured font families, the
letter suffix that indicates the font family (Section .).
number of calls to otftotfm can exceed many hundreds.
(This naming scheme is required when using nfssext.sty,
The tools described in Section  automate this process.
described in the next section.)
LCDF’s otfinfo tool [] can identify the supported
Let us continue with the Minion-Pro-with-old-style-
OpenType features for any OpenType font file, but which
numerals example; Minion is abbreviated pmn, and font
features are interesting for TEX users?
families associated with old-style numerals are desig-
• The kerning (kern) and ligature (liga) features should nated by j (more details about what constitutes a font
always be turned on if available. family are in Section .). The resulting command is:
• OpenType fonts may support several kinds of nu- \DeclareFontFamily{LY1}{pmnj}{}
merals; onum (old-style numerals) and lnum (lin- The third argument to \DeclareFontFamily is less often
ing numerals) can both be supported in TEX and are used; it can contain special options for font loading and
commonly requested typographic features. is explained in The LATEX Companion [].

• S C are enabled by the smcp feature. . \DeclareFontShape


• Superior (sups) and inferior (sinf ) figures are useful The \DeclareFontShape command associates a particular
for footnotes, inline fractions, and scientific typeset- font with a particular combination of encoding, font fam-
ting; swashes (swsh) are more DECORATIVE alter- ily, series, and shape, a classification which we previously
natives to standard characters. discussed in Section . To classify the particular Adobe
Minion font we installed in Section , we invoke the fol-
The otftotfm web page [], in “otftotfm examples”, lowing -argument command:
contains examples of more advanced OpenType features,
but as we note in Section , more advanced features rarely \DeclareFontShape{LY1}{pmnj}{sb}{it}{
have high-level support in TEX or LATEX. In this article <-> LY1-MinionPro-SemiboldIt-onum}{}
we concentrate on the overall installation procedure for The first four arguments are the classification; the fifth
OpenType fonts and support of more basic features; read- argument is the font file(s) associated with that classifi-
ers in need of more advanced features may consider the cation; and the last argument is used in a similar way to
ConTEXt environment [] or XETEX []. the third argument of \DeclareFontFamily. This particu-
After otftotfm finishes installing all font files into lar command associates the combination of  encod-
TEX, texhash and updmap must be called to make TEX ing, Minion-with-old-style-numerals font family, semi-
aware of the new installation. Now, the new fonts are bold series (sb), and italic shape (it) with the installed
available for typesetting in TEX — but how? The next sec- font named LY1-MinionPro-SemiboldIt-onum. Note this
tion describes how to instruct TEX to use the correct font. font name is (necessarily) identical to the output name in
TEX uses the “font description” file for this purpose. the command we invoked in Section .
 TUGboat, Volume  (), No. 

With only these two commands, you can specify a W NFSS 
completely functional fd file. Three additional commands light l
are useful, however, for a more fully featured family. book m
regular m
Optical size variants Now, what’s the <-> symbol be- medium mb
fore the font name (in the above \DeclareFontShape ex- demibold db
ample)? It’s the size range and indicates the font sizes as- semibold sb
sociated with that font name. <-> is actually a special case bold b
of the more general notation <n-m>, meaning “use this black eb
font only for point sizes greater than or equal to n and up W NFSS 
to m”. Removal of n or m removes the bound, so <-> in- condensed c
dicates a match for all font sizes. With this notation, the narrow n
extension to multiple font files for a particular combina- semicondensed sc
tion at different sizes (necessary for optical size variants) regular —
is straightforward: semiextended sx
\DeclareFontShape{LY1}{pmnj}{sb}{it}{ extended x
<6-8.4> LY1-MinionPro-SemiboldItCapt-onum V NFSS 
<8.4-13> LY1-MinionPro-SemiboldIt-onum normal (upright) n
<13-19.9> LY1-MinionPro-SemiboldItSubh-onum italic it
<19.9-72> LY1-MinionPro-SemiboldItDisp-onum}{} slanted sl
oblique sl
Font substitution What happens if you’re missing a outline ol
particular variant for a font family? The sub command small caps sc
allows the substitution of one variant for another. For in- small caps + italic si
stance, few font families feature a slanted (oblique) vari-
ant, so fd files often substitute italic for slanted if slanted Table : A selection of NFSS codes for font weights, widths, and
is requested. The following command asks for any refer- variants. From Lehman [].
ence, at any size, to semibold-slanted in our font family
to be satisfied instead by semibold-italic.
for shape and series abbreviation strings, including NFSS,
\DeclareFontShape{LY1}{pmnj}{sb}{sl}{
must work together with the font selection commands
<-> sub * pmnj/sb/it}{}
in Section . Philipp Lehman’s tutorial contains a fairly
Besides substituting italic for slanted, substituting complete mapping between weight, width, and variant
bold for bold-extended is also common, as in the exam- names and NFSS encodings []; we reproduce common
ple below for the normal (n) shape. encodings in Table .
\DeclareFontShape{LY1}{pmnj}{bx}{n}{ Lehman presents the following algorithms for gen-
<-> sub * pmnj/b/n}{} erating the series and shape abbreviations used in \De-
clareFontShape. First, the weight and width are combined
Scaling Finally, \DeclareFontShape permits a font to be to create “series”. If both weight and width are “regular”,
automatically scaled through the size command,¹ which the series is set to m; otherwise the series is set to the con-
is invoked by placing the scaling factor in brackets be- catenation of the weight and width codes, ignoring “regu-
tween the size range and the filename. The example below lar” if present. Creating the shape is also straightforward:
instructs TEX to typeset Minion’s semibold italic variant if the variant is “regular”, the shape is n, otherwise the
at  of its natural size. shape is the concatenation of all variant codes, with the
\DeclareFontShape{LY1}{pmnj}{sb}{it}{ exception of small-caps and italics. This shape is instead
<-> [0.95] LY1-MinionPro-SemiboldIt-onum}{} designated si, and font selection using si is described in
Section ...
. Naming shape and series
The de facto standard for the abbreviation strings associ- . Font families
ated with shape and series in fd files is described by LATEX’s Some font features do not fit into the series-shape scheme.
“New Font Selection Scheme” (NFSS) []. Any choice The most common of these features is numerical figure
types, which may vary as lining (1234), old-style (),
¹ This is most common when two different typefaces that do not
match in size are used together in a document; in the next section we superior (¹²³⁴), inferior (₁₂₃₄), and so on. To handle font
expose this capability to the document author. selection with different styles of figures in TEX, typically,
TUGboat, Volume  (), No.  

each type of figures generates its own font family. To gen- \ProvidesPackage{minion}[Minion Pro OSF v0.99b 9/06]
erate the name of the font family, the three-letter font des- \RequirePackage[LY1]{fontenc} % uses LY1 encoding
ignation has a one-letter suffix appended to its -letter \DeclareOption{lining}{\renewcommand*{%
font name. Lining figures are associated with no suffix \rmdefault}{pmnx}}
or with x, the “expert” suffix; old-style figures are j; supe- \DeclareOption{oldstyle}{\renewcommand*{%
riors receive 1 and inferiors 0; and so on. Thus the Min- \rmdefault}{pmnj}}
ion (pmn) font family with lining figures is pmnx; Minion \ExecuteOptions{oldstyle}
with old-style figures is pmnj; and so on. Section .. \ProcessOptions*
shows how to perform font selection with different font \endinput
families.
. Selecting font variants
 Style files Now we know how to select a given font family, which
At this point we have installed our fonts into TEX (Sec- may feature a large number of font weights, widths, and
tion ) and categorized them by family, shape, and series variants within it. Once we have selected a font family,
(Section ). The final step is to make those fonts available how can we direct TEX to select from our many alter-
to the TEX document author as text fonts. The tools de- natives within that font family, such as boldface, italic,
scribed in Section  automate the creation of the sty files small-caps, and so on? The answer is to change the cur-
that contain the commands in this section. rent series and shape.
While the low-level TEX commands (\fontseries and
. Selecting a font family \fontshape) directly change the current series and shape,
The default “roman” (text) font family is defined by the LATEX’s higher-level commands are more commonly used.
TEX variable \rmdefault. Redefining \rmdefault to another Most LATEX users know that \textbf selects boldface; LATEX
font family (as named by \DeclareFontFamily) resets the implements this internally by setting the font series to
roman font family. For instance, the command below sets \bfdefault, which is in turn defined as bx. Similarly, \textit
the current font family to our example font family, Adobe (italics) utilizes italics by setting the font shape to \itde-
Minion with old-style figures. fault, defined as it. And \textsc (small caps) sets the shape
\renewcommand*{\rmdefault}{pmnj} to \scdefault, defined as sc.
We can use similar techniques to add more selec-
In fact this is all we need to do to use our new font
tion commands for more features that are not part of the
family. (Similarly, we set the default sans serif font fam-
LATEX core set of commands. Philipp Lehman’s font in-
ily by setting the variable \sfdefault, and the typewriter
stallation guide is an excellent tutorial for this task []; it
family with \ttdefault.) However, rather than using one
carefully constructs and explains a style file of NFSS ex-
of these commands directly in TEX files, it’s typical to in-
tensions, nfssext.sty. We now take a closer look at how
stead wrap it in a style file and invoke \usepackage on
to support alternate weights and how nfssext.sty supports
that style file to perform this declaration. A minimal (but
small caps with italics and switching between old-style
complete) style file called minion.sty for LATEX ε that uses
and lining figures.
the  encoding follows.
\NeedsTeXFormat{LaTeX2e} .. Supporting alternate weights
\ProvidesPackage{minion}[Minion Pro OSF v0.99a 9/06] By default, LATEX supports a bold (\textbf ) weight com-
\RequirePackage[LY1]{fontenc} % uses LY1 encoding mand. Let’s say we feel the default bold is a little too dark,
\renewcommand*{\rmdefault}{pmnj} and we’d like to use semibold-condensed instead. We can
\endinput accomplish this with a single line in our sty file:
. Selecting between multiple font families \renewcommand*{\bfdefault}{sbc}
What if we’d like to use the same style file to support Min- And now we like semibold-condensed so much, we’d like
ion font families with both old-style (pmnj) and lining to add it as a new command, \textsb.
(pmnx) figures? We use a package option to choose be- \newcommand\sbdefault{sbc}
tween the two font families: \DeclareRobustCommand\sbseries
\usepackage[oldstyle]{minion} {\not@math@alphabet\sbseries\mathsb
\fontseries\sbdefault\selectfont}
or
\DeclareTextFontCommand{\textsb}{\sbseries}
\usepackage[lining]{minion}
For simple features, declaring a default value, a Robust-
The extended style file that supports these options is: Command, and a TextFontCommand suffice to make the
\NeedsTeXFormat{LaTeX2e} feature available within TEX.
 TUGboat, Volume  (), No. 

.. Supporting small caps with italics differences and should suffice for most users; the au-
Lehman points out that italics and small caps are both thors’ use of Perl (autoinst) or Python (otfinst) may make
in the same “variant” category, so the built-in \textit and the difference for programmers familiar with one or the
\textsc commands do not work harmoniously together. other.
Barring changes to the core LATEX font selection prim- Among the features supported by both tools are:
itives, text set to both italic and small-caps would only • A command-line interface that takes one or more
preserve the innermost setting. OpenType font files as arguments;
nfssext.sty remedies this problem by declaring an si • Installation of font families with the following fea-
shape, analogous to it and sc, and its associated selection tures if present: roman and italic text; small-caps;
commands: lining, old-style, superior, and inferior figures; and
\newcommand*{\sidefault}{si} swashes;
\DeclareRobustCommand{\sishape}{% • nfssext.sty font selection commands;
\not@math@alphabet\sishape\relax • Support of optical sizes; and
\fontshape\sidefault\selectfont} • Auto-generation and installation of sty and fd files.
It then changes the italic and small-caps commands to Some of the differences are that autoinst also sup-
check the current shape before setting the new shape. ports numerators, denominators, upright swash, and ti-
Only if the current shape is italic and the new shape is tling text, and generates ornaments, while otfinst sup-
small-caps, or vice versa, does it set the new shape to si. ports a scaling option at runtime. otfinst uses fontname
(Recall that we assigned the si code to small-caps + italic naming, while autoinst is more verbose in its naming
variants in Section ..) scheme. Finally, otfinst uses the metadata associated with
T  is properly  small-cap, italic text. each OpenType font to determine the font’s characteris-
{\textsc{The \textit{result}} is \textit{properly tics, while autoinst extracts the characteristics from the
\textsc{nested}} small-cap, italic text. font’s filename.
.. Supporting old-style and lining figures . Other tools
Section . showed how to choose old-style or lining fig- Geoffrey Washburn’s otftofd [] automates the process
ures by default. However, it may be useful to have one of creating fd files from OpenType fonts. Washburn indi-
as the default and use the other via an explicit command. cates that it, like autoinst, is designed primarily for Adobe
In nfssext.sty, the new commands \textos selects old-style font conventions. otftofd is a shell script written in the
figures and \textln lining figures. In this article, for in- Caml Shell and uses otftotfm.
stance, old-style is the default, so 1234\textln{1234} results The MinionPro TEX package [] provides extensive
in 1234. TEX support files for Adobe Minion, including compre-
Because each style of figures is associated with a dif- hensive options for figure types, encodings, ornaments,
ferent font family, using an alternate figure style requires letterspaced small caps, and calligraphic, math, black-
changing the family. nfssext.sty accomplishes this task as board, and Greek fonts. The MinionPro distribution was
follows. Switching to lining figures for the font named built using otftotfm and thus contains all TEX support
abc first tries font family abcx then font family abc, using files without the need for the steps described in this ar-
the TEX primitive \selectfont; switching to old-style fig- ticle. MinionPro includes a package called fontaxes that
ures switches to font family abcj. Fortunately this com- extends (and partially replaces) NFSS’s rigid classification
plexity is all hidden inside nfssext.sty. of font attributes.
 Tools  Conclusions
For any OpenType font installation into TEX, the vital tool This article has described the steps necessary to use Open-
is otftotfm []. However, otftotfm only installs from a sin- Type fonts in TEX: use otftotfm to install TEX font metric
gle OpenType font file with a single set of options, while and encoding files; build a font description file for each
users typically would like to install an entire family of font family; and build a style file for convenient font se-
OpenType font files with all available options. In addi- lection in a document.
tion, otftotfm does not address the problem of creating fd OpenType handling in TEX is still far from ideal,
or sty files. however. Systems like XETEX [] use OpenType fonts na-
To address these issues, Marc Penninga wrote au- tively with truly impressive results, and native OpenType
toinst [] and John Owens wrote otfinst [], both of support is slated for future versions of pdftex []. How-
which wrap around otftotfm to install entire TEX font ever, equally important are the other components of TEX
families. The two tools have far more similarities than that relate to font selection and invocation.
TUGboat, Volume  (), No.  

• NFSS is insufficient to elegantly describe the wide References


variety of available font attributes. The combination [] Karl Berry. Filenames for fonts. TUGboat,
of weight and width into series is awkward, multi- ():–, November .
ple variants may combine into a single shape, and http://www.tug.org/fontname.
features such as figure styles are not covered at all.
[] Achim Blumensath, Andreas Bühmann, and
The ideal font selection scheme not only includes
Michael Zedler. MinionPro, September .
all variants of a typeface but also allows simple, or-
http://www.ctan.org/tex-archive/fonts/minionpro/.
thogonal selection of any set of typeface features,
and transparent substitution when features are not [] Maarten Gelderman. A short introduction to
present. New, flexible approaches such as fontspec font characteristics. TUGboat, ():–, June
in XETEX [] and MinionPro’s fontaxes are encour- .
aging steps toward such a scheme. [] Taco Hoekwater. Opening up the type. TUGboat,
():–, .
• Even within NFSS the codes are not standardized.
[] Alan Hoenig. TEX Unbound. Oxford University
Lehman’s scheme appears to be widely used, how-
Press, New York, NY, .
ever, which is encouraging.
[] Alan Jeffrey, Rowland McDonnell, and Lars
• Even for simple features, font selection is wholly Hellström. fontinst: Font installation software for
nonstandardized and non-orthogonal. Selection of TEX, December .
alternate widths is not possible without low-level http://www.tug.org/applications/fontinst/.
commands, the default italic and small caps com- [] Jonathan Kew. The XETEX typesetting system,
mands do not work together because LATEX’s default . http://scripts.sil.org/xetex.
handling of the “variant” category does not address [] Eddie Kohler. LCDF type software, .
multiple variants, and using non-standard but de- http://www.lcdf.org/type/.
sirable selection commands such as \textln in shared
[] Philipp Lehman. The font installation guide,
files is discouraged because a default TEX installation
December . http://www.ctan.org/tex-archive/
does not support them.
info/Type1fonts/fontinstallationguide/.
• Finally, while many advanced OpenType features [] Adam T. Lindsay. OpenType installation basics
can be supported in TEX’s font files, invoking those for ConTEXt. The PracTEX Journal, (), April
features with high-level commands is a much more .
troublesome task. For most features beyond the ba- [] Frank Mittelbach and Michel Goossens. The
sic ones, TEX and LATEX have no standardized sup- LATEX Companion. Addison-Wesley, Boston, MA,
port at the author level (or, in many cases, no sup- second edition, .
port at all). Features like ornaments, contextual al-
[] John Owens. otfinst, . http://www.ctan.org/
ternates, and discretionary ligatures would benefit
tex-archive/fonts/utilities/otfinst/.
from a discussion about how they can be invoked by
the programmer in a standard way. [] Marc Penninga. fontools, . http:
//www.ctan.org/tex-archive/fonts/utilities/fontools/.
[] Will Robertson. Advanced font features with
Acknowledgements Many thanks to Karl Berry for en- XETEX—the fontspec package. TUGboat,
couraging me to write this article and for his helpful ():–, .
suggestions along the way. Eddie Kohler’s tools greatly [] LATEX Project Team. LATEX ε font selection, June
ease the task of OpenType support in TEX, and I also . http://www.ctan.org/tex-archive/macros/
thank Eddie for his prompt and thorough answers to my latex/doc/fntguide.pdf .
many questions about his tools. Karl Berry and Philipp
[] Geoffrey Washburn. otftofd, . http:
Lehman were both quite helpful in understanding font-
//www.ctan.org/tex-archive/fonts/utilities/otftofd/.
name and how it’s used within the TEX world. The use
of Philipp’s nfssext.sty was vital in the development of
 John D. Owens
otfinst. Thomas Phinney, Geraldine Wade, and Michael Department of Electrical and
Duggan provided fonts for testing, and Thomas secured Computer Engineering
permission to use Adobe fonts for the article itself. Fi- University of California
nally, thanks also to Nelson Beebe, Stephen Hartke, Oleg One Shields Avenue
Katsitadze, Eddie Kohler, Marc Penninga, Will Robert- Davis, CA  USA
son, and Michael Zedler for their thoughtful comments jowens (at) ece dot ucdavis dot edu
on the article during the review process. http://www.ece.ucdavis.edu/˜jowens/

Вам также может понравиться