PANOSE

The PANOSE System is a method for classifying typefaces solely on their visual characteristics, developed by Benjamin Bauermeister. It can be used to identify an unknown font from a sample image or to match a known font to its closest visual neighbor from a font pool. The word "PANOSE" is composed of letters taken from the six classes in which the creator of the system organized the Latin alphabet.

History
The original PANOSE System was developed in 1985 by Benjamin Bauermeister. In 1988, it was published by Van Nostrand Reinhold Company Inc. under the title A Manual of Comparative Typography: The PANOSE System. This initial version of the PANOSE system consisted of seven classification categories, and was based on subjective visual parameters.

In 1990, the Weight category was added, and the Arm Style category was split off from the Stroke Variation category, bringing the number of classification categories to 9. Objective classification criteria were also added at this time.

In 1991, the Family Kind category was added, completing the PANOSE 1.0 definition.

In 1992, there were attempts made to classify Han ideographic typefaces, which allows applications to suggest the most appropriate Latin typeface to match a given Han ideographic typeface. Transliteral mapping could also be used to match between, for example, decorative or script faces and text equivalents.

In 1993, Mapper Application Interface (MAI) was developed. PANOSE 2.0 was also released in the same year, which is the basis for Hewlett-Packard's Infinifont font synthesis technology.

PANOSE was incorporated into a variety of digital font metadata tags in 1992 by ElseWare Corporation. The classification system, its matching algorithms reference databases, classification parameters, and trademarks were purchased by Hewlett-Packard in 1995. A font synthesis engine named Infinifont was also purchased by Hewlett-Packard at that time.

1.0
The PANOSE 1.0 definition was published in 1988. A PANOSE classification number consists of 10 concatenated values. Each value from a given category was computed from a specific visual metric, such as the weight of the font and the presence or absence of serifs. Special values "Any" (0) and "No Fit" (1) exist for every category, which have specific meanings to the mapper. "Any" means match that digit with any available digit, which allows the mapper to handle distortable typefaces. "No Fit" means that the item being classified does not fit within the present system.

The standard classifies fonts in following categories in following order:
 * Family: The Family value defines what type of font is being classified, which affects the valid values available for the latter categories, and the categories available. Different category definitions exist for Latin Text, Latin Hand Written, Latin Decorative, Latin Symbol, Iconographic, Japanese Text, Cyrillic Text, and Hebrew.

Latin Text categories

 * Serif Style: it describes the appearance of the serifs used in a font design and groups them into one of 14 general categories. Serif and sans serif faces are classified within this digit.
 * Weight: it classifies the appearance of a font's stem thickness in relation to its height. It offers 10 gradations, ranging from Very Light to Extra Black.
 * Proportion: it describes the relative proportions of the characters in the font. Distinguishes Monospaced from Proportional, Modern from Old Style, and Extended from Condensed.
 * Contrast: it describes the ratio between the thickest and narrowest points on the letter O. The uppercase O is used because it is generally of higher contrast than the other characters of the alphabet.
 * Stroke Variation: it specifies the relationship between the thicknesses of the thin stems and the wide stems. It further details the contrast trait by describing the kind of transition that occurs as the stem thickness changes on rounded glyph shapes.
 * Arm Style: it classifies special treatment of diagonal stems and termination of open rounded letterforms. The letter A and C are used extensively for this classification, along with G, M, S, V, W, and Y.
 * Letterform: it classifies roundness of the character shapes and the predominant skewing of the character forms.
 * Midline: it describes the placement of the midline across the uppercase characters and the treatment of diagonal stem apexes.
 * X-height: it describes the treatment of uppercase glyphs with diacritical marks and the relative size of the lowercase characters.

Latin Hand Written categories

 * Tool Kind:
 * Weight:
 * Spacing:
 * Aspect Ratio:
 * Contrast:
 * Topology:
 * Form:
 * Finials: Possible values are 0 (Any), 1 (No fit), 2/3/4 (None), 5/6/7 (Sharp), 8/9/10 (Tapered), 11/12/13 (Round). For each of the latter options there are three variants:  respectively No loops, Closed Loops, and Open loops.
 * X-ascent:

Latin Decoratives categories

 * Class:
 * Weight:
 * Aspect:
 * Contrast:
 * Serif Variant:
 * Treatment:
 * Lining:
 * Topology:
 * Range of Characters:

Latin Symbol categories

 * Kind:
 * Weight:
 * Spacing:
 * Aspect Ratio & Contrast:
 * Aspect Ratio of Character 94:
 * Aspect Ratio of Character 119:
 * Aspect Ratio of Character 157:
 * Aspect Ratio of Character 163:
 * Aspect Ratio of Character 211:

Example
For example, the PANOSE digits for Times New Roman are:

2.0
The system stores actual measurement data under the Rich Font Description (RFD) rather than bucketing it, which allows the matching system to use mathematical distance rather than penalty tables. It is designed for distortable font technologies (e.g.: Multi Master fonts). The system offers multiple methods for distortable fonts.

The original classification system was changed from a bucket-based system to an arithmetic system (except the Family from PANOSE 1.0 and derivatives), and was expanded to following categories: Each PANOSE 2.0 category value is a signed 16-bit number (from −32,768 to 32,767; only ranges between −10,000 and 10,000 are defined), where value zero (0) is considered to be the "normal" for the digit. For example, digit zero for the weight represents medium weight. The "any" value from PANOSE 1.0 is translated to a "don't care" parameter and is replaced by the more comprehensive distortable font descriptions.

The Family category is replaced by Class and Genre, where Class indicates a font's language and character set, where Genre indicates text faces, display faces, symbol faces, and so on. PANOSE matching software is designed to match fonts with different Class, but same Genre. The same Genre can have different meaning in different Class, so the matching heuristic decides the closeness of fonts based on adjusted values based on Class, rather than raw PANOSE values within the fonts themselves.

PANOSE Classification Procedures
Classification Procedures are objective measurement techniques used to assign a PANOSE number to a font.

PANOSE Mapper software
The PANOSE Mapper software determines the closest possible font match on any given system by comparing the PANOSE numbers of the requested and available fonts. The individual PANOSE digits are compared, weighted by their typographic importance, and summed to provide a numerical visual distance. Typographic importance is derived by assigning weights to each digit; for example, a font's weight (regular, bold, demibold, etc.) is more important than its contrast (difference between thick and thin strokes).

Standardizations
PANOSE 1.0 table is supported in TrueType font format.

PANOSE 2.0 is used in ElseWare Corporation's Infinifont parametric font generation system.

In 1996, during the W3C's draft process for CSS 1, Hewlett-Packard proposed a PANOSE syntax extension for font substitution. It was not included in the final CSS 1 recommendation partly because of licensing concerns. Although Hewlett-Packard Co. is not interested in profiting from PANOSE, it will negotiate licenses on a time and materials basis.

PANOSE 1.0 is supported in SVG since version 1.0 in the font-face element under panose-1 attribute. In CSS 2, it is used in the panose-1 property, which was removed in CSS 2.1.

In Office Open XML, it is part of WordProcessingML.

PANOSE 1.0 is used in Rich Text Format Specification 1.7.