Talk:Platform Independent Tibetan Unicode Font
A rough draft summary outlining current state OpenType support for Tibetan script in various OT layout engines:
(I compiled this in order to try and work out whether it is practical to make a truly "Platform Independent Tibetan Unicode Font")
- Chris
UNISCRIBE (usp10.dll)
Uniscribe Word 3003, 2007, Win Vista
The OpenType features Microsoft has specified for Tibetan are
- ccmp Composition Decomposition
- blws Below Base Substitution
- abvs Above Base Substitution
- calt Contextual Alternatives
- aalt access all alternatives
- blwm Below Base Mark Positioning
- abvm Above base Mark Positioning
- kern Kerning
All but calt and kern are features used in Microsoft Himalaya font. Paul Nelson (Microsoft) says calt & kern are also supported by Word 2003 sp2, Word 2007 & Windows Vista versions of Uniscribe. (I've used these two features in Jomolhari and they work with Uniscribe)
These versions of Uniscribe also do some re-ordering (pre-processing) of Tibetan marks. (need to get specific details of this re-ordering)
Question: Do features which the OT spec says "applies to all scripts" or "script sensitivity: none" *and* "should be on by default" work too?
Uniscribe Win XP
According to Sergey Malkin [Microsoft] Uniscribe shipped with XP SP2 had no specific support for Tibetan but applied "generic" features to Tibetan including
- locl Localized Forms
- ccmp Composition / Decomposition
- liga Standard Ligatures
- calt Contextual Alternatives
- mark Mark Positioning
- "etc." - [probably rlig, mkmk, kern as well]
There was no script-specific logic for Tibetan in XP Uniscribe
<http://www.microsoft.com/typography/otfntdev/tibetot/features.htm> lists only ccmp, blws, abvs, blwm, and kern - but that document is unfinished and appears not to have been updated since March 2002
PANGO
(Used in Gnome desktop, Inkscape, Mozilla etc. on Linux)
<http://svn.gnome.org/viewcvs/pango/trunk/modules/tibetan/tibetan-fc.c?view=markup&pathrev=2307> Pango 2007-05-15
- ccmp Composition / Decomposition
- locl Localized Forms
- blws Below Base Substitution
- abvs Above Base Substitution
- psts Post-base Substitutions
- clig Contextual Ligatures
- calt Contextual Alternative
- dist Distances
- blwm Below Base Mark Positioning
- abvm Above Base Mark Positioning
- kern Kerning Positioning
- mark Mark to base positioning
- mkmk Mark to mark Positioning
Previous to this revision ccmp,locl, calt, kern, mark, mkmk were not supported lack of ccmp support was a big problem.
[psts & dist seem redundant for Tibetan script - and not used in any fonts. Seem to be leftovers from Khmer shaping engine on which Tibetan shaping was based]
if aalt is added then all features supported by Uniscribe would be in Pango.
mark and mkmk not necessary as functionality covered by blwm & abvm -
mark and mkmk also not used in any Tibetan fonts
QT
Used in KDE desktop and applications
<http://websvn.kde.org/trunk/qt-copy/src/gui/text/qscriptengine.cpp?revision=700774&view=markup> As far as I can make out for Tibetan QT (KDE) supports only:
- ccmp
- blws
- abvs
No GPOS features seem to be supported
(Enough features for a minimal Tibetan font but needs support of positioning features for good shaping)
ICU
<http://source.icu-project.org/repos/icu/icu/trunk/source/layout/TibetanReordering.cpp> has the following OT features defined for Tibetan script
- ccmp Composition / Decomposition
- blwf Below-base Forms
- pres Pre-base Substitutions
- blws Below Base Substitutions
- abvs Above Base Substitutions
- psts Post-base Substitutions
- blwm Below Base Mark Positioning
- abvm Above Base Mark Positioning
- dist Distance
- pref Pre-base Forms
- abvf Above base forms
- clig Contextual Ligatures
- mkmk Mark to mark positoning / attachment
? no kern, calt, aalt
seems to have redundant features (blwf psts dist pref) left over from Khmer shaping engine - not needed for Tibetan
ICU4J
??? Don't know
COOLTYPE
(Adobe's own cross platform OT Shaping Engine - used in CS3)
According to <http://www.typotheque.com/fonts/opentype_feature_support/>
Adobe InDesign CS3 supports:
- ccmp Composition / Decomposition
- liga Standard Ligatures
- rlig Required ligatures
- mark Mark Positioning
- mkmk Mark to Mark Positioning
(I've only included those features that may be usable for normal Tibetan shaping here) While there is no specific support for Tibetan I'm assuming that these generic features probably do get applied to Tibetan (need to test to confirm this)as people from Adobe have told me "generic features should work"
There may be proper support (matching Microsoft's feature set) for Tibetan in CS4.
Meliell supports same features as Indesign CS3 - a Tibetan font which worked with Cooltype might also work with Meliell.
Apple
OSX 1.4.8
According to <http://rywiki.tsadra.org/index.php/Platform_Independent_Tibetan_Unicode_Font> Mac OSX 10.4.9 supports rlig and to get a Tibetan font to work - ligature lookups (normally under ccmp or blws) should be duplicated under rlig.
That would be enough *only* in fonts that had complete ligatures for all the stacks you want to support. You'd still need something like calt as well to contextually substitute vowel forms. (This may work - I haven't tried it yet)
OSX 1.5
Peter Lofting [Apple] said that OpenType support in Leopard does no pre-processing for Tibetan and suggested that features that work in Adobe apps should work under Leopard and...
"To clarify OT support further: there is complete GSUB and GPOS support except for contextual alternate lookups. Simple substitutions - such as those required for Tibetan stacking, are fully supported.
The main issue you face is the absence of Unicode pre-processing, so you need to know what pre-processing Windows does to Tibetan and add the equivalent in the form of GSUB actions."
When I asked him about support for specific OT features used for Tibetan Peter said he didn't have time to look into this until after Leopard release. So I'm still unclear as to what exactly he means by "complete GSUB and GPOS support"
Notes
Lookups under one feature can often be moved to another feature (or reduplicated under another feature) - provided that feature supports the same type of lookup and the lookup gets processed in the proper sequence.
Decomposition is a bit of a problem as ccmp is about the only feature that seems to support one to many (decomposition) GSUB lookups. This mainly effects pre-composed vowels (U+0F73, U+0F76, U+0F77, U+0F78, U+0F79, U+0F81)
Stacks can be composed using ccmp, blws, rlig, liga ...
Contextual vowel forms can be shaped using features that support contextual substitution (blws, abvs, calt) - provided you have enough contextual forms you can get away without positioning lookups. Though positioning, character spacing might be less than ideal
Features supported by up-to-date versions of Uniscribe, Pango & ICU are fairly consistent.
Supporting XP Uniscribe would require moving formation of all stack ligatures to ccmp and reduplicating vowel substitutions under calt (this would cause problems with all but latest versions of Pango & ICU - since older versions lacked ccmp support)
Supporting Apple OSX may require reduplicating ligature lookups under rlig and possibly using calt for vowel substitution.
For list of individual OT features and lookup types supported under each see: <http://www.microsoft.com/typography/otspec/featuretags.htm>
Chris 12:23, 7 September 2007 (EDT)