1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
|
AFM2TFM(1) (9 August 1990) AFM2TFM(1)
NAME
afm2tfm - convert Adobe font metrics to TeX font metrics
SYNOPSIS
afm2tfm foo1[.afm] [ -e ratio ] [ -s slant ] [ -t foo2[.tfm]
] [ -v bar[.vpl] | -V bar[.vpl] ] [ foo3[.tfm] ]
DESCRIPTION
PostScript fonts are (or should be) accompanied by font metric
files such as Times-Roman.afm, which describes the
characteristics of the font called Times-Roman. To use such
fonts with TeX, we need TFM files that contain similar
information. The command
afm2tfm Times-Roman.afm Times-Roman.tfm
(which can be reduced to simply
afm2tfm Times-Roman
by taking default shortcuts) will create the necessary file
Times-Roman.tfm, which can then be moved to the directory where
TeX normally looks for font metric information. The PostScript
conversion program dvips will also treat Times-Roman as a
resident PostScript font if you include the line
Times-Roman
in the file psfonts.map.
The file names used in this manual page are not consistent with
the new font naming scheme implemented by Karl Berry; please
refer to the main dvips.tex documentation for the correct names
to use.
PostScript fonts have a different encoding scheme from that of
plain TeX. Although both schemes are based on ASCII, special
characters such as ligatures and accents are handled quite
differently. Therefore we obtain best results by using a
"virtual font" interface, which makes TeX act as if the
PostScript font had a standard TeX encoding. Such a virtual
font can be obtained, for example, by the command
afm2tfm Times-Roman -v times
or, more fully, by:
afm2tfm Times-Roman.afm -v times.vpl Times-Roman.tfm
This produces two outputs, namely the "virtual property list"
file times.vpl and the TeX font metric file Times-Roman.tfm.
The latter file describes an "actual font" on
Page 1 (printed 2/26/92)
AFM2TFM(1) (9 August 1990) AFM2TFM(1)
which the virtual font is based.
If you wish to specify a different TFM file name than the
default, you can use the -t option; this will override any
default TFM file name that would be calculated from the input
file name.
To use the font in TeX, you should first run
vptovf times.vpl times.vf times.tfm
then install the file times.vf in the directory for virtual
fonts and install times.tfm in the directory for TeX font
metrics. (You can also make more complex virtual fonts by
editing times.vpl first.) Once this has been done, you're all
set. You can use code like this in TeX henceforth:
\font\myfont=times at 10pt
\myfont
Hello, I am being typeset in Times-Roman.
Note that there are two fonts, one actual (`Times-Roman', which
is analogous to a raw piece of hardware) and one virtual
(`times', which has typesetting knowhow added). You could also
say `\font\TR=Times-Roman at 10pt' and typeset directly with
that, but then you would have no ligatures or kerning, and you
would have to use Adobe character positions for special letters
like \ae. The virtual font called times not only has ligatures
and kerning, and most of the standard accent conventions of
TeX, it also has a few additional features not present in the
Computer Modern fonts. For example, it includes all the Adobe
characters (such as the Polish ogonek and the French
guillemots). It also allows you to type 58 accented letters
from `Aacute' to `zcaron' as if they were ligatures --- namely
as `acute' followed by `A', etc., where you can get `acute'
(\char 19) by defining a suitable control sequence. (The 58
constructed characters are found in the AFM file, and
constructed as specified by Adobe; you may wish to adjust the
spacing and/or add additional accent combinations by editing
the VPL file.) The only things you lose from ordinary TeX text
fonts are the dotless j (which can be hacked into the VPL file
with literal PostScript specials if you have the patience) and
uppercase Greek letters (which just don't exist unless you buy
them separately).
These fonts can be scaled to any size. Go wild! Note however,
that using PostScript fonts does use up the printer's virtual
memory and it does take time. You may find downloading the
Computer Modern fonts to be faster than using the built-in
PostScript fonts!
Page 2 (printed 2/26/92)
AFM2TFM(1) (9 August 1990) AFM2TFM(1)
OPTIONS
Special effects are also obtainable, with commands such as
afm2tfm Times-Roman -s .167 -v timessl Times-Slanted
which create timessl.vpl and Times-Slanted.tfm. To use this,
proceed as above but put the line
Times-Slanted "/Times-Roman .167 SlantFont"
into psfonts.map. Then Times-Slanted will act as if it were a
resident font, although it is actually constructed from
Times-Roman by PostScript hackery. (It's an oblique version of
Times-Roman, obtained by slanting everything 1/6 to the right.)
Similarly, you can get an extended font by
afm2tfm Times-Extended -e 1.2 -v timesx Times-Extended
and by recording the pseudo-resident font
Times-Extended "/Times-Roman 1.2 ExtendFont"
The command line switches are:
-e ratio
All characters are stretched horizontally by the stated
ratio; if it is less than 1.0, you get a condensed font.
-s slant
All characters are slanted to the right by the stated
slant; if it is negative, the letters slope to the left
(or they might be upright if you start with an italic
font).
-v file[.vpl]
Generate a virtual property list (VPL) file as well as a
TFM file.
-V file[.vpl]
Same as -v, but the virtual font generated is a caps
and-small-caps font obtained by scaling uppercase letters
by .8 to typeset lowercase. This font handles accented
letters and retains proper kerning.
NON-RESIDENT POSTSCRIPT FONTS
If you want to use a non-printer-resident PostScript font for
which you have a .pfb file (an Adobe Type 1 font program), you
can make it act like a resident font by putting a `<' sign and
the name of the .pfb file just after the font name in the
psfonts.map file entry. For example,
Page 3 (printed 2/26/92)
AFM2TFM(1) (9 August 1990) AFM2TFM(1)
StoneInformal <StoneInformal.pfb
will cause dvips to include StoneInformal.pfb in your document
as if it were a header file, whenever the pseudo-resident font
StoneInformal is used in a document. Similarly, you can
generate transformed fonts and include lines like
StoneInformal-Condensed <StoneInformal.pfb "/StoneInformal .8 ExtendF
in psfonts.map, in which case StoneInformal.pfb will be loaded
whenever StoneInformal-Condensed is used. (Each header file is
loaded at most once per document. The .pfb files should be
installed in the config directory with the other header files.)
FONT ALIASES
Some systems don't handle files with long names well---MSDOS
and TWENEX are two notable examples. For this reason, dvips
will accept an alias for such fonts. Such an alias shoul be
the first word on the psfonts.map line. For instance, if we
wanted the name ptmr to be used for Times-Roman since our
computer can't handle long names, we would use the following
line in our psfonts.map file:
ptmr Times-Roman
The TFM file must have the name ptmr.tfm.
The parsing of the psfonts.map file should be explained to
eliminate all confusion. Each line is separated into words,
where words are separated by spaces or tabs. If a word begins
with a double quote, however, it extends until the next double
quote or the end of the line. If a word starts with a less
than character, it is treated as a font head file (or
downloaded PostScript font). If a word starts with a double
quote, it is special instructions on how to generate that font.
Otherwise it is a name. The first such name is always the name
TeX uses for the font and is also the name of the TFM file. If
there is another name word, that name is used as the PostScript
name; if there is only one name word, it is used for both the
TeX name and the PostScript name.
Note that the aliases also register the full PostScript name,
so the single line
ptmr Times-Roman
would allow dvips to `find' the ptmr font as well as the
Times-Roman font.
Page 4 (printed 2/26/92)
AFM2TFM(1) (9 August 1990) AFM2TFM(1)
Incidentally, many font files (e.g., in the Adobe Type Library)
include more characters internally than you can access directly
without making a few changes. These characters typically have
code -1 in the afm file and no corresponding "constructed
character" (CC) specification. For example, in Adobe Garamond
there are Eth and eth, Thorn and thorn, plus things like
copyright and onehalf, plus 58 accented letters Aacute thru
zcaron (with accents over caps much better looking than you can
get from constructed accents). To use these characters, give
them character codes between 0 and 255 in the afm file, and
build the corresponding EncodingVector (instead of
StandardEncoding) in the pfb file. Then afm2tfm will generate
a vpl file that includes accented characters as ligatures, as
explained above; for example, `Aacute' will be accessible as
`acute' followed by `A' (as well as by its character code in
the virtual font).
FILES
psfonts.map in the config directory used by dvips (update
this). ../afm/Makefile in the dvips sources (look at this for
examples).
SEE ALSO
dvips(1), tex(1), vptovf(1)
BUGS
An option to add letterspacing to the virtual font was rejected
by Knuth because it would make the fi and f ligatures break the
normal rhythmic pattern.
AUTHORS
Tomas Rokicki <rokicki@neon.stanford.edu> and Don Knuth
Page 5 (printed 2/26/92)
|