googlefonts / oxidize

Notes on moving tools and libraries to Rust.
Apache License 2.0
173 stars 7 forks source link

benchmarking rust subsetting against hb-subset #27

Closed cmyr closed 2 years ago

cmyr commented 2 years ago

As of late this week I have codegen working for all of the compilation types in GPOS, and I'm ready to start thinking about the 'demonstration subsetter' discussed in #20.

Basically: we want to choose some task that is representative of the work of subsetting, but which will involve a modest subset of the work involved in a full implementation.

My current plan is to focus on only subsetting the GPOS table, and then comparing the output and the runtime to what is produced by HarfBuzz.

I think it might make sense to schedule a quick call and talk about this? I have various questions about things like constructing the subset plan, and how we might reduce scope, but it would be helpful to have input from someone with more knowledge of the HarfBuzz subsetter.

In any case I'm going to spend next week working on porting the repacker, since that's something we're going to need regardless.

rsheeter commented 2 years ago

For non-work reasons I'm out until July 12. I think @garretrieger could help pick some representative subsetting scenarios, and comment on whether GPOS only is sufficient or if we really need GSUB for an interesting comparison.

As of late this week I have codegen working for all of the compilation types in GPOS

Awesome, when I'm back I want you to walk me/us through how to use all the new toys (bearing in mind some of us don't yet speak Rust)

cmyr commented 2 years ago

Sounds good, I'll reach out to garret to talk through some of the details, and we can catch up in July.

garretrieger commented 2 years ago

Yes, happy to chat about this. Some initial thoughts:

garretrieger commented 2 years ago

FYI here's the set of fonts we currently include in the hb benchmark suite: https://github.com/harfbuzz/harfbuzz/blob/main/perf/benchmark-subset.cc#L22

These were picked to cover several interesting subsetting scenarios (eg. complex GSUB/GPOS, large character counts, simple GSUB/GPOS, CFF vs glyf)