16 comments

[ 3.7 ms ] story [ 55.6 ms ] thread
How does this compare to harfbuzz?
HarfBuzz is more complete (supports more scripts) and higher performance (we assume, haven't benchmarked yet), but the large C++ codebase can be a little intimidating to dive into. We plan to extend Allsorts to reach feature parity with HarfBuzz, so it will be an interesting comparison of tackling a complex problem in Rust!
This would certainly be beneficial for the XeTeX "oxidation" efforts[1] for fonts parsing and shaping[2]. There is also a number of existing alternatives: font-kit[3], Skribo[4], RustType[5], ttf-parser[6]. Some of them are just parsers, some - font shapers. Still all of them are relevant to the subject.

[1] https://github.com/crlf0710/tectonic

[2] https://github.com/crlf0710/tectonic/issues/117

[3] https://github.com/servo/font-kit

[4] https://github.com/linebender/skribo

[5] https://gitlab.redox-os.org/redox-os/rusttype/

[6] https://github.com/RazrFalcon/ttf-parser

Great to see more work in this space. Diversity of font parsing and shaping engines is important to make sure the ecosystem doesn't become reliant on bug-for-bug compatibility with the existing engines. (It's dangerously close already, due to the quirks of DirectWrite, GDI, and FreeType.)
Yes, this was definitely part of the motivation for embarking on this project.
Yeah! This was a big reason why we've invested in funding the work on https://github.com/n8willis/opentype-shaping-documents/ - hopefully this makes the barrier to entry to building font shaping engines a little lower for newcomers, and gives us a place to document findings, separate from any single implementation.
Have any bugs been discovered and reported in the other implementations due to this work?
Not bugs per se, but a couple of improvements were fed back to HarfBuzz's Indic shaper.

The first was a minor optimisation to the final reordering of pre-base matras; the second was an adjustment to the output of the Indic table generator.

I'm curious about why they decided to develop Allsorts instead of just using Harfbuzz.
I used Prince for everything I wrote in grad school. A truly beautiful PDF maker. It's cool that they're releasing part of it.