Apple Advanced Typography
Encyclopedia
Apple Advanced Typography (AAT) is Apple Inc's computer software for advanced font
Font
In typography, a font is traditionally defined as a quantity of sorts composing a complete character set of a single size and style of a particular typeface...

 rendering, supporting internationalization
Internationalization
In economics, internationalization has been viewed as a process of increasing involvement of enterprises in international markets, although there is no agreed definition of internationalization or international entrepreneurship...

 and complex features for typographers, a successor to Apple's little-used QuickDraw GX
QuickDraw GX
QuickDraw GX was a replacement for the QuickDraw 2D graphics engine and Printing Manager inside the "classic" Mac OS. Its underlying drawing platform was a resolution-independent object oriented retained mode system, making it much easier for programmers to perform common tasks...

 font technology of the mid-1990s. It is a set of extensions to the TrueType
TrueType
TrueType is an outline font standard originally developed by Apple Computer in the late 1980s as a competitor to Adobe's Type 1 fonts used in PostScript...

 outline font standard, with similar smartfont features to the OpenType
OpenType
OpenType is a format for scalable computer fonts. It was built on its predecessor TrueType, retaining TrueType's basic structure and adding many intricate data structures for prescribing typographic behavior...

 font format that was developed by Adobe and Microsoft, and the open source Graphite
Graphite (SIL)
Graphite is a programmable Unicode-compliant smart-font technology and rendering system developed by SIL International. It is free software, distributed under the terms of the GNU Lesser General Public License and the Common Public License....

. It also incorporates concepts from Adobe's "multiple master
Multiple master fonts
Multiple master fonts are an extension to Adobe Systems' Type 1 PostScript fonts, now mostly superseded by the advent of OpenType...

" 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.

Features

Significant features of AAT currently include:
  • Several degrees of ligature
    Ligature (typography)
    In writing and typography, a ligature occurs where two or more graphemes are joined as a single glyph. Ligatures usually replace consecutive characters sharing common components and are part of a more general class of glyphs called "contextual forms", where the specific shape of a letter depends on...

     control
  • Keshideh justification and joiners
  • Cross-stream kerning
    Kerning
    In typography, kerning is the process of adjusting the spacing between characters in a proportional font, usually to achieve a visually pleasing result. Kerning is the adjustment of the space between individual letter forms vs. tracking which is the uniform adjustment of spacing applied over a...

     (required for Nasta'liq Urdu
    Urdu
    Urdu is a register of the Hindustani language that is identified with Muslims in South Asia. It belongs to the Indo-European family. Urdu is the national language and lingua franca of Pakistan. It is also widely spoken in some regions of India, where it is one of the 22 scheduled languages and an...

    , for example)
  • Indic vowel rearrangement
  • Independently controllable substitution of:
    • Old style figures
      Text figures
      Text figures are numerals typeset with varying heights in a fashion that resembles a typical line of running text, hence the name...

    • Small caps
      Small caps
      In typography, small capitals are uppercase characters set at the same height and weight as surrounding lowercase letters or text figures...

       and drop caps
      Initial
      In a written or published work, an initial is a letter at the beginning of a work, a chapter, or a paragraph that is larger than the rest of the text. The word is derived from the Latin initialis, which means standing at the beginning...

    • Swash
      Swash (typography)
      A swash is a typographical flourish on a glyph, like an exaggerated serif.Capital swash characters, which extended to the left, were historically often used to begin sentences. There were also minuscule swash characters, which came either extending to the left, to begin words, or to the right to...

       variants
    • Alternative glyphs:
      • Individual alternatives on a per-glyph basis
      • Wholesale alternatives, such as engraved text
    • Anything else the font designer wants to add
  • Glyph variation axes


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
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 via IBM's ICU
International Components for Unicode
International Components for Unicode is an open source project of mature C/C++ and Java libraries for Unicode support, software internationalization and software globalization. ICU is widely portable to many operating systems and environments. It gives applications the same results on all...

 library.

AAT and OpenType in Mac OS X

