![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Microsoft Typography | Developer information | Specifications | Feature Tags | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The registered features listed below are organized by function in the first table, and alphabetically in the second table. The descriptions which follow the tables are also arranged alphabetically.
Friendly name: Access All Alternates Registered by: Adobe Function: Make all variations of a selected character accessible. This serves several purposes: An application may not support the feature by which the desired glyph would normally be accessed; the user may need a glyph outside the context supported by the normal substitution, or the user may not know what feature produces the desired glyph. Ligatures would not appear in this table unless they were variant forms of another ligature. Example: A user inputs the P in Poetica, and is presented with a choice of the four standard capital forms, the eight swash capital forms, the initial capital form and the small capital form. Recommended implementation: The aalt table groups glyphs into semantic units. These units include the glyph which represents the default form for the underlying Unicode value stored by the application. While many of these substitutions are one-to-one (GSUB lookup type 1), others require a selection from a set (GSUB lookup type 3). The manufacturer may choose to build two tables (one for each lookup type) or only one which uses lookup type 3 for all substitutions. Application interface: The application determines the GID for the default form of a given character (Unicode value with no features applied). It then checks to see whether the GID is found in the aalt coverage table. If so, the application passes this value to the feature table and gets back the GIDs in the associated group. UI suggestion: The application should indicate to the user which glyphs in the user's document have alternative forms (i.e which are in the coverage table for aalt). When the user selects one of those glyphs and applies the aalt feature, an application could display the forms sequentially in context, or present a palette showing all the forms at once, or give the user a choice between these approaches. The application may assume that the first glyph in a set is the preferred form, so the font developer should order them accordingly. When only one alternate exists, this feature could toggle directly between the alternate and default forms. Script/language sensitivity: None. Feature interaction: This feature overrides the results of all other features.
Friendly name: Alternative Fractions Registered by: Microsoft Function: Replaces figures separated by a slash with an alternative form. Example: The user enters 3/4 in a recipe and get the threequarters nut fraction. Recommended implementation: The afrc table maps sets of figures separated by slash (U+002F) or fraction (U+2044) characters to corresponding fraction glyphs in the font (GSUB lookup type 4). Application interface: The application must define the full sequence of GIDs to be replaced. When the full sequence is found in the frac coverage table, the application passes the sequence to the afrc table and gets a new GID in return. UI suggestion: This feature should be off by default. Script/language sensitivity: None. Feature interaction: This feature overrides the results of all other features.
Friendly name: Alternate Vertical Metrics Registered by: Adobe Function: Repositions glyphs to visually center them within full-height metrics, for use in vertical setting. Typically applies to full-width Latin characters, which are aligned on a common horizontal baseline and not rotated when set vertically in CJKV fonts. Example: Applying this feature would shift a Roman h down, or y up, from their default full-width positions. Recommended implementation: The font specifies alternate metrics for the original glyphs (GPOS lookup type 1). Application interface: For GIDs found in the altv coverage table, the application passes the GIDs to the table and gets back positional adjustments (YPlacement). UI suggestion: This feature should be active by default in vertical-setting contexts. Script/language sensitivity: Applies only to scripts with vertical writing modes. Feature interaction: This feature overrides the results of all other glyph-width features, and deactivates the kern feature.
Friendly name: Connection Forms Registered by: Adobe Function: In specified situations, replaces default glyphs with alternate forms which provide better joining behavior. Used in script typefaces which are designed to have some or all of their glyphs join. Example: In Caflisch Script, o is replaced by o.alt2 when followed by an ascending letterform. Recommended implementation: The calt table specifies the context in which each substitution occurs, and maps one or more default glyphs to replacement glyphs (GSUB lookup type 6). Application interface: The application passes sequences of GIDs to the feature table, and gets back new GIDs. Note that full sequences must be passed. UI suggestion: This feature should be active by default. Script/language sensitivity: Not applicable to ideographic scripts. Feature interaction: This feature overrides the results of all other width features.
Friendly name: Case-Sensitive Forms Registered by: Adobe Function: Shifts various punctuation marks up to a position that works better with all-capital sequences or sets of lining figures; also changes oldstyle figures to lining figures. By default, glyphs in a text face are designed to work with lowercase characters. Some characters should be shifted vertically to fit the higher visual center of all-capital or lining text. Also, lining figures are the same height (or close to it) as capitals, and fit much better with all-capital text. Example: The user selects a block of text and applies this feature. The dashes, bracketing characters, guillemet quotes and the like shift up to match the capitals, and oldstyle figures change to lining figures. Recommended implementation: The font may implement this change by substituting different glyphs (GSUB lookup type 1) or by repositioning the original glyphs (GPOS lookup type 1). Application interface: The application queries whether specific GIDs are found in the coverage table for the case feature. If so, it passes these IDs to the table and gets back either new GIDs or positional adjustments (XPlacement and YPlacement). UI suggestion: It would be good to apply this feature (or turn it off) by default when the user changes case on a sequence of more than one character. Applications could also detect words consisting only of capitals, and apply this feature based on user preference settings. Script/language sensitivity: Applies only to European scripts; particularly prominent in Spanish-language setting. Feature interaction: This feature overrides the results of other features affecting the figures.
Friendly name: Capital Spacing Registered by: Adobe Function: Globally adjusts inter-glyph spacing for all-capital text. Most typefaces contain capitals and lowercase characters, and the capitals are positioned to work with the lowercase. When capitals are used for words, they need more space between them for legibility and esthetics. This feature would not apply to monospaced designs. Of course the user may want to override this behavior in order to do more pronounced letterspacing for esthetic reasons. Example: The user sets a title in all caps, and the Capital Spacing feature opens the spacing. Recommended implementation: The cpsp table stores alternate advance widths for the capital letters covered, generally increasing them by a uniform percentage (GPOS lookup type 1). Application interface: For GIDs found in the cpsp coverage table, the application passes a sequence of GIDs to the cpsp table and gets back a set of XPlacement and XAdvance adjustments. The application may rely on the user to apply this feature (e.g., by selecting text for a change to all-caps) or apply its own heuristics for recognizing words consisting of capitals. UI suggestion: This feature should be on by default. Applications may want to allow the user to respecify the percentage to fit individual tastes and functions. Script/language sensitivity: Should not be used in connecting scripts (e.g. most Arabic). Feature interaction: May be used in addition to any other feature (note specifically that this feature is additive with other GPOS features like tracking and kerning).
Friendly name: Currency Registered by: Adobe Function: Replaces any currency character in the font with any other. This allows the user to access any currency character in the font, regardless of keyboard layouts. Example: The user applies this feature to replace U+00A5 (yen) with U+20AC (Euro). Recommended implementation: The crcy table contains a lookup for each currency character in the font, mapping it to the set of all other currency characters in the font (GSUB lookup type 3). When more than one style of currency glyphs is present (e.g. both lining and oldstyle forms) the mapping is done within a given style. Application interface: For GIDs found in the crcy coverage table, the application passes a GID to the feature table and gets back a set of new GIDs, which are presented to the user for selection. Note: This is a change of semantic value. The application should store the code for the new character. The original value need not be stored. UI suggestion: This feature should be off by default. When the user selects a currency character and applies the crcy feature, an application could display the forms sequentially in context, or present a palette showing all the forms at once, or give the user a choice between these approaches. The application may assume that the first glyph in a set is the preferred form, so the font developer should order them accordingly. Script/language sensitivity: Could apply to any font Feature interaction: This feature overrides the results of all other features.
Friendly name: Small Capitals From Capitals Registered by: Adobe Function: This feature turns capital characters into small capitals. It is generally used for words which would otherwise be set in all caps, such as acronyms, but which are desired in small-cap form to avoid disrupting the flow of text. Example: The user enters text as capitals, and gets small cap text. Recommended implementation: The c2sc table maps capital glyphs to the corresponding small-cap forms (GSUB lookup type 1). Application interface: For GIDs found in the c2sc coverage table, the application passes GIDs to the c2sc table, and gets back new GIDs. UI suggestion: This feature should be off by default. Script/language sensitivity: Applies only to European scripts (Cyrillic, Greek & Latin), which have capital forms. Feature interaction: This feature overrides the results of all other features. Also see smcp.
Friendly name: Discretionary Ligatures Registered by: Adobe Function: Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. This feature covers those ligatures which may be used for special effect. Example: The glyph for Th replaces the sequence of glyphs T h, or U+322E (Kanji ligature for 'Friday') replaces the sequence U+91D1 U+66DC U+65E5. Recommended implementation: The dlig table maps sequences of glyphs to corresponding ligatures (GSUB lookup type 4). Ligatures with more components must be stored ahead of those with fewer components in order to be found. The set of discretionary ligatures will vary by design and script. Application interface: For sets of GIDs found in the dlig coverage table, the application passes the sequence of GIDs to the table and gets back a single new GID. Note that full sequences must be passed. This may include a change of character code. Besides the original character code, the application should store the code for the new character. UI suggestion: This feature should be off by default. Script/language sensitivity: Applies to virtually all scripts. Feature interaction: This feature overrides the results of all other features.
Friendly name: Denominators Registered by: Adobe Function: Replaces selected figures which follow a slash with denominator figures. Example: In the string 11/17 selected by the user, the application turns the 17 into denominators when the user applies the fraction feature (frac). Recommended implementation: The dnom table maps sets of figures and related characters to corresponding numerator glyphs in the font (GSUB lookup type 1). Application interface: For GIDs found in the dnom coverage table, the application passes a GID to the table and gets back a new GID. UI suggestion: This feature should normally be called by an application when the user applies the frac feature. Script/language sensitivity: None. Feature interaction: This feature overrides the results of all other features, and supports frac.
Friendly name: Diphthongs Registered by: Adobe Function: Replaces paired letters with corresponding diphthong (a single semantic unit). Example: The user selects this feature to turn Ae into Æ, or Ij into IJ. Recommended implementation: The dpng table maps sets (usually pairs) of letters to corresponding diphthongs (GSUB lookup type 4). Application interface: For GIDs found in the dpng coverage table, the application passes a sequence of GIDs to the feature, and gets back a new GID. Note: This is a change of semantic value. Besides the code for the new character (for searching and spell-checking), the application should store the original character codes, allowing easy decomposition if needed. UI suggestion: This feature should be off by default. Script/language sensitivity: Latin only. Feature interaction: May be used in addition to any other feature.
Friendly name: Expert Forms Registered by: Adobe Function: Like the JIS78 Forms described above, this feature replaces standard forms in Japanese fonts with corresponding forms preferred by typographers. Although most of the JIS78 substitutions are included, the expert substitution goes on to handle many more characters. Example: The user would invoke this feature to replace kanji character U+5516 with U+555E. Recommended implementation: The expt table maps many default (JIS90) GIDs to corresponding alternates (GSUB lookup type 1). Application interface: For GIDs found in the expt coverage table, the application passes the GIDs to the table and gets back one new GID for each. Note: This is a change of character code. Besides the original character code, the application should store the code for the new character. UI suggestion: Applications may choose to have this feature active or inactive by default, depending on their target markets. Script/language sensitivity: Applies only to Japanese. Feature interaction: This feature overrides the results of all other features, although the Proportional Alternate Widths feature (palt) may be used in addition.
Friendly name: Terminal Forms Registered by: Microsoft/Adobe Function: Replaces glyphs at the ends of words with alternate forms designed for this use. This is common in Latin connecting scripts, and required in various non-Latins like Arabic. Example: In the typeface Poetica, the default e in the word 'type' is replaced with the e.end form. Recommended implementation: The fina table maps default alphabetic forms to corresponding ending forms (GSUB lookup type 1). Application interface: The application is responsible for noting word boundaries. For GIDs at the ends of words and found in the fina coverage table, the application passes a GID to the feature and gets back a new GID. UI suggestion: This feature could be made active or inactive by default, at the user's preference. Script/language sensitivity: Can be used in any alphabetic script. Feature interaction: This feature overrides the results of all other features. See also init and medi.
Friendly name: Fractions Registered by: Microsoft/Adobe Function: Replaces figures separated by a slash with 'common' (diagonal) fractions. Example: The user enters 3/4 in a recipe and get the threequarters fraction. Recommended implementation: The frac table maps sets of figures separated by slash or fraction characters to corresponding fraction glyphs in the font. These may be precomposed fractions (GSUB lookup type 4) or arbitrary fractions (GSUB lookup type 1). Application interface: The application must define the full sequence of GIDs to be replaced, based on user input (i.e. user selection determines the string's delimitation). When the full sequence is found in the frac coverage table, the application passes the sequence to the frac table and gets a new GID in return. When the frac table does not contain an exact match, the application performs two steps. First, it uses the numr feature (see below) to replace figures (as used in the numr coverage table) preceding the slash with numerators, and to replace the typographic slash character (U+002F) with the fraction slash character (U+2044). Second, it uses the dnom feature (see below) to replace all remaining figures (as listed in the dnom coverage table) with denominators. UI suggestion: This feature should be off by default. Script/language sensitivity: None. Feature interaction: This feature may require the application to call the numr and dnom features. It overrides the results of any other features.
Friendly name: Full Widths Registered by: Adobe Function: Replaces glyphs set on other widths with glyphs set on full (usually em) widths. May apply to glyphs for Latin characters in a CJKV font. In a European font, this feature replaces proportionally-spaced glyphs with monospaced glyphs. Example: The user may invoke this feature in a Japanese font to get full monospaced Latin glyphs instead of the corresponding proportionally-spaced versions. Recommended implementation: The font may contain alternate glyphs designed to be set on full widths (GSUB lookup type 1), or it may specify alternate (full-width) metrics for the proportional glyphs (GPOS lookup type 1). Application interface: For GIDs found in the fwid coverage table, the application passes the GIDs to the table and gets back either new GIDs or positional adjustments (XPlacement and XAdvance). UI suggestion: This feature would normally be off by default. Script/language sensitivity: Applies to any script which can use monospaced forms. Feature interaction: This feature overrides the results of all other glyph-width features, and deactivates the kern feature.
Friendly name: Alternate Half Widths Registered by: Adobe Function: Respaces glyphs designed to be set on full-em widths, fitting them onto half-em widths. This differs from hwid above in that it does not substitute new glyphs. Example: The user may invoke this feature in a CJKV font to get better fit for punctuation or symbol glyphs without disrupting the monospaced alignment. Recommended implementation: The font specifies alternate metrics for the full-width glyphs (GPOS lookup type 1). Application interface: For GIDs found in the halt coverage table, the application passes the GIDs to the table and gets back positional adjustments (XPlacement, XAdvance, YPlacement and YAdvance). UI suggestion: This feature would be off by default. Script/language sensitivity: Used only in CJKV fonts. Feature interaction: This feature overrides the results of all other glyph-width features, and deactivates the kern feature.
Friendly name: Historical Forms Registered by: Microsoft/Adobe Function: Some letterforms were in common use in the past, but appear anachronistic today. The best-known example is the long form of s; others would include the old Fraktur k. Some fonts include the historical forms as alternates, so they can be used for a 'period' effect. This feature replaces the default (current) forms with the historical alternates. While some ligatures are also used for historical effect, this feature deals only with single characters. Example: The user applies this feature in Adobe Jenson to get the archaic forms of M, Q and Z. Recommended implementation: The hist table maps default forms to corresponding historical forms (GSUB lookup type 1). Application interface: For GIDs found in the hist coverage table, the application passes the GIDs to the hist table and gets back new GIDs. UI suggestion: This feature should be off by default. Script/language sensitivity: None. Feature interaction: This feature overrides the results of all other features.
Friendly name: Historical Ligatures Registered by: Microsoft Function: Some ligatures were in common use in the past, but appear anachronistic today. Some fonts include the historical forms as alternates, so they can be used for a 'period' effect. This feature replaces the default (current) forms with the historical alternates. Example: The user applies this feature using Palatino Linotype, and historic ligatures are formed for all long s forms, including: long s+t, long s+b, long s+h, long s+k, and several others. Recommended implementation: The hlig table maps default ligatures and character combinations to corresponding historical ligatures(GSUB lookup type 1). Application interface: For GIDs found in the hlig coverage table, the application passes the GIDs to the hlig table and gets back new GIDs. UI suggestion: This feature should be off by default. Script/language sensitivity: None. Feature interaction: This feature overrides the results of all other features.
Friendly name: Hangul Registered by: Adobe Function: Replaces hanja (Chinese-style) Korean characters with the corresponding hangul (syllabic) characters. This effectively reverses the standard input method, in which hangul are entered and replaced by hanja. Many of these substitutions are one-to-one (GSUB lookup type 1), but hanja substitution often requires the user to choose from several possible hangul characters (GSUB lookup type 3). Example: The user may call this feature to get U+AC00 from U+4F3D. Recommended implementation: This table associates each hanja character in the font with one or more hangul characters. The manufacturer may choose to build two tables (one for each lookup type) or only one which uses lookup type 3 for all substitutions. Application interface: For GIDs found in the hngl coverage table, the application passes the GIDs to the table and gets back one or more new GIDs. If more than one GID is returned, the application must provide a means for the user to select the one desired. Note: This is a change of semantic value. Besides the original character codes (when entered as hanja), the application should store the code for the new character. UI suggestion: This feature should be inactive by default. The application may note the user's choice when selecting from multiple hangul, and offer it as a default the next time the source hanja character is encountered. In the absence of such prior information, the application may assume that the first hangul in a set is the preferred form, so the font developer should order them accordingly. Script/language sensitivity: Korean only. Feature interaction: This feature overrides the results of all other features, although the Proportional Alternate Widths feature (palt) may be used in addition.
Friendly name: Half Widths Registered by: Adobe Function: Replaces glyphs on proportional or full-em widths with glyphs on half-em (en) widths. Many CJKV fonts have glyphs which are set on multiple widths; this feature selects the half-em version. There are various contexts in which this is the preferred behavior, including compatibility with older desktop documents. Example: The user may replace a proportional Latin glyph with the same character set on a half-em width. Recommended implementation: The font may contain alternate glyphs designed to be set on half-em widths (GSUB lookup type 1), or it may specify alternate metrics for the original glyphs (GPOS lookup type 1) which adjust their spacing to fit in half-em widths. Application interface: For GIDs found in the hwid coverage table, the application passes the GIDs to the table and gets back either new GIDs or positional adjustments (XPlacement and XAdvance). UI suggestion: This feature would normally be off by default. Script/language sensitivity: Generally used only in CJKV fonts. Feature interaction: This feature overrides the results of all other glyph-width features, and deactivates the kern feature.
Friendly name: Initial Forms Registered by: Microsoft/Adobe Function: Replaces glyphs at the beginnings of words with alternate forms designed for this use. This is common in Latin connecting scripts, and required in various non-Latins like Arabic. Example: In the typeface Ex Ponto, the default t in the word 'type' is replaced with the t.begin form. Recommended implementation: The init table maps default alphabetic forms to corresponding beginning forms (GSUB lookup type 1). Application interface: The application is responsible for noting word boundaries. For GIDs at the beginnings of words and found in the init coverage table, the application passes a GID to the feature and gets back a new GID. UI suggestion: This feature could be made active or inactive by default, at the user's preference. Script/language sensitivity: Can be used in any alphabetic script. Feature interaction: This feature overrides the results of all other features. See also medi and fina.
Friendly name: Italics Registered by: Adobe Function: Some fonts (such as Adobe's Pro Japanese fonts) will have both Roman and Italic forms of some characters. This feature replaces the Roman glyphs with the corresponding Italic glyphs. Example: The user would apply this feature to replace B with B. Recommended implementation: The ital table maps the Roman forms in a font to the corresponding Italic forms (GSUB lookup type 1). Application interface: For GIDs found in the ital coverage table, the application passes the GIDs to the table and gets back one new GID for each. UI suggestion: When a user selects text and applies an Italic style, an application should check for this feature and use it if present. Script/language sensitivity: Applies mostly to Latin; note that many non-Latin fonts contain Latin as well. Feature interaction: This feature overrides the results of all other substitution features, and should activate the kern feature in CJKV fonts.
Friendly name: Japanese Forms Registered by: Adobe Function: Due to the Han Unification in Unicode, a number of codepoints can have multiple forms which vary by locale (language and country). The language feature tags (zhcn, zhtw, jajp, kokr and vivn) enable the option of building fonts which support multiple CJKV locales. This feature replaces default Han glyphs with the forms used in Japanese. This feature differs from the smpl and trad features above, which associate different Unicode characters; in this feature, the same character is used and only the form changes. Note: The feature tag is a combination of language (ja = Japanese) and country code (JP = Japan). Example: The user applies this feature to U+5668 to get the form which is unique to Japanese. Recommended implementation: For a given Unicode value, the font contains glyphs for several locales, including Japanese. The jajp table maps GIDs for the corresponding forms to Japanese forms. These are one-to-one substitutions (GSUB lookup type 1). Application interface: Which glyph is used as the default Han form should be determined by the language the user has specified; the application should use the language feature tags (zhcn, zhtw, jajp, kokr and vivn) to determine correct defaults. When the user wants to switch locale, the application passes a GID to the corresponding table and gets back a new GID. UI suggestion: This feature should be inactive by default. Script/language sensitivity: Applies to CJKV scripts. Feature interaction: This feature overrides the results of all other features.
Friendly name: JIS78 Forms Registered by: Adobe Function: This feature replaces default (JIS90) Japanese glyphs with the corresponding forms from the JIS C 6226-1978 (JIS78) specification. Example: The user would invoke this feature to replace kanji character U+5516 with U+555E. Recommended implementation: When JIS90 glyphs correspond to JIS78 forms, the jp78 table maps each of those glyphs to their alternates. While many of these substitutions are one-to-one (GSUB lookup type 1), others require a selection from a set (GSUB lookup type 3). The manufacturer may choose to build two tables (one for each lookup type) or only one which uses lookup type 3 for all substitutions. Application interface: For GIDs found in the jp78 coverage table, the application passes the GIDs to the table and gets back one or more new GIDs. If more than one GID is returned, the application must provide a means for the user to select the one desired. The application may assume that the first glyph in a set is the preferred form, so the font developer should order them accordingly. Note: This is a change of character code. Besides the original character code, the application should store the code for the new character. UI suggestion: This feature should be off by default. Script/language sensitivity: Applies only to Japanese. Feature interaction: This feature overrides the results of all other features, although the Proportional Alternate Widths feature (palt) may be used in addition.
Friendly name: JIS83 Forms Registered by: Adobe Function: This feature replaces default (JIS90) Japanese glyphs with the corresponding forms from the JIS X 0208-1983 (JIS83) specification. Example: Because of the Han unification in Unicode, there are no JIS83 glyphs which have distinct Unicode values, so the substitution cannot be described specifically. Recommended implementation: When JIS90 glyphs correspond to JIS83 forms, the jp83 table maps each of those glyphs to their alternates (GSUB lookup type 1). Application interface: For GIDs found in the jp83 coverage table, the application passes the GIDs to the table and gets back one or more new GIDs. If more than one GID is returned, the application must provide a means for the user to select the one desired. UI suggestion: This feature should be off by default. Script/language sensitivity: Applies only to Japanese. Feature interaction: This feature overrides the results of all other features, although the Proportional Alternate Widths feature (palt) may be used in addition.
Friendly name: IS90 Forms Registered by: Adobe Function: This feature replaces Japanese glyphs from the JIS78 or JIS83 specifications with the corresponding forms from the JIS X 0208-1990 (JIS90) specification. Example: The user would invoke this feature to replace kanji character U+555E with U+5516. Recommended implementation: The jp90 table maps each JIS78 and JIS83 form in a font to JIS90 forms (GSUB lookup type 1). The application stores a record of any simplified forms which resulted from substitutions (the jp78 or jp83 features); for such forms, applying the jp90 feature undoes the previous substitution. When there is no record of a substitution, the application uses the jp90 table to get back to the default form. Application interface: For GIDs found in the jp90 coverage table, the application passes the GIDs to the table and gets back one new GID for each. Note: This is a change of character code. Besides the original character code, the application should store the code for the new character. UI suggestion: This feature should be off by default. Script/language sensitivity: Applies only to Japanese. Feature interaction: This feature overrides the results of all other features, although the Proportional Alternate Widths feature (palt) may be used in addition.
Friendly name: Kerning Registered by: Microsoft/Adobe Function: Adjusts amount of space between glyphs, generally to provide optically consistent spacing between glyphs. Although a well-designed typeface has consistent inter-glyph spacing overall, some glyph combinations require adjustment for improved legibility. Besides standard adjustment in either horizontal or vertical direction, this feature can supply size-dependent kerning data via device tables, "cross-stream" kerning in the Y text direction, and adjustment of glyph placement independent of the advance adjustment. Note that this feature would not be used in monospaced fonts. Example: The o is shifted closer to the T in the combination "To." Recommended implementation: The font stores a set of adjustments for pairs of glyphs (GPOS lookup type 2 or 8). These may be stored as one or more tables matching left and right classes, and/or as individual pairs. If both forms are used, the classes should be listed last, so as to provide a means to replace any non-ideal values which may result from the class tables. Additional adjustments may be provided for larger sets of glyphs (e.g., triplets, quadruplets, etc.) to overwrite the results of pair kerns in particular combinations. These should precede the pairs. Application interface: The application passes a sequence of GIDs to the kern table, and gets back adjusted positions (XPlacement, XAdvance, YPlacement and YAdvance) for those GIDs. UI suggestion: This feature should be active by default. Applications may wish to allow users to add further manually-specified adjustments to suit specific needs and tastes. Script/language sensitivity: None. Feature interaction: May be used in addition to any other feature except fixed-width forms.
Friendly name: Korean Forms Registered by: Adobe Function: Due to the Han Unification in Unicode, a number of codepoints can have multiple forms which vary by locale (language and country). The language feature tags (zhcn, zhtw, jajp, kokr and vivn) enable the option of building fonts which support multiple CJKV locales. This feature replaces default Han glyphs with the forms used in Korean. This feature differs from the smpl and trad features above, which associate different Unicode characters; in this feature, the same character is used and only the form changes. Note: The feature tag is a combination of language (ko = Korean) and country code (KR = Korea). Example: The user applies this feature to a Han character to get the glyph which is unique to Korean. Recommended implementation: For a given Unicode value, the font contains glyphs for several locales, including Korean. The kokr table maps GIDs for the corresponding forms to Korean forms. These are one-to-one substitutions (GSUB lookup type 1). Application interface: Which glyph is used as the default Han form should be determined by the language the user has specified; the application should use the language feature tags (zhcn, zhtw, jajp, kokr and vivn) to determine correct defaults. When the user wants to switch locale, the application passes a GID to the corresponding table and gets back a new GID. UI suggestion: This feature should be inactive by default. Script/language sensitivity: Applies to CJKV scripts. Feature interaction: This feature overrides the results of all other features.
Friendly name: Left Bounds Registered by: Adobe Function: Aligns glyphs by their apparent left extents at the left ends of horizontal lines of text, replacing the default behavior of aligning glyphs by their origins. This feature is called by the Optical Bounds (opbd) feature above. Example: Succeeding lines beginning with T, D and W would shift to the left by varying amounts when the text is left-justified and this feature is applied. Recommended implementation: Values for affected glyphs describe the amount by which the placement and advance width should be altered (GPOS lookup type 1). Application interface: For GIDs found in the lfbd coverage table, the application passes a GID to the table and gets back a new XPlacement and XAdvance value. UI suggestion: This feature is called by an application when the user invokes the opbd feature. Script/language sensitivity: None. Feature interaction: Should not be applied to glyphs which use fixed-width features. Is called by opbd feature.
Friendly name: Standard Ligatures Registered by: Microsoft/Adobe Function: Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. This feature covers the ligatures which the designer/manufacturer judges should be used in normal conditions. Example: The glyph for ffl replaces the sequence of glyphs f f l. Recommended implementation: The liga table maps sequences of glyphs to corresponding ligatures (GSUB lookup type 4). Ligatures with more components must be stored ahead of those with fewer components in order to be found. The set of standard ligatures will vary by design and script. Application interface: For sets of GIDs found in the liga coverage table, the application passes the sequence of GIDs to the table and gets back a single new GID. Note that full sequences must be passed. UI suggestion: This feature serves a critical function in some contexts, and should be active by default. Script/language sensitivity: Applies to virtually all scripts. Feature interaction: This feature overrides the results of all other features.
Friendly name: Lining Figures Registered by: Adobe Function: This feature changes selected figures from oldstyle to the default lining form. Example: The user invokes this feature in order to get lining figures, which fit better with all-capital text. Various characters designed to be used with figures may also be covered by this feature. In cases where lining figures are the default form, this feature would undo previous substitutions. Recommended implementation: The lnum table maps each oldstyle figure, and any associated characters to the corresponding lining form (GSUB lookup type 1). Application interface: For GIDs found in the lnum coverage table, the application passes a GID to the onum table and gets back a new GID. Even if the current figures resulted from an earlier substitution, it may not be correct to simply revert to the original GIDs, because of interaction with the figure width features, so it's best to use this table. UI suggestion: Users can switch between the lining and oldstyle sets by turning this feature on or off. Note that this feature is distinct from the figure width features (pnum and tnum). When the user invokes this feature, the application may wish to inquire whether a change in width is also desired. Script/language sensitivity: None. Feature interaction: This feature overrides the results of the Oldstyle Figures feature (onum).
Friendly name: Mark Positioning Registered by: Microsoft Function: Positions mark glyphs with respect to base glyphs Recommended Implementation: The "mark" feature positions mark glyphs in relation to a base glyph, a ligature glyph, or another mark glyph. This feature may be implemented as a MarkToBase Attachment lookup (GPOS LookupType = 4), MarkToLigature Attachment lookup (GPOS LookupType = 5), or MarkToMark Attachment lookup (GPOS LookupType = 6).
Friendly name: Medial Forms Registered by: Microsoft/Adobe Function: Replaces glyphs in the middles of words (i.e. following a beginning and preceding an end) with alternate forms designed for this use. Note: This is different from the default form, which is designed for stand-alone use. This is common in Latin connecting scripts, and required in various non-Latins like Arabic. Example: In the typeface Caflisch Script, the y and p in the word 'type' are replaced by the y.med and p.med forms. Recommended implementation: The medi table maps default alphabetic forms to corresponding medial forms (GSUB lookup type 1). Application interface: The application is responsible for noting word boundaries. For GIDs in the middles of words and found in the medi coverage table, the application passes a GID to the feature and gets back a new GID. UI suggestion: This feature could be made active or inactive by default, at the user's preference. Script/language sensitivity: Can be used in any alphabetic script. Feature interaction: This feature overrides the results of all other features. See also init and fina.
Friendly name: Mathematical Greek Registered by: Adobe Function: Replaces standard typographic forms of Greek glyphs with corresponding forms commonly used in mathematical notation (which are a subset of the Greek alphabet). Example: The user applies this feature to U+03A3 (Sigma), and gets U+2211 (summation). Recommended implementation: The mgrk table maps Greek glyphs to the corresponding forms used for mathematics (GSUB lookup type 1). Application interface: For GIDs found in the mgrk coverage table, the application passes a GID to the feature table and gets back a new GID. Note: This is a change of semantic value. Besides the original character codes, the application should store the code for the new character. UI suggestion: This feature should be off by default in most applications. Script/language sensitivity: Could apply to any font which includes coverage for the Greek script. Feature interaction: This feature overrides the results of all other features.
Registered by: Microsoft Function: Positions Arabic combining marks in fonts for Windows 95 using glyph substitution Windows 95 implementation: In contrast to the "mark" feature, "mset" uses glyph substitution to combine marks and base glyphs. It replaces a default mark glyph with a correctly positioned mark glyph. The font designer specifies the position of the mark when describing the mark's contour in the font file. Microsoft's Arabic fonts, created for Windows 95, use a contextual substitution lookup (GSUB LookupType = 5) to implement the "mset" feature.
Friendly name: Alternate Annotation Forms Registered by: Adobe Function: Replaces default glyphs with various notational forms (e.g. glyphs placed in open or solid circles, squares, parentheses, diamonds or rounded boxes). In some cases an annotation form may already be present, but the user may want a different one. Example: The user invokes this feature to get U+3200 (the circled form of 'ga') from U+3131 (hangul 'ga'). Recommended implementation: The nalt table maps GIDs for various standard forms to one or more corresponding annotation forms. While many of these substitutions are one-to-one (GSUB lookup type 1), others require a selection from a set (GSUB lookup type 3). The manufacturer may choose to build two tables (one for each lookup type) or only one which uses lookup type 3 for all substitutions. If more than one form is present, the set of forms for each character should be ordered consistently. Application interface: For GIDs found in the nalt coverage table, the application passes a GID and gets back a set of new GIDs, then stores the one selected by the user. UI suggestion: The application must provide a means for the user to select the desired form from the set returned by the table. It can note the position of the selected form in a set of alternates, and offer the glyph at that position as the default selection the next time this feature is invoked. In the absence of such prior information, the application may assume that the first glyph in a set is the preferred form, so the font developer should order them accordingly. Script/language sensitivity: Used mostly in CJKV fonts, but can apply to European scripts Feature interaction: This feature overrides the results of all other features.
Friendly name: Numerators Registered by: Adobe Function: Replaces selected figures which precede a slash with numerator figures, and to replace the typographic slash with the fraction slash. Example: In the string 11/17 selected by the user, the application turns the 11 into numerators, and the slash into a fraction slash when the user applies the fraction feature (frac). Recommended implementation: The numr table maps sets of figures and related characters to corresponding numerator glyphs in the font. It also maps the typographic slash (U+002F) to the fraction slash (U+2044). All mappings are one-to-one (GSUB lookup type 1). Application interface: For GIDs found in the numr coverage table, the application passes a GID to the table and gets back a new GID. UI suggestion: This feature should normally be called by an application when the user applies the frac feature. Script/language sensitivity: None. Feature interaction: This feature overrides the results of all other features, and supports frac.
Friendly name: Oldstyle Figures Registered by: Microsoft/Adobe Function: This feature changes selected figures from the default lining style to oldstyle form. Example: The user invokes this feature to get oldstyle figures, which fit better into the flow of normal upper- and lowercase text. Various characters designed to be used with figures may also have oldstyle versions. Recommended implementation: The onum table maps each lining figure, and any associated characters, to the corresponding oldstyle form (GSUB lookup type 1). Application interface: For GIDs found in the onum coverage table, the application passes a GID to the onum table and gets back a new GID. UI suggestion: Users can switch between the lining and oldstyle sets by turning this feature on or off. Note: Ths feature is separate from the figure-width features pnum and tnum. When the user changes figure style, the application may want to query whether a change in width is also desired. Script/language sensitivity: None. Feature interaction: This feature overrides the results of the Lining Figures feature (lnum).
Friendly name: Optical Bounds Registered by: Adobe Function: Aligns glyphs by their apparent left or right extents in horizontal setting, or apparent top or bottom extents in vertical setting, replacing the default behavior of aligning glyphs by their origins. Another name for this behavior would be visual justification. The optical edge of a given glyph is only indirectly related to its advance width or bounding box; this feature provides a means for getting true visual alignment. Example: Succeeding lines beginning with T, D and W would shift to the left by varying amounts when the text is left-justified and this feature is applied. Succeeding lines ending with r, h and y would likewise shift to the right by differing degrees when the text is right-justified and this feature is applied. Recommended implementation: Values for affected glyphs are defined with a separate record for left, right, top, and bottom. Each record describes the amount by which the placement and advance width should be altered (GPOS lookup type 1). Application interface: For GIDs found in the opbd coverage table, the application calls one of two related tables, depending on the position of the glyph. For glyphs at the left end of a horizontal line, it calls the lfbd table, for glyphs at the right end of a horizontal line, it calls the rtbd table. UI suggestion: This feature effectively increases the line length, so justification algorithms should account for this adjustment. It should be active by default. Script/language sensitivity: None. Feature interaction: Should not be applied to glyphs which use fixed-width features. Uses lfbd and rtbd features.
Friendly name: Ordinals Registered by: Adobe Function: Replaces default alphabetic glyphs with the corresponding ordinal form for use after figures. One exception to the follows-a-figure rule is the numero character (U+2116), which is actually a ligature substitution, but is best accessed through this feature. Example: The user applies this feature to turn 2.o into 2.o (abbreviation for secundo). Recommended implementation: The ordn table maps various lowercase letters to corresponding ordinal forms (GSUB lookup type 1) and the sequence No to the numero character (GSUB lookup type 4). Application interface: For GIDs found in the ordn coverage table, the application passes one or two GIDs to the feature and gets back a new GID. Note: This is a change of semantic value. Besides the original character codes, the application should store the code for the new character. UI suggestion: This feature should be off by default. Script/language sensitivity: Applies mostly to European scripts. Feature interaction: This feature overrides the results of all other features.
Friendly name: Ornaments Registered by: Adobe Function: This is a dual-function feature, which uses two input methods to give the user access to ornament glyphs (e.g. fleurons, dingbats and border elements) in the font. One method replaces the bullet character with a selection from the full set of available ornaments; the other replaces specific alphanumeric characters with ornaments assigned to them. The first approach supports the general or browsing user; the second supports the power user. Example: The user inputs qwwwwwwwwwe to form the top of a flourished box in Adobe Caslon, or inputs the bullet character, then chooses the thistle dingbat. Recommended implementation: The ornm table maps all ornaments in a font to the bullet character (GSUB lookup type 3) and each ornament in a font to a corresponding alphanumeric character (GUSB lookup type 1). The manufacturer may choose to build two tables (one for each lookup type) or only one which uses lookup type 3 for all substitutions. Application interface: When this feature is invoked, the application must note whether the selected text is the bullet character (U+2022) or alphanumeric characters. In the first case, it passes the GID for bullet to the ornm table and gets back a set of GIDs, and gives the user a means to select from among them. In the second case, for GIDs found in the ornm coverage table, it passes GIDs to the ornm table and gets back new GIDs. UI suggestion: When more than one GID is returned (the bullet case), an application could display the forms sequentially in context, or present a palette showing all the forms at once, or give the user a choice between these approaches. Once the user has selected a specific ornament, that one should be the default selection the next time the bullet is typed. In the absence of such prior information, the application may assume that the first ornament in a set is the preferred form, so the font developer should order them accordingly. Script/language sensitivity: None. Feature interaction: This feature overrides the results of all other features.
Friendly name: Proportional Alternate Widths Registered by: Adobe Function: Respaces glyphs designed to be set on full-em widths, fitting them onto individual (more or less proportional) widths. This differs from pwid above in that it does not substitute new glyphs. The user may prefer the monospaced form, or may simply want to ensure that the glyph is well-fit and not rotated in vertical setting (Latin forms designed for proportional spacing would be rotated). Example: The user may invoke this feature in a Japanese font to get Latin, Kanji, Kana or Symbol glyphs with the full-width design but individual metrics. Recommended implementation: The font specifies alternate metrics for the full-width glyphs (GPOS lookup type 1). Application interface: For GIDs found in the palt coverage table, the application passes the GIDs to the table and gets back positional adjustments (XPlacement, XAdvance, YPlacement and YAdvance). UI suggestion: This feature would be off by default. Script/language sensitivity: Used mostly in CJKV fonts. Feature interaction: This feature overrides the results of all other glyph-width features. Applying this feature should also activate the kern feature.
Friendly name: Proportional Figures Registered by: Microsoft/Adobe Function: Replaces figure glyphs set on uniform (tabular) widths with corresponding glyphs set on glyph-specific (proportional) widths. Tabular widths will generally be the default, but this cannot be safely assumed. Of course this feature would not be present in monospaced designs. Example: The user may apply this feature to get even spacing for lining figures used as dates in an all-cap headline. Recommended implementation: In order to simplify associated kerning and get the best glyph design for a given width, this feature should use new glyphs for the figures, rather than only adjusting the fit of the tabular glyphs (although some may be simple copies); i.e. not a GPOS feature. The pnum table maps tabular versions of lining and/or oldstyle figures to corresponding proportional glyphs (GSUB lookup type 1). Application interface: For GIDs found in the pnum coverage table, the application passes GIDs to the pnum table and gets back new GIDs. UI suggestion: This feature should be off by default. The application may want to query the user about this feature when the user changes figure style (onum or lnum). Script/language sensitivity: None. Feature interaction: This feature overrides the results of the Tabular Figures feature (tnum).
Friendly name: Proportional Widths Registered by: Adobe Function: Replaces glyphs set on uniform widths (typically full or half-em) with proportionally spaced glyphs. The proportional variants are often used for the Latin characters in CJKV fonts, but may also be used for Kana in Japanese fonts. Example: The user may invoke this feature in a Japanese font to get a proportionally-spaced glyph instead of a corresponding half-width Roman glyph or a full-width Kana glyph. Recommended implementation: The font contains alternate glyphs designed to be set on proportional widths (GSUB lookup type 1). It may also specify alternate metrics for the full-width glyphs (GPOS lookup type 1). Application interface: For GIDs found in the pwid coverage table, the application passes the GIDs to the table and gets back positional adjustments (XPlacement, XAdvance, YPlacement and YAdvance). UI suggestion: Applications may want to have this feature active or inactive by default depending on their markets. Script/language sensitivity: Although used mostly in CJKV fonts, this feature could be applied in European scripts. Feature interaction: This feature overrides the results of all other glyph-width features. Using this feature should also activate the kern feature.
Friendly name: Quarter Widths Registered by: Adobe Function: Replaces glyphs on other widths with glyphs set on widths of one quarter of an em (half an en). The characters involved are normally figures and some forms of punctuation. Example: The user may apply qwid to place a four-digit figure in a single slot in a column of vertical text. Recommended implementation: The font may contain alternate glyphs designed to be set on quarter-em widths (GSUB lookup type 1), or it may specify alternate metrics for the original glyphs (GPOS lookup type 1) which adjust their spacing to fit in quarter-em widths. Application interface: For GIDs found in the qwid coverage table, the application passes the GIDs to the table and gets back either new GIDs or positional adjustments (XPlacement and XAdvance). UI suggestion: This feature would normally be off by default. Script/language sensitivity: Generally used only in CJKV fonts. Feature interaction: This feature overrides the results of all other glyph-width features, and deactivates the kern feature.
Friendly name: Randomize Registered by: Adobe Function: In order to emulate the irregularity and variety of handwritten text, this feature allows multiple alternate forms to be used. Example: The user applies this feature in FF Kosmic to get three forms of f in one word. Recommended implementation: The rand table maps GIDs for default glyphs to one or more GIDs for corresponding alternates (GSUB lookup type 3). Application interface: For GIDs found in the rand coverage table, the application passes a GID to the rand table and gets back one or more new GIDs. The application selects one of these either by a pseudo-random algorithm, or by noting the sequence of IDs returned, storing that sequence, and stepping through that set as the corresponding character code is invoked. UI suggestion: This feature should be enabled/disabled via a preference setting. Script/language sensitivity: None. Feature interaction: This feature overrides the results of all other features.
Friendly name: Right Bounds Registered by: Adobe Function: Aligns glyphs by their apparent right extents at the right ends of horizontal lines of text, replacing the default behavior of aligning glyphs by their origins. This feature is called by the Optical Bounds (opbd) feature above. Example: Succeeding lines beginning with T, D and W would shift to the right by varying amounts when the text is right-justified and this feature is applied. Recommended implementation: Values for affected glyphs describe the amount by which the placement and advance width should be altered (GPOS lookup type 1). Application interface: For GIDs found in the rtbd coverage table, the application passes a GID to the table and gets back a new XPlacement and XAdvance value. UI suggestion: This feature is called by an application when the user invokes the opbd feature. Script/language sensitivity: None. Feature interaction: Should not be applied to glyphs which use fixed-width features. Is called by opbd feature.
Friendly name: Stylistic Alternates Registered by: Adobe Function: Many fonts contain alternate glyph designs for a purely esthetic effect; these don't always fit into a clear category like swash or historical. As in the case of swash glyphs, there may be more than one alternate form. This feature replaces the default forms with the stylistic alternates. Example: The user applies this feature to Industria to get the alternate form of g. Recommended implementation: The salt table maps GIDs for default forms to one or more GIDs for corresponding stylistic alternatives. While many of these substitutions are one-to-one (GSUB lookup type 1), others require a selection from a set (GSUB lookup type 3). The manufacturer may choose to build two tables (one for each lookup type) or only one which uses lookup type 3 for all substitutions. Application interface: For GIDs found in the salt coverage table, the application passes the GIDs to the salt table and gets back one or more new GIDs. If more than one GID is returned, the application must provide a means for the user to select the one desired. UI suggestion: When more than one GID is returned, an application could display the forms sequentially in context, or present a palette showing all the forms at once, or give the user a choice between these approaches. The application may assume that the first glyph in a set is the preferred form, so the font developer should order them accordingly. Script/language sensitivity: None. Feature interaction: This feature can be used in combination with any other feature.
Friendly name: Scientific Inferiors Registered by: Microsoft/Adobe Function: Replaces lining or oldstyle figures with inferior figures (smaller glyphs which sit lower than the standard baseline, primarily for chemical or mathematical notation). May also replace lowercase characters with alphabetic inferiors. Example: The application can use this feature to automatically access the inferior figures (more legible than scaled figures). Recommended implementation: The sinf table maps figures to the corresponding inferior forms (GSUB lookup type 1). Application interface: For GIDs found in the sinf coverage table, the application passes a GID to the feature and gets back a new GID. UI suggestion: This feature should be off by default. Script/language sensitivity: Can apply to nearly any script. Feature interaction: This feature overrides the results of all other features.
Friendly name: Small Capitals Registered by: Microsoft/Adobe Function: This feature turns lowercase characters into small capitals. This corresponds to the common SC font layout. It is generally used for display lines set in Large & small caps, such as titles. Example: The user enters text as mixed capitals and lowercase, and gets Large & small cap text. Recommended implementation: The smcp table maps lowercase glyphs to the corresponding small-cap forms (GSUB lookup type 1). Application interface: For GIDs found in the smcp coverage table, the application passes GIDs to the smcp table, and gets back new GIDs. Note that applications should treat ß (U+00DF) as a pair of s characters, and that the Turkish dotless i maps to the normal small cap I. UI suggestion: This feature should be off by default. Script/language sensitivity: Applies only to European scripts (Cyrillic, Greek & Latin), which have capital forms. Feature interaction: This feature overrides the results of all other features. See also c2sc.
Friendly name: Simplified Forms Registered by: Adobe Function: Replaces 'traditional' Chinese forms or 'traditional' Japanese forms. Example: The user gets U+53F0 when U+6AAF, U+81FA, or U+98B1 is entered. Recommended implementation: The smpl table maps each traditional form in a font to a corresponding simplified form (GSUB lookup type 1). Note that more than one traditional form may map to a single simplified form. Application interface: For GIDs found in the smpl coverage table, the application passes the GIDs to the table and gets back one new GID for each. Note: This is a change of character code. Besides the original character code, the application should store the code for the new character. UI suggestion: This feature would be off by default, but could be made the default by a preference setting. Script/language sensitivity: Applies only to Chinese and Japanese. Feature interaction: This feature overrides the results of all other features, although the Proportional Alternate Widths feature (palt) may be used in addition; trad and tnam are mutally exclusive, and override the results of smpl.
Friendly name: Subscript Registered by: Microsoft/Adobe Function: The "subs" feature may replace a default glyph with a subscript glyph, or it may combine a glyph substitution with positioning adjustments for proper placement. Recommended implementation: First, a single or contextual substitution lookup implements the subscript glyph (GSUB lookup type 1). Then, if the glyph needs repositioning, an application may apply a single adjustment, pair adjustment, or contextual adjustment positioning lookup to modify its position. Application interface: For GIDs found in the subs coverage table, the application passes a GID to the feature and gets back a new GID. Note: This is a change of semantic value. Besides the original character codes, the application should store the code for the new character. UI suggestion: This feature should be off by default. Script/language sensitivity: Can apply to nearly any script. Feature interaction: This feature overrides the results of all other features.
Friendly name: Superscript Registered by: Microsoft/Adobe Function: Replaces lining or oldstyle figures with superior figures (primarily for footnote indication), and replaces lowercase letters with superior letters (primarily for abbreviated French titles). Example: The application can use this feature to automatically access the superior figures (more legible than scaled figures) for footnotes, or the user can apply it to Mssr to get the classic form. Recommended implementation: The sups table maps figures and lowercase letters to the corresponding superior forms (GSUB lookup type 1). Application interface: For GIDs found in the sups coverage table, the application passes a GID to the feature and gets back a new GID. Note: This can include a change of semantic value. Besides the original character codes, the application should store the code for the new character. UI suggestion: This feature should be off by default. Script/language sensitivity: Can apply to nearly any script. Feature interaction: This feature overrides the results of all other features.
Friendly name: Swash Registered by: Microsoft/Adobe Function: This feature replaces default character glyphs with corresponding swash glyphs. Note that there may be more than one swash alternate for a given character. Example: The user inputs the ampersand character when setting text with Poetica with this feature active, and is presented with a choice of the 63 ampersand forms in that face. Recommended implementation: The swsh table maps GIDs for default forms to those for one or more corresponding swash forms. While many of these substitutions are one-to-one (GSUB lookup type 1), others require a selection from a set (GSUB lookup type 3). The manufacturer may choose to build two tables (one for each lookup type) or only one which uses lookup type 3 for all substitutions. If several styles of swash are present across the font, the set of forms for each character should be ordered consistently. Application interface: For GIDs found in the swsh coverage table, the application passes the GIDs to the swsh table and gets back one or more new GIDs. If more than one GID is returned, the application must provide a means for the user to select the one desired. UI suggestion: When more than one GID is returned, an application could display the forms sequentially in context, or present a palette showing all the forms at once, or give the user a choice between these approaches. The application may assume that the first glyph in a set is the preferred form, so the font developer should order them accordingly. Script/language sensitivity: Does not apply to ideographic scripts. Feature interaction: This feature overrides the results of all other features.
Friendly name: Titling Registered by: Adobe Function: This feature replaces the default glyphs with corresponding forms designed specifically for titling. These may be all-capital and/or larger on the body, and adjusted for viewing at larger sizes. Example: The user applies this feature in Adobe Garamond to get the titling caps. Recommended implementation: The titl table maps default forms to corresponding titling forms (GSUB lookup type 1). Application interface: For GIDs found in the titl coverage table, the application passes the GIDs to the titl table and gets back new GIDs. UI suggestion: This feature should be off by default. Script/language sensitivity: None. Feature interaction: This feature overrides the results of all other features.
Friendly name: Traditional Name Forms Registered by: Adobe Function: Replaces 'simplified' Japanese kanji forms with the corresponding 'traditional' forms. This is equivalent to the Traditional Forms feature, but explicitly limited to the traditional forms considered proper for use in personal names (as many as 205 glyphs in some fonts). Example: The user inputs U+4E9C and gets U+4E9E. Recommended implementation: The tnam table maps simplified forms in a font to corresponding traditional forms which can be used in personal names (GSUB lookup type 1). The application stores a record of any simplified forms which resulted from substitutions (the smpl feature); for such forms, applying the tnam feature undoes the previous substitution. Application interface: For GIDs found in the tnam coverage table, the application passes the GIDs to the table and gets back new GIDs. Note: This is a change of character code. Besides the original character code, the application should store the code for the new character. UI suggestion: This feature should be off by default. Script/language sensitivity: Applies only to Japanese. Feature interaction: May include some characters affected by the Proportional Alternate Widths feature (palt); trad and tnam are mutually exclusive, and override the results of smpl.
Friendly name: Tabular Figures Registered by: Adobe Function: Replaces figure glyphs set on proportional widths with corresponding glyphs set on uniform (tabular) widths. Tabular widths will generally be the default, but this cannot be safely assumed. Of course this feature would not be present in monospaced designs. Example: The user may apply this feature to get oldstyle figures to align vertically in a column. Recommended implementation: In order to simplify associated kerning and get the best glyph design for a given width, this feature should use new glyphs for the figures, rather than only adjusting the fit of the proportional glyphs (although some may be simple copies); i.e. not a GPOS feature. The tnum table maps proportional versions of lining &/or oldstyle figures to corresponding tabular glyphs (GSUB lookup type 1). Application interface: For GIDs found in the tnum coverage table, the application passes GIDs to the tnum table and gets back new GIDs. UI suggestion: This feature should be off by default. The application may want to query the user about this feature when the user changes figure style (onum or lnum). Script/language sensitivity: None. Feature interaction: This feature overrides the results of the Proportional Figures feature (pnum).
Friendly name: Traditional Forms Registered by: Adobe Function: Replaces 'simplified' Chinese hanja or Japanese kanji forms with the corresponding 'traditional' forms. Example: The user inputs U+53F0 and is offered a choice of U+6AAF, U+81FA, or U+98B1. Recommended implementation: The trad table maps each simplified form in a font to one or more traditional forms. While many of these substitutions are one-to-one (GSUB lookup type 1), others require a selection from a set (GSUB lookup type 3). The manufacturer may choose to build two tables (one for each lookup type) or only one which uses lookup type 3 for all substitutions. Application interface: For GIDs found in the trad coverage table, the application passes the GIDs to the table and gets back one or more new GIDs. If more than one GID is returned, the application must provide a means for the user to select the one desired. The application stores a record of any simplified forms which resulted from substitutions (the smpl feature); for such forms, applying the trad feature undoes the previous substitution. Note: This is a change of character code. Besides the original character code, the application should store the code for the new character. UI suggestion: If there's no record of a conversion from traditional to simplified, the user would have to be offered a set of possibilities from which to select. The application may note the user's choice, and offer it as a default the next time the source simplified character is encountered. In the absence of such prior information, the application may assume that the first glyph in a set is the preferred form, so the font developer should order them accordingly. Script/language sensitivity: Applies only to Chinese and Japanese. Feature interaction: May include some characters affected by the Proportional Alternate Widths feature (palt); trad and tnam are mutually exclusive, and override the results of smpl.
Friendly name: Third Widths Registered by: Adobe Function: Replaces glyphs on other widths with glyphs set on widths of one third of an em. The characters involved are normally figures and some forms of punctuation. Example: The user may apply twid to place a three-digit figure in a single slot in a column of vertical text. Recommended implementation: The font may contain alternate glyphs designed to be set on third-em widths (GSUB lookup type 1), or it may specify alternate metrics for the original glyphs (GPOS lookup type 1) which adjust their spacing to fit in third-em widths. Application interface: For GIDs found in the twid coverage table, the application passes the GIDs to the table and gets back either new GIDs or positional adjustments (XPlacement and XAdvance). UI suggestion: This feature would normally be off by default. Script/language sensitivity: Generally used only in CJKV fonts. Feature interaction: This feature overrides the results of all other glyph-width features, and deactivates the kern feature.
Friendly name: Vertical Alternates Registered by: Microsoft/Adobe Function: Replaces default forms with variants adjusted for vertical writing when in vertical writing mode. While most CJKV glyphs remain vertical when set in vertical writing mode, some take a different form (usually rotated and repositioned) for this purpose. Glyphs covered by this feature correspond to the set normally rotated in low-end DTP applications. Example: In vertical writing mode, the opening parenthesis (U+FF08) is replaced by the rotated form (U+FE35). Recommended implementation: The font includes rotated versions of the glyphs covered by this feature. The vert table maps the standard forms to the corresponding rotated forms (GSUB lookup type 1). Application interface: For GIDs found in the vert coverage table, the application passes GIDs to the feature, and gets back new GIDs. UI suggestion: This feature should be active by default when vertical writing mode is on. Script/language sensitivity: Applies only to scripts with vertical writing capability. Feature interaction: Subset of the vrt2 feature.
Friendly name: Vietnamese Forms Registered by: Adobe Function: Due to the Han Unification in Unicode, a number of codepoints can have multiple forms which vary by locale (language and country). The language feature tags (zhcn, zhtw, jajp, kokr and vivn) enable the option of building fonts which support multiple CJKV locales. This feature replaces default Han glyphs with the forms used in Vietnamese. This feature differs from the smpl and trad features above, which associate different Unicode characters; in this feature, the same character is used and only the form changes. Note: The feature tag is a combination of language (vi = Vietnamese) and country code (VN = Vietnam). Example: The user applies this feature to a Han character to get the glyph which is unique to Vietnamese. Recommended implementation: For a given Unicode value, the font contains glyphs for several locales, including Vietnamese. The vivn table maps GIDs for the corresponding forms to Vietnamese forms. These are one-to-one substitutions (GSUB lookup type 1). Application interface: Which glyph is used as the default Han form should be determined by the language the user has specified; the application should use the language feature tags (zhcn, zhtw, jajp, kokr and vivn) to determine correct defaults. When the user wants to switch locale, the application passes a GID to the corresponding table and gets back a new GID. UI suggestion: This feature should be inactive by default. Script/language sensitivity: Applies to CJKV scripts. Feature interaction: This feature overrides the results of all other features.
Friendly name: Vertical Rotation Registered by: Adobe Function: Replaces some fixed-width (half-, third- or quarter-width) or proportional-width glyphs (mostly Latin or katakana) with forms suitable for vertical writing (that is, rotated 90 degrees clockwise). Note that these are a superset of the glyphs covered in the vert table. Example: Proportional- or half-width Latin and half-width katakana characters are rotated 90 degrees clockwise for vertical writing. Recommended implementation: The font includes rotated versions of the glyphs covered by this feature. The vrt2 table maps the standard (horizontal) forms to the corresponding vertical (rotated) forms (GSUB lookup type 1). Application interface: For GIDs found in the vrt2 coverage table, the application passes GIDs to the feature, and gets back new GIDs. UI suggestion: This feature should be active by default when vertical writing mode is on, although the user must be able to override it. Script/language sensitivity: Applies only to scripts with vertical writing capability. Feature interaction: Overrides the vert (Vertical Writing) feature.
Friendly name: Slashed Zero Registered by: Adobe Function: Some fonts contain both a default form of zero, and an alternative form which uses a diagonal slash through the counter. Especially in condensed designs, it can be difficult to distinguish between 0 and O (zero and capital O) in any situation where capitals and lining figures may be arbitrarily mixed. This feature allows the user to change from the default 0 to a slashed form. Example: When setting labels, the user applies this feature to get the slashed 0. Recommended implementation: The zero table maps the GIDs for the lining forms of zero to corresponding slashed forms (GSUB lookup type 1). Application interface: For GIDs in the zero coverage table, the application passes a GID to the zero table and gets back a new GID. UI suggestion: Optimally, the application would store this as a preference setting, and the user could use the feature to toggle back and forth between the two forms. Script/language sensitivity: Does not apply to scripts which use forms other than 0 for zero. Feature interaction: applies only to lining figures, so is inactivated by oldstyle figure features.
Friendly name: Simplified Chinese Forms Registered by: Adobe Function: Due to the Han Unification in Unicode, a number of codepoints can have multiple forms which vary by locale (language and country). The language feature tags (zhcn, zhtw, jajp, kokr and vivn) enable the option of building fonts which support multiple CJKV locales. This feature replaces default Han glyphs with the forms used in "simplified" Chinese. This feature differs from the smpl and trad features above, which associate different Unicode characters; in this feature, the same character is used and only the form changes. Note: The feature tag is a combination of language (zh = Chinese) and country code (CN = Republic of China). Example: The user applies this feature to U+9AA8 to get the form which is unique to Simplified Chinese. Recommended implementation: For a given Unicode value, the font contains glyphs for several locales, including Simplified Chinese. The zhcn table maps GIDs for the corresponding forms to simplified Chinese forms. These are one-to-one substitutions (GSUB lookup type 1). Application interface: Which glyph is used as the default Han form should be determined by the language the user has specified; the application should use the language feature tags (zhcn, zhtw, jajp, kokr and vivn) to determine correct defaults. When the user wants to switch locale, the application passes a GID to the corresponding table and gets back a new GID. UI suggestion: This feature should be inactive by default. Script/language sensitivity: Applies to CJKV scripts. Feature interaction: This feature overrides the results of all other features.
Friendly name: Traditional Chinese Forms Registered by: Adobe Function: Due to the Han Unification in Unicode, a number of codepoints can have multiple forms which vary by locale (language and country). The language feature tags (zhcn, zhtw, jajp, kokr and vivn) enable the option of building fonts which support multiple CJKV locales. This feature replaces default Han glyphs with the forms used in "traditional" Chinese. This feature differs from the smpl and trad features above, which associate different Unicode characters; in this feature, the same character is used and only the form changes. Note: The feature tag is a combination of language (zh = Chinese) and country code (TW = Taiwan). Example: The user applies this feature to U+9AA8 to get the form which is unique to Traditional Chinese. Recommended implementation: For a given Unicode value, the font contains glyphs for several locales, including Traditional Chinese. The zhtw table maps GIDs for the corresponding forms to traditional Chinese forms. These are one-to-one substitutions (GSUB lookup type 1). Application interface: Which glyph is used as the default Han form should be determined by the language the user has specified; the application should use the language feature tags (zhcn, zhtw, jajp, kokr and vivn) to determine correct defaults. When the user wants to switch locale, the application passes a GID to the corresponding table and gets back a new GID. UI suggestion: This feature should be inactive by default. Script/language sensitivity: Applies to CJKV scripts. Feature interaction: This feature overrides the results of all other features.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Microsoft Typography | Developer information | Specifications | Feature Tags | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |