Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

STAT: improve wording and organization #624

Closed
PeterCon opened this issue Sep 15, 2020 · 3 comments
Closed

STAT: improve wording and organization #624

PeterCon opened this issue Sep 15, 2020 · 3 comments

Comments

@PeterCon
Copy link
Collaborator

The content in the STAT table tends to be verbose. Try to simplify and make it more concise.


Document Details

Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

@PeterCon
Copy link
Collaborator Author

PeterCon commented Sep 15, 2020

Proposed revisions to intro for next version:

STAT — Style Attributes Table

The style attributes table describes design attributes that distinguish font-style variants within a font family. It also provides associations between those attributes and name elements that may be used to present font options within application user interfaces. This information is especially important for variable fonts, but also relevant for non-variable fonts.

Introduction

A font family is a set of font faces that sharewith key aspects of design. These aspects of designthat are common to all of the fonts in the family, and differentiate that family from other font families. But theThe fonts within a family also differ from one another in particular ways: differences in stroke thicknesses, differences in contrast, etc.; or combinations of such differences. In this way, the fonts within a family are style variants of the family design. A given family will have a particular set of attribute types by which the member fonts differ: the axes of variation.

A given family will have a particular set of attribute types by which the member fonts differ: the axes of variation. These may be implemented as dynamic variations in a variable font; or they may be implemented in the form of discrete, static instance fonts. For example, weight is a variable axis in the Skia variable font, but is also reflected as an axis of style variation in the Arial family with static instances that include “Arial Regular” and “Arial Bold”.

Style variants within a family may be implemented as static variants in discrete fonts, such as Arial Light or Arial Bold. They may also be implemented as dynamic variations in a variable font, using a font variations ('fvar') table and related tables; for example, weight or width variations in the Skia font. A single font may also combine dynamic variations using 'fvar' and related tables along with static style attributes. For example, a family may have variants in relation to weight attributes and also a Roman versus italic distinction, with weight implemented as a dynamic variation using 'fvar' and related tables, but with Roman and italic as static design attributes — a Roman font with weight variation, and a corresponding italic font with weight variation.

The style attributes table allows software implementations to understand relationships among the various fonts or design-variation instances within a family. It provides strings that can be used to create user interfaces with controls for individual style attributes, or used to compose strings that may be required for use in legacy applications.

The 'STAT' table provides richer information about the axes of variation and individual styles within a family, as well as relationships between the styles. This information may be used for different purposes, including:

  • It provides a way to accommodate rich typographic families with many styles in legacy applications that use a more limited understanding of font families.This is especially relevant for variable fonts.
  • By providing more information about styles within a family, it can support alternate designs for font-selection user interfaces that may be useful with rich typographic families.
  • By provide more information about relationships between styles within a family, it can support application logic for selection of styles in particular application conditions.

Note that, in regard to the first purpose of bridging between different notion of what is included in a font family, this has been handled in the past using separate family/subfamily name pairs in the 'name' table: name IDs 1 and 2 versus name IDs 16 and 17 versus name IDs 21 and 22. The 'STAT' provides a way to bridge between different family models without proliferation of additional family/subfamily pairs in the 'name' table.

The information in the 'STAT' table can characterize a font in relation to the entire family to which it belongs, not just the font in isolation. For example, the face name “Arial Bold” reflects that the Arial family includes weight as an axis of style variation, but not that the family also includes an italic axis of style variation. The 'STAT' table provides a way to indicate in the Arial Bold font that the family includes an italic axis variation and that this font has a particular value—non-italic—in regard to that axis.

Note: The style attributes table provides a characterization of a font relative to the entire family to which it belongs, not just that one font in isolation. This characterization may involve attributes that users would not associate with the font itself. For example, part of the characterization of a Regular font would include an italic-axis value (non-italic) if the font family includes italic members, even though that font is not an italic font. (See Example 2, below.) In the case of variable fonts, the set of axes that are relevant may be a superset of the axes used in the 'fvar' table, if those axes are relevant for the entire family. For example, a family may include a Roman variable font with weight variation, and a paired italic font, also with weight variation. The italic axis is relevant to the complete characterization of both fonts, since the italic axis is relevant to the family as a whole. (See Example 5, below.)

