OTF Features

Ця сторінка на стадії розробки, інформація по мірі оброблення буде поновлюватися і перекладатися.

Синтаксис

Спеціальні символи

# pound sign Позначення початку коментаря
; semicolon Завершує команду
, comma Розділяє різноманітні списки
@ at sign Позначає ім’я класу
\ backslash Identifies CIDs. Distinguishes glyph names from an identical keyword
hyphen Denotes glyph ranges in a glyph class
= equalsign Оператор присвоєння класу символу
single quote Позначає гліфи або клас гліфів для контекстної заміни або позиціонування
 ” “ double quotes Enclose a name table string
{ } braces Містить в собі функцію, пошук, таблицю або анонімний блок
[ ] square brackets Поміщає в собі компоненти класу гліфів
< > angle brackets Enclose a device, value record, contour point, anchor, or caret
( ) parentheses Поміщає в собі ім’я файлу, що має бути включено

Перелік OTF Features

В цьому скороченому переліку подані теги, що можуть бути корисні в розробці шрифтів з підтримкою європейських алфавітів. Тут відсутні теги що призначені для інших систем письма та мов, зокрема ієрогліфічного. Повний перелік доступний англійською мовою на сайті Microsoft OTF Features.

aalt • Access All Alternates • Доступ до всіх альтернатив

aalt

Функція: This feature makes 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. Since many-to-one substitutions are not covered, ligatures would not appear in this table unless they were variant forms of another ligature.

Приклад: Користувач вводить P в Poetica, що доступна в чотирьох формах: стандартна капітель, капітель з розчерком, ініціал та мала капітель.

Рекомендована реалізація: 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. As in any one-from-many substitution, alternates present in more than one face should be ordered consistently across a family, so that those alternates can work correctly when switching between family members. This feature should be ordered first in the font, to take precedence over other features.

Інтерфейс програми: Програма визначає GID для форми за замовчуванням даного характеру (значення Unicode і не мають ознак, застосовуваних). Потім він перевіряє, чи є GID знайти в таблиці покриття aalt. Якщо це так, додаток передає це значення в таблицю функцій і отримує назад GIDs в відповідної групи. 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.

Чутливість до письма/мов: Ні.

Взаємодія характеристик: Ця функція може бути використана в поєднанні з іншими.


feature aalt { feature locl; feature frac; feature c2sc; feature smcp; feature fina; feature swsh; feature onum; feature case; feature lnum; feature pnum; feature tnum; feature sups; feature sinf; feature numr; feature dnom; feature xx01; feature salt; feature hist; feature ornm; feature zero; } aalt;

afrc • Alternative Fractions • Альтернативні дроби

afrc

ФункціяReplaces figures separated by a slash with an alternative form.

ПрикладThe user enters 3/4 in a recipe and get the threequarters nut fraction.

Рекомендована реалізація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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature overrides the results of all other features.

calt • Contextual Alternates • Контекстулярні альтернативи

calt

ФункціяУ певних ситуаціях замінює символи за умовчанням на альтернативні форми, які забезпечують їх краще стикування. Використовується в рукописних гарнітурах, що можуть мати приєднані літери між собою.

ПрикладIn Caflisch Script, o is replaced by o.alt2 when followed by an ascending letterform.

Рекомендована реалізація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: Ця функція повинна бути активна за замовчуванням.

Чутливість до письма/мов: Не застосовується для ідеографічного письма.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override.

case • Case-Sensitive Forms

case

Функція: Зміщення різних розділових знаків до позицій, що краще працюють з послідовностями all-capital або наборів lining фігур; також змінюється цифри старого стилю lining фігур. За замовчуванням, символи в текстовому наборі призначені для роботи з малими літерами. Деякі символи повинні бути зміщені по вертикалі, щоб відповідати більш високому візуальному центру заголовних літер або lining тексту. Крім того, заміна цифрир на тієї ж висоти (або близької до неї), що і заголоні літери, щоб краще поєднуватися з текстом набраним заголовними літерами.

Приклад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.

Рекомендована реалізація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.

Чутливість до письма/мов: Відноситься тільки до європейського письма; особливо вирізняється в іспанській мові.

Feature interaction: This feature overrides the results of other features affecting the figures (e.g. onum and tnum).

clig • Contextual Ligatures • Контекстулярні лігатури

clig

ФункціяReplaces a sequence of glyphs with a single glyph which is preferred for typographic purposes. Unlike other ligature features, clig specifies the context in which the ligature is recommended. This capability is important in some script designs and for swash ligatures.

ПрикладThe glyph for ft replaces the sequence f t in Bickham Script, except when preceded by an ascending letter.

Рекомендована реалізаціяThe clig table maps sequences of glyphs to corresponding ligatures in a chained context (GSUB lookup type 8). Ligatures with more components must be stored ahead of those with fewer components in order to be found. The set of contextual ligatures will vary by design and script.

Application interface: For sets of GIDs found in the clig 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. Note: 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 active by default.

Чутливість до письма/мов: Практично відноситься до всіх систем письма.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. See also dlig.

cpsp • Capital Spacing • Простір між капітелями

cpsp

Функція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.

ПрикладThe user sets a title in all caps, and the Capital Spacing feature opens the spacing.

Рекомендована реалізація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.

Чутливість до письма/мов: Не слід використовувати в злитих письмах (наприклад, більшість Арабських).

Feature interaction: May be used in addition to any other feature (note specifically that this feature is additive with other GPOS features like kern).

cswh • Contextual Swash • Контекстулярні розчерки

Tag: ‘cswh’

ФункціяThis feature replaces default character glyphs with corresponding swash glyphs in a specified context. Note that there may be more than one swash alternate for a given character.

ПрикладThe user sets the word “HOLIDAY” in Poetica with this feature active, and is presented with a choice of three alternate forms appropriate for an initial H and one alternate appropriate for a medial L.

Рекомендована реалізаціяThe cswh table maps GIDs for default forms to those for one or more corresponding swash forms in a chained context, which may require a selection from a set (GSUB lookup type 8). 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 cswh 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: This feature should be inactive by default. 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.

Чутливість до письма/мов: Не застосовується для ідеографічного письма.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. See also swsh and init.

cv01 - cv99 • Character Variant 1 – Character Variant 99 • Варіант символа 1

cv01 – cv99

ФункціяA font may have stylistic-variant glyphs for one or more characters where the variations for one character are not systematically related to those for other characters. Or, a variation may exist for a character and its casing pair (or related pre-composed characters), but not be applicable to other unrelated characters. In some usage scenarios, it may be necessary to provide the application with control over glyph variations for different Unicode characters individually.

The function of these features is similar to the function of the Stylistic Alternates feature (‘salt’) and the Stylistic Set features (see ‘ss01’ – ‘ss20’). Whereas the Stylistic Set features assume recurring stylistic variations that apply to a broad set of Unicode characters, these features are intended for scenarios in which particular characters have variations not applicable to a broad set of characters. The Stylistic Alternates feature provides access to glyph variants, but does not allow an application to control these on a character-by-character basis; the Character Variant features provide the greater granularity of control.

The function of these features is also related to that of the Localized Forms (‘locl’) feature, in that particular variations for a character may be preferred for particular languages. In practice, though, it may not be feasible to associate particular glyph variants with particular language systems for all the relevant languages; for example, the requirements of particular languages may not be known when a font is being developed.

The distinction between these features and the Stylistic set features is most easily understood in terms of variations applying to a single character versus variations applying across a range of characters. In practice, if a variation applies to a character in a bicameral script, then the casing-pair character may have the same variation. Also, Unicode includes pre-composed characters for certain base + mark combinations, hence a single abstract character may be incorporated into a number of Unicode characters. Therefore, a variation for a particular abstract character may be applicable to several related Unicode characters. The Character Variant features can be used for sets of related characters in these cases. The key distinction between such use and the intended use for Stylistic Set features is that a Character Variant feature should apply only to one character or a set of characters closely related in this way, while Stylistic Set features are intended for broader sets of characters.

Рекомендована реалізація: A cvXX table maps the GID for the default form of a character to the GIDs for stylistic alternatives of that character. Each cvXX feature uses alternate (GSUB lookup type 3) substitutions. (If there is only one variant for a character, a single-substitution lookup, type 1, can also be used.). Within each cvXX feature, the number of variants should be identical for all glyphs.

The FeatureParams field of the Feature Table of these GSUB features may be set to 0, or to an offset to a Feature Parameters table. The Feature Parameters table for this feature is structured as follows:

Type Name Description
USHORT format Format number is set to 0.
USHORT featUiLabelNameId The ‘name’ table name ID that specifies a string (or strings, for multiple languages) for a user-interface label for this feature. (May be NULL.)
USHORT featUiTooltipTextNameId The ‘name’ table name ID that specifies a string (or strings, for multiple languages) that an application can use for tooltip text for this feature. (May be NULL.)
USHORT sampleTextNameId The ‘name’ table name ID that specifies sample text that illustrates the effect of this feature. (May be NULL.)
USHORT numNamedParameters Number of named parameters. (May be zero.)
USHORT firstParamUiLabelNameId The first ‘name’ table name ID used to specify strings for user-interface labels for the feature parameters. (Must be zero if numParameters is zero.)
USHORT charCount The count of characters for which this feature provides glyph variants. (May be zero.)
UINT24 character[charCount] The Unicode Scalar Value of the characters for which this feature provides glyph variants.

The name ID provided by featUiLabelNameId is intended to provide a user-interface string for the feature; for example, “Capital-eng variants”. If set to NULL, no ‘name’ table string is used for the feature name.

The name ID provided by featUiTooltipTextNameId is intended to provide a user-interface string that provides a brief description of the feature that applications can use in popup “tooltip” help windows (e.g. “Select glyph variants for capital eng.”). If set to NULL, no ‘name’ table string is used for the feature “tooltip” help text.

The name ID provided by sampleTextNameId is intended to provide a string that can be used in a user-interface to illustrate the effect of the feature. If multiple characters are affected by the feature or if the feature affects a combining mark, it may not be evident to an application what string to use to present an illustrative sample; a ‘name’ table string can be provided for that purpose.

If numNamedParameters is non-zero, then firstParamUiLabelNameId and numNamedParameters specify a sequence of consecutive name IDs in the name table. These are used to provide user-interface strings for individual variants. The range of name IDs start at firstParamUiLabelNameId and end at firstParamUiLabelNameId + numNamedParameters – 1. Each of these name IDs corresponds to a feature parameter value used to select a particular GID from the array of GIDs returned by a type 3 substitution lookup; the relation between parameter values and name IDs is: name ID = parameter + firstParamUiLabelNameId – 1. The value of numNamedParameters should not exceed the number of alternate glyphs in lookups associated with the feature; note, however, that the number of GIDs in the returned array for a GSUB type 3 lookup should not be assumed to be equal to numNamedParameters: numNamedParameters should not be more than the number of GIDs in the array, but it may be less. If numNamedParameters is zero, then no ‘name’ table strings are associated with feature parameters.

