Re: [css3-fonts] comments on ED of 24 May 2013

Jonathan Kew wrote:

>>> # This means that explicitly disabling the kern feature will not
>>> # affect the application of kerning data found in the ‘kern’ table
>>> # (as opposed to kerning data associated with the kern feature in
>>> # the ‘GPOS’ table).
>>>
>>> This sounds like it was describing a now-obsolete state of the
>>> implementation in Firefox. For UAs that rely on HarfBuzz for text
>>> shaping, this is not currently true: if the UA asks HarfBuzz to
>>> disable the kern feature, this will disable *both* the kern feature
>>> in the ‘GPOS’ table *and* the application of the ‘kern’ table data.
>>>
>>> The connection between ‘GPOS’ and ‘kern’ table kerning is a
>>> low-level implementation detail; I'm not sure CSS Fonts needs to
>>> deal with this, but the current text does not describe what
>>> actually happens - at least for Gecko, but likely for other UAs as
>>> well if they use the HarfBuzz shaping engine.
>>
>> While the 'font-kerning' property defines behavior that covers
>> old-style kerning data (i.e. the 'kern' table), I explicitly did
>> not extend the same behavior to 'font-feature-settings: "kern" on'.
>> The 'font-feature-settings' property is a low-level way of passing
>> down specific OpenType parameter settings, so defining "extra"
>> behavior like this is sort of odd.
>>
>> I guess making an exception in this one case is okay but I
>> definitely think CSS should *not* be extending the meaning of
>> specific features by adding behavior to them ("let's have feature
>> xxx mean .... when conditions yyy and zzz are true").
> 
> It looks like the current (19 August 2013) text here is unchanged,
> which means Gecko (and likely any other harfbuzz-based engine) will
> be non-compliant with this section. Were you going to include some
> kind of exception to reflect the real-world behavior we have here,
> or are you expecting the implementation to change?

I think my resistance here is because I don't want CSS specs defining
overrides for OpenType functionality.  But I think in this case, I
would be okay with optional behavior, defined as something that an
OpenType layout engine does (which directly covers the Harfbuzz case):

Current spec:

# Feature tags not present in the font are ignored; a user agent must
# not attempt to synthesize fallback behavior based on these feature
# tags. 
#
# This means that explicitly disabling the kern feature will not
# affect the application of kerning data found in the ‘kern’ table (as
# opposed to kerning data associated with the kern feature in the
# ‘GPOS’ table). Authors should use the ‘font-kerning’ property to
# explictly enable or disable kerning since this property affects both
# types of kerning.

Proposed change:

# Feature tags not present in the font are ignored; a user agent must
# not attempt to synthesize fallback behavior based on these feature
# tags.  The one exception is that user agents may synthetically support 
# the 'kern' feature with fonts that contain kerning data
# in the form of a 'kern' table but lack 'kern' feature support in the
# 'GPOS' table.
#
# In general, authors should use the ‘font-kerning’ property to
# explictly enable or disable kerning since this property always
# affects both types of kerning.

Does this work for you?

Regards,

John Daggett

Received on Friday, 23 August 2013 02:09:59 UTC