I doubt this mod will end up in the a regression of positioning prebase matra in front of ligated cillu. I have seen Uniscribe too disregarding the pres rules. Not sure about its present status.
-suresh On 11 September 2014 14:36:37 GMT+05:30, Uvaraja Pandian <[email protected]> wrote: >Hi Team, > > > >We are using the Harfbuzz 0.9.34 version. > > > >While rendering the Malayalam string using the Harfbuzz and Freetype >engine, we see some issues. > > > >*String used: *ക്കേ > >*Unicode value:* 0x0d15, 0x0d4d, 0x0d15, 0x0d47, 0x0000 > > > >*Harfbuzz Output:* > > > >*Proper Output :* > > > >*Font File used:* Akruti Family, Since this is a licensed font file, we >are >not able to share it. > > > >*Issue in Detail:* > > > >In the font file, > >script mlym { > > # Malayalam > > feature Akhands; > > feature BelowBaseSubstitutions; > > feature *HalfForms*; > > feature PostBaseForms; > > feature PostBaseSubstitutions; > > feature *PreBaseSubstitutions*; > >} > > > >As per the Harfbuzz implementation, below substitution is happening as >part >of the HalfForms , > >0x0d15 & 0x0d4d è XYZ character, > > > >so the output is XYZ, 0x0d15, 0x0d47 > > > >Final re-ordering happens and rearranges as below, > >XYZ, 0x0d15, 0x0d47 è XYZ, 0x0d47, 0x0d15 > > > >As per the PreBaseSubstitutions, > >XYZ & 0x0d15 is not matched and the output is not proper. > > > >In-Order to solve this issue, below changes has been done, > > > >Final Re-ordering, > >PSB for the code changes > > > >As per the PreBaseSubstitutions, > >XYZ & 0x0d15 forms the final character. > > > >*Code Modifications:* > >In the file hb-ot-shape-complex-indic.cc, if we modify the lines as >below >in the function final_reordering_syllable() it is working, > > > > if (start + 1 < end && start < base) /* Otherwise there can't be any >pre-base matra characters. */ > > { > > /* If we lost track of base, alas, position before last thingy. */ > > unsigned int new_pos = base == end ? base - 2 : base - 1; > > > >/* Malayalam / Tamil do not have "half" forms or explicit virama forms. > > * The glyphs formed by 'half' are Chillus or ligated explicit viramas. > > * We want to position matra after them. > > */ > > if (buffer->props.script != HB_SCRIPT_MALAYALAM && >buffer->props.script != HB_SCRIPT_TAMIL) > > { > > … > > } > > > > if (start < new_pos && info[new_pos].indic_position >() != POS_PRE_M) > > { > > … > > } else { > > … > > } > > } > > } > > > >Please comment, will it have any side effect. > > > >Best Regards, > >Uvaraja P. > >Sindhura P. > > >------------------------------------------------------------------------ > >_______________________________________________ >HarfBuzz mailing list >[email protected] >http://lists.freedesktop.org/mailman/listinfo/harfbuzz
_______________________________________________ HarfBuzz mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/harfbuzz