The values of featUiLabelNameId, featUiTooltipTextNameId and firstParamUiLabelNameId are expected to be in the font-specific name ID range (256–32767), though that is not a requirement in this Feature Parameters specification. The value of firstParamUiLabelNameId + numNamedParameters – 1 should not exceed 32767.

The user-interface label for the feature, for “tooltip” help text, or for feature parameters can be provided in multiple languages. English strings for each should be included as a fallback. A sample-text string likely would not need to be localized, though different sample-text strings for different UI languages can be used. If only one sample-text string is provided, applications may use it with any UI language.

The charCount field and character array are used to identify the Unicode characters for which this feature provides glyph variants. Applications can use this information in presenting user interface or for other purposes. Content of the character list is at the discretion of the font developer — the list may be exhaustive, representative, or empty — and does not affect the operation of the feature. If a font developer chooses not to include such information, charCount can be set to zero, in which case no character array can be included.

It is left to the discretion of application developers to determine whether or how to use the data provided in the feature parameters table or associated strings in the ‘name’ table.

Note: Since the strings provided using this feature parameter table will be used in application user interface, length is an important consideration. Strings should be as short as possible. It is recommended that the length of the feature or feature-parameter names be 25 characters or less, and that the length of “tooltip” help text be 250 characters or less.

Application interface: The application is responsible for counting and enumerating the number of features in the font with tag names of the format ‘cv01’ to ‘cv99’, and for presenting the user with an appropriate selection mechanism. The application is also responsible for interpreting any feature parameter tables (if the application developer wishes to use that data) and presenting referenced strings in user interface. For GIDs found in the cvXX coverage table, the application passes the GIDs to the cvXX table and gets back one or more new GIDs; the application selects one of the returned GIDs for display. The application may use an index parameter as an index into the array of returned GIDs.

UI suggestion: This feature should be off by default. An application can display glyph variants for a given character as a glyph palette in the user interface. If a Feature Parameters table is provided, the feature UI label or the feature and parameter UI labels (if provided) can be presented in the application user interface; or the sample-text string (if provided) can be presented in the application user interface.

Чутливість до письма/мов: Ні.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. Note that after a cvXX feature has been applied, the user may wish to apply other typographic features, e.g. ‘smcp’; font developers are responsible for ordering substitution lookups to obtain desired user experience. If it is to be used in conjunction with a complex script that requires obligatory substitution of ligatures or contextual forms, this feature should be applied before features for obligatory script behaviors.

c2pc • Petite Capitals From Capitals •

c2pc

Функція: This feature turns capital characters into petite capitals. It is generally used for words which would otherwise be set in all caps, such as acronyms, but which are desired in petite-cap form to avoid disrupting the flow of text. See the pcap feature description for notes on the relationship of caps, smallcaps and petite caps.

Приклад: The user types UNICEF or NASA, applies c2pc and gets petite cap text.

Рекомендована реалізація: The c2pc table maps capital glyphs to the corresponding petite cap forms (GSUB lookup type 1).

Application interface: For GIDs found in the c2pc coverage table, the application passes GIDs to the c2pc table, and gets back new GIDs.

UI suggestion: This feature should be off by default.

Чутливість до письма/мов: Застосовується тільки до письма з заголовними і рядковими формами (наприклад латиниця, кирилиця, грецька).

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. Also see pcap.

c2sc • Small Capitals From Capitals •

c2sc

Функція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.

ПрикладThe user types UNICEF or SCUBA, applies c2sc 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.

Чутливість до письма/мов: Відноситься тільки до двокамерних видів письма (тобто ті, з тематичних відмінностей case differences), таких як латина, грецька, кирилиця, і вірменська.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. Also see smcp.

dlig • Discretionary Ligatures • Дискретні лігатури

dlig

Функція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, at the user’s preference.

ПрикладThe glyph for ct replaces the sequence of glyphs c t, or U+322E (Kanji ligature for “Friday”) replaces the sequence U+91D1 U+66DC U+65E5.

Рекомендована реалізація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.

Чутливість до письма/мов: Практично відноситься до всіх систем письма.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. See also clig.

dnom • Denominators • Знаменники

dnom

ФункціяReplaces selected figures which follow a slash with denominator figures.

ПрикладIn the string 11/17 selected by the user, the application turns the 17 into denominators when the user applies the fraction feature (frac).

Рекомендована реалізація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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature supports frac. It may be used in combination with other substitution (GSUB) features, whose results it may override.

falt • Final Glyph on Line Alternates •

falt

ФункціяReplaces line final glyphs with alternate forms specifically designed for this purpose (they would have less or more advance width as need may be), to help justification of text.

Example: In the Arabic script, providing alternate forms for line final glyphs would result in better justification. eg. replacing a long tailed Yeh-with-tail with one that has a slightly longer/shorter tail.

Рекомендована реалізаціяThe falt table maps line final glyphs (in isolated or final forms) to their corresponding alternate forms (GSUB lookup type 3).

Application interface: For GIDs found in the falt coverage table, the application passes a GID to the table and gets back a new GID.

UI suggestion: This feature could be made active or inactive by default, at the user’s preference.

Чутливість до письма/мов: Може бути використано в будь якому курсивному письмі.

Feature interaction: Would need to be applied last, only after all other features have been applied to the run.

fina • Terminal Forms •

fina

Функція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.

ПрикладIn the typeface Poetica, the default e in the word ‘type’ is replaced with the e.end form.

Рекомендована реалізація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 should be active by default.

Чутливість до письма/мов: Може бути використано в будь якому алфавітному письмі.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. See also init and medi.

frac • Fractions • Дроби

frac

ФункціяReplaces figures separated by a slash with ‘common’ (diagonal) fractions.

