Apple Advanced Typography
From Wikipedia, the free encyclopedia
Apple Advanced Typography | |
Developer: | Apple Computer |
---|---|
OS: | Mac OS X |
Use: | System Utility |
License: | Proprietary |
Website: | developer.apple.com/ textfonts |
Apple Advanced Typography (AAT) is Apple Computer'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 |
[edit] Features
Significant features of AAT currently include:
- Several degrees of ligature control
- Kashida justification and joiners
- Cross-stream kerning (required for Nasta'liq Urdu, for example)
- Indic vowel rearrangement
- Independently controllable substitution of:
- Old style figures
- Small caps and drop caps
- Swash 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 via IBM's ICU library.
[edit] Processing of AAT rules
- The ATSUI text engine examines a sequence of character codes
- It then gets the corresponding glyph for each code from the font
- ATSUI then looks for OpenType rules within the font, if found:
- It reads and processes the OpenType rules, sending the glyph list to the rule interpreter.
- If there are no OpenType rules, it looks for AAT rules, and if they are found:
- It reads and processes the AAT rules, sending the glyph list to the rule interpreter.
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. By 'contextual' I mean 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 morphing-like system, 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.
[edit] AAT for Indic scripts
For Indic scripts, the only features that are necessary are glyph re-ordering and substitution. The feature set of AAT supports both of these.
[edit] Rendering Indic fonts: OpenType compared to AAT
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 simplied version of what happens:
- The text engine examines a sequence of character codes in a document
- It re-orders character sequences (e.g. "vyanjana1 virama vyanjana2" to "vyanjana1 vyanjana2 virama")
- It then gets the corresponding glyph for each code from the font
- It reads and processes the OpenType rules for the font, sending the glyph list to the rule interpreter.
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.
[edit] Reasons for broken OpenType Indic support on a Mac
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 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.
[edit] See also
[edit] External links
- About Apple Advanced Typography Fonts, Apple's developer documentation
- Advanced Typography with Mac OS X (in PDF format)
- An example of an AAT table
- Fontforge documentation
Applications
Address Book • Automator • Calculator • Chess • Dashboard • Dictionary • DVD Player • Finder • Front Row • Grapher • iCal • iChat • iSync • iTunes • Mail • Photo Booth • Preview • QuickTime Player • Safari • Sherlock • Stickies • TextEdit
Utilities
Activity Monitor • AirPort Admin Utility • Audio MIDI Setup • Bluetooth File Exchange • BOMArchiveHelper • Classic • ColorSync Utility • Console • Crash Reporter • DigitalColor Meter • Directory Access • DiskImageMounter • Disk Utility • Font Book • Grab • Help Viewer • Image Capture • Installer • Internet Connect • Keychain Access • Migration Assistant • NetInfo Manager • Network Utility • ODBC Administrator • Printer Setup Utility • Software Update • System Preferences • System Profiler • Terminal • Universal Access • VoiceOver • X11
Technology & User interface (future features italicized)
⌘ • ⌥ • Apple Advanced Typography • AppleScript • Aqua • ATSUI • Audio Units • Bonjour • Boot Camp • Carbon • Cocoa • ColorSync • Core Animation • Core Audio • Core Data • Core Foundation • Core Image • Core Video • CUPS • Darwin • Exposé • FileVault • icns • Inkwell • I/O Kit • Keychain • Mach-O • OpenGL • plist • Quartz • QuickTime • Rosetta • Smart folders • Spaces • Spotlight • Time Machine • Uniform Type Identifier • Universal binary • WebKit • Xgrid • XNU