Hi Michael, you write:
Having looked at this heap; and worse - the two different heaps for Windows text rendering, and also the big pile of strange cross-platform issues with stacking diacritics, emojis etc. I'm pretty convinced that we cannot do a good job of consistent text shaping and/or rendering cross-platform while using the Windows font rendering infrastructure.
Yeah, I suppose. But that alone won't fix the kind of issues you show in your ascii art - as long as so much low-level layouting is still happening in Writer (dx arrays, kashida filling etc).
While we could switch to DirectWrite on windows, which may solve some of our problems; this will be in itself disruptive.
Incidentally - why that?
So - I believe that we should switch to using harfbuzz and freetype consistently everywhere. This would have the huge benefit of precise cross-platform font rendering and metric fidelity, give us a font and shaping stack that is fully introspectable, drop some legacy Windows API usage, and allow all development work and fixing on all platforms to share the same underlying code.
I think that promise cannot be kept. Let's evaluate the merit of switching to some truly great floss libraries based on other aspects - you're not even getting consistent floating point math between different CPUs, let alone different operating systems...
There will of course also be some corner-cases where we may simply not be able to replicate the tangled old layout behaviour - which is (anyway) inconsistent across platforms - but - I think this is a one-off risk that is well worth taking to get us to a fully consistent, Free Software rendering stack. It is interesting that Microsoft also used freetype for their Office / Mac rendering in the recent past =)
Oh - got some reference for that? Since I guess for most complaints about layouting problems I hear about, it's the different between MSO and LibreOffice, rather than between LibreOffice on different platforms. ;) Cheers, -- Thorsten
Attachment:
signature.asc
Description: Digital signature