Hacker News new | ask | show | jobs
by vitorsr 1250 days ago
Thanks. Yes, rendering and shaping are distinct but some of the linked libraries did one, the other, or both and the parent commenter singled out rastering which is how I ended up putting FreeType and HarfBuzz in the same sentence. Even then both are commonly used in tandem (see [1]-[9]) and have a few overlapping functionalities.

> it does support BiDi, complex script shaping

Hey, that is indeed quite good. Would you mind if I ask you how well is the support for popular Asian languages?

> linking C and Rust in WASM is unfortunately not really possible

Damn. I am not very experienced in Rust but I would not have guessed that. I apologize if I misrepresented difficulties related to targeting WASM.

[1] https://github.com/apple-oss-distributions/WebKit/tree/WebKi...

[2] https://github.com/apple-oss-distributions/WebKit/tree/WebKi...

[3] https://github.com/chromium/chromium/tree/main/third_party/f...

[4] https://github.com/chromium/chromium/tree/main/third_party/h...

[5] https://searchfox.org/mozilla-central/source/modules/freetyp...

[6] https://searchfox.org/mozilla-central/source/gfx/harfbuzz

[7] https://cs.android.com/android/platform/superproject/+/maste...

[8] https://cs.android.com/android/platform/superproject/+/maste...

[9] https://www.amazon.com/gp/help/customer/display.html?nodeId=...

1 comments

On the shaping side, support should be quite good as rustybuzz replicates harfbuzz results 1-1. (I think, it passes the whole test suite.) Regarding higher-level text layout: We have implemented BiDi, shaping, line breaking, reshaping, and font fallback to the best of our knowledge. (And I have been in the Harfbuzz and Chromium sources and bug trackers more than I can count while implementing it.) However, it's difficult to test as we can't catch many mistakes in the output that would be obvious to native speakers. This is something where we will need input from the community. Finally, there are also many specifics that we don't support yet like Kashida for Arabic or dictionary-based line breaking for Thai.