As of Mac OS X 10.5 Leopard, partial support for OpenType is available. The support is currently limited to Western scripts and Arabic (as of 2011). If a font has AAT tables, they will be used for typography. If the font does not have AAT tables but does have OpenType tables, they will be used to the extent that the system supports them.

This means that many OpenType fonts for Western or Middle Eastern scripts can be used without modification on Mac OS X 10.5, but South Asian scripts such as Thai
Thai alphabet
Thai script , is used to write the Thai language and other, minority, languages in Thailand. It has forty-four consonants , fifteen vowel symbols that combine into at least twenty-eight vowel forms, and four tone marks ....

 and Devanagari
Devanagari
Devanagari |deva]]" and "nāgarī" ), also called Nagari , is an abugida alphabet of India and Nepal...

 cannot. These require AAT tables for proper layout.

It should be noted that AAT does not support language-specific shaping, that is, changing how glyphs are processed depending on the human language they are being used to represent, a feature supported by OpenType. For a single font to cover two languages with different shaping requirements but a common script, for example Arabic
Arabic language
Arabic is a name applied to the descendants of the Classical Arabic language of the 6th century AD, used most prominently in the Quran, the Islamic Holy Book...

 and Urdu, it would be necessary for two sets of shaping tables to be included in the font, and for the user (or some other high-level mechanism, such as markup
Markup language
A markup language is a modern system for annotating a text in a way that is syntactically distinguishable from that text. The idea and terminology evolved from the "marking up" of manuscripts, i.e. the revision instructions by editors, traditionally written with a blue pencil on authors' manuscripts...

) to inform the glyph processor which to use. There is also no provision in AAT for the relative positioning of two glyphs via anchor points, which would allow the positioning of one diacritic relative to another, for example. The correct stacking of multiple diacritics can easily be done in AAT, but requires a different technique.

AAT Layout

AAT first requires the text to be turned entirely into glyphs before text layout occurs. Operations on the text take place entirely within the glyph layer.

The core table used in the AAT layout process is the 'morx' table. The 'morx' table is divided into a series of chains, and each chain is further divided into subtables. The chains and subtables are processed in order. When each subtable is encountered, the layout engine compares flags in the subtable against control flags, generally derived from user settings. This determines whether or not the subtable is processed.

The set of available features in the font is made accessible to the user via the 'feat' table. The 'feat' table provides pointers to the localizable strings which can be used to describe a feature to the end user and the appropriate flags to send to the text engine if the feature is selected. Features can be made invisible to the user by the simple expedient of not including entries in the 'feat' table for them. Apple uses this approach, for example, to support required ligatures.

Subtables may do non-contextual glyph substitutions, contextual glyph substitutions, glyph rearrangements, glyph insertions, and ligature formation. Contextual actions are sensitive to the surrounding text. They can be used, for example, to automatically turn an s into a medial s
Long s
The long, medial or descending s is a form of the minuscule letter s formerly used where s occurred in the middle or at the beginning of a word, for example "ſinfulneſs" . The modern letterform was called the terminal, round, or short s.-History:The long s is derived from the old Roman cursive...

 anywhere in a word except at its end.

The 'morx' subtables for non-contextual glyph substitutions are simple mapping tables between the glyph substituted and its substitute. The others all involve the use of finite state machine
Finite state machine
A finite-state machine or finite-state automaton , or simply a state machine, is a mathematical model used to design computer programs and digital logic circuits. It is conceived as an abstract machine that can be in one of a finite number of states...

s.

For purposes of processing the finite state machine, glyphs are organized into classes. The classes may be small, with only a single glyph (for something like ligature formation), or it may include dozens glyphs or even more. A special class is automatically defined for any glyph not included in any of the explicit classes. Special classes are also available for the end of the glyph stream and glyphs deleted from the glyph stream.

Beginning with a start-of-text state, the layout engine parses the text, glyph by glyph. Depending on its current state and the class of the glyph it encounters, it will switch to a new state and possibly perform an appropriate action. The process continues until the glyph stream is exhausted.

