Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Allsorts: font parser and shaping engine implemented in Rust (yeslogic.com)
125 points by wezm on Nov 20, 2019 | hide | past | favorite | 16 comments


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.)


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.


Yes, this was definitely part of the motivation for embarking on this project.


So cool, I was going to ask what was the relationship with something like pathfinder [1], but you already addressed it in your github README.

Thanks for contributing in this space

[1] https://github.com/servo/pathfinder/blob/master/README.md


Cool. Are you in contact with the Runebender devs at all?

https://github.com/linebender/runebender


Yes, they’re in contact on https://xi.zulipchat.com/.


Yes, we've been in touch, and I'm really excited to see this.



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.


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!


I'm curious about why they decided to develop Allsorts instead of just using Harfbuzz.


pcwalton captures it pretty well in a comment above: https://news.ycombinator.com/item?id=21580718 that and wanting to have an implementation in a memory safe language that might prove useful to others.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: