Ann: fontinst v1.9 prerelease/CC

Hilmar Schlegel hshlgaii@mailszrz.zrz.tu-berlin.de
Tue, 18 May 1999 15:54:55 -0400


Lars Hellström wrote:
...
> >The problem is that CC instructions intended for the Type 1 SEAC
> >operator have the limitation that a CC character inherits its width from
> >the base character. For the type of accented characters where the accent
...
> >be different from what would happen in a Type 1 font. If one uses the
> >alternative positioning scheme exclusively for "-not"s there is no
> >interference. (Few fonts have dquoteright and a CC line in the AFM would
> >do no harm.)
> 
> Let me see if I've got this right ...  What you really want to do is to use
> the AFM file CC command as a way of specifying a composite character which
> isn't in the font, rather than writing the equivalent \setglyph ...
> \endsetglyph commands.

Because this is a font-specific property and the way to define a
composite based on components.
 
> If I interpret the fontinst AFM to MTX converter right, there must be a C
> (or CH) command for each CC command and the C command gives the metrics for
> a composite character while the CC command specifies which the components
> are and how they are positioned. It seems like it used to be the case that
> the \setglyph generated from the CC command got the metrics for the glyph
> it sets from a table over glyph dimensions that the AFM to MTX converter
> constructed (this accounts for a comment about g-GLYPH macros in the AFM to
> MTX converter), but this is no longer the case (so the comment should be
> deleted). 

Hm, fontinst used to construct the \setglyph instructions by executing
the CC commands and offsetting the accent accordingly. The height/depth
are adjusted (as in SEAC) but the width is not changed by the accents
metric (as in SEAC): the best way to assure that the resulting width is
that of the base character might be to copy its width.

> Instead the \setglyph from a CC ends with a \samesize command,
> which copies the metrics from those set in a \setnotglyph command that was
> in turn generated from the corresponding C command.

The width is the same like that of the base character, heigth/depth are
to be adjusted.

> In your case, there wouldn't be a C command, and hence no dquoteright-not
> glyph for \samesize to copy the metrics from either, so the case you want
> to create is indeed recognizable. What you want is instead the width to be
> set to the largest advance width so far.

Two things here: it could well be in general to have a CC but not the
components in the encoding (they are in Adobe Standard Encoding,
therefore SEAC). One should then also copy the components metrics from
x-nots just for this case.
One could also think about the maximal dimension of the resulting bbox
of the CC (the "accent" could also be at the left...). Adjusting the
advance width should be sufficient for the effect in the practical
cases.

> Well, yes, I suppose I could make it so. In any case, \samesize should do
> something more sensible if the glyph whose metrics it is supposed to copy
> does not exist than just cause a lot of havok (as it seems it currently
> would).

Get the metrics from the components since they should exist at least in
the font...
To make a long story short: it worked via the verbose implementation of
the CC interpretation quite well. Adjusting the advance width was
sufficient for the desired effect. 
The convention to use the metrics from the C line for bonafide (SEAC)
composites and the resulting bbox for the overlay otherwise, would be
consistent (I hope). 
The price is a bit more complexity - the benefit a way to define all the
x-quoteright characters more precisely for every font with little
effort.

Perhaps a test shows here if we missed something ;-)
Thanks for looking into this.

Hilmar Schlegel