OpenType Overview

The OpenType font format is a widely-supported format for font data with a rich set of capabilities for digital typography. It was developed as an extension of the original TrueType format, using the same 'sfnt' container structure, and maintains compatibility for fonts that were created following the original TrueType specification. But several additional capabilities are supported, including the following:

  • Glyph outline data can use the CFF or CFF version 2 formats, as well as the TrueType glyph format.
  • Multicolor glyph presentation is supported using embedded color bitmaps or SVG documents, or using layered compositions of colored, outline-format glyphs defined within the font.
  • All Unicode® characters can be supported, including supplementary-plane characters, as well as Unicode variation sequences.
  • OpenType Layout tables provide the advanced typographic capabilities needed for high-quality typography as well as for international text using the wide variety of scripts supported in The Unicode Standard.
  • The mathematical typesetting table allows a font to include data required for layout of complex, math formulas.
  • OpenType collection files enable multiple fonts that share common data to be housed within a single file, allowing for de-duplication of data. This is especially useful, for example, for sets of CJK (Chinese, Japanese, Korean) fonts of the same design that share most glyphs in common but that vary with locale-specific glyphs for certain characters.
  • Font variations (“variable fonts”) enable glyph outlines, and other font data, to be variable based on one or more design-axis parameters. Whereas a collection file can contain multiple discrete, static font resources, a variable font can provide continuous variation in design along each of its axes. This can provide great flexibility for content authors and designers while also allowing the font data for an entire font family to be represented in an efficient format.

This specification is intended to be used in conjunction with other specifications.

While various legacy character encoding standards are supported, it is primarily designed for use with The Unicode Standard, which provides the universal encoding for written characters and symbols, as well as specifications for how text in different scripts is to be represented.

This specification defines certain data—OpenType Layout tables—and the low-level operations used to process that data to perform glyph substitutions and positioning adjustments, as needed for high-quality typography and also for correct display of Unicode text in various scripts. (See OpenType Layout Overview.) The OpenType Layout feature registry defines various features that represent specific typographic capabilities that may be supported in a font, and that are used to activate those capabilities in a given font. Many features expose optional capabilities that authors and typographers may choose to use at their discretion; for example, small cap forms, or kerning. But many other features are used to activate capabilities that are required for correct display of text; for example, required ligatures for Arabic script, or positioning of mark glyphs. Many scripts supported in Unicode have complex structural behaviors that require non-trivial operations, implemented in applications or in text-layout and “shaping” libraries, to derive a correct sequence of positioned glyphs for presentation of an underlying Unicode string. The feature registry will include features that can be used in those operations. However, complete specification of shaping algorithms for different scripts is beyond the scope of this specification. Such algorithms may be proprietary, “closed-source” implementations in particular applications; or they may be defined in vendor-specific specifications or in other industry specifications.

Support for mathematical text involving complex formulas requires a content format to describe text semantics combined with layout and presentation capabilities. This specification defines the font-specific data that would be needed for presentation. In this way, OpenType can be used to implement presentation capabilities for other document format specifications, such as TEX or MathML. Certain features may be defined in the OpenType Layout feature registry to support math layout operations.

Text layout involves operations within individual lines of text but also control over arrangement of lines into larger blocks within a page or similar context. This specification defines certain data that is used in block-level layout, such as default line metrics (ascent, descent, leading). Also, certain features may be defined in the OpenType Layout feature registry to support layout of text blocks for either horizontal or vertical layout orientation. Complete specification of block level layout is beyond the scope of this specification, however. It may be used in conjunction with other specifications, such as Unicode Standard Annex #50: Unicode Vertical Text Layout.

Some font capabilities may be subject to tailoring by applications or other higher-level protocols. For example, the TrueType instructions defined in this specification define operations used in rasterization of glyph outlines, but applications may supplement their own algorithms for final rasterization (for example, using over-sampling, or control of sub-pixel display elements) to optimize legibility of glyphs. Also, while the descriptions of features in the OpenType Layout feature registry may specify expected usage, applications can tailor their usage of features subject to other specifications or according to their own needs.

The OpenType font format is an extension of the TrueType font format, adding support for PostScript font data. The OpenType font format was developed jointly by Microsoft and Adobe. OpenType fonts and the operating system services which support OpenType fonts provide users with a simple way to install and use fonts, whether the fonts contain TrueType outlines or CFF (PostScript) outlines.

The OpenType font format addresses the following goals:

  • broader multi-platform support
  • better support for international character sets
  • better protection for font data
  • smaller file sizes to make font distribution more efficient
  • broader support for advanced typographic control

OpenType fonts are also referred to as TrueType Open v.2.0 fonts, because they use the TrueType 'sfnt' font file format. PostScript data included in OpenType fonts may be directly rasterized or converted to the TrueType outline format for rendering, depending on which rasterizers have been installed in the host operating system. But the user model is the same: OpenType fonts just work. Users will not need to be aware of the type of outline data in OpenType fonts. And font creators can use whichever outline format they feel provides the best set of features for their work, without worrying about limiting a font’s usability.

OpenType fonts can include the OpenType Layout tables, which allow font creators to design better international and high-end typographic fonts. The OpenType Layout tables contain information on glyph substitution, glyph positioning, justification, and baseline positioning, enabling text-processing applications to improve text layout.

As with TrueType fonts, OpenType fonts allow the handling of large glyph sets using Unicode encoding. Such encoding allows broad international support, as well as support for typographic glyph variants.

Additionally, OpenType fonts may contain digital signatures, which allows operating systems and browsing applications to identify the source and integrity of font files, including embedded font files obtained in web documents, before using them. Also, font developers can encode embedding restrictions in OpenType fonts, and these restrictions cannot be altered in a font signed by the developer.

The following documents may be consulted for further information: