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!