summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/fontinst/base/manual/intro98.tex
blob: 0e7c485ab6c58b11db336a1198bbc74c2edd2b46 (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
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
%%% ====================================================================
%%%  @LaTeX-file{
%%%     author          = "Alan Jeffrey and Rowland McDonnell and
%%%                        Ulrik Vieth and Lars Hellstr{\"o}m",
%%%     version         = "1.927",
%%%     date            = "28 July 2004",
%%%     time            = "23:20:27 CEST",
%%%     filename        = "intro98.tex",
%%%     email           = "fontinst@tug.org",
%%%     checksum        = "",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "fontinst, TeX, PostScript, documentation",
%%%     supported       = "yes",
%%%     abstract        = "This is documentation for the fontinst
%%%                        font installation package.",
%%%     package         = "fontinst",
%%%     dependencies    = "ltxguide.cls, url.sty, xspace.sty"
%%%  }
%%% ====================================================================

% Copyright 1993, 1994, 1995, 1996 Alan Jeffrey

% Modified by Rowland McDonnell June 1998
% Modified and revised by Ulrik Vieth June 1998

\documentclass[a4paper]{ltxguide}
\usepackage[OT1]{fontenc}
\usepackage{url,xspace}
\usepackage{graphicx}
%\renewcommand\rmdefault{ppl}
%\renewcommand\rmdefault{padx}
%\renewcommand\rmdefault{pmnx}


% Title page and running heads.

\makeatletter
\newcommand{\subtitle}[1]{\renewcommand{\@subtitle}{#1}}
\newcommand{\version}[1]{\renewcommand{\@version}{#1}}
\newcommand{\illustration}[1]{\renewcommand{\@illustration}{#1}}

\newcommand{\@subtitle}{}
\newcommand{\@version}{???}
\newcommand{\@illustration}{cover.eps}

\pagestyle{myheadings}
\AtBeginDocument{\markright{\small\itshape
  \@author\hfill\@title: \@subtitle\quad}}


\renewcommand{\maketitle}{{%
   \thispagestyle{empty}%
   \normalfont\centering
   \null
   {\fontsize{100}{100}\textit{\@title}}%
   \par\bigskip
   {\Large\textbf{\@subtitle}}%
   \vfill
   \includegraphics[width=\textwidth]{\@illustration}%
   \vfill
   {\Large\textbf{%
      \@author\\[\smallskipamount] \@title~v\@version
      \quad\textperiodcentered\quad \@date}}%
   \clearpage
}}
\makeatother


% Set lists tighter (assuming non-zero \parskip).

\makeatletter
\renewcommand{\@listI}{%
   \leftmargin\leftmargini
   \parsep\medskipamount
   \itemsep\z@ % + parsep
   \topsep\z@ % + parskip
   \partopsep\z@
}
\makeatother

% Set spacing around captions.

\setlength{\abovecaptionskip}{\medskipamount}
\setlength{\belowcaptionskip}{\medskipamount}

% Markup for logos, file types, programs, etc.

\newcommand*{\cs}[1]{\texttt{\char`\\ #1}\xspace}

\newcommand*{\OzTeX}{O\kern-.03em z\kern-.15em\TeX}
\newcommand*{\OzMF}{O\kern-.03em zMF}
\newcommand*{\OzTools}{O\kern-.03em z\kern-.15em Tools}

\newcommand{\PS}{Post\-Script\xspace}
\newcommand{\TT}{True\-Type\xspace}

\newcommand*{\setfilename}[1]{\texttt{#1}}
\newcommand*{\setdotfilename}[1]{\setfilename{.#1}}
\newcommand*{\setpackagename}[1]{\textsc{#1}}

\newcommand{\dvips}   {\setpackagename{dvips}\xspace}
\newcommand{\Dvips}   {\setpackagename{Dvips}\xspace}
\newcommand{\fontinst}{\setpackagename{font\-inst}\xspace}
\newcommand{\Fontinst}{\setpackagename{Font\-inst}\xspace}

% \show\fontname
\newcommand{\fontnamekb}{fontname\xspace}
\newcommand{\Fontnamekb}{Fontname\xspace}

\newcommand{\mf} {\setfilename{mf}\xspace}
\newcommand{\Mf} {\setfilename{Mf}\xspace}
\newcommand{\vf} {\setfilename{vf}\xspace}
\newcommand{\Vf} {\setfilename{Vf}\xspace}
\newcommand{\pl} {\setfilename{pl}\xspace}
\newcommand{\Pl} {\setfilename{Pl}\xspace}
\newcommand{\fd} {\setfilename{fd}\xspace}
\newcommand{\Fd} {\setfilename{Fd}\xspace}
\newcommand{\pk} {\setfilename{pk}\xspace}
\newcommand{\Pk} {\setfilename{Pk}\xspace}
\newcommand{\afm}{\setfilename{afm}\xspace}
\newcommand{\Afm}{\setfilename{Afm}\xspace}
\newcommand{\vpl}{\setfilename{vpl}\xspace}
\newcommand{\Vpl}{\setfilename{Vpl}\xspace}
\newcommand{\tfm}{\setfilename{tfm}\xspace}
\newcommand{\Tfm}{\setfilename{Tfm}\xspace}
\newcommand{\mtx}{\setfilename{mtx}\xspace}
\newcommand{\Mtx}{\setfilename{Mtx}\xspace}
\newcommand{\etx}{\setfilename{etx}\xspace}
\newcommand{\Etx}{\setfilename{Etx}\xspace}
\newcommand{\pfa}{\setfilename{pfa}\xspace}
\newcommand{\Pfa}{\setfilename{Pfa}\xspace}
\newcommand{\pfb}{\setfilename{pfb}\xspace}
\newcommand{\Pfb}{\setfilename{Pfb}\xspace}
\newcommand{\dvi}{\setfilename{dvi}\xspace}
\newcommand{\Dvi}{\setfilename{Dvi}\xspace}
\newcommand{\ttf}{\setfilename{ttf}\xspace}
\newcommand{\Ttf}{\setfilename{Ttf}\xspace}

\newcommand{\vftovp}{\setpackagename{vftovp}\xspace}
\newcommand{\vptovf}{\setpackagename{vptovf}\xspace}
\newcommand{\pltotf}{\setpackagename{pltotf}\xspace}
\newcommand{\tftopl}{\setpackagename{tftopl}\xspace}


% Stolen from Dr Knuth
\makeatletter % borrow the private macros of PLAIN (with care)
\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant
\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant
% macros for font tables
\def\oddline#1{\cr
  \noalign{\nointerlineskip}
  \multispan{19}\hrulefill&
  \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr
  \noalign{\nointerlineskip}}
\def\evenline{\cr\noalign{\hrule}}
\def\chartstrut{\lower4.5pt\vbox to14pt{}}
\def\beginchart#1{$$\global\count@=0 #1
  \halign to\hsize\bgroup
    \chartstrut##\tabskip0pt plus10pt&
    &\hfil##\hfil&\vrule##\cr
    \lower6.5pt\null
    &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline}
\def\endchart{\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B&
  &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$}
\def\*{\global\advance\count@ by1 }
\def\:{\setbox0=\hbox{\char\count@}%
  \ifdim\ht0>7.5pt\reposition
  \else\ifdim\dp0>2.5pt\reposition\fi\fi
  \box0\global\advance\count@ by1 }
\def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}
\def\smallchart{%
%\global\advance\count@ by16
  &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0
  &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1
  &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2
  &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3
  &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4
  &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5
  &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6
  &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7
  &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline}

\def\bigchart{%
%\global\advance\count@ by16
  &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0
  &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1
  &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2
  &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3
  &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4
  &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5
  &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6
  &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7
  &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{20x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline8
  &\oct{21x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{22x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline9
  &\oct{23x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{24x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{A}
  &\oct{25x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{26x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{B}
  &\oct{27x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{30x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{C}
  &\oct{31x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{32x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{D}
  &\oct{33x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{34x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{E}
  &\oct{35x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline
  &\oct{36x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline{F}
  &\oct{37x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline}

% \font\xrm = cmr10 at 10pt % change this line to test font
% \beginchart\xrm \normalchart \endchart

\newcommand{\smallfontchart}[1]{%
  \font\xrm = #1 \beginchart\xrm \smallchart \endchart}
\newcommand{\bigfontchart}[1]{%
  \font\xrm = #1 \beginchart\xrm \bigchart \endchart}

% \smallfontchart{cmr10 at 10pt}
% \bigfontchart{ecrm1000 at 10pt}
\makeatother
% End stolen from Dr Knuth



\title{fontinst}
\subtitle{Font installation software for \TeX}
\author{Alan Jeffrey and Rowland McDonnell}
\illustration{roadmap.eps}
\version{1.8}
\date{30 June 1998}

\begin{document}

\maketitle


\begin{small}
  This is the tutorial part of the 1998 \fontinst manual, chiefly 
  written by Rowland McDonnell and conveying his then-view on related 
  subjects. Although most of it is still correct, 
  the passing of time has rendered it somewhat antiquated, and the 
  average current (2004) user new to \fontinst would probably find 
  Philipp Lehman's \emph{The Font Installation Guide} 
  (\url{http://www.ctan.org/tex-archive/info/Type1fonts/fontinstallationguide/})
  more relevant.
\end{small}

\tableofcontents


\clearpage

\section{Introduction}

The \fontinst package is a set of \TeX\ macros written to create
virtual fonts for use with \TeX. Its main use is creating the
files needed so you can use PostScript Type 1 fonts with \LaTeX.

\Fontinst needs information about the fonts it works with.  This
information needs to be supplied in an Adobe Font Metric (\afm) or
\TeX\ Property List (\pl) file.  \pl files can be created from
\tfm files using \tftopl, a program normally included with a \TeX\
system.

The job that \fontinst does is complicated, but it can be used for
many tasks by people who are not \TeX\ font wizards.  Having said
that, you do need to understand at least the basics of \LaTeXe's
font selection mechanism, which is documented in
\texttt{fntguide.tex}, part of the standard \LaTeX\ distribution.
\url{ftp://ftp.tex.ac.uk/tex-archive/macros/latex/base/fntguide.tex}
will fetch a copy if you don't have one to hand.

To get the most benefit out of \fontinst, it's important to
understand and use Karl Berry's `\Fontnamekb' naming scheme.  The
definitive version of this is available from your nearest CTAN
server.  The following URL will fetch all the files needed
compressed into a single ZIP archive:
\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname.zip}.  I
suggest that you print out the \Fontnamekb documentation and have
it handy when you're learning about \fontinst.

The \fontinst package:
\begin{itemize}
\item Is written in \TeX, for maximum portability (at the cost of
  speed).
\item Supports the OT1 (Computer Modern) and T1 (Cork) encodings.
\item Allows fonts to be generated with arbitrary `fake'
  characters; for example the `ij' character can be faked if
  necessary by putting an `i' next to a `j'.
\item Allows caps and small caps fonts with letter spacing and
  kerning.
\item Allows kerning to be shared between characters, for example
  `ij' can be kerned on the left as if it were an `i' and on the
  right as if it were a `j'.  This is useful, since many
  PostScript fonts only include kerning information for characters
  without diacriticals.
\item Allows the generation of math fonts with \verb|nextlarger|,
  \verb|varchar|, and arbitrary font dimensions.
\item Allows more than one PostScript font to contribute to a
  \TeX\ font, for example the `ffi' ligatures for a font can be
  taken from the Expert encoding, if you have it.
\item Can automatically generate a \fd file for use with \LaTeXe.
\item Can be customized by the user to deal with arbitrary font
  encodings.
\end{itemize}
Fontinst has been a stable piece of software since mid-1994.  All
further updates will be upwardly compatible with the interface
described in this document.

\subsection{What does \fontinst do?}

\Fontinst is a tool written in \TeX\ that can create the various
extra files needed so you can use \PS fonts with \LaTeX\ and \TeX.
It can read in \afm files, and produces the necessary \vpl, \pl,
and \fd files to use the fonts (the human-readable \vpl and \pl
files produced by \fontinst are turned into the machine-readable
\vf and \tfm forms by \vptovf and \pltotf).  It does not help you
configure your DVI driver.

There also exists a \texttt{perl} front-end to \fontinst, intended
specifically for use with a Unix \TeX\ system, which takes care of
routine tasks such as running \vptovf and \pltotf on the generated
files after \fontinst has finished it's job.  It also generates a
font map file for use with \dvips.

\Fontinst's main job is creating \vf files (virtual fonts).  Not
all \TeX\ systems can use them.  As far as I know, all current
(1998) free and shareware \TeX\ systems can; virtual fonts have
been in widespread use with \TeX\ since 1990.  If you have a TeX
system that can't use virtual fonts, \fontinst is most likely
useless to you.

There are some nice things about having a tool written in \TeX\ to
do this: it's completely portable and you can modify its behaviour
using \TeX\ commands.  The only real problem is that it's
relatively slow: you can expect a typical \fontinst run to take
something like 10--20 minutes on, say, a 40~MHz 80486SX PC or a
25~MHz 68LC040 Macintosh.

\Fontinst can do its work on any font for which you have a
corresponding \afm or \tfm metric file, so it's not limited to
working with \PS fonts; I have used it to produce the files I
needed to use \TT fonts with \LaTeX. Whether or not you can do
this depends on whether or not you have suitable metric files and
whether or not your \TeX\ system can use \TT fonts.  In
particular, the pdf\TeX\ program supports \TT fonts and includes a
utility \texttt{ttf2afm} to generate \afm files from \ttf fonts.

Some people have used \fontinst to produce `special effects' with
normal \TeX\ fonts.  One example is the \setpackagename{eco} set
of fonts (available from CTAN:
\url{ftp://ftp.tex.ac.uk/tex-archive/fonts/eco/}).  These fonts
are the same as the standard EC (European Modern) fonts, but with
normal numerals replaced with old style numerals --
\oldstylenums{12345} rather than 12345 -- everywhere except in
maths mode.

\subsection{Installation}

To install \fontinst, put the contents of the \url{inputs/tex},
\url{inputs/etx}, \url{inputs/mtx} and \url{examples} directories
into a directory read by \TeX, for example
\url{TEXMF/tex/generic/fontinst}.

When you use \fontinst, you need to make sure that the \afm and
\pl files it will work on are in a directory searched by \TeX.

If you are using \texttt{web2c} \TeX\ on a Unix system with the
\TeX\ directory structure (TDS), you might put all the \afm files
in subdirectories of \url{TEXMF/fonts/afm/*}.  And then say:
\begin{verbatim}
   setenv TEXINPUTS $TEXMF/fonts/afm//::
\end{verbatim}%$
Note that \pl files are not normally kept in \TeX\ installations, so
if you want to use MF fonts with \fontinst you have to generate the
corresponding \pl files from \tfm files and put them in your working
directory before running \fontinst.

You could adopt a similar strategy with other \TeX\ systems:
create directories for the required files and then change the
relevant parameter (\url{input_folders} in the default
configuration file with \OzTeX, for example).

The approach I use is this: I write a file containing commands for
\fontinst to process, and put the \afm and \pl files needed in the
same directory as that file.  When \fontinst has finished working,
I delete the \afm and \pl files because they are not needed and
waste space on my hard disc drive.  Some application programs on
some computers need \afm files, so it's not always a good idea to
remove them completely.

\subsection{Why do we need \fontinst?}

\TeX\ refers to characters by number when it's typesetting.  When
you use a command like \verb|\i|, \TeX\ puts a number (16 if
you're using OT1, 25 if you're using T1) into the \dvi file.  If
you're using a font designed for use with \TeX, this number will
correspond to the character `\i'.  Assuming OT1 encoding for the
moment, when you come to print out your \dvi file, the DVI driver
will see the number 16 in the \dvi file, and select the character
that sits in position 16 of the corresponding printer font file (a
\pk file in the case of normal \TeX\ fonts).  Unless something has
gone wrong, that will result in the character `\i' being placed on
the page.

It's useful to think of these numbers and the actual characters
corresponding to each number as sets called `encodings'.  A
particular set of characters are assigned particular numbers.  An
example of an encoding is shown in table~\ref{OT1table}.

\TeX\ began life using 7-bit fonts.  This means the original \TeX\
fonts used the numbers 0--127 to represent characters:
128~characters per font.  \TeX\ can now use 8-bit fonts:
256~numbers from 0--255, but even so, most typesetting with \TeX\
still uses the original 7-bit encoding, now called `OT1' (Old
\TeX~1 encoding).  This has a correspondance between numbers and
characters shown in table~\ref{OT1table}.  The numbers used in
that table are hexadecimal and octal because it makes for a neat
table and anyway I stole the code to generate it from Donald Knuth
and that's how he did it.

\begin{table}[!t]
\smallfontchart{cmr10 at 10pt}
\caption{The OT1 font encoding}\label{OT1table}
\end{table}

Returning to the example above, if you've a number 16 in your \dvi
file (expecting `\i', a dotless~i), but rather than printing
with an OT1 encoded font, you print using a non re-encoded \PS
font in Adobe standard encoding, you'll get a blank, because the
Adobe standard encoding has nothing in that character position.

There are several ways round this problem; I'll consider two cases
here.  If you are using \LaTeX\ you can tell it about a new
encoding and re-define the commands that produce characters like
`\i' that live in different positions in different encodings, or
you can use a tool to re-encode the font so that it has the
expected characters in the appropriate positions.

Re-encoding is the approach \fontinst uses: it can produce files
to map the characters in the new font to one of \TeX's existing
encodings; this works with formats other than \LaTeX.

The first approach is used to define the standard encodings that
\LaTeX\ uses.  See, for example, the file \texttt{ot1enc.def} that
comes with the current \LaTeX\ distribution, which defines the a
few commands that refer to characters which aren't in the
positions \TeX\ would otherwise assume.  This works only with
modern versions of \LaTeX.

The second approach is used to allow you to use fonts in other
encodings with any dialect of \TeX. It has the some advantages
over the first method: it works with any \TeX\ format; and it
improves portability, because you can typeset a document using a
standard \TeX\ encoding, sure that the same document will print
correctly on a different kind of computer using a font with a
different encoding.  For example, you might say:
\begin{verbatim}
  \usepackage{times}
\end{verbatim}
in the preamble of your document.  On my computer, that means my
DVI driver will use a Macintosh encoded \TT version of Times.  On
your computer, it might mean the dvi driver will use a Unicode
encoded \PS version of Times-Roman.  The results will be identical
in either case, without needing to modify the document.

\subsection{How do you use \fontinst?}

\Fontinst works on \afm files named (more-or-less) according to
Karl Berry's font naming scheme (see
\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname} at CTAN).
Let's say you want to use the Adobe Times fonts.  You can get the
metric files for this font from CTAN:
\begin{center}
\begin{small}
\begin{tabular}{ll}
  \emph{Location of file at CTAN} & \emph{Rename to} \\
  \url{fonts/psfonts/adobeafm/base35/tib_____.afm} &
  \texttt{ptmb8a.afm} \\
  \url{fonts/psfonts/adobeafm/base35/tibi____.afm} &
  \texttt{ptmbi8a.afm} \\
  \url{fonts/psfonts/adobeafm/base35/tii_____.afm} &
  \texttt{ptmri8a.afm} \\
  \url{fonts/psfonts/adobeafm/base35/tir_____.afm} &
  \texttt{ptmr8a.afm}
\end{tabular}
\end{small}
\end{center}
The new name is the name you should give the \tfm files so that
\fontinst understands what each file contains.  The initial `|p|'
means `Adobe'; `|tm|' means `Times'; `|b|' bold, `|r|' roman,
`|i|' italic; and `|8a|' means `Adobe standard encoding'.

The simplest use of \fontinst is to put the four \afm files in the
same directory as \texttt{fontinst.sty} and run \TeX\ on
\texttt{fontinst.sty}.  At the \verb|*| prompt type:
\begin{verbatim}
  *\latinfamily{ptm}{} \bye
\end{verbatim}

Some time later (about 17 minutes on my rather old computer),
\fontinst will have finished, having created:
\begin{itemize}
\item Two \pl files for each \afm file
\item One \vpl file for each \TeX\ font
\item One \fd file for each family
\end{itemize}
The \pl files come in pairs: for example, \texttt{ptmb8a.pl} and
\texttt{ptmb8r.pl}.  The |8a| version has the same encoding as the
original font; the |8r| version is re-encoded to |TeXBase1| (|8r|)
encoding, and is the font that is the base on which the T1 and OT1
encoded versions are based on.  The raw |8a| (Adobe standard)
encoded font is not normally used.

These can be converted to \TeX\ fonts using \pltotf or \vptovf.
If you have \OzTeX, launch \OzMF, select \pltotf (or \vptovf) from
the Tools menu, and say `Do all files'.

If you use the \texttt{bash} shell on a Unix system,  you can
process all files using these one-liners at the \verb|$| prompt:
\begin{verbatim}
   $ for f in in *.pl;  do pltotf $f; done
   $ for f in in *.vpl; do vptovf $f; done
\end{verbatim}%$
(This assumes that \pltotf and \vptovf can deduce the file names
of the corresponding \tfm and \vf files automatically.)

You should then:
\begin{itemize}
\item Move the \tfm files to your \TeX\ fonts directory\\
   (e.g.~\url{TEXMFLOCAL/fonts/tfm/*}).
\item Move the \vf files to your virtual fonts directory\\
   (e.g.~\url{TEXMFLOCAL/fonts/vf/*}).
\item Move the \fd files to your \TeX\ inputs directory\\
   (e.g.~\url{TEXMFLOCAL/tex/latex/psfonts/*}).
\end{itemize}
If your \TeX\ installation is organized using the \TeX\ directory
structure (TDS), it is customary to subdivide the \tfm and \vf
files into subdirectories by supplier and typeface name.

The \pl, \vpl, and \mtx files are debris that can now be deleted.
\mtx files are font metric files \fontinst creates for its own use
from \afm and \pl files.  They're just more convenient for \TeX\
to read than other forms -- think of them as \fontinst readable
\afm and \pl files.

By now, you have all the files in place to produce a \dvi file
using the new fonts.  You can make Adobe Times the default roman
font in your document by putting this in your preamble:
\begin{verbatim}
   \renewcommand{\rmdefault}{ptm}
\end{verbatim}

\TeX\ will now happily produce a perfectly good \dvi file
including the new font, which your DVI driver will choke on
because you've not yet told it about the new fonts.  Exactly how
you do this depends on the dvi driver, but they all need the same
information: the name of a \TeX\ font; the printer font name it
corresponds to; some information to handle an re-encoding needed;
and (in the case of a \PS driver) perhaps an instruction to
download the font to the printer.  You don't need to download the
Times font to a \PS printer, because Times is built in to every
\PS printer.

If you use \dvips, these lines added to your \texttt{psfonts.map}
file will do the job:
\begin{verbatim}
  ptmr8r   Times-Roman       "TeXBase1Encoding ReEncodeFont"  <<8r.enc
  ptmri8r  Times-Italic      "TeXBase1Encoding ReEncodeFont"  <<8r.enc
  ptmb8r   Times-Bold        "TeXBase1Encoding ReEncodeFont"  <<8r.enc
  ptmbi8r  Times-BoldItalic  "TeXBase1Encoding ReEncodeFont"  <<8r.enc
  ptmro8r  Times-Roman       "0.167 SlantFont TeXBase1Encoding ReEncodeFont"  <<8r.enc
  ptmbo8r  Times-Bold        "0.167 SlantFont TeXBase1Encoding ReEncodeFont"  <<8r.enc
\end{verbatim}
And now you can print a \dvi file containing the new fonts.  If
you really do want to use the `raw' |8a| encoded fonts for some
reason, you need to add these lines to your \texttt{psfonts.map}
file:
\begin{verbatim}
  ptmr8a   Times-Roman
  ptmri8a  Times-Italic
  ptmb8a   Times-Bold
  ptmbi8a  Times-BoldItalic
  ptmro8a  Times-Roman       "0.167 SlantFont"
  ptmbo8a  Times-Bold        "0.167 SlantFont"
\end{verbatim}

Assuming that you're using the \fd file that \fontinst has
produced, and that you've asked for the Adobe Times family (|ptm|)
in medium series (|m|) and upright shape (|n| for normal) using
the NFSS font selection commands:
\begin{verbatim}
  \renewcommand{\rmdefault}{ptm}
  \rmfamily \mdseries \upshape
\end{verbatim}
Assuming further that you are using the \fd file \texttt{t1ptm.fd}
produced by \fontinst, the \TeX\ font (\tfm file) \texttt{ptmr8t.tfm}
will be selected by the above commands, as you can see from the
relevant line in \texttt{t1ptm.fd}:
\begin{verbatim}
  \DeclareFontShape{T1}{ptm}{m}{n}{<<->> ptmr8t}{}
\end{verbatim}

This is what happens:
\begin{itemize}
\item \TeX\ typesets your document using the font metric file
  \texttt{ptmr8t.tfm}; this is the font that is put in the \dvi
  file.
\item \Dvips looks at the \dvi file, and sees a reference to the
  font \texttt{ptmr8t}.
\item \Dvips searches for a \vf file corresponding to
  \texttt{ptmr8t}; when it finds \texttt{ptmr8t.vf}, it knows it
  has a virtual font on its hands.
  %\footnote{This is a slight lie--why?}
\item \Dvips follows the instructions in the \vf file, which map
  characters in \texttt{ptmr8t.tfm} to characters in the font
  \texttt{ptmr8r.tfm}.  That is, when it sees a number~25 in the
  \dvi file (dotless~i -- `\i' -- in T1 encoding), it replaces it
  with a number~17, which is a dotless~i in |8r| encoding.
\item Then \dvips looks up the name of each number according to
  the scheme given in the file \texttt{8r.enc}, and replaces each
  number with the name of the character, in this case, number~17
  is listed as `dotlessi'.
\item And finally, \dvips tells the printer to print the named
  character.
\end{itemize}

Not all DVI drivers can manage re-encoding as well as \dvips can.
For example, \OzTeX's built-in non-\PS \dvi driver can only work
with numbers, so if I'm using a \PS font, I can't print characters
(such as Eth) that don't have a number in Macintosh text encoding
unless I use \dvips and print on a \PS printer.  \Dvips works with
character names, so it's not subject to this restriction.  In the
example above, \OzTeX\ would replace the number~17 for `dotlessi'
in |8r| encoding with a number~245 for `dotlessi' in Macintosh
text encoding.

The details of the \LaTeXe{} font selection scheme are described
in \emph{\LaTeXe{} font selection} (distributed with \LaTeXe\ as
the file \texttt{fntguide.tex}) and \emph{The \LaTeX\ Companion}
(Goossens, Mittelbach and Samarin, Addison-Wesley).
%You might also find useful the file \url{info/simple-nfss.tex}
%available at your nearest comprehensive \TeX\ archive network
%(CTAN) FTP server.

The files you need to use Times, Helvetica, Courier, and the rest
of the `standard' \PS fonts are distributed as part of the
\setpackagename{PSNFSS} bundle available from CTAN, so there's no
need to create new files to use these fonts.

A more involved example of \fontinst use can be seen in the file
\texttt{fontptcm.tex} which creates the files you need to use a
combination of Times, Symbol, Zapf Chancery and Computer Modern as
\TeX\ math fonts.


\section{Installing your own font family}

The \fontinst package has a command \verb|\latinfamily| meant to
do most of the work to install a `normal' set (family) of roman
text fonts from Adobe.  Assuming you have a set of \afm files to
match the fonts you wish to use, the first step is to rename the
\afm files according to the \Fontnamekb naming scheme.

A `normal' set of text fonts usually includes the basic upright
roman version, bold, italic, and bold italic.  Sometimes there
will also be small caps versions, perhaps some `expert' fonts, and
maybe some other weights such as light, medium, semi bold, black
or ultra bold.

The most important point to note is this: no matter what sort of
computer you're using and no matter what font encoding it uses
normally, \afm files for text fonts are almost always in |8a|
encoding (Adobe standard encoding), so the \afm files when renamed
normally end in |8a|.

A typical set of four \afm files re-named for use with \fontinst
is this:
\begin{verbatim}
  ptmr8r.afm    Times-Roman
  ptmri8r.afm   Times-Italic
  ptmb8r.afm    Times-Bold
  ptmbi8r.afm   Times-BoldItalic
\end{verbatim}
Not all \afm files use |8a| encoding.  If you open an \afm file
using a text editor, you'll see a line looking like this somewhere
near the top:
\begin{verbatim}
  EncodingScheme AdobeStandardEncoding
\end{verbatim}
and if you see exactly that, the \afm file should end with |8a|.
If you see something like this:
\begin{verbatim}
  EncodingScheme FontSpecific
\end{verbatim}
have a look at the name of the font in the \afm file.  If you see
something like this:
\begin{verbatim}
  FontName AGaramondExp-Regular
  FullName Adobe Garamond Regular Expert
\end{verbatim}
you have an `expert' encoded font on your hands, and the \afm file
should end with |8x| to indicate this to \fontinst.  An |8x|
encoded font contains extra glyphs like old style numerals, small
capital letters, more ligatures, and so on.

%% UV: taken out -- repeated below
%%
%If you have an expert font, you can tell \fontinst to use it when
%it's processing a \verb|\latinfamily| command by putting an `|x|'
%on the end of the family name:
%\begin{verbatim}
%  \latinfamily{padx}{}
%\end{verbatim}
%If you want to tell \fontinst to use expert fonts to install fonts
%with old style numerals, you can do so by putting an `|j|' on the
%end of the family name:
%\begin{verbatim}
%  \latinfamily{padj}{}
%\end{verbatim}

The |\latinfamily| command is used like this:
\begin{decl}
  |\latinfamily|\arg{family}\arg{commands}
\end{decl}
This installs a Latin family of fonts.

For example, to install Adobe Times, you say:
\begin{verbatim}
  \latinfamily{ptm}{}
\end{verbatim}
The \textit{commands} issued by \LaTeX\ each time a font from that
family is loaded.  This is most often used with typewriter fonts,
to switch off hyphenation.  For example, Adobe Courier can be
installed with:
\begin{verbatim}
  \latinfamily{pcr}{\hyphenchar\font=-1}
\end{verbatim}
Once the installation is over (which may take some time) the fonts
can be used in \LaTeX\ by selecting an appropriate
\verb|\fontfamily|, for example Adobe Times can be selected with:
\begin{verbatim}
  \fontfamily{ptm}\selectfont
\end{verbatim}
If the fourth letter of the family name is `|x|' then \fontinst
will use expert fonts in creating the fonts.  If the fourth letter
is `|j|' (or for backward compatibility `|9|') then \fontinst will
use expert fonts to create fonts with old style digits.

For example, to install Adobe Garamond using expert fonts, you say:
\begin{verbatim}
  \latinfamily{padx}{}
\end{verbatim}
To install Adobe Garamond using expert fonts with oldstyle digits,
you say:
\begin{verbatim}
  \latinfamily{padj}{}
\end{verbatim}

When you have expert fonts, and you've told \fontinst to use
them, it will carry on as normal, but the resulting font family
will have the name `|padx|' or `|padj|', and it will use expert
glyphs whenever possible, so you'll have a real (rather than
faked) small caps font, real (rather than faked) `ffl' ligatures,
and so on.

Before using these commands, you will need to make sure that you
have the Adobe Font Metric (\afm) files for the fonts, and that
they have appropriate names.  The \fontinst package uses the
\LaTeX\ convention for naming fonts, and uses a \emph{font family}
name which consists of:
\begin{itemize}
\item a \emph{supplier} (or foundry), such as `|p|' for Adobe.
\item a \emph{typeface}, such as `|ad|' for Adobe Garamond.
\item up to two \emph{variants}, such as `|j|' or `|x|' for `old
  style digits' or `expert'.
\end{itemize}
So the family name `|padj|' indicates Adobe Garamond with old
style digits.  Note that the variants `|j|' or `|x|' are
interpreted by \fontinst itself and do not appear in external font
names, whereas other variants are passed through as part of the
font names.  (This is needed for families which have a sans serif
or typewriter variant.)

The \emph{supplier} must be one letter, and the \emph{typeface}
must be two (this is an attempt to fit all filenames into MS-DOS
format).  Each variant is one letter.  The full list of foundries,
typefaces, shapes and variants is given in Karl Berry's
`\emph{Filenames for fonts}' (available by anonymous FTP from
\url{ftp://ftp.tex.ac.uk/tex-archive/info/fontname}), but the more
common ones are given in
Tables~\ref{Tab:foundry}--\ref{Tab:typeface}.

\begin{table}[!t]
\begin{minipage}{0.5\textwidth}
  \small
  \begin{tabular}{ll}
    |b| & Bitstream             \\
    |f| & `free' (public domain) \\
    |h| & Bigelow \& Holmes     \\
    |i| & ITC                   \\
    |l| & Linotype              \\
    |m| & Monotype              \\
    |p| & Adobe (|p| for \PS)   \\
    |r| & `raw' (obsolete)      \\
    |u| & URW                   \\
    |z| & bizarre
  \end{tabular}
  \caption{A partial list of foundries}
  \label{Tab:foundry}
  \begin{tabular}{ll}
    |a| & alternate             \\
    |d| & display, titling      \\
    |f| & fraktur, handtooled   \\
    |j| & oldstyle digits       \\
    |n| & informal, casual      \\
    |p| & ornaments             \\
    |s| & sans serif            \\
    |t| & typewriter            \\
    |w| & script, handwriting, swash \\
    |x| & expert                \\
  \end{tabular}
  \caption{A partial list of variants}
  \label{Tab:variant}
  \begin{tabular}{ll}
    |c| & small caps            \\
    |i| & italic                \\
    |o| & oblique (i.e.,~slanted) \\
    |u| & unslanted italic      \\
  \end{tabular}
  \caption{A partial list of shapes}
  \label{Tab:shape}
\end{minipage}
\begin{minipage}{0.5\textwidth}
  \small
  \begin{tabular}{ll}
    |ac| & Adobe Caslon \\
    |ad| & Adobe Garamond \\
    |ag| & Avantgarde \\
    |bb| & Bembo \\
    |bd| & Bodoni \\
    |bk| & Bookman \\
    |bv| & Baskerville \\
    |ca| & Caslon \\
    |ch| & Charter \\
    |cr| & Courier \\
    |fr| & Frutiger \\
    |fu| & Futura \\
    |gl| & Galliard \\
    |gm| & Garamond \\
    |gs| & Gill Sans \\
    |hv| & Helvetica \\
    |mn| & Minion \\
    |lc| & Lucida \\
    |lh| & Lucida Bright \\
    |ls| & Lucida Sans \\
    |nb| & New Baskerville \\
    |nc| & New Century Schoolbook \\
    |op| & Optima \\
    |pl| & Palatino \\
    |sy| & Symbol \\
    |tm| & Times \\
    |ut| & Utopia \\
    |zc| & Zapf Chancery \\
    |zd| & Zapf Dingbats \\
  \end{tabular}
  \caption{A partial list of faces}
  \label{Tab:typeface}
\end{minipage}
\end{table}

The \fontinst package uses Karl Berry's naming scheme for \afm
files.  The full naming scheme is rather more flexible than the
subset used by \fontinst, which uses filenames consisting of:
\begin{itemize}
\item a \emph{supplier}, such as `|p|' for Adobe.
\item a \emph{typeface}, such as `|hv|' for Helvetica.
\item a \emph{weight}, such as `|r|' for regular.
\item up to two \emph{shapes} or \emph{variants}, such as `|o|'
  for oblique.
\item an \emph{encoding}, such as `|7t|' for Knuth's 7-bit \TeX{}
  encoding.
\item an optional \emph{width}, such as `|n|' for narrow.
\item a \emph{file extension}, such as `\texttt{.tfm}'
  for \TeX{} Font Metric.
\end{itemize}
So the filename name `\texttt{phvro7tn.tfm}' indicates Adobe
Helvetica regular oblique narrow, in the 7-bit \TeX{} encoding.

The full list of shapes, encodings and weights is given in Karl
Berry's `\emph{Filenames for fonts}', but the more common ones are
given in Tables~\ref{Tab:shape}--\ref{Tab:weight}.

\begin{table}
\begin{minipage}{0.5\textwidth}
  \small
  \begin{tabular}{ll}
    |b| & bold \\
    |c| & black \\
    |d| & demibold \\
    |h| & heavy \\
    |k| & book \\
    |l| & light \\
    |m| & medium \\
    |r| & regular \\
    |s| & semibold \\
    |u| & ultra bold \\
    |x| & extra bold \\
  \end{tabular}
  \caption{A partial list of weights}
  \label{Tab:weight}
  \begin{tabular}{ll}
    |c| & condensed \\
    |n| & narrow \\
    |w| & wide \\
    |x| & extended \\
  \end{tabular}
  \caption{A partial list of widths}
  \label{Tab:width}
\end{minipage}
\begin{minipage}{0.5\textwidth}
  \small
  \begin{tabular}{ll}
   |8a| & Adobe Standard        \\
   |8x| & Adobe Expert          \\
   |8r| & \TeX{} 8-bit `raw' (\texttt{TeXBase1})        \\
   |8y| & \TeX{} 8-bit `raw' (\texttt{TeXnANSI})        \\
   |7t| & \TeX{} 7-bit text             (\texttt{OT1})  \\
   |7m| & \TeX{} 7-bit math italic      (\texttt{OML})  \\
   |7y| & \TeX{} 7-bit math symbol      (\texttt{OMS})  \\
   |7v| & \TeX{} 7-bit math extension   (\texttt{OMX})  \\
   |8t| & \TeX{} 8-bit text             (\texttt{T1})   \\
   |8c| & \TeX{} 8-bit text symbols     (\texttt{TS1})  \\
   |9t| & \TeX{} 7-bit text with expert glyphs  \\
   |9o| & \TeX{} 7-bit text with expert glyphs  \\
        & and old-style digits  \\
   |9e| & \TeX{} 8-bit text with expert glyphs  \\
   |9d| & \TeX{} 8-bit text with expert glyphs  \\
        & and old-style digits  \\
   |9c| & \TeX{} 8-bit symbols with expert glyphs \\
        & and old-style digits  \\
   \end{tabular}
   \caption{A partial list of encodings}
\end{minipage}
\end{table}

For example, to install Adobe Garamond including the expert fonts, you
would need to rename the \afm files:
\begin{center}
\begin{small}
\begin{tabular}{lll}
  \emph{Adobe name} & \emph{ATM name} & \emph{Fontinst name} \\
  |AGaramond-Bold.afm|              & |gdb_____.afm|    & |padb8a.afm|   \\
  |AGaramond-BoldItalic.afm|        & |gdbi____.afm|    & |padbi8a.afm|  \\
  |AGaramond-Italic.afm|            & |gdi_____.afm|    & |padri8a.afm|  \\
  |AGaramond-Regular.afm|           & |gdrg____.afm|    & |padr8a.afm|   \\
  |AGaramond-Semibold.afm|          & |gdsb____.afm|    & |pads8a.afm|   \\
  |AGaramond-SemiboldItalic.afm|    & |gdsbi___.afm|    & |padsi8a.afm|  \\
  |AGaramondExp-Bold.afm|           & |geb_____.afm|    & |padb8x.afm|   \\
  |AGaramondExp-BoldItalic.afm|     & |gebi____.afm|    & |padbi8x.afm|  \\
  |AGaramondExp-Italic.afm|         & |gei_____.afm|    & |padri8x.afm|  \\
  |AGaramondExp-Regular.afm|        & |gerg____.afm|    & |padr8x.afm|   \\
  |AGaramondExp-Semibold.afm|       & |gesb____.afm|    & |pads8x.afm|   \\
  |AGaramondExp-SemiboldItalic.afm| & |gesbi___.afm|    & |padsi8x.afm|  \\
  |AGaramond-RegularSC.afm|         & |gdsc____.afm|    & |padrc8a.afm|  \\
  |AGaramond-SemiboldSC.afm|        & |gdsbs___.afm|    & |padsc8a.afm|  \\
\end{tabular}
\end{small}
\end{center}
You can then run \TeX{} on the following document to install the
Adobe Garamond family:
\begin{verbatim}
  \input fontinst.sty
  \latinfamily{padx}{}
  \latinfamily{padj}{}
  \bye
\end{verbatim}
Not all font families can be installed using the \verb|\latinfamily|
command, nor does it always produce optimal results. The main 
interfaces to \fontinst are at a slightly lower level, where all font 
names appear explicitly in command arguments, and at that level it is 
possible to fine tune the font generation. The \verb|\latinfamily| 
command is mainly a clever collection of macros which expand to a 
mostly fixed\footnote{Commands that would refer to files which are 
not present are skipped, and in some cases there is a ``Plan B'' 
when ``Plan A'' would have made use of such a nonexistent file, but 
that is about it.} sequence of lower level \fontinst commands.

\begin{bfseries}
  Descriptions of the sub-\verb|\latinfamily| commands can be found 
  in the main \fontinst manual.
\end{bfseries}



\section{More on the \cs{latinfamily} command}

The \verb|\latinfamily| command is essentially a short-cut to save you
preparing a huge file with many different \fontinst commands in it.

It takes \afm or \mtx files as the source of font metric data to work
with.  Usually, you have a set of \afm files.  They must be named
according to a subset of the \Fontnamekb naming scheme.  To illustrate
the process, here is an edited part of the console log from a use of
\verb|\latinfamily|:
\begin{verbatim}
  \latinfamily{pad}{}
\end{verbatim}
This log does not show \fontinst `in action'; it's just to illustrate
which fonts are looked for when you use the \verb|\latinfamily|
command.
\begin{verbatim}
  INFO>> to make LaTeX font shape <<pad,m,n,>> seek padr8r.mtx
  INFO>> to make LaTeX font shape <<pad,m,sc,>> seek padrc8r.mtx
  INFO>> to make LaTeX font shape <<pad,m,sl,>> seek padro8r.mtx
  INFO>> to make LaTeX font shape <<pad,m,it,>> seek padri8r.mtx
  INFO>> to make LaTeX font shape <<pad,m,n,c>> seek padr8rn.mtx
  INFO>> to make LaTeX font shape <<pad,m,sc,c>> seek padrc8rn.mtx
  INFO>> to make LaTeX font shape <<pad,m,sl,c>> seek padro8rn.mtx
  INFO>> to make LaTeX font shape <<pad,m,it,c>> seek padri8rn.mtx
\end{verbatim}

The important point to notice is that \fontinst needs an |8r| encoded
\mtx file for each font when you are using the \verb|latinfamily|
command.  If it can't find an |8r| encoded \mtx file, it'll look for
for an |8a| encoded \afm file.  It will automatically turn the file it
finds into an |8r| encoded \mtx file.  So when \fontinst says
`\verb|seek padr8r.mtx|', it is in fact looking for
\texttt{padr8r.mtx} and \texttt{padr8a.afm}.  Whatever it finds, it
will end up with \verb|padr8r.mtx| to work on.

The first line of the log shows that \fontinst is trying to create a
\vpl file for |pad/m/n|.  That is, font family |pad| (Adobe Garamond),
font series |m| (normal `book' or `regular' weight), and font shape
|n| (normal upright).

If it finds what it's looking for, it will create the files:
\begin{verbatim}
  padr7t.vpl
  padr8t.vpl
  padr8c.vpl
\end{verbatim}
And add these lines to the given \fd files:
\begin{verbatim}
  OT1pad.fd:    \DeclareFontShape{OT1}{pad}{m}{n}{<<->> padr7t}{}
   T1pad.fd:    \DeclareFontShape{T1} {pad}{m}{n}{<<->> padr8t}{}
  TS1pad.fd:    \DeclareFontShape{TS1}{pad}{m}{n}{<<->> padr8c}{}
\end{verbatim}
This means you will have three new fonts to use in \LaTeX: the OT1, T1
and TS1 encoded versions of |pad/m/n|.  You'll be able to select (say)
|T1/pad/m/n| by saying:
\begin{verbatim}
  \fontencoding{T1}\fontfamily{pad}\fontseries{m}\fontshape{n}\selectfont
\end{verbatim}
This is the clumsiest way of selecting that particular font, but I've
done it to illustrate exactly what's happening.

The next line:
\begin{verbatim}
  INFO>> to make LaTeX font shape <<pad,m,sc,>> seek padrc8r.mtx
\end{verbatim}
shows that \fontinst is trying to install a small caps font.  If you
have a real small caps metric file named \texttt{padrc8r.mtx} (don't
forget it'll look for an |8a| encoded \afm file), \fontinst will go
ahead and create the \vpl file and \fd file entry as expected.

But you don't normally have a real small caps font, so \fontinst will
quite happily produce a fake small caps font.  To do this, it looks
for a suitable metric file by dropping the `|c|':
\begin{quote}
  `Hmm\ldots\ I can't find \texttt{padrc8r}, so I'll look for
  \texttt{padr8r}.'
\end{quote}
And you will eventually have:
\begin{verbatim}
  padrc7t.vpl
  padrc8t.vpl
\end{verbatim}
And add these lines to the given \fd files:
\begin{verbatim}
  OT1pad.fd:    \DeclareFontShape{OT1}{pad}{m}{sc}{<<->> padrc7t}{}
   T1pad.fd:    \DeclareFontShape{T1} {pad}{m}{sc}{<<->> padrc8t}{}
\end{verbatim}
(Note that it won't install a TS1-encoded small caps font because
TS1 is a text symbol font, which would look the same in the upright
and small caps shape.)

The next log line shows \fontinst trying to create a \vpl for the
oblique version of Adobe Garamond:
\begin{verbatim}
  INFO>> to make LaTeX font shape <<pad,m,sl,>> seek padro8r.mtx
\end{verbatim}
It's quite usual for an oblique version to be unavailable, but
\fontinst has a way round this: it can fake an oblique font from the
corresponding `straight' version:
\begin{quote}
  `Oh dear: I can't find \texttt{padro8r}, so I'll look for
  \texttt{padr8r} and use clever maths to fake a slanted version.'
\end{quote}
This is not as straightforward as the small caps case.  \Fontinst
only works out what the metrics ought to be if the entire font is
slanted to the right.  It's up to the DVI driver to actually print a
slanted font.  \Dvips can do this.

You will eventually have:
\begin{verbatim}
  padro7t.vpl
  padro8t.vpl
  padro8c.vpl
\end{verbatim}
And these lines added to the given \fd files:
\begin{verbatim}
  OT1pad.fd:    \DeclareFontShape{OT1}{pad}{m}{sl}{<<->> padro7t}{}
   T1pad.fd:    \DeclareFontShape{T1} {pad}{m}{sl}{<<->> padro8t}{}
  TS1pad.fd:    \DeclareFontShape{TS1}{pad}{m}{sl}{<<->> padro8c}{}
\end{verbatim}

The next line is straightforward:
\begin{verbatim}
  INFO>> to make LaTeX font shape <<pad,m,it,>> seek padri8r.mtx
\end{verbatim}
If \fontinst can't find a suitable metrics file (\texttt{padri8r.mtx}
or \texttt{padri8a.afm}), it carries on without doing anything.  If it
does find a suitable metrics file, it churns away until you will
eventually have:
\begin{verbatim}
  padri7t.vpl
  padri8t.vpl
  padri8c.vpl
\end{verbatim}
And these lines added to the given \fd files:
\begin{verbatim}
  OT1pad.fd:    \DeclareFontShape{OT1}{pad}{m}{it}{<<->> padri7t}{}
   T1pad.fd:    \DeclareFontShape{T1} {pad}{m}{it}{<<->> padri8t}{}
  TS1pad.fd:    \DeclareFontShape{TS1}{pad}{m}{it}{<<->> padri8c}{}
\end{verbatim}

The next line is a bit different.  \Fontinst is now trying to create a
\vpl file for a \emph{condensed} font:
\begin{verbatim}
  INFO>> to make LaTeX font shape <<pad,m,n,c>> seek padr8rn.mtx
\end{verbatim}
If it finds a suitable metric file (Adobe Garamond, medium weight,
normal upright shape, condensed), it will eventually produce:
\begin{verbatim}
  padr7tn.vpl
  padr8tn.vpl
  padr8cn.vpl
\end{verbatim}
And these lines added to the given \fd files:
\begin{verbatim}
  OT1pad.fd:    \DeclareFontShape{OT1}{pad}{mc}{n}{<<->> padr7tn}{}
   T1pad.fd:    \DeclareFontShape{T1} {pad}{mc}{n}{<<->> padr8tn}{}
  TS1pad.fd:    \DeclareFontShape{TS1}{pad}{mc}{n}{<<->> padr8cn}{}
\end{verbatim}
There is no standard \LaTeX\ command like \verb|\bfseries| to select
the medium condensed (|mc|) series created here.  If you want to use
this font, you must do something like:
\begin{verbatim}
  \fontfamily{pad}\fontseries{mc}\selectfont
\end{verbatim}
If it doesn't find a suitable metric file for a narrow series,
\fontinst will just skip over and continue, unless you specifically
tell it to fake a narrow series.

And so the process continues: \fontinst attempts to create \vpl files
for condensed versions of all the font shapes met so far, and then
goes on to:
\begin{verbatim}
  INFO>> to make LaTeX font shape <<pad,b,n,>> seek padb8r.mtx
\end{verbatim}
And again, if it finds a suitable metric file (\texttt{padb8r.mtx} or
\texttt{padb8a.afm}), it'll potter off and create the files:
\begin{verbatim}
  padb7t.vpl
  padb8t.vpl
  padb8c.vpl
\end{verbatim}
And these lines added to the given \fd files:
\begin{verbatim}
  OT1pad.fd:    \DeclareFontShape{OT1}{pad}{b}{n}{<<->> padb7t}{}
   T1pad.fd:    \DeclareFontShape{T1} {pad}{b}{n}{<<->> padb8t}{}
  TS1pad.fd:    \DeclareFontShape{TS1}{pad}{b}{n}{<<->> padb8c}{}
\end{verbatim}
With this step done, fontinst will try to create \vpl files for the
small caps, slanted, and italic versions of |pad/b|; and then it'll
try to create condensed versions of all those:
\begin{verbatim}
  INFO>> to make LaTeX font shape <<pad,b,n,>> seek padb8r.mtx
  INFO>> to make LaTeX font shape <<pad,b,sc,>> seek padbc8r.mtx
  INFO>> to make LaTeX font shape <<pad,b,sl,>> seek padbo8r.mtx
  INFO>> to make LaTeX font shape <<pad,b,it,>> seek padbi8r.mtx
  INFO>> to make LaTeX font shape <<pad,b,n,c>> seek padb8rn.mtx
  INFO>> to make LaTeX font shape <<pad,b,sc,c>> seek padbc8rn.mtx
  INFO>> to make LaTeX font shape <<pad,b,sl,c>> seek padbo8rn.mtx
  INFO>> to make LaTeX font shape <<pad,b,it,c>> seek padbi8rn.mtx
\end{verbatim}
If it manages to find the files it needs to create the \vpl files to
use all those fonts with \LaTeX, you'll end up with the following
lines in the T1 \fd file (I've ignored the OT1 \fd file to save some
space):
\begin{verbatim}
  \DeclareFontShape{T1} {pad}{b} {n} {<<->> padb8t}{}
  \DeclareFontShape{T1} {pad}{b} {sc}{<<->> padbc8t}{}
  \DeclareFontShape{T1} {pad}{b} {sl}{<<->> padbo8t}{}
  \DeclareFontShape{T1} {pad}{b} {it}{<<->> padbi8t}{}
  \DeclareFontShape{T1} {pad}{bc}{n} {<<->> padb8tn}{}
  \DeclareFontShape{T1} {pad}{bc}{sc}{<<->> padbc8tn}{}
  \DeclareFontShape{T1} {pad}{bc}{sl}{<<->> padbo8tn}{}
  \DeclareFontShape{T1} {pad}{bc}{it}{<<->> pckbi8tn}{}
\end{verbatim}
To translate into English: Adobe Garamond bold in `normal', small
caps, slanted, and italic versions, as well as condensed versions of
all four.

Again, because there's no convenient way of selecting the condensed
versions with existing \LaTeX\ commands, you need to say something
like:
\begin{verbatim}
  \fontfamily{pad}\fontseries{bc}\selectfont
\end{verbatim}
to use the bold condensed (|bc|) versions of this font; you can of
course use \verb|\itshape|, \verb|\scshape|, \verb|\slshape|, and
\verb|upshape| to switch between the italic, small caps, slanted, and
`normal' versions of Adobe Garamond bold condensed once you've got
|pad/bc| selected.

So far, you've seen \verb|\latinfamily| look at two different weights
and two different widths.  For each weight, \verb|\latinfamily| will
try and install eight different fonts as you can see above.  It will
try and install the same eight different fonts for each of the
following different weights:
\begin{center}
\begin{tabular}{lll}
  \emph{\LaTeX} & \emph{Fontname} & \emph{description} \\
  |ul|     & |a|           & ultra light  \\
  |el|     & |i|           & extra light  \\
  |l|      & |l|           & light        \\
  |m|      & |k|, |r|      & book, regular \\
  |mb|     & |m|           & medium       \\
  |db|     & |d|           & demi bold    \\
  |sb|     & |s|           & semi bold    \\
  |b|      & |b|           & bold         \\
  |eb|     & |c|, |h|, |x| & black, heavy, extra bold \\
  |ub|     & |u|           & ultra bold
\end{tabular}
\end{center}
The \LaTeX\ column contains the label that will be used in the
\verb|\DeclareFontShape| command to specify the font series.  The
\Fontnamekb column contains the width specifier used to name the font
metric file that \fontinst will look for in that case.

In other words, at some stage \fontinst will look for:
\begin{verbatim}
  INFO>> to make LaTeX font shape <<pad,sb,n,>> seek pads8r.mtx
\end{verbatim}
and if it finds a suitable metric file (\texttt{pads8r.mtx} or
\texttt{pads8a.afm}), it will create:
\begin{verbatim}
  pads7t.vpl
  pads8t.vpl
  pads8c.vpl
\end{verbatim}
and \fd file entries like this:
\begin{verbatim}
  OT1pad.fd:    \DeclareFontShape{OT1}{pad}{sb}{n}{<<->> pads7t}{}
   T1pad.fd:    \DeclareFontShape{T1} {pad}{sb}{n}{<<->> pads8t}{}
  TS1pad.fd:    \DeclareFontShape{TS1}{pad}{sb}{n}{<<->> pads8c}{}
\end{verbatim}
and since |sb| is not a normal \LaTeX\ font series, you'll need to use
something like:
\begin{verbatim}
  \fontfamily{pad}\fontseries{sb}\selectfont
\end{verbatim}
to use this font.

% For example, \verb|\latinfamily{ptm}{}| is
% syntactic sugar for:
% \begin{verbatim}
%    \transformfont{ptmr8r}{\reencodefont{8r}{\fromafm{ptmr8a}}}
%    \transformfont{ptmri8r}{\reencodefont{8r}{\fromafm{ptmri8a}}}
%    \transformfont{ptmb8r}{\reencodefont{8r}{\fromafm{ptmb8a}}}
%    \transformfont{ptmbi8r}{\reencodefont{8r}{\fromafm{ptmbi8a}}}
%    \transformfont{ptmro8r}{\slantfont{167}{\frommtx{ptmr8r}}}
%    \transformfont{ptmbo8r}{\slantfont{167}{\frommtx{ptmb8r}}}
%    \installfonts
%       \installfamily{T1}{ptm}{}
%       \installfamily{OT1}{ptm}{}
%       \installfont{ptmr8t}{ptmr8r,latin}{T1}{T1}{ptm}{m}{n}{}
%       \installfont{ptmr7t}{ptmr8r,latin}{OT1}{OT1}{ptm}{m}{n}{}
%       \installfont{ptmrc8t}{ptmr8r,latin}{T1c}{T1}{ptm}{m}{sc}{}
%       \installfont{ptmrc7t}{ptmr8r,latin}{OT1c}{OT1}{ptm}{m}{sc}{}
%       \installfont{ptmri8t}{ptmri8r,latin}{T1}{T1}{ptm}{m}{it}{}
%       \installfont{ptmri7t}{ptmri8r,latin}{OT1i}{OT1}{ptm}{m}{it}{}
%       \installfont{ptmro8t}{ptmro8r,latin}{T1}{T1}{ptm}{m}{sl}{}
%       \installfont{ptmro7t}{ptmro8r,latin}{OT1}{OT1}{ptm}{m}{sl}{}
%       \installfont{ptmb8t}{ptmb8r,latin}{T1}{T1}{ptm}{b}{n}{}
%       \installfont{ptmb7t}{ptmb8r,latin}{OT1}{OT1}{ptm}{b}{n}{}
%       \installfont{ptmbc8t}{ptmb8r,latin}{T1c}{T1}{ptm}{b}{sc}{}
%       \installfont{ptmbc7t}{ptmb8r,latin}{OT1c}{OT1}{ptm}{b}{sc}{}
%       \installfont{ptmbi8t}{ptmbi8r,latin}{T1}{T1}{ptm}{b}{it}{}
%       \installfont{ptmbi7t}{ptmbi8r,latin}{OT1i}{OT1}{ptm}{b}{it}{}
%       \installfont{ptmbo8t}{ptmbo8r,latin}{T1}{T1}{ptm}{b}{sl}{}
%       \installfont{ptmbo7t}{ptmbo8r,latin}{OT1}{OT1}{ptm}{b}{sl}{}
%    \endinstallfonts
% \end{verbatim}


The \texttt{basicex.tex} file in the \texttt{examples} directory of 
the main \fontinst distribution is an annotated command file which 
does roughly the same things as the \verb|\latinfamily| command for 
the \texttt{pad} family of fonts.


\end{document}