![]() |
|||||||||||||
|
Apple Advanced Typography |
| This article does not cite any references or sources. Please help improve this article by adding citations to reliable sources. Unverifiable material may be challenged and removed. (August 2008) |
| Apple Advanced Typography | |
|---|---|
| Developed by | Apple Inc |
| OS | Mac OS X |
| Type | System Utility |
| License | Proprietary |
| Website | developer.apple.com/ textfonts |
Apple Advanced Typography (AAT) is Apple Inc's computer software for advanced font rendering, supporting internationalization and complex features for typographers, a successor to Apple's little-used QuickDraw GX font technology of the mid-1990s. It is a set of extensions to the TrueType outline font standard, with similar smartfont features to Adobe and Microsoft's OpenType font format, and the open source Graphite. It also incorporates concepts from Adobe's "multiple master" font format, allowing for axes of traits to be defined and morphing of a glyph independently along each of these axes. AAT font features do not alter the underlying typed text, they only affect the characters' representation during glyph conversion.
Contents |
Significant features of AAT currently include:
AAT font features are supported on Mac OS 8.5 and above, including Mac OS X and also on several open-source operating systems such as Linux via IBM's ICU library.
Firstly, there are no classes. The closest equivalent to OpenType's GSUB table is AAT's "morx" table. This table supports the following abilities: Non-contextual one-to-one and many-to-one substitution, contextual one-to-one substitution, contextual rearrangement of glyphs, and contextual insertion of new glyphs. 'Contextual' in this case means that the glyphs that come before or after are important for triggering the action, but may not be affected by it. For example "May 12, 2002" could be changed to "12 May 2002" but "May 12," would not be changed to "12 May" (the year has to be present, but is not altered—this is the context for the rule).
The abilities listed are given in no particular sequence. AAT imposes no ordering requirements on the rule list (unlike OpenType's classes). They can be combined in any sequence to get the desired effect.
AAT also has many features not described here, such as group-based glyph kerning, and the ability to change the shape of a glyph using a process of interpolation similar to Adobe's defunct Multiple master fonts, where the end-points are defined and any medial value is valid. With this, the user can then drag a slider in the user interface to make glyphs taller or shorter, drag another one to make them fatter or thinner, another one to increase the size of the serifs, etc. all independently of one another. There is nothing like this in OpenType.
With AAT the user can also have point-size dependent effects, for example at 12 pt the horizontal and vertical strokes can be of similar width, but at 300 pt, the stroke width variation could be quite great.
A good discussion on AAT used in Persian fonts can be found at the University of Texas Persian Department.
For Indic scripts, the only features that are necessary are glyph re-ordering and substitution. The feature set of AAT supports both of these.
On Pango, Uniscribe and Qt, the feature set of OpenType only supports substitution (via the GSUB table). Because of this, on Windows the Uniscribe (applies to other rendering engines like Pango, Qt toolkit and M17N) text engine handles re-ordering. This is the simplified version of what happens:
Uniscribe re-orders the sequence of glyphs before sending the glyph list to the OpenType rule interpreter. It has to do this because OpenType rules cannot reorder glyphs.
OpenType's GSUB and GPOS tables are sub-divided into 'classes', for example rules in the GSUB class haln deal with halants at the ends of words. The classes that make up the GSUB and GPOS tables are processed in a strict order defined by Microsoft, whilst the rules within each class processed in order of appearance.
ATSUI processes only a few of the GSUB and GPOS classes, which are crucial for all the Indian language scripts. The GSUB class liga (abbreviation of ligature) for example is processed, this swaps f + i for the single character fi, for example. liga is a Roman-script (and some others) ligature substitution. The classes within GSUB that are used for Indic language processing, such as blwf (below-base forms; vattus), and psts (post-base substitution; conjunct swaras) are completely ignored. In summary, some of the GSUB and GPOS classes are supported, but not many, and not the ones used for Indic scripts. Note however that software that implements its own OpenType support is unaffected.