Example: The user enters 3/4 in a recipe and gets the threequarters fraction.

Рекомендована реалізація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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature may require the application to call the numr and dnom features. It may be used in combination with other substitution (GSUB) features, whose results it may override.


feature frac { # Fractions
sub slash by fraction;
sub @figures_standard by @figures_numerator;
sub fraction @figures_numerator’ by @figures_denominator;
sub @figures_denominator @figures_numerator’ by @figures_denominator;
} frac;

feature frac { # Fractions script latn; # Latin lookup frac21 { sub [onesuperior one.alt oneinferior]’ [slash fraction] @frac3 by [one one one]; sub [threesuperior three.alt threeinferior]’ [slash fraction] @frac1 by [three three three]; sub @frac2′ [slash fraction] @frac2 by [zero zero zero]; } frac21; lookup frac22 { sub [one three] [slash fraction] @frac1′ by [four four four]; sub one [slash fraction] [twosuperior two.alt twoinferior]’ by [two two two]; sub zero [slash fraction] @frac2′ by [zero zero zero]; } frac22; lookup frac23 { sub zero slash zero zero by perthousand; sub zero slash zero zero.alt by perthousand; sub zero slash zero zerosuperior by perthousand; sub zero slash zero zeroinferior by perthousand; sub zero fraction zero zero by perthousand; sub zero fraction zero zero.alt by perthousand; sub zero fraction zero zerosuperior by perthousand; sub zero fraction zero zeroinferior by perthousand; sub zero slash zero by percent; sub zero fraction zero by percent; sub one slash two by onehalf; sub one slash three by onethird; sub one slash four by onequarter; sub one slash eight by oneeighth; sub two slash three by twothirds; sub three slash four by threequarters; sub three slash eight by threeeighths; sub five slash eight by fiveeighths; sub seven slash eight by seveneighths; sub one fraction two by onehalf; sub one fraction three by onethird; sub one fraction four by onequarter; sub one fraction eight by oneeighth; sub two fraction three by twothirds; sub three fraction four by threequarters; sub three fraction eight by threeeighths; sub five fraction eight by fiveeighths; sub seven fraction eight by seveneighths; } frac23; } frac;

Full Widths

fwid

ФункціяReplaces glyphs set on other widths with glyphs set on full (usually em) widths. In a CJKV font, this may include “lower ASCII” Latin characters and various symbols. In a European font, this feature replaces proportionally-spaced glyphs with monospaced glyphs, which are generally set on widths of 0.6 em.

ПрикладThe user may invoke this feature in a Japanese font to get full monospaced Latin glyphs instead of the corresponding proportionally-spaced versions.

Рекомендована реалізація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.

Чутливість до письма/мов: Застосовується до будь-яких систем письма, які можуть використовувати моноширинні форми.

Feature interaction: This feature is mutually exclusive with all other glyph-width features (e.g. tnumhalthwidpaltpwidqwid and twid), which should be turned off when it’s applied. It deactivates the kern feature.

hist • Historical Forms • Історичні форми

hist

Функція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.

ПрикладThe user applies this feature in Adobe Jenson to get the archaic forms of M, Q and Z.

Рекомендована реалізація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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override.

hlig • Historical Ligatures • Історичні лігатури

hlig

Функція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.

Приклад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.

Рекомендована реалізація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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature overrides the results of all other features.

init • Initial Forms • Ініціальні форми

init

Функція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.

ПрикладIn the typeface Ex Ponto, the default t in the word ‘type’ is replaced with the t.begin form.

Рекомендована реалізація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 should be active by default.

Чутливість до письма/мов: Може бути використано в будь якому алфавітному письмі.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. See also medi and fina.

kern • Kerning • Кернінг

kern

Функція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 the horizontal 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 may apply to runs of more than two glyphs, and would not be used in monospaced fonts. Also note that this feature does not apply to text set vertically.

ПрикладThe o is shifted closer to the T in the combination “To.”

Рекомендована реалізація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, &/or as individual pairs. 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.

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. When using the type 2 lookup on a run of glyphs, it’s critical to remember to not consume the last glyph, but to keep it available as the first glyph in a subsequent run (this is a departure from normal lookup behavior).

UI suggestion: This feature should be active by default for horizontal text setting. Applications may wish to allow users to add further manually-specified adjustments to suit specific needs and tastes.

Чутливість до письма/мов: Ні.

Feature interaction: If kern is activated, palt must also be activated if it exists. If palt is activated, there is no requirement that kern must also be activated. May be used in addition to any other feature except those which result in fixed (uniform) advance widths (e.g. fwidhalthwidqwid and twid).


         feature kern {
              position A Y -100;
              position a y -80;
              position s f' <0 0 10 0> t;
         } kern;

lfbd • Left Bounds • Ліва межа

lfbd

Функція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.

Приклад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.

Рекомендована реалізація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.

Чутливість до письма/мов: Ні.

Feature interaction: Should not be applied to glyphs which use fixed-width features (e.g. fwidhalthwidqwid and twid) or vertical features (e.g. vertvrt2vpalvalt and vhal). Is called by the opbd feature.

liga • Standard Ligatures • Стандартні лігатури

liga

Функція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.

ПрикладThe glyph for ffl replaces the sequence of glyphs f f l.

Рекомендована реалізація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.

Чутливість до письма/мов: Практично відноситься до всіх систем письма.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override.

Lining Figures

lnum

ФункціяThis feature changes selected non-lining figures to lining figures.

Приклад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.

Рекомендована реалізаціяThe lnum table maps each oldstyle figure, and any associated characters to the corresponding lining form (GSUB lookup type 1). If the default figures are non-lining, they too are mapped to the corresponding lining form.

Application interface: For GIDs found in the lnum coverage table, the application passes a GID to the lnum 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: This feature should be inactive by default. 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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature overrides the results of the Oldstyle Figures feature ( onum).

Localized Forms

locl

Function: Many scripts used to write multiple languages over wide geographical areas have developed localized variant forms of specific letters, which are used by individual literary communities. For example, a number of letters in the Bulgarian and Serbian alphabets have forms distinct from their Russian counterparts and from each other. In some cases the localized form differs only subtly from the script ‘norm’, in others the forms are radically distinct. This feature enables localized forms of glyphs to be substituted for default forms.

ПрикладThe user applies this feature to text to enable localized Bulgarian forms of Cyrillic letters; alternatively, the feature might enable localized Russian forms in a Bulgarian manufactured font in which the Bulgarian forms are the default characters.

Рекомендована реалізаціяFor a given Unicode value, the font contains glyphs for two or more locales. The locl table maps GIDs for default forms to GIDs for corresponding localized alternatives. These are one-to-one substitutions (GSUB lookup type 1).

Application interface: Localized forms are associated with specific languages and are activated by language tags. Which glyph is used as the localized form should be determined by the language the user has specified. The user can switch localized forms by selecting a new language, or may enable default forms by switching off the locl feature.

UI suggestion: This feature should be active by default.

Чутливість до письма/мов: Застосовується до всіх систем письма і мов; але, зазвичай, поведінка відрізняється від письма і мови.

Feature interaction: This feature can be used in combination with any other feature. It replaces and extends the earlier locale-specific tags zhcn, zhtw, jajp, kokr and vivn which had been defined for CJKV scripts.

Medial Forms

medi

Функція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.

ПрикладIn the typeface Caflisch Script, the y and p in the word ‘type’ are replaced by the y.med and p.med forms.

Рекомендована реалізація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 should be active by default.

Чутливість до письма/мов: Може бути використано в будь якому алфавітному письмі.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. See also init and fina.

Mathematical Greek

mgrk

ФункціяReplaces standard typographic forms of Greek glyphs with corresponding forms commonly used in mathematical notation (which are a subset of the Greek alphabet).

ПрикладThe user applies this feature to U+03A3 (Sigma), and gets U+2211 (summation).

Рекомендована реалізація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. Math-oriented applications may want to activate this feature by default.

Script/language sensitivity: Could apply to any font which includes coverage for the Greek script.

Чутливість до письма/мов: Може застосовуватися до будь-якого шрифту, що включає грецьке письмо.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override.

Alternate Annotation Forms

nalt

Функція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.

ПрикладThe user invokes this feature to get U+3200 (the circled form of ‘ga’) from U+3131 (hangul ‘ga’).

Рекомендована реалізація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 – both within the font and across the family.

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: This feature should be inactive by default. 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.

Чутливість до письма/мов: Використовується в основному для CJKV шрифів, але може застосовуватися до європейських систем письма.

Feature interaction: This feature is mutually exclusive with all other features, which should be turned off when it’s applied, except the vert and vrt2 features, which may be used in addition.

Numerators

numr

ФункціяReplaces selected figures which precede a slash with numerator figures, and replaces the typographic slash with the fraction slash.

Приклад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).

