OpenType

From Wikipedia, the free encyclopedia

OpenType
File extension: .otf
Type code: OTTO
Uniform Type Identifier: public.opentype-font
Developed by: Microsoft & Adobe Systems
Type of format: Font file
Standard(s): OpenType 1.4

OpenType is a scalable computer font format initially developed by Microsoft, later joined by Adobe Systems. OpenType was first announced in 1996, with a significant number of OpenType fonts starting to ship in 2000–2001. Adobe completed conversion of its entire font library to OpenType around the end of 2002. As of early 2005, there were around 10,000 fonts available in OpenType format, with Adobe's library making up under a third of the total. As of 2006, every major font foundry and many minor ones were developing fonts in OpenType format.

Contents

[edit] History

OpenType is intended by Microsoft and Adobe to be the successor to the TrueType font format developed by Apple Computer and licensed by Microsoft, and the Type 1 ("PostScript") font format developed by Adobe.

Microsoft tried to license[citation needed] Apple's advanced typography technology, "GX Typography," in the early 1990s, and upon being refused[citation needed] developed its own technology, dubbed "TrueType Open," in 1994. Adobe joined Microsoft in 1996, adding support for the type of outlines used in its Type 1 fonts, and the name OpenType was then used for the combined technologies.

Adobe and Microsoft continued to develop and refine OpenType over the next decade. Then, in late 2005, OpenType began the process of becoming an open standard under the International Standards Organization (ISO), under the MPEG group which had previously adopted OpenType by reference. The new standard is essentially OpenType 1.4, with appropriate language changes for ISO, and is to be called the "Open Font Format." The initial adoption of the new standard is expected to be complete in late 2006.

[edit] Description

OpenType uses the general "sfnt" structure of a TrueType font, but it adds several smartfont options which enhance the font's typographic and language support capabilities. The glyph outline data in an OpenType font may be in one of two formats: TrueType format outlines, in a 'glyf' table, or Compact Font Format (CFF) outlines in a 'CFF ' table. CFF outline data is based on the PostScript language Type 2 font format. The table name 'CFF ' is four characters long, ending in a space character.

For many purposes, such as layout, it doesn't matter what the outline data format is, but for some purposes, such as rasterisation, it is significant. The term "OpenType" doesn't specify outline data format. Sometimes terms like "OpenType (PostScript flavor)", "OpenType CFF", or "OpenType (TrueType flavor)" are used to indicate which outline format a particular OpenType font contains.

OpenType has several distinctive features:

  • the font encoding is based on Unicode and can support any script (or multiple scripts at once)
  • OpenType fonts can have up to 65,536 glyphs
  • fonts can have advanced typographic features that allow proper typographic treatment of complex scripts and advanced typographic effects for simpler scripts, such as the Latin script used in writing English.
  • font files are intended to be cross-platform, and can be used without modification on Mac OS, Windows and some Unix systems
  • if no additional glyphs or extensive typographic features are added, OpenType CFF fonts can be considerably smaller than their Type 1 counterparts

[edit] Comparison to other formats

Compared with Apple Computer's "GX Typography"—now called Apple Advanced Typography (AAT)—OpenType is less flexible in typographic options, but superior in language-related options and support.

OpenType has been much more successful than AAT. There are many more fonts and supporting applications, despite AAT being an older technology. The single-platform nature of AAT and the lack of support from any major software vendor other than Apple itself are both likely factors in this.

From a font developer's perspective, OpenType is, for many common situations, easier to develop for than AAT. First, the simple declarative substitutions and positioning of OpenType are more readily understood than AAT's more complex (but powerful) state tables. Second, Adobe's strategy of licensing at no charge the source code developed for its own font development allowed third-party font editing applications such as FontLab and FontMaster to add support with relative ease. Although Adobe's text-driven coding support is not as visual as Microsoft's separate tool, VOLT (Visual OpenType Layout Tool), the integration with the tools being used to make the fonts has been well received.

Another difference is that an OpenType support framework (such as Microsoft's Uniscribe) needs to provide a fair bit of knowledge about special language processing issues to handle (for example) Arabic. With AAT, the font developer of an AAT font has to encapsulate all that expertise in the font. This means that AAT can handle any arbitrary language, but that it requires more work and expertise from the font developers. On the other hand, OpenType fonts are easier to make, but can only support complex scripts if the application or operating system knows how to handle them.

Previous to supporting OpenType, Adobe promoted multiple master fonts for high-end typography. Multiple master fonts lacked the controls for alternate glyphs and languages provided by OpenType, but provided more control over glyph shape.

[edit] OpenType support

OpenType support may be divided into several categories: virtually all applications and most operating systems work with OpenType fonts just as well as other, older formats. What is of particular interest is: extended language support through Unicode, support for "complex" writing scripts such as Arabic and the Indic languages, and advanced typographic support for Latin script languages such as English.

Amongst Microsoft's operating systems, OpenType TT fonts (.TTF) are backward compatible and therefore supported by all Windows operating systems. OpenType PS fonts (.OTF) are however supported only by Windows 2000, Windows XP and Windows Vista. Adobe Type Manager is required to be installed on Windows 95/98/NT/Me for basic Roman support.

Extended language support via Unicode for both OpenType and TrueType is present in most Windows applications (including Publisher, most Adobe applications, and Microsoft Office 2003, though not Word 2002), and many Mac OS applications, including Apple's own such as TextEdit and Keynote. OpenType is fully supported on Mac OS X by the word processor Mellel.

OpenType support for complex written scripts has so far mainly appeared in Microsoft applications such as Office and Publisher. Adobe InDesign provides extensive OpenType capability in Japanese but does not directly support Middle Eastern or Indic scripts — though a separate version of InDesign is available that supports Middle Eastern scripts such as Arabic and Hebrew.

Advanced typographic support for Latin script languages had so far mainly appeared in Adobe applications such as Adobe InDesign, Adobe Photoshop and Adobe Illustrator. QuarkXPress 6.5 and below (Quark, Inc.) are not Unicode compliant. Hence text which contains anything other than WinANSI/MacRoman characters will not display correctly in an OpenType font (nor in other Unicode font formats, for that matter). Corel's CorelDRAW does not support OpenType typographic features, either. However, Quark offers support similar to Adobe's in QuarkXPress 7, which shipped in May 2006. The Windows Presentation Foundation, which is a part of Windows Vista and available for Windows XP supports OpenType CFF (Compact Font Format) fonts, and advanced typographic features such as ligatures, old-style numerals, swash variants, fractions, superscript and subscript, small capitalization, glyph substitution, multiple baselines, contextual and stylistic alternates (kerning), line-level justification, ruby characters etc. Additionally, AAT-supporting applications running on Mac OS X 10.4 and later, including TextEdit and Keynote, get considerable OpenType support.

Apple's support for OpenType in Mac OS 10.4 includes most advanced typographic features necessary for Latin‐script languages, such as small caps, oldstyle figures, and various sorts of ligatures. It does not yet support contextual alternates, positional forms, nor glyph reordering as handled by Microsoft's Uniscribe library on Windows. Thus, Mac OS 10.4 does not offer support for Arabic or Indic scripts via OpenType (though such scripts are supported by existing AAT fonts).

In free software environments like Linux, OpenType support is provided by the FreeType project, included in free implementations of the X Window System such as Xorg.

[edit] SING gaiji solution

In 2005, Adobe shipped a new technology in their Creative Suite applications bundle that offers a solution for the gaiji (Japanese for "outside character") problem. Ideographic writing scripts such as Chinese and Japanese do not have fixed collections of characters. They use thousands of glyphs commonly and tens of thousands less commonly. Not all glyphs ever invented and used in far eastern literature have even been catalogued. A typical font might contain 8,000 to 15,000 of the most commonly used glyphs. From time to time, though, an author needs a glyph not present in the font of choice. Such missing characters are known in Japan as gaiji, and they often disrupt work.

Another aspect of the gaiji problem is that of variant glyphs for certain characters. Often certain characters have been written differently over periods of time. It is not unusual for place names or personal family names to use a historical form of a character. Thus it is possible for an end user using standard fonts to be left unable to spell correctly either their own name or the name of the place where they live.

Several ways to deal with gaiji have been devised. Solutions that treat them as characters usually assign arbitrary Unicode values to them in the PUA (private use area). Such characters cannot be used outside the environment in which the association of the private Unicode to the glyph shape is known. Documents based on them are not portable. Other installations treat gaiji as graphics. This can be cumbersome because text layout and composition cannot apply to graphics. They cannot be searched for. Often their rendering looks different from surrounding characters because the machinery for rendering graphics usually is different from the machinery for rendering glyphs from fonts.

The SING technology that made its debut with Adobe's Creative Suite 2 allows for the creation of glyphs, each packaged as a stand-alone font, after a fashion. Such a packaged glyph is called a glyphlet. The format, which Adobe has made public, is based on OpenType. The package consists of the glyph outline in TrueType or CFF (PostScript style outlines) form; standard OpenType tables declaring the glyph's metrics and behavior in composition; and metadata, extra information included for identifying the glyphlet, its ownership, and perhaps pronunciation or linguistic categorization. SING glyphlets can be created using Fontlab's SigMaker3 application.

The SING (Smart INdependent Glyphlets) specification states that glyphlets are to travel with the document they are used in. That way documents are portable, leaving no danger of characters in the document that cannot be displayed. Because glyphlets are essentially OpenType fonts, standard font machinery can render them. The SING specification also describes an XML format that includes all the data necessary for reconstituting the glyphlet in binary form. A typical glyphlet might require 1 to 2 kilobytes to represent.

[edit] Layout tags

OpenType Layout tags are 4-byte character strings that identify the scripts, language systems, features and baselines in an OpenType Layout font. Microsoft's Layout tag registry establishes conventions for naming and using these tags. OpenType features are created by using the tags in creating feature scripts that describe how characters are to be manipulated to make the desired feature. These feature scripts can be created and incorporated into OpenType fonts by advanced font editors such as FontLab Studio and AsiaFont Studio.

Script tags

Script tags identify the scripts represented in an OpenType typeface. Each tag corresponds to contiguous character code ranges in Unicode. A script tag can consist of 4 or fewer lowercase letters. Examples include arab for the Arabic alphabet, cyrl for the Cyrillic alphabet, latn for the Latin alphabet, etc.

Language tags

Language system tags identify the language systems supported in an OpenType typeface. Examples include ARA for the Arabic language, ESP for the Spanish language, HYE for the Armenian language, etc. The codes are similar but not identical to ISO 639-2.

feature tags

Feature tags identify glyphs as representing certain typographic features.

  • 'aalt' Access All Alternates
  • 'abvf' Above-base Forms
  • 'abvm' Above-base Mark Positioning
  • 'abvs' Above-base Substitutions
  • 'afrc' Alternative Fractions
  • 'akhn' Akhands
  • 'blwf' Below-base Forms
  • 'blwm' Below-base Mark Positioning
  • 'blws' Below-base Substitutions
  • 'calt' Contextual Alternates
  • 'case' Case-Sensitive Forms
  • 'ccmp' Glyph Composition / Decomposition
  • 'clig' Contextual Ligatures
  • 'cpsp' Capital Spacing
  • 'cswh' Contextual Swash
  • 'curs' Cursive Positioning
  • 'c2sc' Small Capitals From Capitals
  • 'c2pc' Petite Capitals From Capitals
  • 'dist' Distances
  • 'dlig' Discretionary Ligatures
  • 'dnom' Denominators
  • 'expt' Expert Forms
  • 'falt' Final Glyph on Line Alternates
  • 'fin2' Terminal Forms #2
  • 'fin3' Terminal Forms #3
  • 'fina' Terminal Forms
  • 'frac' Fractions
  • 'fwid' Full Widths
  • 'half' Half Forms
  • 'haln' Halant Forms
  • 'halt' Alternate Half Widths
  • 'hist' Historical Forms
  • 'hkna' Horizontal Kana Alternates
  • 'hlig' Historical Ligatures
  • 'hngl' Hangul
  • 'hojo' Hojo Kanji Forms
  • 'hwid' Half Widths
  • 'init' Initial Forms
  • 'isol' Isolated Forms
  • 'ital' Italics
  • 'jalt' Justification Alternates
  • 'jp04' JIS2004 Forms
  • 'jp78' JIS78 Forms
  • 'jp83' JIS83 Forms
  • 'jp90' JIS90 Forms
  • 'kern' Kerning
  • 'lfbd' Left Bounds
  • 'liga' Standard Ligatures
  • 'ljmo' Leading Jamo Forms
  • 'lnum' Lining Figures
  • 'locl' Localized Forms
  • 'mark' Mark Positioning
  • 'med2' Medial Forms #2
  • 'medi' Medial Forms
  • 'mgrk' Mathematical Greek
  • 'mkmk' Mark to Mark Positioning
  • 'mset' Mark Positioning via Substitution
  • 'nalt' Alternate Annotation Forms
  • 'nlck' NLC Kanji Forms
  • 'nukt' Nukta Forms
  • 'numr' Numerators
  • 'onum' Oldstyle Figures
  • 'opbd' Optical Bounds
  • 'ordn' Ordinals
  • 'ornm' Ornaments
  • 'palt' Proportional Alternate Widths
  • 'pcap' Petite Capitals
  • 'pnum' Proportional Figures
  • 'pres' Pre-Base Substitutions
  • 'pstf' Post-base Forms
  • 'psts' Post-base Substitutions
  • 'pwid' Proportional Widths
  • 'qwid' Quarter Widths
  • 'rand' Randomize
  • 'rlig' Required Ligatures
  • 'rphf' Reph Forms
  • 'rtbd' Right Bounds
  • 'rtla' Right-to-left Alternates
  • 'ruby' Ruby Notation Forms
  • 'salt' Stylistic Alternates
  • 'sinf' Scientific Inferiors
  • 'size' Optical size
  • 'smcp' Small Capitals
  • 'smpl' Simplified Forms
  • 'ss01' to 'ss20' Stylistic Set 1 to 20
  • 'subs' Subscript
  • 'sups' Superscript
  • 'swsh' Swash
  • 'titl' Titling
  • 'tjmo' Trailing Jamo Forms
  • 'tnam' Traditional Name Forms
  • 'tnum' Tabular Figures
  • 'trad' Traditional Forms
  • 'twid' Third Widths
  • 'unic' Unicase
  • 'valt' Alternate Vertical Metrics
  • 'vatu' Vattu Variants
  • 'vert' Vertical Writing
  • 'vhal' Alternate Vertical Half Metrics
  • 'vjmo' Vowel Jamo Forms
  • 'vkna' Vertical Kana Alternates
  • 'vkrn' Vertical Kerning
  • 'vpal' Proportional Alternate Vertical Metrics
  • 'vrt2' Vertical Alternates and Rotation
  • 'zero' Slashed Zero
Baseline tags

Baseline tags have a specific meaning when used in the horizontal writing direction (used in the 'BASE' table's HorizAxis table), vertical writing direction (used in the 'BASE' table's VertAxis table), or both.

Baseline Tag HorizAxis VertAxis
'hang' horizontal line from which the syllabograms seem to hang in the Tibetan script The same line in Tibetan vertical writing mode.
'icfb' Ideographic character face bottom edge baseline. Ideographic character face left edge baseline.
'icft' Ideographic character face top edge baseline. Ideographic character face right edge baseline.
'ideo' Ideographic em-box bottom edge baseline. Ideographic em-box left edge baseline.
'idtp' Ideographic em-box top edge baseline. Ideographic em-box right edge baseline.
'math' The baseline about which mathematical characters are centered. The baseline about which mathematical characters are centered in vertical writing mode.
'romn' The alphabetic baseline for characters rotated 90 degrees clockwise for vertical writing mode.

[edit] Features supported by Mac OS X

See also Datafork TrueType.

As of Mac OS X v10.4 (Tiger), Apple has started including support for OpenType features in the operating system itself, relieving application developers of the task. However there are many caveats:

  • If a font is detected to have OpenType tables, any AAT tables present are ignored by Mac OS 10.4.0 to 10.4.3 (subsequently, AAT features take precedence over OpenType features).
  • Only the following GDEF/GPOS/GSUB features (tags) are confirmed as supported:
    • liga: Common ligatures
    • dlig: Discretionary ligatures
    • sups: Superior/superscript position
    • tnum: Tabular numerals
    • pnum: Proportional numerals
    • onum: Old style numerals
    • lnum: Lining numerals
    • sinf: Scientific inferiors
    • zero: Slashed zero
    • ital: Italics
    • trad: Traditional CJK forms
    • jp78: JIS 1978 CJK forms
    • jp83: JIS 1983 CJK forms
    • expt: Expert CJK forms
    • nlck: NLC Kanji forms
    • ruby: Ruby notation forms
    • pwid: Proportional CJK widths
    • fwid: Full CJK widths
    • hwid: Half CJK widths
    • twid: Third CJK widths
    • qwid: Quarter CJK widths
    • palt: Alternate proportional CJK widths
    • halt: Alternate half CJK widths
    • vert or vrt2: Optimised kana vertical alternates
    • this list is incomplete
  • These features are known not to be supported:
    • mark: Mark‐to‐base positioning
    • mkmk: Mark‐to‐mark positioning
    • mset: Mark positioning via substitution
    • nukt: Nukta form
    • akhn: Akhand ligature
    • rphf: Reph form
    • blwf: Below-base form
    • half: Half-form (pre-base form)
    • pstf: Post-base form
    • vatu: Vattu variants
    • pres: Pre-base substitution
    • blws: Below-base substitution
    • abvs: Above-base substitution
    • psts: Post-base substitution
    • haln: Halant form substitution
    • blwm: Below-base mark positioning
    • abvm: Above-base mark positioning
    • dist: Distances

[edit] See also

[edit] External links