\input texinfo.tex

@c A modest font proposal.
@c 
@c  @texinfofile{
@c    author = "Karl Berry",	
@c    version = "1.6",
@c    date = "Wed Mar 30 15:03:54 EST 1994",
@c    filename = "fontname.texi",
@c    email = "karl@cs.umb.edu",
@c    address = "135 Center Hill Rd. // Plymouth, MA 02360",
@c    codetable = "ISO/ASCII",
@c    checksum = "1542    4972   32021",
@c    docstring = "This article describes a naming scheme for font files that
@c                 is supposed to be usable on all the computers
@c                 on which TeX runs."
@c  }
@c 

@setfilename fontname.info
@settitle Filenames for fonts

@c Here is what I use in the Info `dir' file:
@c * Naming fonts: (fontname).	Filenames for TeX fonts.

@c This file is uncopyrighted and may be used freely.


@titlepage
@title Filenames for @TeX{} fonts
@subtitle Version 1.6
@author Karl Berry
@end titlepage


@ifinfo
@node Top, Introduction, (dir), (dir)
@top 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, @samp{karl@@cs.umb.edu}) names.

This is version 1.6.

@menu
* Introduction::                Rationale and basic information about fonts.
* Naming scheme::               The construction of font names.
* Examples::                    Various real-life examples.
* Long names::			A specification for long filenames.
@end menu
@end ifinfo


@node Introduction
@chapter 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 @cite{TUGboat},
volume 11, number 2 (June 1990).  The document you are now reading is an
update of my article published in @cite{TUGboat} 11(4) (November 1990),
pages 512--519.  Finally, Mittelbach wrote another article criticizing
the scheme below in @cite{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:

@itemize @bullet

@item
@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.  As far as I know, this is
eight characters in length (since the @sc{sail} machines on which Knuth
developed @TeX{} have been unplugged), not counting any extension,
without regard to case, and using only letters and numerals.

@item
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).

@item
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, @dots{}.  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.)

@item
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.

@end itemize

I know that these tables are incomplete.  Please send me, by electronic
mail to @code{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):
@code{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 DVI-to-PostScript
translator, dvips.


@node Naming scheme
@chapter 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!):
@example
 S TT W V E DD
@end example

@noindent where

@itemize @bullet

@item
@samp{S} represents the source of the font, and is omitted
if the source is unknown or irrelevant.

@item
@samp{TT} represents the typeface name.

@item
@samp{W} represents the weight.

@item
@samp{V} represents the variant, and is omitted if both it and the
width are ``normal''.  Many fonts have more than one variant.

@item
@samp{E} represents the width (``expansion''), and is omitted if
it is ``normal''.

@item
@samp{DD} represents the design size, and is omitted if the font is
linearly scaled from a single TFM file.

@end itemize

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.

@enumerate

@item
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 @samp{sg} on the face of it)
@samp{ig}.

@item
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., 10@dmn{pt} fonts would have a suffix @samp{a} (in hex), or
@samp{j} (in base 36)).  In practice, no one has complained to me that
they can't name their 128@dmn{pt} Helvetica.

@item
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.

@item
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 @samp{k}.

@item
It is common to have multiple variants.  This quickly makes the
font names longer than eight letters.  For example, Adobe sells a font
named @code{Minion-SwashDisplayItalic}, which translates to the name
@file{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!

@item
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
@code{Minion-SwashDisplayItalic} font mentioned above could also be
specified as @file{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,
@code{fcmrtc} could be either Computer Modern typewriter condensed or
Computer Modern typewriter small caps.  This problem can be alleviated
by adding @samp{r} (or possibly @samp{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.

@end enumerate

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 @samp{ftp.cs.umb.edu}, in the directory
@file{pub/tex/fontname}.  I will also send them to you by electronic
mail, if necessary.

Graham Asher (@samp{gasher@@cursci.co.uk}) has written a C routine to
demangle these fontnames.  See @file{fnget.h} and @file{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.

@menu
* Sources::
* Typeface families::
* Weight::
* Variant::
* Width::
* Naming virtual fonts::
@end menu


@node Sources
@section 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 @samp{p}.

@table @samp

@item 9
unknown

@item a
Autologic

@item b
Bitstream

@item c
Compugraphic

@item d
Digital Typeface Corporation (DTC)

@item f
freely distributable (e.g., public domain)

@item g
Free Software Foundation (@samp{g} for GNU)

@item h
Bigelow & Holmes

@item i
ITC (International Typeface Corporation)

@item l
Linotype

@item m
Monotype

@item n
IBM

@item p
Adobe (@samp{p} for PostScript)

@item r
`raw' (for [obsolete] use with virtual fonts, @pxref{Naming virtual fonts})

