https://bugs.documentfoundation.org/show_bug.cgi?id=104921
--- Comment #2 from Khaled Hosny <[email protected]> ---
>From bug 112849 comment 4:
> Kashida in LibreOffice is fundamentally broken:
>
> // A note on how Kashida justification is implemented (because it took me 5
> // years to figure it out):
> // The decision to insert Kashidas, where and how much is taken by Writer.
> // This decision is communicated to us in a very indirect way; by increasing
> // the width of the character after which Kashidas should be inserted by the
> // desired amount.
> //
> // Writer eventually calls IsKashidaPosValid() to check whether it can
> insert a
> // Kashida between two characters or not.
> //
> // Here we do:
> // - In LayoutText() set KashidaJustification flag based on text script.
> // - In ApplyDXArray():
> // * Check the above flag to decide whether to insert Kashidas or not.
> // * For any RTL glyph that has DX adjustment, insert enough Kashidas to
> // fill in the added space.
>
> from
> https://gerrit.libreoffice.org/gitweb?p=core.git;a=blob;f=vcl/source/gdi/
> CommonSalLayout.cxx;h=8e8565717932088558ee7a4b31fc0bfe405e98e3;hb=HEAD#l698
>
> The insanity described above together with the the whole DX array madness
> and the use of integers to hold glyph positions, makes is so that any
> rounding errors would cause VCL to think that writer wants to insert a
> kashida in this place.
>
> Fixing kashida once and for all requires 1) making the communication between
> Writer and VCL explicit e.g. have a separate “kashida insertion points”
> array 2) Kill DX array for good and enter the 21 century (it is an API
> “inspired” by Windows 3.1 3) Fix rounding errors by preserving fractional
> glyph positions in a way or another.
--
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Libreoffice-bugs mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs