Filenames for TeX fonts
***********************

  This document describes a scheme for making eight-character filenames
from (almost) arbitrarily complex font names.  It points out
shortcomings of this approach, as well as strengths.  Many examples of
the approach are given as well as complete tables of all "registered"
(i.e., sent to me, `karl@cs.umb.edu') names.

Introduction
************

  As more typeface families become available for use with TeX, the need
for a consistent, rational naming scheme for the font filenames
concomitantly grows.  What follows is somewhat related to and a
simplification of Mittelbach's and Schoepf's article in `TUGboat',
volume 11, number 2 (June 1990).  The document you are now reading is an
update of my article published in `TUGboat' 11(4) (November 1990),
pages 512--519.  Finally, Mittelbach wrote another article criticizing
the scheme below in `TUGboat' 13(1) (April 1992), pages 51--53; most of
his points are well-taken, but I saw no alternative then, and see no
alternative now.  Other of his points are addressed in the appropriate
sections below.

  Here are some relevant facts about fonts:

   * TeX runs on virtually all computers, under almost as many operating
     systems, all with their own (usually incompatible) ideas of how
     files should be named.  Any proposal regarding filenames,
     therefore, must cater to the lowest common denominator.  That As
     far as I know, this is eight characters in length (since the SAIL
     machines on which Knuth developed TeX have been unplugged), not
     counting any extension, without regard to case, and using only
     letters and numerals.

   * Most typefaces are offered by several vendors.  The version
     offered by one vendor is not compatible with that of another.  In
     fact, the names are usually not the same (a deplorable practice
     due to the lack of typeface protection in all countries (at this
     writing, and to my knowledge) except Germany, England, and (in a
     few cases) France).

   * Typefaces typically come in different weights (hairline to extra
     heavy), different widths (ultra condensed to wide), and an
     open-ended range of variants (italic, sans serif, typewriter,
     shadow, ....  No accepted standards exist for what any of these
     qualities actually, nor (in my opinion) are any standards ever
     likely to gain acceptance.  (Although work on an international
     font standard is progressing, the end is not in sight.)

   * The Computer Modern typeface family preserves traditional
     typesetting practice in at least one important respect: different
     sizes of the same font are not simply linear scalings.  This is in
     contrast to most commercial (e.g., PostScript) fonts available.

  I know that these tables are incomplete.  Please send me, by
electronic mail to `karl@cs.umb.edu', any additions or corrections, as
well as any other comments you may have.  There is also a (low-volume)
mailing list concerned with fonts and TeX in general (this scheme was
developed after discussions on that list, in fact):
`tex-fonts@math.utah.edu'.

  Many people have contributed to this proposal.  I would like to
acknowledge in particular Barbara Beeton, Rocky Bernstein, Berthold K.P.
Horn, Sebastian Rahtz, and Jean Rivlin.  Tom Rokicki and Russell Lang
gave it its first real test when they adapted it to Tom's Dvips
translator.

The naming scheme
*****************

  Here is how I propose to divide up the eight characters (the spaces
between the parts are only for readability, and of course should not be
in the filename!):
      S TT W V E DD

where

   * `S' represents the source of the font, and is omitted if the
     source is unknown or irrelevant or something.

   * `TT' represents the typeface name.

   * `W' represents the weight.

   * `V' represents the variant, and is omitted if both it and the
     width are "normal".  Many fonts have more than one variant.

   * `E' represents the width ("expansion"), and is omitted if it is
     "normal".

   * `DD' represents the design size, and is omitted if the font is
     linearly scaled from a single TFM file.

  See the section on virtual fonts (towards the end) for an exception to
the above.

  The weight, variant, and width are probably all best taken from the
original source of the typeface, instead of trying to relate them to
some external standard.

  Before giving the lists of abbreviations, let me point out some
problems.  I don't know of a good solution for any of them.  Please let
me know if you have ideas about any of them.

  1. Assuming that only the English letters are used, two letters is
     enough for only 676 typeface families (even assuming we want to
     use all possible combinations, which is doubtful).  There are many
     more than 676 typeface families in the world.  This problem has
     already arisen in practice--the abbreviations for typeface
     families that start with the letter `s', for example, break down
     after a while: I had to call Simoncini Garamond (which should be
     `sg' on the face of it) `ig'.

  2. Fonts with design sizes larger than 100 point do exist.
     Mittelbach in TUGboat 13(1) proposes using hexadecimal or base-36
     notation.  I don't think the increased range makes up for the
     unreadability of the common sizes (e.g., 10pt fonts would have a
     suffix `a' (in hex), or `j' (in base 36)).  In practice, no one
     has complained to me that they can't name their 128pt Helvetica.

  3. Several of the "variants" below are not type styles (specifically,
     `expert' and `alternate'); instead, they are different encoding
     schemes.  The encoding scheme should be specified separately, but
     there are no more letters.

  4. Another dimension along which typefaces can vary is the script.
     Many typeface families include variants for Greek, or Cyrillic, or
     what have you.  Again, this should be specified independently of
     everything else, but there are no more letters.  For now, Greek
     can be specified as a variant letter `k'.

  5. It is common to have multiple variants.  This quickly makes the
     font names longer than eight letters.  For example, Adobe sells a
     font named `Minion-SwashDisplayItalic', which translates to the
     name `pmnrwdi', seven letters long.  If Adobe did proper design
     sizing, the name would be nine letters long already--and the font
     isn't even bold!

  6. Multiple variants also lead to ambiguous names, in two different
     ways.

     First, the same font can be given different names, by specifying
     the variants in different orders.  For example, the
     `Minion-SwashDisplayItalic' font mentioned above could also be
     specified as `pmnrdiw'.  This can be alleviated by always giving
     the variant abbreviations in alphabetical order.

     Second, two fonts can be given the same name.  For example,
     `fcmrtc' could be either Computer Modern typewriter condensed or
     Computer Modern typewriter small caps.  This problem can be
     alleviated by adding `r' (or possibly `rr', in pathological cases)
     to the end, meaning "normal width.  But that will make the name
     too long in many cases, and always specifies what should be
     redundant information.

     Ideally, the various parts of the name would be separated by
     something other than the empty string.

  If you adopt this proposal at your installation, and find that you
have fonts with some property I missed, please write to me (see the end
of the article for various addresses), so I can update the lists.  You
can get the most up-to-date version of these lists electronically, by
anonymous ftp from the host `ftp.cs.umb.edu', in the directory
`pub/tex/fontname'.  I will also send them to you by electronic mail,
if necessary.

  Graham Asher (`gasher@cursci.co.uk') has written a C routine to
demangle these fontnames.  See `fnget.h' and `fnget.c' in this
distribution.

  I give the letters in lowercase, which I think should be used on
systems where case is significant.  The lists are in alphabetical order
by the abbreviation.

Sources
=======

  You should use the letter here which matches the vendor you obtained
the font from.  This doesn't necessarily mean that vendor is the
original source; for example, Avant Garde was designed by Herb Lubalin
for ITC, but Adobe also sells it.  The name of the font that you get
from Adobe should start with `p'.

`9'
     unknown

`a'
     Autologic

`b'
     Bitstream

`c'
     Compugraphic

`f'
     freely distributable (e.g., public domain)

`g'
     Free Software Foundation (`g' for GNU)

`h'
     Bigelow & Holmes

`i'
     International Typeface Corporation

`l'
     Linotype

`m'
     Monotype

`n'
     IBM

`p'
     Adobe (`p' for PostScript)

`r'
     `raw' (for use with virtual fonts, see Naming virtual fonts.)

`s'
     Sun

`u'
     user

`x'
     American Mathematical Society (`x' for math)

`y'
     Y&Y

`z'
     bizarre

  The distinction between "public domain" and "user" fonts is a small
one.  I believe that some fonts are distributed without any real
attribution to the creator; also, some fonts are freely distributed by
individuals who don't plan to start their own digital type foundries
(Computer Modern, for example).  For these, `f' is appropriate.  On the
other hand, individual users sometimes create their own personal fonts,
which would be of no use to anyone except the creator; that's what `u'
is for.

  The source `z' is unfortunate; but some fonts just don't fit well
into the naming scheme.  They should be prefixed by `z' (in addition to
whatever the real source is).

  The source `r' is also unfortunate; it would be better to simply
specify the encoding of the font, or whatever the virtual font changed
or added, eliminating the rather artificial distinction between "raw"
and "virtual" fonts.

Typeface families
=================

`a2'
     Amasis

`aa'
     Aachen

`ab'
     Arnold Boecklin

`ac'
     Adobe Caslon

`ad'
     Adobe Garamond

`ag'
     Avant Garde

`ah'
     Ashley Script

`ai'
     Abadi

`al'
     Albertus

`am'
     Americana

`ao'
     Antique Olive

`ap'
     Apollo

`ar'
     Arcadia

`as'
     Aldus

`at'
     American Typewriter

`au'
     Auriol

`av'
     Avenir

`az'
     Akzidenz Grotesque

`b0'
     Blackoak

`b1'
     Blado

`b2'
     BinnyOldStyle

`b3'
     Braggadocio

`bb'
     Bembo

`bc'
     Banco

`bd'
     Bodoni

`be'
     Bell

`bf'
     Biffo

`bg'
     Benguiat

`bh'
     Bauhaus

`bi'
     Birch

`bk'
     Bookman

`bl'
     Belwe

`bn'
     Bernard

`bo'
     Balloon

`bp'
     Bundesbahn Pi

`br'
     Berling

`bs'
     BakerSignet

`bu'
     Brush

`bv'
     Baskerville

`bw'
     Broadway

`by'
     Berkeley

`c0'
     Carolina

`c1'
     Calisto

`c2'
     Caslon 224

`c3'
     Caslon 3

`c5'
     Caslon 540

`c6'
     Clarion

`c7'
     Compacta

`c8'
     Calvert

`ca'
     Caslon

`cb'
     Cooper Black

`cc'
     Cascade

`cd'
     Clarendon

`ce'
     Centennial

`cf'
     Clearface

`cg'
     Charlemagne

`ch'
     Charter

`ci'
     Candida

`cl'
     Cloister

`cm'
     Computer Modern

`cn'
     Century

`co'
     Cochin

`cp'
     Copperplate

`cq'
     Cheq

`cr'
     Courier

`cs'
     Century Schoolbook

`ct'
     Cheltenham

`cu'
     Century Old Style

`cv'
     Clairvaux

`cw'
     Cottonwood

`cx'
     Caxton

`cy'
     City

`dc'
     Dom Casual

`dd'
     Duc de Berry

`dr'
     Doric

`ds'
     Dorchester Script

`ee'
     Egyptian Extended

`ef'
     EgyptienneF

`eg'
     Stempel Garamond

`eh'
     Engschrift

`ei'
     Esprit

`el'
     Ellington

`en'
     Engravers

`ep'
     European Pi

`er'
     Eras

`es'
     Eurostile

`et'
     Ehrhardt

`eu'
     Euler

`ex'
     Excelsior

`fa'
     Formata

`fe'
     Forte

`ff'
     Fairfield

`fg'
     Franklin Gothic

`fl'
     Flora

`fn'
     Fenice

`fo'
     Folio

`fq'
     Friz Quadrata

`fr'
     Frutiger

`fs'
     Falstaff

`fi'
     Figaro

`ft'
     Fette Fraktur

`fu'
     Futura

`fx'
     Felix Titling

`fy'
     Flyer

`g1'
     Gothic Thirteen

`g3'
     Garamond No. 3

`g4'
     Goudy Modern

`g5'
     Goudy Catalogue

`gb'
     Gothic BBB

`gg'
     Garth Graphic

`gj'
     Granjon

`gl'
     Galliard

`gm'
     Garamond

`go'
     Goudy Old Style

`gp'
     Glypha

`gq'
     Grotesque

`gr'
     Gloucester

`gs'
     Gill Sans

`gt'
     Goudy Text

`gu'
     Guardi

`gv'
     Giovanni

`gy'
     Goudy

`hb'
     Hobo

`hc'
     Herculanum

`hd'
     Headline

`hg'
     Hiroshige

`hi'
     Helvetica Inserat

`hm'
     Charme

`hn'
     Helvetica Neue

`ho'
     Horley Old Style

`hr'
     Helvetica Rounded

`hv'
     Helvetica

`ia'
     Insignia

`ic'
     Impact

`if'
     Inflex

`ig'
     Simoncini Garamond

`ii'
     Imprint

`il'
     Caecilia

`im'
     Imago

`in'
     Industria

`io'
     ionic

`ip'
     Impressum

`is'
     Italian Old Style

`it'
     Italia

`iw'
     Ironwood

`jn'
     Janson

`jo'
     Joanna

`jp'
     Juniper

`kb'
     Kabel

`kl'
     Klang

`kr'
     Korinna

`ks'
     Kuenstler Script

`ku'
     Kaufmann

`lb'
     Lubalin Graph

`lc'
     Lucida

`lf'
     Life

`lg'
     Letter Gothic

`li'
     Latin

`ln'
     Lino

`lo'
     Lithos

`ls'
     Mittelshrift

`lt'
     Lutetia

`lw'
     Leawood

`m1'
     Monoline Script

`md'
     Meridien

`me'
     Mercurius Script

`mh'
     Machine

`mi'
     Medici

`ml'
     Melior

`mn'
     Minion

`mo'
     Modern

`mp'
     Memphis

`mq'
     Mesquite

`mr'
     Madrone

`ms'
     Mistral

`mt'
     Minister

`mv'
     Malvern

`mx'
     Maximus

`na'
     New Aster

`nb'
     New Baskerville

`nc'
     New Century Schoolbook

`nd'
     New Caledonia

`nf'
     Nofret

`ng'
     News Gothic

`ni'
     Nimrod

`nk'
     Neographik

`nn'
     New Clarendon

`np'
     News Plantin

`nr'
     New Berolina

`nt'
     Times New Roman

`nu'
     Nuptial

`nv'
     Novarese

`nz'
     Neuzeit S

`o7'
     Old Style 7

`oa'
     OCR-A

`ob'
     OCR-B

`oc'
     Concorde

`oe'
     Old English

`om'
     Omnia

`on'
     Corona

`op'
     Optima

`or'
     Orator

`os'
     Old Style

`ot'
     Coronet

`ov'
     Octavian

`ox'
     Onyx

`oy'
     Olympian

`p0'
     Poplar

`p1'
     Palace Script

`p2'
     Pepita

`pa'
     Park Avenue

`pd'
     Placard

`pe'
     Prestige Elite

`pg'
     Peignot

`ph'
     Photina

`pi'
     Plantin

`pl'
     Palatino

`po'
     Ponderosa

`pp'
     Perpetua

`pq'
     Post Antiqua

`ps'
     Parisian

`pt'
     Present

`px'
     Poppl Pontifex

`pz'
     Poliphilus

`qr'
     Quorum

`ra'
     Raleigh

`ro'
     Rotis

`rp'
     Reporter

`rq'
     Russell Square

`rt'
     Carta

`ru'
     Runic

`rv'
     Revue

`rw'
     Rockwell

`ry'
     Ryumin

`s0'
     San Marco

`s1'
     Scotch Roman

`s2'
     Script

`sb'
     Sabon

`sc'
     Slimbach

`sf'
     Serifa

`sg'
     Serif Gothic

`sh'
     Shannon

`sl'
     Stencil

`sm'
     Spectrum

`sn'
     Spartan

`so'
     Sonata

`sp'
     Serpentine

`sr'
     Snell Roundhand

`ss'
     Stempel Schneidler

`st'
     Stone

`sv'
     Souvenir

`sw'
     Swing

`sx'
     Syntax

`sy'
     Symbol

`tb'
     Berthold Bodoni

`te'
     Times Europa

`tf'
     Tiffany

`tg'
     Trade Gothic

`ti'
     Tech Phonetic

`tj'
     Trajan

`tk'
     Tektok

`tl'
     Castellar

`tm'
     Times

`tp'
     Tempo

`tv'
     Trump Mediaeval

`tw'
     Twentieth Century

`ty'
     Typewriter

`ub'
     Bauer Bodoni

`ug'
     Benguiat Gothic

`uh'
     Cushing

`ul'
     Universal

`um'
     Umbra

`un'
     Univers

`ur'
     Centaur

`ut'
     Utopia

`uw'
     Usherwood

`uy'
     University

`vc'
     Vectora

`vd'
     Van Dijck

`vj'
     Veljovic

`vl'
     Versailles

`vr'
     VAG Rounded

`wb'
     Walbaum

`wd'
     Weidemann

`wg'
     WilhelmKlingsporGotisch

`wk'
     Wilke

`wo'
     Wood

`ws'
     Weiss

`ww'
     Willow

`ym'
     Stymie

`za'
     ZAntiqua

`zc'
     Zapf Chancery

`zd'
     Zapf Dingbats

`zg'
     Neuzeit Grotesk

`zt'
     Zeitgeist

Aliases
-------

  In the introduction, I alluded to the fact that the same typeface
design is often (in fact, usually) offered under different names by
different vendors.  This is because typeface *names* can be protected
in many countries, including the United States, via trademarks.  But
typeface *designs* can be easily protected in only a few countries.
(Incidentally, who the trademark belongs to doesn't necessarily have
anything to do with who actually did the original design; in the case of
Helvetica, it was the Swiss letterform designer Max Miedinger for, I
believe, the Haas foundry.)  For an excellent article (still,
unfortunately, mostly up-to-date) on typeface protection, see `Notes on
typeface protection' by Charles Bigelow in `TUGboat' volume 7, number 3
(October 1986).

  This all leads to massive confusion for a typeface buyer, who knows
what, say, Helvetica (a trademark of Allied Corporation) looks
like--but probably doesn't know, or care, that Monotype's marketing
department called one of their versions of Helvetica `Arial'.  Rather
than perpetuate this confusion, I believe it will be better to use the
same name for the same design, in contrast to always using the vendor's
name.  (For one thing, this will help in conserving the number of
typeface families, which, given the limited number of letters, is a
desirable goal.)

  In order to help users who may only know their vendor's name, and not
the original name, I am maintaining the following table of typeface name
aliases, organized alphabetically by vendor name.

Arial
     Helvetica

ISIL Gothic
     Letter Gothic

Newton
     Helvetica

Sonoran Serif
     New Times Roman

Sonoran Sans Serif
     Helvetica

Tramp
     Hobo

Zapf Calligraphic
     Palatino

Zapf Humanist
     Optima

Weight
======

`a'
     hairline, thin

`b'
     bold

`c'
     black

`d'
     demibold

`h'
     heavy

`i'
     extra light

`k'
     book

`l'
     light

`m'
     medium

`p'
     poster

`r'
     regular

`s'
     semibold

`u'
     ultra

`x'
     extra bold

  In order of lightest to heaviest (more or less):
     hairline, extra light, light,
     book, regular, medium,
     demibold, semibold, bold, extra bold, heavy
     black, ultra, poster

Variant
=======

  Unfortunately, "variants" include scripts (Greek, Cyrillic) and font
encodings (Adobe standard, alternate, expert), as well as true typeface
variations (italic, typewriter).

  Mittelbach in TUGboat 13(1) suggests that `typewriter' and `sans'
should be identified as part of the typeface name, because there are few
typeface families with these variants.  I feel the typeface namespace is
already too cluttered, and that logically they are variants.

`0'
     Adobe standard encoding

`1'
     semi sans

`2'
     changed characters only, e.g., Adobe's `Dfr'

`3'
     fractions

`4'
     fax

`5'
     phonetic (IPA)

`9'
     oldstyle digits

`a'
     Adobe alternate encoding, alternate characters only

`b'
     bright

`c'
     small caps

`d'
     display, titling, caption

`e'
     engraved, copperplate

`f'
     Fraktur, gothic, blackletter

`g'
     grooved (as in the IBM logo)

`h'
     shadow

`i'
     text italic, kursiv

`j'
     invisible

`k'
     Greek

`l'
     outline, open face

`m'
     math italic

`n'
     informal

`o'
     oblique (i.e., slanted)

`p'
     ornament

`q'
     TeX extended (Cork) encoding

`r'
     normal (roman or sans)

`s'
     sans serif

`t'
     typewriter

`u'
     unslanted italic

`v'
     math extension

`w'
     script, handwritten, swash

`x'
     Adobe expert encoding

`y'
     symbol

`z'
     Cyrillic

  If the variant is `r', and the width is also normal, both the variant
and the width are omitted.  When the normal version of the typeface is
sans serif (e.g., Helvetica), `r' should be used, not `s'.  Use `s'
only when the typeface family has both serif and sans serif variants.

Width
=====

`c'
     condensed (by hand)

`e'
     expanded (automatic)

`n'
     narrow (automatic)

`o'
     ultra condensed

`p'
     compressed

`q'
     extra compressed, extra condensed

`r'
     regular, normal, medium (usually omitted)

`t'
     thin

`u'
     ultra compressed

`w'
     wide

`x'
     extended (by hand)

  In order of narrowest to widest (more or less):
     ultra compressed, extra condensed, compressed, condensed, narrow
     regular, extended, expanded, wide

  Expansion or compression of fonts is sometimes done automatically (as
by the PostScript `scale' operator), and sometimes done by humans.  I
chose `narrow' and `expanded' to imply the former, and `condensed' and
`extended' to imply the latter, as I believe this reflects the most
common usage.  (Of course there is no general consensus.)

Naming virtual fonts
====================

  In concert with releasing TeX version 3.0 and Metafont version 2.7,
Don Knuth wrote two new utility programs: VFtoVP and VPtoVF, which
convert to and from "virtual" fonts.  Virtual fonts provide a general
interface between the writers of TeX macros and font suppliers.  In
general, therefore, it is impossible to come up with a general scheme
for naming virtual fonts, since each virtual font is an individual
creation, possibly bringing together many unrelated fonts.

  Nevertheless, one common case is to use virtual fonts to map plain
TeX's accent and other character code conventions onto a
vendor-supplied font.  For example, the DVI-to-PostScript translator
Dvips (written by Tom Rokicki) does this for fonts given in the
PostScript "standard encoding".  In this case, each font consists of a
"virtual" tfm file, which is what TeX uses, a "raw" tfm file, which
corresponds to the actual device font, and a vf file, which describes
the relationship between the two.

  This adds another dimension to the font namespace, namely,
"virtualness" (or rather, "rawness", since it is the virtual tfm files
that the users want to see, and thus the one that should have the
"normal" name, as given by the tables above).  But we have already used
up all eight characters in the font names (more, in fact).

  The first solution, adopted in dvips, was this: prepend `r' to the
raw tfm files; the virtual tfm files should be named with the usual
source prefix.  For example, Adobe's virtual Times Roman tfm file is
named `ptmr', as usual; the raw Times Roman tfm file is named `rptmr'.
To prevent intolerable confusion, I promise never to give a foundry the
letter `r'.

  But now, years after, I think there is a better solution: ignore the
virtual/raw distinction in favor of the font encoding or other
distinguishing characteristics.  For example, the raw Times Roman font,
using Adobe's encoding, could be named `ptmr0'; the virtual font, with
the ersatz CM encoding, would be just `ptmr'.

Examples
********

  This chapter gives two examples.  Other examples (including the
entire Adobe font catalog as of early 1991) are available by ftp or
email (see Introduction.).

Univers
=======

  The fonts in the Univers typeface family were assigned numbers by its
designer, Adrien Frutiger.  (You can see the scheme on, for example,
page 29 of `The Art of Typo.icon.ography', by Martin Solomon.)

  The names given here have to be prefixed with a source letter to
actually be usable.  Since my purpose here was just to demonstrate the
correspondence between typeface variations and the naming scheme, I left
the source out.

45 (light)
     `unl'

46 (light italic)
     `unli'

47 (light condensed)
     `unlrc'

48 (light condensed italic)
     `unlic'

49 (light extra condensed)
     `unlro'

53 (medium extended)
     `unmrx'

55 (medium)
     `unm'

56 (medium italic)
     `unmi'

57 (medium condensed)
     `unmrc'

58 (medium condensed italic)
     `unmic'

59 (medium extra condensed)
     `unmro'

63 (demibold extended)
     `undrx'

65 (demibold)
     `und'

66 (demibold italic)
     `undi'

67 (demibold condensed)
     `undrc'

68 (demibold condensed italic)
     `undic'

73 (bold extended)
     `unbrx'

75 (bold)
     `unb'

76 (bold italic)
     `unbi'

83 (extra bold extended)
     `unxrx'

Standard PostScript fonts
=========================

  Here are names for the 35 standard PostScript fonts:

`AvantGarde-Book'
     `pagk'

`AvantGarde-BookOblique'
     `pagko'

`AvantGarde-Demi'
     `pagd'

`AvantGarde-DemiOblique'
     `pagdo'

`Bookman-Demi'
     `pbkd'

`Bookman-DemiItalic'
     `pbkdi'

`Bookman-Light'
     `pbkl'

`Bookman-LightItalic'
     `pbkli'

`Courier-Bold'
     `pcrb'

`Courier-BoldOblique'
     `pcrbo'

`Courier'
     `pcrr'

`Courier-Oblique'
     `pcrro'

`Helvetica-Bold'
     `phvb'

`Helvetica-BoldOblique'
     `phvbo'

`Helvetica-NarrowBold'
     `phvbrn'

`Helvetica-NarrowBoldOblique'
     `phvbon'

`Helvetica'
     `phvr'

`Helvetica-Oblique'
     `phvro'

`Helvetica-Narrow'
     `phvrrn'

`Helvetica-NarrowOblique'
     `phvron'

`NewCenturySchlbk-Bold'
     `pncb'

`NewCenturySchlbk-BoldItalic'
     `pncbi'

`NewCenturySchlbk-Italic'
     `pncri'

`NewCenturySchlbk-Roman'
     `pncr'

`Palatino-Bold'
     `pplb'

`Palatino-BoldItalic'
     `pplbi'

`Palatino-Italic'
     `pplri'

`Palatino-Roman'
     `pplr'

`Symbol'
     `psyr'

`Times-Bold'
     `ptmb'

`Times-BoldItalic'
     `ptmbi'

`Times-Italic'
     `ptmri'

`Times-Roman'
     `ptmr'

`ZapfChancery-MediumItalic'
     `pzcmi'

`ZapfDingbats'
     `pzdr'

Long names
**********

  As pointed out earlier, eight characters is not enough to
unambiguously represent all fonts.  To do that, we have to allow
ourselves very long filenames.  Right now, such a scheme could only be
implemented on a few kinds of systems.  But with a simple change to
TeX, it could be used on all systems.

A fontname mapping file
=======================

  At the moment, most implementations of TeX look up a TFM file (as
part of the `\font' command), by searching for a file with the name
given by the user (possibly in any of series of directories).  But if it
looks the name up first in *another* file, which specifies the actual
filename, the fontname given in the TeX source could be almost anything
at all, of any length.

  In version 5.851d of Web2C, I implemented this mapping file.  It has
an extremely simple format: each line specifies the filename and the TeX
name for one font, separated by whitespace.  Extra information on the
line is ignored; then more information could be specified for the
benefit of DVI-reading programs in the same file.  Comments start with
`%' and continue to the end of the line, as usual.

  Besides allowing long names, the mapping file could have additional
advantages.  The TeX source files could become more nearly
system-independent, because the same font names could work on every
system.  Also, when combined with a consistent naming scheme, macros
could be written to access any of a number of fonts.  Right now, each
font family has to have specialized macros written to deal with it.

  Incidentally, Professor Knuth has approved this change as a legitimate
"system-dependent" adaptation; a TeX with such a feature can still be
called "TeX".

A naming scheme for long names
==============================

  Once we allow ourselves long names, we can construct a naming scheme
to handle arbitrary fonts without much difficulty.  Here is one
proposal:

     SOURCE-FAMILY-WEIGHT-VARIANTS-
     WIDTH-ENCODING--SIZE

  The SOURCE is the usual `Adobe' or AUTOLOGIC or whatever, as well as
`unknown', `pd', or `weird'--this last meaning the rest of the name is
nonstandard.  If the SOURCE is missing, i.e., the name starts with a
`-', "public domain" is assumed.  For fonts made by individuals, the
initials of the designer are probably a good SOURCE.

  The FAMILY is `ComputerModern' or `Times' or whatever.

  Everything else is optional.  The `--' before the SIZE lets one
specify a name with, say, a weight and variants, but then skip the
WIDTH and ENCODING, but still be able to give a size.

  The WEIGHT and WIDTH are as described earlier.

  If there is more than one variant, they are separated with some
character other than `-', say `=':

     BigelowHolmes-Lucida-Bold-Sans=Typewriter--10

  The ENCODING is what Metafont calls the `font_coding_scheme'--the
layout of the characters in the font. For example, `TeXExtended' or
`ISOLatin1' or `AdobeAlternate'.  Perhaps this should be mandatory, as
a font is useless if you do not know its encoding.

  Names are case-sensitive, for consistency with the rest of TeX and
with PostScript, etc.  Spaces cannot be used in the name, to make it
easier for TeX to parse.  Likewise, characters with default category
codes other than letter or other should not be used.

  Another possibility is to forget all the above, and simply use the
vendor's name (perhaps prefixed by the vendor): `Adobe-Times-Roman',
say.