A style attributes table is required in all variable fonts. For a general overview of OpenType Font Variations, see the chapter, OpenType Font Variations Overview.

The style attributes table is also recommended for all new, non-variable fonts, especially if fonts have style attributes in axes other than weight, width, or slope.

The information provided in the 'STAT' table includes string labels for specific style attributes. For example, “Bold” and “Condensed” as individual style attribute labels within a “Condensed Bold” font. These may be used in user interfaces but are not intended to supersede subfamily names provided in the 'name' table or in the 'fvar' table of variable fonts.

When used in multi-axis fonts, the style attributes table can accomplish the intended purpose of name IDs 21 and 22, but using a more general and flexible mechanism. For fonts used only in newer applications, strings for name IDs 21 and 22 may not be required if a style attributes table is present. When fonts need to work in older applications as well, however, name IDs 21 and 22 should continue to be used when applicable.

@PeterCon
Copy link
Collaborator Author

Here's the proposed draft without change marking:

STAT — Style Attributes Table

The style attributes table describes design attributes that distinguish font-style variants within a font family. It also provides associations between those attributes and name elements that may be used to present font options within application user interfaces. This information is especially important for variable fonts, but also relevant for non-variable fonts.

Introduction

A font family is a set of font faces with key aspects of design that are common to all of the fonts in the family, and differentiate that family from other font families. The fonts within a family also differ from one another in particular ways: in stroke thicknesses, in contrast, etc.; or combinations of such differences. In this way, the fonts within a family are style variants of the family design.

A given family will have a particular set of attribute types by which the member fonts differ: the axes of variation. These may be implemented as dynamic variations in a variable font; or they may be implemented in the form of discrete, static instance fonts. For example, weight is a variable axis in the Skia variable font, but is also reflected as an axis of style variation in the Arial family with static instances that include “Arial Regular” and “Arial Bold”.

The 'STAT' table provides richer information about the axes of variation and individual styles within a family, as well as relationships between the styles. This information may be used for different purposes, including:

  • It provides a way to accommodate rich typographic families with many styles in legacy applications that use a more limited understanding of font families.This is especially relevant for variable fonts.
  • By providing more information about styles within a family, it can support alternate designs for font-selection user interfaces that may be useful with rich typographic families.
  • By provide more information about relationships between styles within a family, it can support application logic for selection of styles in particular application conditions.

Note that, in regard to the first purpose of bridging between different notion of what is included in a font family, this has been handled in the past using separate family/subfamily name pairs in the 'name' table: name IDs 1 and 2 versus name IDs 16 and 17 versus name IDs 21 and 22. The 'STAT' provides a way to bridge between different family models without proliferation of additional family/subfamily pairs in the 'name' table.

The information in the 'STAT' table can characterize a font in relation to the entire family to which it belongs, not just the font in isolation. For example, the face name “Arial Bold” reflects that the Arial family includes weight as an axis of style variation, but not that the family also includes an italic axis of style variation. The 'STAT' table provides a way to indicate in the Arial Bold font that the family includes an italic axis variation and that this font has a particular value—non-italic—in regard to that axis.

A style attributes table is required in all variable fonts. For a general overview of OpenType Font Variations, see the chapter, OpenType Font Variations Overview.

The style attributes table is also recommended for all new, non-variable fonts, especially if fonts have style attributes in axes other than weight, width, or slope.

The information provided in the 'STAT' table includes string labels for specific style attributes. For example, “Bold” and “Condensed” as individual style attribute labels within a “Condensed Bold” font. These may be used in user interfaces but are not intended to supersede subfamily names provided in the 'name' table or in the 'fvar' table of variable fonts.

@PeterCon PeterCon changed the title STAT: simplify introduction STAT: improve introduction Sep 15, 2020
@PeterCon PeterCon changed the title STAT: improve introduction STAT: improve wording and organization Sep 16, 2020
@PeterCon
Copy link
Collaborator Author

I just learned that I can add a <style> element in Markdown and see the effects in VS Code's preview, as well as in PDF generated by the Markdown PDF extension. So, I've attached a PDF with a draft with proposed revisions for this issue, as well as for #433, #466, #473, #541, #592.
stat.pdf

@PeterCon PeterCon added this to the OpenType 1.8.4 milestone Nov 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant