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!