Рекомендована реалізація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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature supports frac. It may be used in combination with other substitution (GSUB) features, whose results it may override.

onum • Oldstyle Figures • Фігури старого стилю

onum

ФункціяThis feature changes selected figures from the default or lining style to oldstyle form.

Приклад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.

Рекомендована реалізаціяThe onum table maps each lining figure, and any associated characters to the corresponding oldstyle form (GSUB lookup type 1). If the default figures are non-lining, they too are mapped to the corresponding oldstyle form.

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: This feature should be inactive by default. Users can switch between the default and oldstyle figure sets by turning this feature on or off. Note: This 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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature overrides the results of the Lining Figures feature (lnum).

Optical Bounds

Topbd

Функція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.

Приклад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.

Рекомендована реалізація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 should be active by default. It effectively changes the line length, so justification algorithms should account for this adjustment.

Чутливість до письма/мов: Ні.

Feature interaction: Should not be applied to glyphs which use fixed-width features (e.g. fwidhalthwidqwid and twid) or vertical features (e.g. vertvrt2vpalvalt and vhal). Uses lfbd and rtbd features.

Ordinals

ordn

ФункціяReplaces default alphabetic glyphs with the corresponding ordinal forms 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.

ПрикладThe user applies this feature to turn 2.o into 2.o (abbreviation for secundo).

Рекомендована реалізаціяThe ordn table maps various lowercase letters to corresponding ordinal forms in a chained context (GSUB lookup type 6), and the sequence No to the numero character (GSUB lookup type 4).

Application interface: For sets of GIDs found in the clig coverage table, the application passes the sequence of GIDs to the table and gets back new GIDs. Note that full sequences must be passed. Note: This may be 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.

Чутливість до письма/мов: Застосовується в основному для латиниці.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override.

ornm • Ornaments • Орнаменти

ornm

Функція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 “lower ASCII” characters with ornaments assigned to them. The first approach supports the general or browsing user; the second supports the power user.

Приклад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.

Рекомендована реалізація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. As in any one-from-many substitution, alternates present in more than one face should be ordered consistently across a family, so that those alternates can work correctly when switching between family members.

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: This feature should be inactive by default. 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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature is mutually exclusive with all other substitution (GSUB) features, which should be turned off when it’s applied.


