[HarfBuzz] Arabic vowels and shaping - incomplete behavior

Behdad Esfahbod behdad at behdad.org
Wed Oct 27 06:48:01 PDT 2010


Maybe you can attach a screenshot at least?

On 10/27/10 09:19, Tom Hacohen wrote:
> On Wed, 2010-10-27 at 14:26 +0200, Khaled Hosny wrote:
>> On Wed, Oct 27, 2010 at 01:28:38PM +0200, Tom Hacohen wrote:
>>> Hey,
>>>
>>> Is it just me, or do vowels break shaping in Arabic?
>>
>> It shouldn't, either the font is broken or you are not doing it right.
>>
>> Regards,
>>  Khaled
>>
> 
> Probably the latter.
> What I'm currently doing produces (for the word ضَلُّو):
> 
> infos[0] = {codepoint = 1390, mask = 1, cluster = 5, internal1 = 0,
> internal2 = 2}
> positions[0] = {x_advance = 2304, y_advance = 0, x_offset = 0, y_offset
> = 0, internal = 0}
> 
> infos[1] = {codepoint = 5333, mask = 1, cluster = 3, internal1 = 0,
> internal2 = 8}
> positions[1] = {x_advance = 0, y_advance = 0, x_offset = 322, y_offset =
> 233, internal = 0}
> 
> infos[2] = {codepoint = 1386, mask = 1, cluster = 2, internal1 = 0,
> internal2 = 2}
> positions[2] = {x_advance = 3520, y_advance = 0, x_offset = 0, y_offset
> = 0, internal = 0}
> 
> infos[3] = {codepoint = 1396, mask = 1, cluster = 1, internal1 = 0,
> internal2 = 8}
> positions[3] = {x_advance = 0, y_advance = 0, x_offset = 206, y_offset =
> -934, internal = 0}
> 
> infos[4] = {codepoint = 1377, mask = 1, cluster = 0, internal1 = 0,
> internal2 = 2}
> positions[4] = {x_advance = 5824, y_advance = 0, x_offset = 0, y_offset
> = 0, internal = 0}
> 
> Which as you can see is 5 chars while the original string was 6 (the two
> vowels merged into one), but other chars didn't substituted.
> My font is DejaVuSans and I just checked with font forge, LAM does have
> a medial form in the font, furthermore, removing the vowels make it
> transform correctly.
> 
> After thinking about it, I realized it's maybe because I didn't use
> Unicode functions with the harfbuzz buffer (disabled them, waiting for a
> non-glib implementation), since maybe harfbuzz depends on get combining
> class, but after enabling them I get:
> 
> Program received signal SIGSEGV, Segmentation fault.
> _hb_ot_shape_complex_setup_masks_arabic (c=0xbfff9d30)
>     at hb-ot-shape-complex-arabic.cc:712
> 712	    c->buffer->info[i].mask |=
> mask_array[c->buffer->info[i].gproperty];
> 
> because c->buffer->info[i].gproperty == 65535
> So I think there's still an issue.
> 
> Language = en, Script = HB_SCRIPT_ARABIC, Buffer = as I said
> Anything more needed?
> 
> Thanks,
> Tom.
> 
> _______________________________________________
> HarfBuzz mailing list
> HarfBuzz at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/harfbuzz



More information about the HarfBuzz mailing list