googlefonts / googlefonts/fontc

Store variable axes, advance widths in separate IR files for more granual incremental build

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

Description

When building HVAR in #490, we run the fontbe task any of StaticMetadata, or the glyph order or the glyphs themselves have changed:

```rust
workload.change_detector.static_metadata_ir_change()
|| workload.change_detector.glyph_order_ir_change()
|| !glyphs_changed.is_empty(),
```

The static metadata contains the variable axes defintions and the global VariationModel, if those change all variable tables, including HVAR need to be rebuilt.
The glyph order determines the order of the variation indices in the HVAR VarStore and DeltaSetIndexMap.
Finally, the glyph IRs store the actual advance widths which of course are required to build HVAR.

The static metadata also contain other things that are unrelated to glyph advance width variations, similarly the glyphs contain outlines definitions or even unicode mappings that have nothing to do with advances. Any changes there will trigger a needless rebuild.

If the variation axes and/or the glyph advances were stored in separate IR files we could be more granual and only rebuild HVAR when these specific pieces of data change.

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.