The use of finite state machines allows 'morx' tables to be relatively small and to be processed relatively quickly. They also provide considerable flexibility. Inasmuch, however, as Apple's font tools require the generation of 'morx' tables via raw state table information, they can be difficult to produce and debug. The font designer is also responsible to make sure that 'morx' subtables are ordered correctly for the desired effect.

Since AAT operates entirely with glyphs and never with characters, all the layout information necessary for producing the proper display resides within the font itself. This allows fonts to be added for new scripts without requiring any specific support from the OS. Third parties can produce fonts for scripts not officially supported by Apple, and they will work with Mac OS X. On the other hand, this also means that every font for a given script requires its own copy of the script's shaping information in its own 'morx' tables.

Other AAT tables (or AAT-specific extensions to standard TrueType tables) allow for context-sensitive kerning, justification, ligature-splitting. AAT also supports variation fonts, where a font's shape can vary depending on scaled value supplied by the user. Variation fonts are similar to Adobe's defunct Multiple master fonts
Multiple master fonts
Multiple master fonts are an extension to Adobe Systems' Type 1 PostScript fonts, now mostly superseded by the advent of OpenType...

, 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. Glyphs may even have their fundamental shapes radically altered. There is nothing like this in OpenType.

Other AAT tables 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.

In practice, few AAT fonts use any features of the technology other than those available through the 'morx' table. Zapfino
Zapfino
Zapfino is a calligraphic typeface designed for Linotype by typeface designer Hermann Zapf in 1998. It is based on an alphabet Zapf originally penned in 1944...

, Hoefler Text
Hoefler Text
Hoefler Text is a contemporary serif Antiqua font that was designed for Apple Computer to demonstrate advanced type technologies. Hoefler Text was created to allow the composition of complex typography; as such it takes cues from a range of classic fonts, such as Garamond and Janson.Designed by...

, and Skia are fonts shipping with Mac OS X which illustrate a variety of AAT's capabilities.

AAT for Indic scripts

For Indic scripts
Languages of India
The languages of India belong to several language families, the major ones being the Indo-European languages—Indo-Aryan and the Dravidian languages...

, the only features that are necessary are glyph re-ordering and substitution. AAT supports both of these. As noted above, OpenType fonts for Indic scripts require AAT tables to be added before they will function properly on Mac OS X. Note, however, that this applies only to software dependent upon the system support of OpenType. Programs which provide their own implementation of OpenType will render Indic properly with OpenType fonts. (They may, however, not render Indic fonts with AAT tables correctly.)

Mac OS X 10.5 ships with fonts for Devanagari
Devanagari
Devanagari |deva]]" and "nāgarī" ), also called Nagari , is an abugida alphabet of India and Nepal...

, Gurmukhi, Gujarati
Gujarati script
The Gujarati script , which like all Nāgarī writing systems is strictly speaking an abugida rather than an alphabet, is used to write the Gujarati and Kutchi languages...

, Thai
Thai alphabet
Thai script , is used to write the Thai language and other, minority, languages in Thailand. It has forty-four consonants , fifteen vowel symbols that combine into at least twenty-eight vowel forms, and four tone marks ....

, Tibetan
Tibetan script
The Tibetan alphabet is an abugida of Indic origin used to write the Tibetan language as well as the Dzongkha language, Denzongkha, Ladakhi language and sometimes the Balti language. The printed form of the alphabet is called uchen script while the hand-written cursive form used in everyday...

, and Tamil
Tamil script
The Tamil script is a script that is used to write the Tamil language as well as other minority languages such as Badaga, Irulas, and Paniya...

. Fonts for other Indic scripts are available from third parties.

See also

  • Apple typography
  • Graphite (SIL)
    Graphite (SIL)
    Graphite is a programmable Unicode-compliant smart-font technology and rendering system developed by SIL International. It is free software, distributed under the terms of the GNU Lesser General Public License and the Common Public License....

     technology on MS Windows and Linux
  • List of typographic features
  • XeTeX
    XeTeX
    XeTeX is a TeX typesetting engine using Unicode and supporting modern font technologies such as OpenType or Apple Advanced Typography...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK