- From: John Daggett <jdaggett@mozilla.com>
- Date: Tue, 30 Jul 2013 20:26:24 -0700 (PDT)
- To: www-style@w3.org
Zack Weinberg wrote:
> fantasai wrote:
>
> > the element with tracking, depending on whether it ends up having
> > text that triggers a ligature, will produce some very unevenly-spaced
> > text. E.g.
> >
> > fi n d vs. f i n d
>
> As a point in favor of fantasai's suggestion being the Right Thing,
> see https://bugzilla.mozilla.org/show_bug.cgi?id=443853 and
> https://bugzilla.mozilla.org/show_bug.cgi?id=464168 , in which we
> (Gecko) were specifically asked to have 'letter-spacing' override UA
> default use of ligatures.
Those bugs, which are fixed, are about *default* behavior. Elika was
making the point about the combination of explicitly defined use of
'font-variant' and 'letter-spacing', which is different. Common
ligatures are on by default so there are actually *three* possible
states: default, explicitly enabled ('common-ligatures'), explicity
disabled ('no-common-ligatures'). The 'letter-spacing' property is
explicitly disabling these but either the 'font-variant' or
'font-feature-settings' properties have higher precedence.
For the examples below, assume all fonts contain an 'fi' common ligature.
Example 1:
==========
Common ligatures are on by default but the 'letter-spacing' property
disables them:
em { letter-spacing: 1em; }
<p> ... <em>fiddlesticks!</em> ... </p>
Result: f i d d l e s t i c k s
Example 2:
==========
Using the 'font-feature-settings' property will explicitly force
common ligatures (OpenType feature "liga") on:
em { letter-spacing: 1em; }
p { font-feature-settings: "liga" on; }
<p> ... <em>fiddlesticks!</em> ... </p>
Result: fi d d l e s t i c k s
Example 3:
==========
The 'letter-spacing' property will disable font defaults:
@font-face {
font-family: test;
font-variant: common-ligatures;
}
em { letter-spacing: 1em; }
p { font-family: test; }
<p> ... <em>fiddlesticks!</em> ... </p>
Result: f i d d l e s t i c k s
Example 4:
==========
Using all possible variations:
@font-face {
font-family: test;
font-variant: no-common-ligatures;
font-feature-settings: "liga" on;
}
em { letter-spacing: 1em; }
p {
font-family: test;
font-variant: common-ligatures;
font-feature-settings: "liga" off;
}
<p> ... <em>fiddlesticks!</em> ... </p>
Result: f i d d l e s t i c k s
Example 5:
==========
The last example is effectively equivalent to:
em { letter-spacing: 1em; }
p {
font-feature-settings: "liga" off, "liga" on, "liga" off, "liga" on, "liga" off;
}
<p> ... <em>fiddlesticks!</em> ... </p>
Result: f i d d l e s t i c k s
The bottom line here is that you can set up confusing combinations
of these descriptors/properties but I don't think authors will run
into these in normal practice.
Cheers,
John Daggett
Received on Wednesday, 31 July 2013 03:26:51 UTC