Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Apple Advanced Typography
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== AAT Layout == {{Unreferenced section|date=November 2009}} AAT 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. This table is divided into a series of chains, each 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. This table provides pointers to the localizable strings that 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.<ref>Apple Developer. (n.d.). ''TrueType Reference Manual - Chapter 6: Introduction to AAT''. Retrieved May 2, 2025, from [https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6AATIntro.html](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6AATIntro.html)</ref> Subtables may perform non-contextual glyph substitutions, contextual glyph substitutions, glyph rearrangements, glyph insertions, and ligature formation.<ref>{{cite web|url=https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6AATIntro.html|title=About Apple Advanced Typography Fonts|author=|publisher=Apple Inc.}}</ref> Contextual actions are sensitive to the surrounding text. They can be used, for example, to automatically turn an ''s'' into a [[long s|medial s]] 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]]s. For the purposes of processing the finite-state machine, glyphs are organized into classes. A class may be small, containing 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 for making sure that "morx" subtables are ordered correctly for the desired effect. AAT operates entirely with glyphs and never with characters, so 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 macOS. 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, and ligature splitting. AAT also supports variation fonts,<ref name=Chap6fvar>{{cite web|url=https://developer.apple.com/fonts/ttrefman/rm06/Chap6fvar.html|title=TrueType Reference Manual - The 'fvar' table|author=|publisher=Apple Inc.|archive-url=https://web.archive.org/web/20140604144911/https://developer.apple.com/fonts/ttrefman/rm06/Chap6fvar.html |archive-date=4 June 2014}}</ref> in which a font's shape can vary depending on a scaled value supplied by the user. Variation fonts are similar to Adobe's defunct [[Multiple master fonts]], where the endpoints are defined and any medial value is valid. With this, the user can then drag sliders in the user interface to make glyphs taller or shorter, to make them fatter or thinner, to increase or decrease the size of the serifs, and the like, all independently of one another. Glyphs may even have their fundamental shapes radically altered.<ref>{{cite web|url=https://developer.apple.com/fonts/ttrefman/rm06/Chap6gvar.html|title=TrueType Reference Manual - The 'gvar' table|author=|publisher=Apple Inc.|archive-url=https://web.archive.org/web/20140604144912/https://developer.apple.com/fonts/ttrefman/rm06/Chap6gvar.html |archive-date=4 June 2014}}</ref> Before OpenType introduced Font Variation in September 2016, there is nothing like this in OpenType. Other AAT tables can also have point-size dependent effects;<ref name=Chap6fvar /> for example, at 12 points, the horizontal and vertical strokes can be of similar width, but at 300 points, 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]], [[Hoefler Text]], and [[Skia (typeface)|Skia]] are fonts that ship with macOS that illustrate a variety of AAT's capabilities.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)