[HarfBuzz] disabling Arabic shaping when direction is vertical

Jonathan Kew jfkthame at gmail.com
Thu Apr 23 13:35:46 PDT 2015

On 23/4/15 20:17, Behdad Esfahbod wrote:
> On 15-04-23 04:47 AM, Jonathan Kew wrote:
>> On 28/11/14 21:50, Behdad Esfahbod wrote:
>>> On 14-09-23 04:20 AM, Behdad Esfahbod wrote:
>>>> On 14-09-15 05:40 PM, Jonathan Kew wrote:
>>>>>> Hi Behdad,
>>>>>> If the harfbuzz buffer direction is vertical (TTB or BTT), I think we should
>>>>>> refrain from doing Arabic shaping.[1]
>>>>>> We could do this, for example, by adding an early return such as
>>>>>>     if (unlikely (HB_DIRECTION_IS_VERTICAL (buffer->props.direction)))
>>>>>>       return;
>>>>>> in setup_masks_arabic(), so that the shaping analysis and setting of
>>>>>> per-glyph
>>>>>> features doesn't happen. WDYT?
>>>> I can agree to that.  In that case, lets also not collect the features.
>>> Bringing this back up so we fix.
>> Ping. :)
>> I just submitted https://github.com/behdad/harfbuzz/pull/100 with a trivial
>> patch for this... please see what you think, and fix as appropriate. Thanks!
> Thanks.  Counter proposal: how about changing the shaper-switch to route to
> default shaper if direction is vertical?  That's much less intrusive.

OK, that sounds like it should work too.

> Probably should do for Indic as well.

I'm not entirely sure about this (or SEAsian, etc). The CSS writing 
modes spec specifically mentions "horizontal cursive scripts (such as 
Arabic)", but I don't think Indic scripts fit this category. Examples 
are hard to find, but I suspect the appropriate rendering of Indic and 
similar scripts with vertical direction and upright glyph orientation 
would be to stack by grapheme clusters, or something along those lines - 
but we'd still need shaping features such as pre-vowel reordering, reph 
formation, etc.


More information about the HarfBuzz mailing list