summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipsk/vmcms/afm2tfm.doc
blob: e1df6a38311f2584014bfa97f5b4fa14560639e0 (plain)
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)