Sat 26 Jul 2008 09:02:51 PM UTC, original submission:
The proper way of writing Romanian in Unicode 3.0 and later requires using U+021A (respectively U+021B) for T (and respectively t) with comma below. See http://en.wikipedia.org/wiki/Romanian_alphabet#Unicode_and_HTML for details.
Adobe decided that T with cedilla does not appear in any language, so in AGL 2.0 they put a mapping from Tcommaaccent to U+0162, which is the proper code point for "t with cedilla"
(http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt). AGL 2.0 is used as-is by freetype2 in glnames.py.
In order to use type 1 fonts for properly encoded Romanian documents, one needs an additional mapping from U+021A to Tcommaacent, and from U+021B to tcommaacent. This mapping is provided for instance by Uniscribe (the Windows Unicode renderer) at least on WinXP SP2 and possibly earlier.
So, what does this mean for the user? Since fontconfig usually sits above freetype, the missing glyphs U+021A and B get substituted from another font (see the attachment of a screenshot of Open Office on Linux). But exactly the same type 1 fonts and document work fine (no ugly substitution) on Windows with Uniscribe.
Unfortunately, freetype makes the (mistaken) assumption that there is a one-one mapping between Unicode code points and Adobe type 1 glyph names. Adding the additional mapping seem to require a serious restructuring of the psnames module, including its public interface.
If you're curious how Adobe solved this mess for OpenType fonts:
Tcommaaccent == U+0162 and uni021A == U+021A, although the two are visually indistinguishable in Adobe OpenType fonts.
|