[comp.fonts] Diacritics, orthography, type design, font format

jDo@emperor.scs.com (James Do) (06/28/91)

I have delved some more into PostScript's specifications for kerning
and composing, and would like to share the things I have found,
continuing the thread which Charles Bigelow had started in [Linguist
List, Vol. 2, No. 0295] from Mon, 10 Jun 91 22:16:36 PDT.

1/ The basic rendering mechanism takes a character, abbreviated  c ,
and performs the following transformation:

   c --> code(c) --> name(c) --> glyph(c)                            (1)

where

   code(c)  is the character code value for  c ;
   name(c)  is the PostScript name (from the Encoding dictionary);
   glyph(c) is the rendering of  c  (from the CharStrings dictionary).

2/ The Adobe Font Metric (AFM) file for each font specifies kerning and
composite font information so that, for a given set of characters (two
characters in this example), we get:

   c1 c2 --> ... ? ... --> kerned_glyph(c1,c2)                       (2)

or

   c1 c2 --> ... ? ... --> composite_glyph(c1,c2)                    (3)

through some internal [?] transformation, where:

   kerned_glyph(c1,c2)    "kerns"  c1  and  c2 ;
   composite_glyph(c1,c2) "composes"  c1  and  c2 .

It turns out that relative positions in x- and y-directions can be
specified in both kerning and composing, according to the AFM 3.0 specs.
Relative sizes may *not* be specified, however.

3/ Finally -- this is the crucial point why character encoding in
precomposed or separable architectures really does *depend* on
rendering technology, but does *not* matter for PostScript -- the AFM
file allows ligatures to be specified, so that:

   c1 c2 --> ... ? ... --> ligature_name(c1,c2)                      (4)

and thus can be fed into the latter part of formula (1). This
methodology allows for high fidelity in rendering, especially when
relative positioning of the components is inadequate.

I hope that the above does not contain any glaring error(s), because it
is based only on a reading of PostScript documentation, and not on any
real implementation. I would, therefore, really appreciate any
correction(s) and/or clarification(s) to this posting.

Regards,

James Do  +-----------------------------+-----------------------------+
          |            Mentor Graphics  |  eml:  jDo@sjc.mentorg.com  |
          +-----------------------------+-----------------------------+