Skip to content

Add FontReader for on-demand glyph loading - #422

Merged
cmyr merged 1 commit into
mainfrom
ufo-reader
Oct 2, 2026
Merged

cmyr merged 1 commit into
mainfrom
ufo-reader

Conversation

@cmyr

@cmyr cmyr commented Sep 29, 2026

Copy link
Copy Markdown
Member

We now have ufoz support in norad, but it isn't usable from fontc because fontc manually parses layer contents and loads glyphs off of disk, so that we can do things in parallel.

This patch is an attempt to provide an API that lets fontc load glyphs individually and in parallel, in such a way that we can also transparently serve glyphs from ufoz archives.

This introduces a bit of new public API, which I've marked as #[doc(hidden)], and will not consider public for the purposes of semver, until I've actually landed a patch in fontc and confirmed the API is what we want.

Font::load parses every glyph of every requested layer up front. Some
users (fontc) want the layer and glyph index up front but want to parse
glyphs themselves, per glyph, on their own threads, and want that to
work the same for a UFO directory, a ufoz and any other FontSource.

FontReader reads metainfo.plist, layercontents.plist and each layer's
contents.plist when opened; LayerReader then parses one glyph at a time.
Font::load_requested_data and Font::load_from_source are now built on
the same index, so there is one loading path.

@anthrotype anthrotype left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@cmyr
cmyr merged commit 0794ff0 into main Oct 2, 2026
5 checks passed
@cmyr
cmyr deleted the ufo-reader branch October 2, 2026 23:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants