HistoryOpenType's origins date to Microsoft's attempt to license Apple's advanced typography technology GX Typography in the early 1990s. Those negotiations failed, motivating Microsoft to forge ahead with its own technology, dubbed "TrueType Open" in 1994. Adobe joined Microsoft in those efforts in 1996, adding support for the glyph outline technology used in its Type 1 fonts. These efforts were intended by Microsoft and Adobe to supersede both Apple's TrueType and Adobe's Type 1 ("PostScript") font formats. Needing a more expressive font format to handle fine typography and the complex behavior of many of the world's writing systems, the two companies combined the underlying technologies of both formats and added new extensions intended to address those formats' limitations. The name OpenType was chosen for the combined technologies, and the technology was announced later that year.
Open Font FormatAdobe and Microsoft continued to develop and refine OpenType over the next decade. Then, in late 2005, OpenType began migrating to an open standard under the International Organization for Standardization (ISO) within the MPEG group, which had previously (in 2003) adopted OpenType 1.4 by reference for MPEG-4. Adoption of the new standard reached formal approval in March 2007 as ISO Standard ISO/IEC 14496-22 (MPEG-4 Part 22) called Open Font Format (OFF, not to be confused with Web Open Font Format). It is also sometimes referred to as "Open Font Format Specification" (OFFS). The initial standard was technically equivalent to OpenType 1.4 specification, with appropriate language changes for ISO. The second edition of the Open Font Format was published in 2009 (ISO/IEC 14496-22:2009) and was declared "technically equivalent" to the "OpenType font format specification". Since then, the Open Font Format and the OpenType specification have continued to be maintained in sync. OFF is a free, publicly available standard. By 2001 hundreds of OpenType fonts were on the market. Adobe finished converting their entire font library to OpenType toward the end of 2002. , around 10,000 OpenType fonts had become available, with the Adobe library comprising about a third of the total. By 2006, every major Type foundry, font foundry and many minor ones were developing fonts in OpenType format.
Unicode Variation SequencesUnicode version 3.2 (published in 2002) introduced Variant form (Unicode), variation selectors as an encoding mechanism to represent particular glyph forms for characters. Unicode did not, however, specify how text-display implementations should support these sequences. In late 2007, variation sequences for the Adobe-Japan1 collection were registered in the Unicode Ideographic Database, leading to a real need for an OpenType solution. This resulted in development of cmap subtable Format 14, which was introduced in OpenType version 1.5.
Color fontsUnicode version 6.0 introduced emoji encoded as characters into Unicode in October 2010. Several companies quickly acted to add support for Unicode emoji in their products. Since Unicode emoji are handled as text, and since color is an essential aspect of the emoji experience, this led to a need to create mechanisms for displaying multicolor glyphs. Apple, Google and Microsoft independently developed different color-font solutions for use in OS X/iOS, Android and Windows. OpenType / OFF already had support for monochrome bitmap glyph, and so Google proposed that OFF be extended to allow for color bitmaps. This was the approach being taken by Apple, though Apple declined to participate in extending the ISO standard. As a result, Apple added the 'sbix' table to their TrueType format in OS X 10.7, while Google proposed addition of the CBDT and CBLC tables to OFF. Microsoft adopted a different approach than color bitmaps. Noting existing practice on the Web of layering glyphs of different color on top of one another to create multi-colored elements such as icons, Microsoft proposed a new COLR table to map a glyph into a set of glyphs that are layered, and a CPAL table to define the colors. Adobe proposed yet another approach: add a new 'SVG ' table that can contain multi-color glyphs represented using Scalable Vector Graphics. The Adobe, Microsoft and Google proposals were all incorporated into the third edition of OFF (ISO/IEC 14496-22:2015). The new tables—CBDT, CBLC, COLR, CPAL, SVG—were added to OpenType version 1.7. While Microsoft originally supported only the COLR/CPAL color format, support for all of the different color formats, including Apple's 'sbix' format, was added to Microsoft Windows in the Windows 10 Anniversary Update. The 'sbix' table was subsequently added to OpenType in version 1.8.
OpenType CollectionsSince at least version 1.4, the OpenType specification had supported “TrueType Collections”, a feature of the format that allows multiple fonts to be stored in a single file. Such a format is useful for distributing an entire typeface (font family) in just one file. By combining related fonts into a single file, font tables that are identical can be shared, thereby allowing for more efficient storage. Also, individual fonts have a glyph-count limit of 65,535 glyphs, and a Collection file provides a "gap mode" mechanism for overcoming this limit in a single font file. (Each font within the collection still has the 65,535 limit, however.) A TrueType Collection file would typically have a file extension of “.ttc”. However, the specification only described collection files being used in conjunction with glyphs that are represented as TrueType outlines or as bitmaps. The potential existed to provide the same storage and glyph-count benefits to fonts that use CFF-format glyphs (.otf extension). But the specification did not explicitly allow for that. In 2014, Adobe announced the creation of OpenType Collections (OTCs), a Collection font file that combines fonts that use CFF-format glyphs. This provided significant storage benefits for CJK characters, CJK fonts that Adobe and Google were jointly developing. For example, the Noto fonts CJK OTC is ~10 MB smaller than the sum of the four separate OTFs of which it is composed. The use of a Collection also allowed for combining a very large number of glyphs into a single file, as would be needed for a pan-CJK font. Explicit support for Collections with CFF-format glyphs was incorporated into the OpenType specification in version 1.8. To reflect this more-inclusive applicability, the term “OpenType Collection” was adopted, superseding “TrueType Collection”.
OpenType Font VariationsOn September 14, 2016, Microsoft announced the release of OpenType version 1.8. This announcement was made together with Adobe, Apple, and Google at the ATypI conference in Warsaw. OpenType version 1.8 introduced “OpenType Font Variations”, which adds mechanisms that allow a single font to support many design variations. Fonts that use these mechanisms are commonly referred to as “OpenType variable fonts”. OpenType Font Variations re-introduces techniques that were previously developed by Apple in Apple Advanced Typography, TrueType GX, and by Adobe in Multiple master fonts, Multiple Master fonts. The common idea of these formats is that a single font includes data to describe multiple variations of a glyph outline (sometimes referred to as “masters”), and that at text-display time, the font rasterizer is able to interpolate or “blend” these variations to derive a continuous range of additional outline variations. The concept of fully parametric fonts had been explored in a more general way by Donald Knuth, Donald E. Knuth in the Metafont, METAFONT system, introduced in 1978. That system and its successors were never widely adopted by professional type designers or commercial software systems. TrueType GX and Multiple Master formats, OpenType Font Variations’ direct predecessors, were introduced in the 1990s, but were not widely adopted, either. Adobe later abandoned support for the Multiple Master format. This has led to questions as to whether a re-introduction of similar technology could succeed. By 2016, however, the industry landscape had changed in several respects. In particular, emergence of Web fonts and of mobile devices had created interest in Responsive web design, responsive design and in seeking ways to deliver more type variants in a size-efficient format. Also, whereas the 1990s was an era of aggressive competition in font technology, often referred to as “the font wars”, OpenType Font Variations was developed in a collaborative manner involving several major vendors. Font Variations is integrated into OpenType 1.8 in a comprehensive manner, allowing most previously-existing capabilities to be used in combination with variations. In particular, variations are supported for both TrueType or CFF glyph outlines, for TrueType hinting, and also for the OpenType Layout mechanisms. The only parts of OpenType for which variations are not supported but might potentially be useful are the SVG table for color glyphs, and the MATH table for layout of mathematical formulas. OpenType 1.8 made use of tables originally defined by Apple for TrueType GX (the avar, cvar, fvar and gvar tables). It also introduced several new tables, including a new table for version 2 of the CFF format (CFF2), and other new tables or additions to existing tables to integrate variations into other parts of the font format (the HVAR, MVAR, STAT and VVAR tables; additions to the BASE, GDEF and name tables).
Comparison to other formatsCompared with Apple Computer’s "GX Typography"—now called Apple Advanced Typography (AAT)—and with the SIL International, SIL’s Graphite (SIL), Graphite technology, OpenType is less flexible in typographic options, but superior in language-related options and support. Nevertheless, OpenType has been adopted much more widely than AAT or Graphite, despite AAT being the older technology. From a font developer's perspective, OpenType is, for many common situations, easier to develop for than AAT or Graphite. First, the simple declarative substitutions and positioning of OpenType are more readily understood than AAT's more complex state tables or the Graphite description language that resembles C syntax. Second, Adobe's strategy of licensing at no charge the source code developed for its own font development, AFDKO (Adobe Font Development Kit for OpenType), 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 certain languages (e.g. Arabic). With AAT or Graphite, the font developer has to encapsulate all that expertise in the font. This means that AAT and Graphite 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 text layout if the application or operating system knows how to handle them. Prior to supporting OpenType, Adobe promoted multiple master fonts and expert fonts for high-end typography. Multiple master fonts were essentially an earlier (and less flexible) version of OpenType variable fonts, but lacked the controls for alternate glyphs and languages provided by OpenType. Expert fonts were a workaround for alternate glyphs, provided instead as separate supplementary fonts, such that certain special characters that had no place in the Adobe Standard Encoding character set—ligatures, fractions, small capitals, etc.—were placed in the expert font instead. Usage in applications was tricky, with, for example, typing a ''Z'' causing the ''ffl'' ligature to be generated. In modern OpenType fonts alternate glyphs are referenced by their relationship to the default glyph or glyphs (i.e. under what circumstances that glyph should be used) for the particular Unicode codepoint(s).
Basic Roman supportOpenType support may be divided into several categories. Virtually all applications and most modern operating systems have basic Roman support and work with OpenType fonts just as well as other, older formats. Benefits beyond basic Roman support include extended language support through Unicode, support for complex writing scripts such as Arabic language, Arabic and the Indo-Aryan languages, Indic languages, and advanced typographic support for Latin alphabet, Latin script languages such as English language, English. Amongst Microsoft's operating systems, OpenType TT fonts (.TTF) are backward compatible and therefore supported by all Microsoft Windows versions starting with Microsoft Windows 3.1. OpenType PS fonts (.OTF) are supported in all Windows versions starting with Microsoft Windows 2000; Adobe Type Manager is required to be installed on Microsoft Windows 95/98/NT/Me for basic Roman support (only) of OpenType PS fonts.
Extended language supportExtended language support via Unicode for both OpenType and TrueType is present in most applications for Microsoft Windows (including Microsoft Office Publisher, most Adobe applications, and Microsoft Office 2003, though not Word 2002), CorelDRAW X3 and newer, and many Mac OS X applications, including Apple's own such as TextEdit, Pages (iWork), Pages and Keynote (presentation creation software), Keynote. It is also widely supported in free operating systems, such as Linux (e.g. in multiplatform applications like AbiWord, Gnumeric, Calligra Suite, Scribus, OpenOffice.org 3.2 and later versions, etc.). OpenType support for complex script, complex written scripts has so far mainly appeared in Microsoft applications in Microsoft Office, such as Microsoft Word and Microsoft Publisher. Adobe InDesign provides extensive OpenType capability in Japanese language, Japanese but does not directly support Middle Eastern or Brahmic family, Indic scripts—though a separate version of InDesign is available that supports Middle Eastern scripts such as Arabic and Hebrew. Undocumented functionality in many Adobe Creative Suite 4 applications, including InDesign, Photoshop and Illustrator, enables Middle Eastern, Indic and other languages, but is not officially supported by Adobe, and requires third-party plug-ins to provide a user interface for the features.
Advanced typographyAdvanced typographic support for Latin script languages first appeared in Adobe applications such as Adobe InDesign, Adobe Photoshop and Adobe Illustrator. QuarkXPress 6.5 and below were not Unicode compliant. Hence text in these versions of QuarkXPress that contains anything other than Code page#Windows (ANSI) code pages, WinANSI/Mac OS Roman, MacRoman characters will not display correctly in an OpenType font (nor in other Unicode font formats, for that matter). However, in QuarkXPress 7, Quark offered support similar to Adobe's. Corel's CorelDRAW introduced support for OpenType typographic features in version X6. Mellel, a Mac OS X-only word processor from Redlers, claims parity in typographic features with InDesign, but also extends the support to right-to-left scripts; so does the Classical Text Editor, a specialized word processor developed at the Austrian Academy of Sciences. , popular word processors for Microsoft Windows did not support List of typographic features#OpenType typographic features, advanced OpenType typography features. Advanced typography features are implemented only in high-end desktop publishing software. The text engine from Windows Presentation Foundation, which is a managed code implementation of OpenType, is the first Microsoft Windows Application Programming Interface, API to expose OpenType features to software developers, supporting both OpenType TrueType, and OpenType CFF (Compact Font Format) fonts. It supports advanced typographic features such as Typographical ligature, ligatures, Text figures, old-style numerals, swash (typography), swash variants, fraction (mathematics), fractions, superscript and subscript, small caps, small capitalization, Font substitution, glyph substitution, multiple baseline (typography), baselines, contextual and stylistic alternate character forms, kerning, line-level justification (typesetting), justification, ruby characters etc. WPF applications automatically gain support for advanced typography features. OpenType ligatures are accessible in Microsoft Word#Word 2010, Microsoft Office Word 2010. Windows 7 introduced DirectWrite, a hardware accelerated native code, native DirectX API for text rendering with support for multi-format text, resolution-independent outline fonts, ClearType, advanced OpenType typography features, full Unicode text, layout and language support and low-level glyph rendering APIs. On Mac OS X, Apple Advanced Typography, 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 X 10.4 included most advanced typographic features necessary for Latin script languages, such as small caps, oldstyle figures, and various sorts of ligatures, but it did not yet support contextual alternates, positional forms, nor glyph reordering as handled by Microsoft's Uniscribe library on Windows. Thus, Mac OS X 10.4 did not offer support for Arabic or Indic scripts via OpenType (though such scripts are fully supported by existing AAT fonts). Mac OS X 10.5 has improved support for OpenType and supports Arabic OpenType fonts. Gradually, the OpenType typography support has improved on newer Mac OS X versions (e.g. Mac OS X 10.10 can handle much better long contextual glyph substitutions). Bitstream Panorama (Layout Engine), Panorama, a line layout and text composition engine from Bitstream Inc., provides complete OpenType support for compact and standard Asian fonts, Arabic, Hebrew, Indic, Thai and over 50 other worldwide languages. The application supports key OpenType tables required for line layout, such as BASE, glyph definition (GDEF), glyph positioning (GPOS), and glyph substitution (GSUB). Panorama also offers complete support for advanced typography features, such as ligatures, swashes, small caps, ornaments, ordinals, superiors, old style, kerning, fractions, etc. In free software environments such as Linux, OpenType rendering is provided by the FreeType project, included in free implementations of the X Window System such as X.Org Server, X.org. Complex text handling is provided either by pango (calling HarfBuzz) or Qt (toolkit), Qt. The XeTeX and LuaTeX systems allow TeX documents to use OpenType fonts, along with most of their typographic features. Linux version of LibreOffice 4.1 and newer supports many OpenType typography features, because it began to use more sophisticated HarfBuzz text shaping library.
OpenType Feature FileAs a step in the creation of a font, OpenType font properties (other than the outline) can be defined using human-readable text saved in Adobe's OpenType Feature File format. OpenType Feature Files typically have a name ending in a
.feaextension. These files can be compiled into the binary font container (
.otf) using Adobe Font Development Kit for OpenType (AFDKO), FontLab, FontForge, Glyphs, DTL OTMaster, RoboFont and FontTools.
Layout tagsOpenType 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, FontLab Studio, AsiaFont Studio, and FontForge. Operating system and application support for layout tags varies widely.
Script tagsScript tags identify the scripts (writing systems) represented in an OpenType font. Each tag corresponds to contiguous character code ranges in Unicode. A script tag can consist of 4 or fewer lowercase letters, such as
for the Arabic alphabet,
for the Cyrillic script and
for the Latin alphabet. The
mathscript tag, added by Microsoft for Cambria (typeface), Cambria Math, has been added to the specification. (consent to non-chargeable online licence agreement required to download specification)
Language system tagsLanguage system tags identify the language systems supported in an OpenType font. Examples include
ARAfor Arabic language, Arabic,
ESPfor Spanish language, Spanish,
HYEfor Armenian language, Armenian, etc. In general, the codes are not the same as ISO 639-2 codes.
Feature tagsA list of OpenType features with expanded descriptions is given OpenType feature tag list, list of typographic features.
Baseline tagsBaseline 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.
MathA set of tables that mirrors TeX math font metrics relatively closely was added by Microsoft initially to Cambria Math for supporting their new math editing and rendering engine in Office 2007 and later. This extension was added to the ISO standard (ISO/IEC CD 14496-22 3rd edition) in April 2014. Additional (usage) details are available in the Unicode technical report 25 and technical note 28. Some of the new technical features (not present in TeX), such as "cut-ins" (which allows kerning of subscripts and superscripts relative to their bases) and stretch stacks have been patented by Microsoft. Windows 8 supports OpenType math outside MS Office applications via the RichEdit 8.0 component. Besides Microsoft products, XeTeX and LuaTeX also have some level of support for these tables; support is more limited in XeTeX because it uses the traditional TeX math rendering engine (thus it cannot fully use some of the new features in OpenType math that extend TeX), while LuaTeX takes a more flexible approach by changing some of the internals of TeX's math rendering; in the words of Ulrik Vieth (2009): "More precisely, while XeTeX only provides access to the OpenType parameters as additional \fontdimens, LuaTeX uses an internal data structure based on the combined set of OpenType and TeX parameters, making it possible to supply missing values which are not supported in either OpenType math fonts or traditional TeX math fonts."https://www.tug.org/TUGboat/tb30-1/tb94vieth.pdf also at http://www.ntg.nl/maps/38/03.pdf In 2013, XeTeX also gained support for cut-ins. The Gecko (software), Gecko rendering engine used by the Firefox web browser also supports some OpenType math features in its MathML implementation. , the set of fonts that supported OpenType math was fairly limited. Besides Cambria Math, three free fonts were available: Asana-Math, Neo Euler, and XITS. More recently the Latin Modern and TeX Gyre fonts (an "Computer Modern#Latin Modern, LM-ization" of the standard PostScript fonts) have also gained support for OpenType math. the number of OpenType math fonts is still fairly limited. A more up-to-date list is maintained on Mozilla's web site.
ColorEmergence of Unicode emoji created a need for TrueType and OpenType formats to support color glyphs. Apple added a color extension in Mac OS X Lion (and also to iOS 4+). Fonts were extended with colored images within the sbix table. Google used a similar extension with embedded color bitmap images contained within a pair of tables, the CBDT and CBLC tables. The Google version is implemented in FreeType 2.5. In Windows 8.1 Microsoft also added color support to fonts, first implemented in the Segoe UI Emoji font. Microsoft's implementation, however, relies entirely on vector graphics: two new OpenType tables were added in Microsoft's implementation: the COLR table allows layered glyphs and the CPAL (“Color Palette”) actually defines the colors for the layers. The multi-layer approach allows a backwards compatible implementation as well as varying the rendering depending on the color context surrounding the glyphs. According to Adam Twardoch: "At TypeCon , Greg Hitchcock clarified the envisioned roles of the palettes: first palette is used by default for “dark on light” color situations while second palette is intended for use in “light on dark” situations. Additional palettes should be selectable by the user." Mozilla and Adobe developed a different vector-based extension by adding embedded Scalable Vector Graphics, SVG documents (supporting color but also animations) into the SVG table. The SVG table also allowed for using color palettes defined in the CPAL table. Support was first implemented in Firefox 26. Adobe, Mozilla, Google and Microsoft each submitted their color extensions for standardization thorough ISO/IEC 14496-22. The new tables for each of these were then added into OpenType version 1.7. Apple's sbix table was originally supported only in AAT fonts, but it was later added into OpenType version 1.8. Microsoft Windows 10 Anniversary Update was the first OS to support all four color font extensions, and Microsoft Edge was the first browser to do so. In OpenType Version 1.8.3, the specification for the SVG table was revised to be more constrained, providing more clarity for implementations and better interoperability. Apple is supporting the revised specification in Safari 12, iOS12 and macOS 10.14. The implementation in Microsoft Windows also conforms to this revision.
SING gaiji solutionIn 2005, Adobe shipped a new technology in their Adobe Creative Suite, Creative Suite applications bundle that offers a solution for "gaiji" (外字, Japanese for "outside character"). 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 East Asian 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 (computer science), 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 Private Use Areas (PUA). 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 (Smart INdependent Glyphlets)DeLaHunt, Jim
Serbian Cyrillic solutionSerbian Cyrillic alphabet, Serbian/Macedonian Cyrillic uses some language-specific glyphs. In Unicode these are encoded in a single code point. OpenType allows showing these language-specific glyphs.
See also* Uniscribe (Windows multilingual text rendering engine) * Windows Presentation Foundation (the first Windows API with near complete OpenType support) * Apple Type Services for Unicode Imaging (Macintosh multilingual text rendering engine) * WorldScript (old Macintosh multilingual text rendering engine) * Pango (open source multilingual text rendering engine) * XeTeX, a free typesetting system based on a merger of TeX with Unicode and Mac OS X font technologies * List of typographic features * Embedded OpenType * Typography * Panorama (Layout Engine), Bitstream Panorama * FreeType * Web Open Font Format, WOFF (Web Open Font Format), a webfont format that contains an OpenType font with metadata * Noto fonts