W3C home > Mailing lists > Public > www-style@w3.org > March 2010

Re: [css3-fonts] font-specific feature handling

From: Adam Twardoch (List) <list.adam@twardoch.com>
Date: Mon, 22 Mar 2010 05:31:13 +0100
Message-ID: <4BA6F291.1080003@twardoch.com>
To: www-style <www-style@w3.org>
Dear list members,

advanced typographic features in fonts can be generally classified into
three categories:

* "automatic": features required for orthographically correct default
language rendering, with a clearly defined purpose

* "optional font-unspecific": features that are not required for the
default language rendering, but which, when applied, perform a change in
the semantics or the formatting of the text according to general
conventions agreed among a larger group of users

* "optional font-specific": features that, when applied, perform a
change in the semantics or the formatting of the text according to
specific conventions defined by the developer of the font

All three kinds of features have its important use. One should remember
that none of these three groups of features is completely
font-unspecific. Various fonts may or may not include particular
features, and each of the features can be implemented in a variety of
ways. The degree of variety in the recommendations of how particular
features should be implemented does vary: typically, the recommended
implementation of the automatic features is defined in a rather strict
way while the recommended implementation of the optional font-specific
features is quite liberal.

The automatic features generally need no user control. They are
automatically applied by the layout engine in the process of text
rendering. Without them being applied, the resulting text is
orthographically incorrect or even unreadable. Each writing system has
its own rules on how these features are applied, and the layout engine
"knows" which features to apply, and how. In isolated cases, authors may
want to override them using the font-feature-settings property. This is
sometimes important, for example when authors write about linguistic
issues and would like to present text that is not rendered according to
the orthographic rules of a particular language, but is somehow
"incorrect", or is rendered according to some language-neutral rules or
rules of some minority language or spelling convention that has not been

As I mentioned above, the optional font-unspecific features are not
entirely font-unspecific. They may differ in implementation, but there
is a general consensus on what kind of functionality a feature should
perform. For example, the OpenType Layout "smcp" feature should replace
lowercase glyphs with their smallcap equivalents, and the "c2sc" feature
should replace uppercase glyphs with their smallcap equivalents. Yet the
font developer still has freedom: for example, the font developer may
choose to also replace lining figures or some punctuation characters
(such as parantheses, dashes, the ampersand, quotation marks) with
variants that are designed in a way that is more suitable to be used
with smallcaps than the default forms.

Finally, there is a set of features such as stylistic sets or stylistic
alternates (OpenType "ss01"-"ss20" and "salt") which are intended to
provide the authors with the ability to apply specific semantic or
formatting changes to the text in a manner that is defined by the vendor
of the particular font. This is an important mechanism, which allows
font developers and web authors to bypass a centralized standardization
process. Some minority communities may never get their writing
conventions standardized, and some formatting variations only make sense
in a context of a specific font, or specific typographic convention.

Now comes my principal point: when an author decides to apply
font-specific features, he or she needs to be familiar with the
functionality of the font. This also means that the process of selecting
fallback scenarios needs to be a conscious decision of the author. It is
the web author's responsibility to choose fallback fonts that do not
perform formatting or semantic changes that are _unwanted_ by her or him.

In other words, when the author decides to apply a font-specific feature
through the CSS "stylistic" or "styleset" property, it should be the
author's responsibility to make sure that the fallback scenario does not
produce unwanted results. The author should choose such fallback fonts
that implement a similar functionality, or the author should choose such
fallback font that achieve "neutral" results.

However, I must agree with Jonathan that while my classification (above)
is neat, it is not one that can be drawn using hard lines. Some features
can be considered automatic or font-unspecific in different fonts, and
some features can be considered font-unspecific or font-specific in others.

Therefore: there is one scenario that might be an attempt to "eat the
cake and keep it" at the same time:

I would like to suggest that the CSS3 Fonts specification states that
the CSS font-feature-settings property be applied ONLY TO THE FIRST font
in the font stack. Since we agree that this is a "low-level" access
mechanism, we should also agree that the "low-level" is a highly
font-specific thing.

Therefore, I think that all CSS properties that all font rendering
properties in general should be applied to the main font as well as the
fallbacks, while the font-feature-settings property should not be
applied to the fallback fonts, as an exception.

This way, we have a simple yet effective mechanism to make sure that the
author has full control.

For example, if the author specifies font-variant: styleset(1,3), then
the OpenType Layout features "ss01" and "ss03" will be applied to the
main font as well as the fallback fonts, but if the author specifies
font-feature-settings: "ss01=1,ss03=1", then the OpenType Layout
features "ss01" and "ss03" will only be applied to the main font in the

To make this behavior more clear for authors, we could rename the CSS
property "font-feature-settings" to "font-specific-feature-settings".

How does that sound?

Received on Monday, 22 March 2010 04:31:48 UTC

This archive was generated by hypermail 2.4.0 : Monday, 23 January 2023 02:13:44 UTC