Under Construction

A Simpler Worked Example of TeX Virtual Fonts

My first simple worked example was too complicated and got bogged down. I eventually wrote something fugly in python which produced this VPL

\font\Z zefflores at20pt\Z\baselineskip15pt
\centerline{The}
\smallskip
\centerline{\font\X eiffle at30pt\X United Baptist Church}
\smallskip
\centerline{of Chester, Nova Scotia}
(rendering of above)

Here's an easier one: splice into cmr the lowercase digits1 from cmmi.

I adapted the above python script a bit, generating VPLs for 5, 6, 7, 8, 9, 10, and 12 point. (Those were the sizes for which my box had TFMs for both cmr and cmmi.) Here're notated pieces of the 8-point file:

(designsize r 8)
(fontdimen
  (xheight r 0.430555)
  (space r 0.354172)
  (stretch r 0.177086)
  (quad r 1.062515)
  (shrink r 0.118057)
  (slant r 0))
The above is from cmr8 (try tftopl cmr8.tfm).
(mapfont d 0
  (fontname cmr8)
  (fontdsize r 8))
(mapfont d 1
  (fontname cmmi8)
  (fontdsize r 8))
It is vital to declare the design size of the pulled-in fonts; otherwise dvips will make complaints about design-size mismatches and kdvi will draw wrong-sized glyphs.
(ligtable
Because it involved no digits, this table is (should be) the same as cmr8's. It's been deleted to save space.
  )
(character d 0
  (charwd r 0.663551)
  (charht r 0.683332)
  (map
    (selectfont d 0)
    (setchar d 0)))
The characters 0 through 47 are taken as-is from cmr8.
(character d 47
  (charwd r 0.531258)
  (charht r 0.75)
  (chardp r 0.25)
  (map
    (selectfont d 0)
    (setchar d 47)))
(character d 48
  (charwd r 0.531258)
  (charht r 0.430555)
  (map
    (selectfont d 1)
    (setchar d 48)))
Characters 48 through 57 are from cmmi8.
(character d 57
  (charwd r 0.531258)
  (charht r 0.430555)
  (chardp r 0.194445)
  (map
    (selectfont d 1)
    (setchar d 57)))
(character d 58
  (charwd r 0.295143)
  (charht r 0.430555)
  (map
    (selectfont d 0)
    (setchar d 58)))
And the rest are from cmr8, again.
(character d 255
  (charwd r 0)
  (charht r 0)
  (map
    (selectfont d 0)
    (setchar d 255)))

To use it (these may be teTeX-centric instructions)

  1. run the files through vptovf
  2. put the VF files where TeX can find them (eg texmf/fonts/vf/public/cm)
  3. put the TFM files where TeX can find them (eg texmf/fonts/tfm/public/cm)
  4. run texhash
Now they should be useable in the normal way.
\font\X cmr10x\X
For example, in principle, the Rubik cube could be
solved by drawing its graph---but the graph would
need 43,252,003,274,489,856,000 vertices!
\bye
sample of cmr10x
Notice how the numeral does not visually outweigh the words. (The text is from Ian Stewart Another Fine Math You've Got Me Into... p. 5)

1. aka text or oldstyle. These glyphs are intended to go with text composed of lowercase letters. The digit glyphs we're used to seeing are lining or titling digits, and not intended to appear in body text. Oldstyle is thus an especially odd thing for Knuth to have called them, while being otherwise so fussy. It's perhaps stranger that he placed these glyphs in one math face and not in the text faces; (s)he who wants proper italic and bold versions seems to be out of luck. [TeXBook App. F]


created 2002 Jun 20
last modified 2002 --- -- 1