GitHub - GitBruno/VarFont: Re-rasterization-free variable-font morphing via a knot-lattice multilinear blend · GitHub
/" data-turbo-transient="true" />
Skip to content
Type / to search
Sign in<br>Sign upAppearance settings
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
GitBruno
VarFont
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
master
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>5 Commits<br>5 Commits
.github/workflows
.github/workflows
docs
docs
fonts
fonts
lib/imvarfont
lib/imvarfont
paper
paper
research
research
.gitignore
.gitignore
CMakeLists.txt
CMakeLists.txt
LICENSE
LICENSE
README.md
README.md
vcpkg.json
vcpkg.json
View all files
Repository files navigation
VarFont
~3× faster axis drags — ~0.23 µs/glyph on 13-axis Roboto Flex vs ~0.71 µs for FreeType re-instancing ·
4× fewer re-rasterizations per drag — 0.24 cell rebuilds per glyph render instead of a full re-instance every frame, with the glyph atlas left valid throughout ·
sub-pixel deviation from FreeType — max outline error 0.25 % em, mean per-pixel coverage error 0.08 % — numbers in the paper
Warning<br>The technique does not perform grid-fitting (hinting), so it offers no speed advantage at small text sizes where hinted rendering is required.
Dragging a variable-font axis usually re-instances every glyph and rebuilds the<br>atlas. This repo shows how to avoid that: knot-lattice morphing turns an<br>axis change into a cheap blend (and a GPU uniform update), with analytic<br>coverage that stays close to FreeType.
What you get here is the proof — the academic manuscript, numbers, and<br>harnesses that back the claim. Runtime GPU atlas / Face / morph live in the<br>product library ImVarFont (drop that<br>into an app).
Path<br>Purpose
paper/<br>Academic manuscript → paper.pdf, figures, citations
lib/imvarfont/<br>Vendored engine snapshot
research/<br>morph_probe, bench, figure tools
docs/<br>Implementation notes and benchmarks
Quick start
# Paper PDF (needs pandoc + tectonic — see paper/README.md)<br>make -C paper
# Validation / benches<br>cmake -B build -DCMAKE_BUILD_TYPE=Release<br>cmake --build build --target morph_probe bench
Binaries land in research/. Workflows: research/README.md.
License
MIT — see LICENSE. Bundled fonts keep their own licenses.
About<br>Re-rasterization-free variable-font morphing via a knot-lattice multilinear blend<br>Resources<br>Readme<br>MIT license<br>Activity<br>Stars<br>0 stars<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report repository
Releases
Packages
Contributors
Languages
You can’t perform that action at this time.