@item s
Sun

@item u
URW 

@item x
American Mathematical Society (@samp{x} for math)

@item y
Y&Y

@item z
bizarre

@end table

Fonts that are distributed without any real attribution to the creator
or by individuals who don't plan to start their own digital type
foundries (Computer Modern, for example) can use @samp{f}.
People sometimes create their own personal fonts, not intended for
distribution; for those, it doesn't make any difference what the name is.

It's unfortunate that the ``bizarre'' source @samp{z} is needed; but
some fonts just don't fit well into the naming scheme.  Such fonts
should be prefixed by @samp{z} (in addition to the real source).

The source @samp{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.


@node Typeface families
@section Typeface families

@table @samp
@item a2
Amasis
@item aa
Aachen
@item ab
Arnold Boecklin
@item ac
Adobe Caslon
@item ad
Adobe Garamond
@item ag
Avant Garde
@item ah
Ashley Script
@item ai
Abadi
@item al
Albertus
@item am
Americana
@item ao
Antique Olive
@item ap
Apollo
@item aq
Antiqua
@item ar
Arcadia
@item as
Aldus
@item at
American Typewriter
@item au
Auriol
@item av
Avenir
@item az
Akzidenz Grotesque
@item b0
Blackoak
@item b1
Blado
@item b2
BinnyOldStyle
@item b3
Braggadocio
@item bb
Bembo
@item bc
Banco
@item bd
Bodoni
@item be
Bell
@item bf
Biffo
@item bg
Benguiat
@item bh
Bauhaus
@item bi
Birch
@item bk
Bookman
@item bl
Belwe
@item bn
Bernard
@item bo
Balloon
@item bp
Bundesbahn Pi
@item br
Berling
@item bs
BakerSignet
@item bu
Brush
@item bv
Baskerville
@item bw
Broadway
@item by
Berkeley
@item c0
Carolina
@item c1
Calisto
@item c2
Caslon 224
@item c3
Caslon 3
@item c5
Caslon 540
@item c6
Clarion
@item c7
Compacta
@item c8
Calvert
@item ca
Caslon
@item cb
Cooper Black
@item cc
Cascade
@item cd
Clarendon
@item ce
Centennial
@item cf
Clearface
@item cg
Charlemagne
@item ch
Charter
@item ci
Candida
@item cl
Cloister
@item cm
Computer Modern
@item cn
Century
@item co
Cochin
@item cp
Copperplate
@item cq
Cheq
@item cr
Courier
@item cs
Century Schoolbook
@item ct
Cheltenham
@item cu
Century Old Style
@item cv
Clairvaux
@item cw
Cottonwood
@item cx
Caxton
@item cy
City
@item dc
Dom Casual
@item dd
Duc de Berry
@item dl
Dolores
@item dr
Doric
@item ds
Dorchester Script
@item ee
Egyptian Extended
@item ef
EgyptienneF
@item eg
Stempel Garamond
@item eh
Engschrift
@item ei
Esprit
@item el
Ellington
@item en
Engravers
@item eo
Amerigo
@item ep
European Pi
@item er
Eras
@item es
Eurostile
@item et
Ehrhardt
@item eu
Euler
@item ex
Excelsior
@item fa
Formata
@item fe
Forte
@item ff
Fairfield
@item fg
Franklin Gothic
@item fl
Flora
@item fn
Fenice
@item fo
Folio
@item fq
Friz Quadrata
@item fr
Frutiger
@item fs
Falstaff
@item fi
Figaro
@item ft
Fette Fraktur
@item fu
Futura
@item fx
Felix Titling
@item fy
Flyer
@item g1
Gothic Thirteen
@item g3
Garamond No. 3
@item g4
Goudy Modern
@item g5
Goudy Catalogue
@item gb
Gothic BBB
@item gg
Garth Graphic
@item gj
Granjon
@item gl
Galliard
@item gm
Garamond
@item go
Goudy Old Style
@item gp
Glypha
@item gq
Grotesque
@item gr
Gloucester
@item gs
Gill Sans
@item gt
Goudy Text
@item gu
Guardi
@item gv
Giovanni
@item gy
Goudy
@item hb
Hobo
@item hc
Herculanum
@item hd
Headline
@item hg
Hiroshige
@item hi
Helvetica Inserat
@item hm
Charme
@item hn
Helvetica Neue
@item ho
Horley Old Style
@item hr
Helvetica Rounded
@item hv
Helvetica
@item ia
Insignia
@item ic
Impact
@item if
Inflex
@item ig
Simoncini Garamond
@item ii
Imprint
@item il
Caecilia
@item im
Imago
@item in
Industria
@item io
ionic
@item ip
Impressum
@item is
Italian Old Style
@item it
Italia
@item iw
Ironwood
@item jn
Janson
@item jo
Joanna
@item jp
Juniper
@item kb
Kabel
@item kl
Klang
@item kr
Korinna
@item ks
Kuenstler Script
@item ku
Kaufmann
@item lb
Lubalin Graph
@item lc
Lucida
@item lf
Life
@item lg
Letter Gothic
@item li
Latin
@item ln
Lino
@item lo
Lithos
@item ls
Mittelshrift
@item lt
Lutetia
@item lw
Leawood
@item m0
Monospace
@item m1
Monoline Script
@item md
Meridien
@item me
Mercurius Script
@item mg
Marigold
@item mh
Machine
@item mi
Medici
@item ml
Melior
@item mn
Minion
@item mo
Modern
@item mp
Memphis
@item mq
Mesquite
@item mr
Madrone
@item ms
Mistral
@item mt
Minister
@item mv
Malvern
@item mx
Maximus
@item na
New Aster
@item nb
New Baskerville
@item nc
New Century Schoolbook
@item nd
New Caledonia
@item nf
Nofret
@item ng
News Gothic
@item ni
Nimrod
@item nk
Neographik
@item nm
Nimbus
@item nn
New Clarendon
@item np
News Plantin
@item nr
New Berolina
@item nt
Times New Roman
@item nu
Nuptial
@item nv
Novarese
@item nz
Neuzeit S
@item o7
Old Style 7
@item oa
OCR-A
@item ob
OCR-B
@item oc
Concorde
@item oe
Old English
@item om
Omnia
@item on
Corona
@item op
Optima
@item or
Orator
@item os
Old Style
@item ot
Coronet
@item ov
Octavian
@item ox
Onyx
@item oy
Olympian
@item p0
Poplar
@item p1
Palace Script
@item p2
Pepita
@item pa
Park Avenue
@item pd
Placard
@item pe
Prestige Elite
@item pg
Peignot
@item ph
Photina
@item pl
Palatino
@item pn
Plantin
@item po
Ponderosa
@item pp
Perpetua
@item pq
Post Antiqua
@item ps
Parisian
@item pt
Present
@item px
Poppl Pontifex
@item pz
Poliphilus
@item qr
Quorum
@item ra
Raleigh
@item ro
Rotis
@item rp
Reporter
@item rq
Russell Square
@item rt
Carta
@item ru
Runic
@item rv
Revue
@item rw
Rockwell
@item ry
Ryumin
@item s0
San Marco
@item s1
Scotch Roman
@item s2
Script
@item sb
Sabon
@item sc
Slimbach
@item sf
Serifa
@item sg
Serif Gothic
@item sh
Shannon
@item sl
Stencil
@item sm
Spectrum
@item sn
Spartan
@item so
Sonata
@item sp
Serpentine
@item sr
Snell Roundhand
@item ss
Stempel Schneidler
@item st
Stone
@item sv
Souvenir
@item sw
Swing
@item sx
Syntax
@item sy
Symbol
@item tb
Berthold Bodoni
@item te
Times Europa
@item tf
Tiffany
@item tg
Trade Gothic
@item ti
Tech Phonetic
@item tj
Trajan
@item tk
Tektok
@item tl
Castellar
@item tm
Times
@item tp
Tempo
@item tv
Trump Mediaeval
@item tw
Twentieth Century
@item ty
Typewriter
@item ub
Bauer Bodoni
@item ug
Benguiat Gothic
@item uh
Cushing
@item ul
Universal
@item um
Umbra
@item un
Univers
@item ur
Centaur
@item ut
Utopia
@item uw
Usherwood
@item uy
University
@item va
Activa
@item vc
Vectora
@item vd
Van Dijck
@item vj
Veljovic
@item vl
Versailles
@item vr
VAG Rounded
@item wb
Walbaum
@item wd
Weidemann
@item wg
WilhelmKlingsporGotisch
@item wi
Wingdings
@item wk
Wilke
@item wo
Wood
@item ws
Weiss
@item ww
Willow
@item ym
Stymie
@item za
ZAntiqua
@item zc
Zapf Chancery
@item zd
Zapf Dingbats
@item zg
Neuzeit Grotesk
@item zt
Zeitgeist

@end table


@menu
* Aliases::
@end menu

@node Aliases
@subsection 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 @emph{names} can be protected in many
countries, including the United States, via trademarks.  But typeface
@emph{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 mostly up-to-date) on typeface
protection, see `Notes on typeface protection' by Charles Bigelow in
@cite{TUGboat} volume 7, number 3 (October 1986).  I have tried to
summarize that article, and events since then, in the `Legal issues'
section of the GNU fontutils manual.

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 typeface name.

The vendor who perpetrated the alias is given in parentheses, where known.

@table @asis

@item Arial
(Monotype) Helvetica

@item Dutch
(Bitstream) Times

@item Exotic
(Bitstream) Peignot

@item Hammersmith
(Bitstream) Gill Sans

@item ISIL Gothic
Letter Gothic

@item Newton
Helvetica

@item Omega
(LaserJet) Optima

@item Optimum
(DTC) Optima

@item Palton
(DTC) Palatino

@item Sans
(DTC) Helvetica

@item Slate
(Bitstream) Rockwell

@item Sonoran Serif
(IBM) New Times Roman

@item Sonoran Sans Serif
(IBM) Helvetica

@item Swiss
(Bitstream) Helvetica

@item Tramp
Hobo

@item Zapf Calligraphic
(Bitstream) Palatino

@item Zapf Elliptical
(Bitstream) Melior

@item Zapf Humanist
(Bitstream) Optima

@item Zurich
(Bitstream) Univers

@end table


@node Weight
@section Weight

@table @samp

@item a
hairline, thin
@item b
bold
@item c
black
@item d
demibold
@item h
heavy
@item i
extra light
@item k
book
@item l
light
@item m
medium
@item p
poster
@item r
regular
@item s
semibold
@item u
ultra
@item x
extra bold
@end table

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


@node Variant
@section 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.

@table @samp

@item 0
Adobe standard encoding
@item 1
semi sans
@item 2
encoding with changed characters only, e.g., Adobe's @samp{Dfr}
@item 3
fractions
@item 4
fax
@item 5
phonetic (IPA)
@item 6
semi serif
@item 8
@emph{escape}, see below
@item 9
oldstyle digits
@item a
Adobe alternate encoding, alternate characters only
@item b
bright
@item c
small caps
@item d
display, titling, caption
@item e
engraved, copperplate
@item f
Fraktur, gothic, blackletter
@item g
grooved (as in the @sc{ibm} logo)
@item h
shadow
@item i
text italic, kursiv
@item j
invisible
@item k
Greek
@item l
outline, open face
@item m
math italic
@item n
informal
@item o
oblique (i.e., slanted)
@item p
ornament
@item q
TeX extended (Cork, DC) encoding
@item r
normal (roman or sans)
@item s
sans serif
@item t
typewriter
@item u
unslanted italic
@item v
math extension
@item w
script, handwritten, swash
@item x
Adobe expert encoding
@item y
symbol
@item z
Cyrillic
@end table

If the variant is @samp{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), @samp{r} should be used, not
@samp{s}.  Use @samp{s} only when the typeface family has both serif and
sans serif variants.

The variant @samp{8} is marked ``escape'': this means the next character
is also to be taken as a variant letter (and gives us another 36
characters). Here is the table for the escaped variants:

@table @samp
@item 1
ISO Latin 1 (8859/1) encoding
@item 2
ISO Latin 2 (8859/2) encoding
@item 5
ISO Latin 5 (8859/5) encoding
@item m
Macintosh standard encoding
@item w
Windows ANSI encoding (from Appendix C of the Adobe PDF manual and the
back of the Windows manual)
@end table


@node Width
@section Width

@table @samp
@item c
condensed (by hand)
@item e
expanded (automatic)
@item n
narrow (automatic)
@item o
ultra condensed
@item p
compressed
@item q
extra compressed, extra condensed
@item r
regular, normal, medium (usually omitted)
@item t
thin
@item u
ultra compressed
@item w
wide
@item x
extended (by hand)
@end table

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

Expansion or compression of fonts is sometimes done automatically (as
by the PostScript @code{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.)


@node Naming virtual fonts
@section 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 @samp{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 @file{ptmr}, as usual; the raw Times Roman tfm file is named
@file{rptmr}.  To prevent intolerable confusion, I promise never to give
a foundry the letter @samp{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 @file{ptmr0}; the virtual
font, with the ersatz CM encoding, would be just @file{ptmr}.


@node Examples
@chapter Examples

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


@menu
* Univers::                     
* Standard PostScript fonts::   
@end menu

@node Univers
@section 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 @cite{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.

@table @asis

@item 45 (light)
@file{unl}
@item 46 (light italic)
 @file{unli}
@item 47 (light condensed)
 @file{unlrc}
@item 48 (light condensed italic)
 @file{unlic}
@item 49 (light extra condensed)
 @file{unlro}
@item 53 (medium extended)
 @file{unmrx}
@item 55 (medium)
 @file{unm}
@item 56 (medium italic)
 @file{unmi}
@item 57 (medium condensed)
 @file{unmrc}
@item 58 (medium condensed italic)
 @file{unmic}
@item 59 (medium extra condensed)
 @file{unmro}
@item 63 (demibold extended)
 @file{undrx}
@item 65 (demibold)
 @file{und}
@item 66 (demibold italic)
 @file{undi}
@item 67 (demibold condensed)
 @file{undrc}
@item 68 (demibold condensed italic)
 @file{undic}
@item 73 (bold extended)
 @file{unbrx}
@item 75 (bold)
 @file{unb}
@item 76 (bold italic)
 @file{unbi}
@item 83 (extra bold extended)
 @file{unxrx}
@end table


@node Standard PostScript fonts
@section Standard PostScript fonts

Here are names for the 35 standard PostScript fonts:

@table @code
@item AvantGarde-Book
 @file{pagk}
@item AvantGarde-BookOblique
 @file{pagko}
@item AvantGarde-Demi
 @file{pagd}
@item AvantGarde-DemiOblique
 @file{pagdo}
@item Bookman-Demi
 @file{pbkd}
@item Bookman-DemiItalic
 @file{pbkdi}
@item Bookman-Light
 @file{pbkl}
@item Bookman-LightItalic
 @file{pbkli}
@item Courier-Bold
 @file{pcrb}
@item Courier-BoldOblique
 @file{pcrbo}
@item Courier
 @file{pcrr}
@item Courier-Oblique
 @file{pcrro}
@item Helvetica-Bold
 @file{phvb}
@item Helvetica-BoldOblique
 @file{phvbo}
@item Helvetica-NarrowBold
 @file{phvbrn}
@item Helvetica-NarrowBoldOblique
 @file{phvbon}
@item Helvetica
 @file{phvr}
@item Helvetica-Oblique
 @file{phvro}
@item Helvetica-Narrow
 @file{phvrrn}
@item Helvetica-NarrowOblique
 @file{phvron}
@item NewCenturySchlbk-Bold
 @file{pncb}
@item NewCenturySchlbk-BoldItalic
 @file{pncbi}
@item NewCenturySchlbk-Italic
 @file{pncri}
@item NewCenturySchlbk-Roman
 @file{pncr}
@item Palatino-Bold
 @file{pplb}
@item Palatino-BoldItalic
 @file{pplbi}
@item Palatino-Italic
 @file{pplri}
@item Palatino-Roman
 @file{pplr}
@item Symbol
 @file{psyr}
@item Times-Bold
 @file{ptmb}
@item Times-BoldItalic
 @file{ptmbi}
@item Times-Italic
 @file{ptmri}
@item Times-Roman
 @file{ptmr}
@item ZapfChancery-MediumItalic
 @file{pzcmi}
@item ZapfDingbats
 @file{pzdr}
@end table


@node Long names
@chapter 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.

@menu
* Name mapping file::		Aliases for fonts.
* Long naming scheme::		A way to use more than 8 alphanumerics.
@end menu


@node Name mapping file
@section A fontname mapping file

At the moment, most implementations of @TeX{} look up a TFM file (as
part of the @code{\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 @emph{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
straightforward 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
@code{%} 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{}''.


@node Long naming scheme
@section 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:

@example
@var{source}-@var{family}-@var{weight}-@var{variants}-
@var{width}-@var{encoding}--@var{size}
@end example

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

The @var{family} is @code{ComputerModern} or @code{Times} or whatever.

Everything else is optional.  The @code{--} before the @var{size} lets
one specify a name with, say, a weight and variants, but then skip the
@var{width} and @var{encoding}, but still be able to
give a size.

The @var{weight} and @var{width} are as described earlier.

If there is more than one variant, they are separated with some
character other than @code{-}, say @code{=}:

@example
BigelowHolmes-Lucida-Bold-Sans=Typewriter--10
@end example

The @var{encoding} is what Metafont calls the
@code{font_coding_scheme}---the layout of the characters in the font.
For example, @code{TeXExtended} or @code{ISOLatin1} or
@code{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):
@code{Adobe-Times-Roman}, say.


@contents

@bye
