googlefonts / googlefonts/fontc

backend feature compile can be a long pole

Open
#456 7 comments 0 reactions 0 assignees View on GitHub
performance
Dominant language
Rust
Stars
193
Forks
21
Avg merge
1d 20h
Merged PRs (30d)
60

Description

#443 reveals features can be the long pole. There are two non-exclusive options to improve this:

1. Make it faster
* We write fea for content (and soon marks) for fea-rs to parse; we could build some other form, e.g. the AST, directly
1. Make it parallel
* The more cores you have the more fea-rs pops out as long pole (ref #443)
* Could we break up the compile, for example process GSUB and GPOS separately?
* Requires splitting up things like `feature foo { pos a b -5; sub x by y; }` (courtesy of @cmyr)
* Some parts, e.g. classes, are common

We should start by profiling. flamegraphs of the overall build are fairly noisy, perhaps we can rig fea-rs to be run on just the debug feature file?

```shell
$ rm -rf build/ && cargo run -p fontc -- --source ../OswaldFont/sources/Oswald.glyphs --emit-debug
# produces build/debug/features.fea which is the complete combined feature file
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.