feature ornm { # Ornaments # Latin sub @ornm1 by @ornm2; sub bullet from @ornm3; sub hyphen from @ornm4; script grek; # Greek sub @ornm1 by @ornm2; sub bullet from @ornm3; sub hyphen from @ornm4; script cyrl; # Cyrillic sub @ornm1 by @ornm2; sub bullet from @ornm3; sub hyphen from @ornm4; } ornm;

Petite Capitals

pcap

ФункціяSome fonts contain an additional size of capital letters, shorter than the regular smallcaps and whimsically referred to as petite caps. Such forms are most likely to be found in designs with a small lowercase x-height, where they better harmonise with lowercase text than the taller smallcaps (for examples of petite caps, see the Emigre type families Mrs Eaves and Filosofia). This feature turns lowercase characters into petite capitals. Forms related to petite capitals, such as specially designed figures, may be included.

pcapprop.gif

ПрикладThe user enters text as lowercase or mixed case, and gets petite cap text or text with regular uppercase and petite caps. Note that some designers, might extend the petite cap lookups to include uppercase-to-smallcap substitutions, creating a shifting hierarchy of uppercase forms.

Рекомендована реалізаціяThe pcap table maps lowercase glyphs to the corresponding petite cap forms (GSUB lookup type 1).

Application interface: For GIDs found in the pcap coverage table, the application passes GIDs to the pcap table, and gets back new GIDs. Petite cap substitutions should follow language rules for smallcap (smcp) substitutions.

UI suggestion: This feature should be off by default.

Script/language sensitivity: Applies only to scripts with both upper- and lowercase forms (e.g. Latin, Cyrillic, Greek).

Чутливість до письма/мов: Застосовується тільки до письма з заголовними і рядковими формами (наприклад латиниця, кирилиця, грецька).

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override.

Proportional Figures

pnum

Функція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.

ПрикладThe user may apply this feature to get even spacing for lining figures used as dates in an all-cap headline.

Рекомендована реалізація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).

Чутливість до письма/мов: Ні.

Feature interaction: This feature overrides the results of the Tabular Figures feature (tnum).

Proportional Widths

pwid

Функція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.

Приклад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.

Рекомендована реалізаціяThe font contains alternate glyphs designed to be set on proportional widths (GSUB lookup type 1).

Application interface: For GIDs found in the pwid coverage table, the application passes the GIDs to the table and gets back new GIDs.

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.

Чутливість до письма/мов: Використовується в основному для CJKV шрифів, але може застосовуватися до європейських систем письма.

Feature interaction: This feature is mutually exclusive with all other glyph-width features (e.g. fwidhalthwidpaltqwidtwidvalt and vhal), which should be turned off when it’s applied. Applying this feature should activate the kern feature.

Quarter Widths

qwid

Функція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.

ПрикладThe user may apply qwid to place a four-digit figure in a single slot in a column of vertical text.

Рекомендована реалізація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 is mutually exclusive with all other glyph-width features (e.g. fwidhalthwid and twid), which should be turned off when it’s applied. It deactivates the kern feature.

Randomize

rand

ФункціяIn order to emulate the irregularity and variety of handwritten text, this feature allows multiple alternate forms to be used.

ПрикладThe user applies this feature in FF Kosmic to get three forms of f in one word.

Рекомендована реалізація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; “enabled” is the recommended default.

Чутливість до письма/мов: Ні.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override.

Right Bounds

rtbd

Функція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.

ПрикладSucceeding lines ending with r, h and y would shift to the right by differing degrees when the text is right-justified and this feature is applied.

Рекомендована реалізація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.

Чутливість до письма/мов: Ні.

Feature interaction: Should not be applied to glyphs which use fixed-width features (e.g. fwidhalthwidqwid and twid) or vertical features (e.g. vertvrt2vpalvalt and vhal). Is called by opbd feature.

Right-to-left alternates

rtla

ФункціяThis feature applies glyphic variants (other than mirrored forms) appropriate for right-to-left text. (For mirrored forms, see ‘rtlm’.)

Рекомендована реалізаціяThese are required to be glyph substitutions, and it is recommended that they be one-to-one (GSUB lookup type 1).

Application interface: See section “Left-to-right and right-to-left text” on the Advanced Typographic Extensions page.

UI suggestion: None.

Script/language sensitivity: Right-to-left runs of text.

Чутливість до письма/мов: Ні.

Feature interaction: This feature is to be applied simultaneously with other pre-shaping features such as ‘ccmp’ and ‘locl’.

salt • Stylistic Alternates

salt

Функція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.

ПрикладThe user applies this feature to Industria to get the alternate form of g.

Рекомендована реалізація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. As in any one-from-many substitution, alternates present in more than one face should be ordered consistently across a family, so that those alternates can work correctly when switching between family members.

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: This feature should be inactive by default. 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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override.

Scientific Inferiors

sinf

Функція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.

ПрикладThe application can use this feature to automatically access the inferior figures (more legible than scaled figures).

Рекомендована реалізація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 may be used in combination with other substitution (GSUB) features, whose results it may override.

size • Optical size

size

ФункціяThis feature stores two kinds of information about the optical size of the font: design size (the point size for which the font is optimized) and size range (the range of point sizes which the font can serve well), as well as other information which helps applications use the size range. The design size is useful for determining proper tracking behavior. The size range is useful in families which have fonts covering several ranges. Additional values serve to identify the set of fonts which share related size ranges, and to identify their shared name. Note that sizes refer to nominal final output size, and are independent of viewing magnification or resolution.

Required implementation:

The Feature table of this GPOS feature contains no lookups; its Feature Parameters field records an offset from the beginning of the Feature table to an array of five 16-bit unsigned integer values. The size feature must be implemented in all fonts in any family which uses the feature. In this usage, a family is a set of fonts which share a Preferred Family name (name ID 16), or Font Family name (name ID 1) if the Preferred Family name is absent.

  • The first value represents the design size in 720/inch units (decipoints). The design size entry must be non-zero. When there is a design size but no recommended size range, the rest of the array will consist of zeros.
  • The second value has no independent meaning, but serves as an identifier that associates fonts in a subfamily. All fonts which share a Preferred or Font Family name and which differ only by size range shall have the same subfamily value, and no fonts which differ in weight or style shall have the same subfamily value. If this value is zero, the remaining fields in the array will be ignored.
  • The third value enables applications to use a single name for the subfamily identified by the second value. If the preceding value is non-zero, this value must be set in the range 256 – 32767 (inclusive). It records the value of a field in the name table, which must contain English-language strings encoded in Windows Unicode and Macintosh Roman, and may contain additional strings localized to other scripts and languages. Each of these strings is the name an application should use, in combination with the family name, to represent the subfamily in a menu. Applications will choose the appropriate version based on their selection criteria.
  • The fourth and fifth values represent the small end of the recommended usage range (exclusive) and the large end of the recommended usage range (inclusive), stored in 720/inch units (decipoints). Ranges must not overlap, and should generally be contiguous.

Example: The size information in Bell Centennial is [60 0 0 0 0]. This tells an application that the fontâs design size is six points, so larger sizes may need proportionate reduction in default inter-glyph spacing. The size information in Minion Pro Semibold Condensed Subhead is [180 3 257 139 240]. These values tell an application that:

  • The font’s design size is 18 points;
  • This font is part of a subfamily of fonts that differ only by the size range which each covers, and which share the arbitrary identifier number 3;
  • ID 257 in the name table is the suggested menu name for this subfamily. In this case, the string at name ID 257 is Semibold Condensed;
  • This font is the recommended choice from sizes greater than 13.9-point up through 24-points.

Application interface: When the user specifies a size, the application checks for a size feature in the active font. If none is found, the application follows its default behavior. If one is found, the application follows the specified offset to retrieve the five values.

  • Design size: Applications which offer size-based tracking have a pre-defined curve which they can apply. By default, this curve should be set to produce no adjustment at the font’s design size (first value in the array, in decipoints).
  • Size ranges: If the second value in the size array is non-zero, the font has a recommended size range. When any such font is selected by the user, the application builds a list of all fonts with this subfamily value and the same Preferred Family name, and notes the size range in the current font. Applications may want to cache the subfamily list at this point. If the specified size falls in the current font’s range, the application uses the current font. If not, the application checks the other ranges in the subfamily, and if the specified size falls in one of them, uses that font. If the specified size is not in any range present, the font with the range closest to the specified value is used. If the specified size falls exactly between two ranges, the range with the larger values is used. Since adding or removing fonts from a subfamily may cause reflow, applications should note which fonts are used for which text.

UI suggestion: This feature should be active by default. Applications may want to present the tracking curve to the user for adjustments via a GUI. At start-up, and when fonts are added or removed, applications may want to build a list of fonts with such ranges, and display the filtered subfamily names in their font selection UI, with each filtered name representing the full set of related sizes. Applications may also present a setting which allows the user to select non-default sizes (for example, in the case where final output is intended for on-screen viewing, a smaller optical size will produce better results). In such a case, the font-selection UI should present the unfiltered names. Applications should notify the user if fonts are removed or added from a subfamily with size ranges, and query about desired behavior.

Script/language sensitivity: None. The FeatureParams of all ‘size’ features in the GPOS FeatureList must point to the same set of values.

Чутливість до письма/мов: Ні.

Feature interaction: None.

smcp • Small Capitals

smcp

Функція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. Forms related to small capitals, such as oldstyle figures, may be included.

ПрикладThe user enters text as mixed capitals and lowercase, and gets Large & small cap text.

Рекомендована реалізація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 bicameral scripts (i.e. those with case differences), such as Latin, Greek, Cyrillic, and Armenian.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. Also see c2sc.

ss01 - ss20 • Stylistic Set 1 - Stylistic Set 20

ss01 – ss20

ФункціяIn addition to, or instead of, stylistic alternatives of individual glyphs (see ‘salt’ feature), some fonts may contain sets of stylistic variant glyphs corresponding to portions of the character set, e.g. multiple variants for lowercase letters in a Latin font. Glyphs in stylistic sets may be designed to harmonise visually, interract in particular ways, or otherwise work together. Examples of fonts including stylistic sets are Zapfino Linotype and Adobe’s Poetica. Individual features numbered sequentially with the tag name convention ‘ss01’ ‘ss02’ ‘ss03’ . ‘ss20’ provide a mechanism for glyphs in these sets to be associated via GSUB lookup indexes to default forms and to each other, and for users to select from available stylistic sets.

Recommended implementation: An ssXX table maps GIDs for default forms to GIDs for corresponding stylistic alternatives in each set. Each ssXX feature uses one-to-one (GSUB lookup type 1) substitutions. Font developers may choose to map only from default forms to variants for each stylistic set, or may choose to map between all stylistic sets in each feature, depending on intended user experience. For example, feature ‘ss03’ might contain lookups mapping variant glyphs from ‘ss01’ and ‘sso2’ to corresponding variants in ‘ss03’, in addition to mapping from default forms.

