On 03/06/2002 04:57:07 PM Yaap Raaf wrote:

>I have the impression that somehow AAT fonts are less dependent on
>ATSUI than OT fonts are on Uniscribe. In fact I am a bit amazed that
>with all the tables and 'intelligence' built into OT fonts they are so
>dependent on updates of Uniscribe. I do not hear about updates of
>ATSUI. Are there fundamental differences between ATSUI and Uniscribe?

You have to compare ATSUI/AAT with Uniscribe/OT. Each pair does two 
things: provide a set of APIs for applications to use to manage line and 
paragraph layout; and do the character <> glyph transformations needed for 
complex script support and fine typography (as well as UI issues like hit 
testing). But, there is a very big difference in the division of labour 
used by each pair.

Uniscribe provides APIs, and also performs some of the script-specific 
transformations that need to occur in mapping from characters to glyphs. 
In prinicple, it embodies knowledge that is true for a given script 
independent of any particular font implementations. So, for example, 
Uniscribe handles re-ordering of Indic vowels, "flying ra" and things of 
the like -- any reordering of glyphs (including the bidi algorithm) is 
done here; it also handles identifying word positions / connecting 
contexts for Arabic glyphs. It deals with behaviours of this sort that 
apply to a script regardless of what particular glyphs are involved. It 
then turns on "features" to indicate contexts requiring glyph-specific 
behaviours (e.g. word-initial / left-connecting glyphs), and passes on the 
string of feature-tagged glyphs to OpenType. OT then looksup rules in the 
font to do whatever substitutions or positioning are needed. OT deals with 
whatever is dependent on the particular glyphs that are used in a font.

The ATSUI/AAT model is quite different. ATSUI provides APIs (for many text 
processes, not just rendering), but all script-related behaviours are 
handled by AAT. AAT has a generalised engine for processing 
character<>glyph transformations, and all the specific details regarding a 
given script and the font-particular implementation choices are embodied 
within the font in the form of state machine transition tables. So, the 
generalised engine is what interprets and processes those state machine 
descriptions in the font. 

So, whereas things like Indic reordering or Arabic contextualisation is 
handled external to the font in the Uniscribe/OT model, everything 
script-related is encapsulated inside an AAT font.

Graphite is quite similar to AAT in that all script-related behaviour is 
encapsulated within a font. They differ in some technical details with 
respect to what mechanisms they use to handle script behaviours (e.g. AAT 
supports glyph ductility but not attachment points; the opposite is true 
for Graphite). The biggest difference between AAT and Graphite has to do 
with tools for creating the state tables: for AAT, you basically have to 
write tables directly by hand, whereas Graphite includes a high-level 
description language, "GDL", for describing the character<>glyph 
transformations.

You can find a good overview of Uniscribe/OT written by our esteemed list 
member and type designer John Hudson at 
http://www.microsoft.com/typography/developers/opentype/default.htm. 
There's a overview of Graphite available at 
http://graphite.sil.org/pdf/IUC17_paper.pdf. There isn't a good overview 
of AAT that I know of; the best resource I can point you to is a slightly 
dated technical comparison of AAT (actually, it's precursor TrueTypeGX) 
and OpenType, at 
http://developer.apple.com/fonts/WhitePapers/GXvsOTLayout.html.

That paper comparing AAT and OT brings out an interesting point: the 
OpenType specification did *not* create a standard for how to implement 
script support in fonts; it just provided mechanisms for storing and 
retrieving glyph-processing information in a font. The standard for 
implementing script support in OT has been in the process of definition 
more recently as Uniscribe has evolved. Thus, it's really Uniscribe that 
determines how OT fonts get implemented. When developing AAT or Graphite 
fonts, you are taking Unicode character* strings as your input and 
processing in terms of that. When developing OT fonts, however, your input 
isn't Unicode, but rather it's the output of Uniscribe: transformed 
Unicode characters* marked up with certain feature tags.

*OT, AAT and Graphite rules deal entirely with glyphs, not characters, but 
the initial glyphs are those mapped 1:1 from Unicode per the font 
developers choice as specified in a "cmap" table.



>I would think that once Uniscribe has the capacity to process Arabic
>and Devanagari it could manage about everything any complex font will
>ask for. 

In a general sense, yes. But it doesn't work on generalised processing 
with all script-specific details in the font.


>Certainly something like combining combining marks with base
>characters, provided the information for where exactly they have to go,
>will be present in the font. 

Indeed they are. The problem is, the OT layout engine won't look at the 
rules for positioning combining marks unless the appropriate "features" 
are turned on by client software. Every OT rule in a font has to be 
accessed via some feature, and something external to OT has to activate 
that feature. Unscribe does that. (An application can also do that, but at 
this point none do.) And if Uniscribe hasn't yet been written to turn on 
features needed for dealing with a particular script behaviour (such as 
positioning of combining marks on Latin base characters or for stacking of 
combining marks), then that behaviour is not available.


>But this seems to be something for a rather
>distant future. 

Not so terribly distant. The engineers working on Uniscribe have been 
making steady progress, though I think it takes a while before 
improvements get incorporated into updates of any shipping product. I can 
easily imagine, for example, the IE team saying, "We're happy that you've 
got a new version that handles such-and-such behaviours, but we haven't 
tested whether our code can live with those behaviours, so we're sticking 
with the same version we're using now."




>Making Unicode keyboards was "something of a black art on the Mac"
>almost a year ago. Does this still hold?

It can be done if you know what your doing, but there aren't any 
particular tools to help. I guess that means "yes".




- Peter


---------------------------------------------------------------------------
Peter Constable

Non-Roman Script Initiative, SIL International
7500 W. Camp Wisdom Rd., Dallas, TX 75236, USA
Tel: +1 972 708 7485
E-mail: <[EMAIL PROTECTED]>


Reply via email to