Re: [css-text] Shaping Isolation and Layout Separation of Inlines

On 08/15/2014 12:06 PM, John Hudson wrote:
>> Note: This means that color changes, font changes, letterspacing
>> changes, etc. have no effect on shaping. Shaping might not result
>> in the glyphs joining correctly, but will nonetheless choose the
>> correct form of the letter (initial, medial, final, isolated).
> Further to what John D and Glenn have written with regard to this:
> Whether a change in font results in a change in character shaping will depend on whether the desired shaping is affected by
> discrete layout features applied based on character level analysis (broadly speaking, the OpenType Layout model for basic
> Arabic shaping and *some* aspects of Indic cluster shaping), or is instead affected at the glyph level using contextual
> substitutions (broadly speaking, the AAT/Graphite model).
> So, for example, an Arabic medial letter form can be displayed by a typical Arabic OpenType font using character string
> analysis, even if there is a change in font between this letter and the next. The two resulting glyphs won't join nicely, but
> they should take their respective basic joining forms according to the Unicode joining behaviour model. In contrast, an AAT
> font that uses glyph string analysis to affect state changes seems almost guaranteed to break shaping when the font changes in
> mid-string.
> The reality of most complex script fonts, though -- even those following the MS OpenType script specifications --, is that
> they utilise a mixture of basic shaping associated with discrete features applied by layout engines according to character
> string analysis and glyph-level contextual substitutions.

For Arabic, at least, it's always possible to get the right
form by passing in ZWJ at the start/end of the run as necessary.
I'm not sure that helps Indic at all, I don't really understand
Indic shaping.

Either way, though, breaking Arabic joining due to a font change
(such as fallback, which I've seen happen in the middle of a word
before) is quite disruptive, and if the implementation *can*
shape appropriately, I think it should.


Received on Monday, 18 August 2014 18:28:12 UTC