[comp.text.tex] VFs for pseudo caps-and-small-caps

jg@prg.ox.ac.uk (Jeremy Gibbons) (05/10/91)

TeX 3's virtual font mechanism is, among other things, well suited to the
creation of pseudo caps-and-small-caps fonts (that is, fonts where the
lowercase letters are replaced by uppercase letters from a smaller (and
perhaps horizontally stretched) size of the font). I had a quick play with
this, but found it an extremely tedious process. Has anyone else tried it?

The method, as I see it, is to edit the property list file foo.pl for the
normal font, producing a virtual property list file foosc.vpl for the new
font. This new file is very similar, except that it has a VTITLE command,
two MAPFONT commands (one pointing to the original font, the other to the
smaller-sized font for the lower case), and different CHARACTER commands
for the lower case. And there's the rub: each character description

   (CHARACTER C a
      (CHARWD R 0.500002)
      (CHARHT R 0.430555)
      )
 
has to be replaced by, for example,

   (CHARACTER C a
      (CHARWD R 0.600001) (comment 0.8*0.750002)
      (CHARHT R 0.546665) (comment 0.8*0.683332)
      (MAP (SELECTFONT D 1) (SETCHAR C A))
      )

where the width and height are calculated from the corresponding uppercase
character from the smaller font, ie (in this case)

   (CHARACTER C A
      (CHARWD R 0.750002)
      (CHARHT R 0.683332)
      )

This is an eminently mechanisable task, but I haven't seen anyone doing it
yet. (I can't immediately think of a particularly good language to do it
in, though.)  Any takers?

(A much messier problem is that of the LIGTABLE. Presumably the kerns
between non-lowercase characters stay the same; kerns between two lowercase
characters should be (scaled down from) the smaller size. But what about
kerns between one lowercase and one non-lowercase? Perhaps this not
mechanisable at all, but should be done optically... but that's missing the
point of the exercise, which is quick-and-dirty anyway.)

Jeremy

PS Before anyone points it out, I hasten to add that I'm describing a
*pseudo* CSC font, not a real one!