The FeatureParams field of the Feature Table of these GSUB features may be set to 0, or to an offset to a Feature Parameters table comprising two successive USHORT values, as follows:

  • Version (set to 0): This corresponds to a “minor” version number. Additional data may be added to the end of this Feature Parameters table in the future.
  • UI Name ID: The ‘name’ table name ID that specifies a string (or strings, for multiple languages) for a user-interface label for this feature. The values of uiLabelNameId and sampleTextNameId are expected to be in the font-specific name ID range (256-32767), though that is not a requirement in this Feature Parameters specification. The user-interface label for the feature can be provided in multiple languages. An English string should be included as a fallback. The string should be kept to a minimal length to fit comfortably with different application interfaces.

Application interface: Note that the application is responsible for counting and enumerating the number of features in the font with tag names of the format ‘ss01’ to ‘ss20’, and for presenting the user with an appropriate selection mechanism. For GIDs found in the ssXX coverage table, the application passes the GIDs to the ssXX table and gets back one or more new GIDs.

UI suggestion: This feature should be off by default.

Чутливість до письма/мов: Ні.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override. Note that after an ssXX feature has been applied, the user may wish to apply glyph-specific features, e.g. ‘salt’, to individual glyphs in the resulting layout; font developers are responsible for ordering substitution lookups to obtain desired user experience.

subs • Subscript

subs

Функція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.

Рекомендована реалізація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 may be used in combination with other substitution (GSUB) features, whose results it may override.

sups • Superscript

sups

ФункціяReplaces lining or oldstyle figures with superior figures (primarily for footnote indication), and replaces lowercase letters with superior letters (primarily for abbreviated French titles).

Приклад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.

Рекомендована реалізація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 may be used in combination with other substitution (GSUB) features, whose results it may override.

swsh • Swash • Розчерки

swsh

ФункціяThis feature replaces default character glyphs with corresponding swash glyphs. Note that there may be more than one swash alternate for a given character.

Приклад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.

Рекомендована реалізація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: This feature should be inactive by default. 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 may be used in combination with other substitution (GSUB) features, whose results it may override.

titl • Titling

titl

Функція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.

ПрикладThe user applies this feature in Adobe Garamond to get the titling caps.

Рекомендована реалізація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.

Чутливість до письма/мов: Ні.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override.

tnum • Tabular Figures

tnum

Функція: 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.

Приклад: The user may apply this feature to get oldstyle figures to align vertically in a column.

Рекомендована реалізація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).

Чутливість до письма/мов: Ні.

Feature interaction: This feature overrides the results of the Proportional Figures feature ( pnum).

twid • Third Widths

twid

Функція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.

ПрикладThe user may apply twid to place a three-digit figure in a single slot in a column of vertical text.

Рекомендована реалізація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 is mutually exclusive with all other glyph-width features (e.g. fwidhalthwid and qwid), which should be turned off when it’s applied. It deactivates the kern feature.

unic • Unicase

unic

Функція: This feature maps upper- and lowercase letters to a mixed set of lowercase and small capital forms, resulting in a single case alphabet (for an example of unicase, see the Emigre type family Filosofia). The letters substituted may vary from font to font, as appropriate to the design. If aligning to the x-height, smallcap glyphs may be substituted, or specially designed unicase forms might be used. Substitutions might also include specially designed figures.

unicprop.gif

Приклад: The user enters text as uppercase, lowercase or mixed case, and gets unicase text.

Рекомендована реалізація: The unic table maps some uppercase and lowercase glyphs to corresponding unicase forms (GSUB lookup type 1).

Application interface: For GIDs found in the unic coverage table, the application passes GIDs to the unic table, and gets back new GIDs.

UI suggestion: This feature should be off by default.

Script/language sensitivity: Applies only to scripts with both upper- and lowercase forms (e.g. Latin, Cyrillic, Greek).

Чутливість до письма/мов: Ні.

Feature interaction: This feature may be used in combination with other substitution (GSUB) features, whose results it may override.

zero • Slashed Zero • Перекреслений нуль

zero

Функція: Деякі шрифти містять як форму за замовчуванням, рівне нулю, і альтернативну форму, яка використовує діагональну межу через лічильник. Особливо в конденсованих конструкцій, це може бути важко провести різницю між 0 і O (нуль і капіталу O) в будь-якій ситуації, де капітали і підкладка цифри можуть бути довільно змішаний. Ця функція дозволяє користувачеві змінювати від дефолту 0 до полоснув формі.

Приклад: При установці мітки, користувач застосовує цю функцію, щоб отримати полоснув 0.

Рекомендована реалізація: У таблиці нуль відображає GIDs для футерування форм нуля до відповідних полоснув форми (GSUB тип пошуку 1).

Інтерфейс програми: Для GID, в таблиці нуль покриття, додаток передає GID до столу нульовий і отримує назад новий GID.

Пропозиція UI: Оптимально, додаток буде зберігати це як параметрів привілеїв, і користувач може використовувати функцію, щоб перемикатися між двома формами. Більшість додатків захочуть настройки, щоб відключити цю функцію за замовчуванням.

Скрипт / чутливість мови: Не відноситься до скриптах, які використовують інші, ніж 0 для нуля форми.

Чутливість до письма/мов: Ні.

Особливість взаємодії: Відноситься тільки до підкладці фігур, так інактивується OldStyle особливостей фігури (наприклад onum ).

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.

Приклад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. Most applications will want the default setting to disable this feature.

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 (e.g. onum).


feature zero { # Slashed Zero

script latn; # Latin sub [zero uniF639] by [uniF638 uniF638]; script grek; # Greek sub [zero uniF639] by [zero.slash uniF638]; script cyrl; # Cyrillic sub [zero uniF639] by [uniF638 uniF638]; } zero;

Зберегти

Зберегти