mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-14 19:26:56 -04:00
For a name that is neither a loaded nor an installed family, FontDb::canonical built the list of names of every loaded face on every call. Layout asks for a style's face for each span it shapes and three more times per paragraph, so the time to lay out type set in a font that is not installed grew with the number of fonts loaded: a story of 1,000 paragraphs took a median of 409 to 507 ms in a release build with 400 fonts added. The database now keeps canonical's answer for each such name and style until fonts are added or rescanned, and it keeps at most 4,096 answers. The same story takes a median of 56 to 71 ms, and canonical gives the same answers as before. Docs: docs/target-app-parity.md.