Repository navigation
2.011
A maintenance, docs, and minor performance update, and the one where Cal Sans Flex becomes an upgraded font. Its letterforms now morph along GEOM on hidden avar2 axes. Where avar2 is not supported, they still switch forms in a similar way to Cal Sans does, and then some.
Cal Sans Flex
Flex now uses true higher-order interpolation: every point travels one smooth curve through each blend, carried by three hidden axes that avar2 drives from GEOM. As an example, InDesign 2026 does not support Avar2 or this HOI function at all.
- Smooth curves. Each point moves along one continuous curved path from the start of a blend to its end.
- More Axes for more fun.
GEOMwith it’s numbered, support siblings:GE1M,GE2M, andGE3M. These may not show up everywhere because they’re hidden. - More letters blend: λ (along with y), and a and l on their A11y side instead of switching, plus the superior and inferior sixes and nines.
- Smoother tails. 6, 9, y and ȷ no longer pinch, notch or bulge partway through the blend.
- Accented letters follow their base through the blend, so Í Ī Į IJ, Ç Ć Č, ĵ ij and the rest no longer crowd their neighbors.
- Falls back cleanly. A renderer without
avar2shows each drawn form and switches at the usual points, the way Cal Sans does. - Be a trailblazer! This is experimental, and your milage may vary.
Cal Sans Phlex
New alongside Flex in the repo’s fonts/calsans-var-flex: Cal Sans Phlex, the same blends built a different way. Phlex uses pre-composed, automated drawings to rough out the curve, using intermediate masters along GEOM itself, so it needs nothing but a variable-font renderer. This is quasi-linear, quasi-higher order approach known as “Piecewise Interpolation.” As Flex is not supported in InDesign 2026, Phlex does work. It’s hacky, what can I say.
- Blends everywhere. No
avar2required: Phlex morphs in any app or browser that supports variable fonts. - Lighter: 2.1 MB
.ttf/ 413 KB.woff2, a third smaller than Flex.
Fixes
- Kerning (#46): “di” and “li” no longer open up in the bold masters. A
ďivalue had leaked onto the wholelgroup (+190 to +240 units); it now applies toďionly. The source is fixed too, not just the binaries. - Accented widths at
SHRP100: accented letters now match their base letter’s width and accent position at everySHRPvalue. ý was 18 units wider than y atopsz10. - ĺ uses the case acute in both forms, so its accent keeps its shape when the l switches at A11y.
- Accents on ascenders use the case forms. Typed accents on b d h k l (ḱ, or l followed by a combining acute) now match the precomposed ĺ and ĥ, and k’s accent sits over its stem.
- Accents follow
YTAS. On b d h k l they rise as far as the ascender does. On x-height letters (á é ó …) they rise half as far, so they stay close to the letter. Cal Sans Flex does this automatically at small optical sizes. - l redrawn to match its A11y form, with ŀ following, and the ss19 l family’s accents placed properly.
- ” in italic (
quotedblright) interpolates cleanly again. Two of its contours were swapped on the Display Regular Italic master. Thanks to @emmamarichal for spotting it.
Documentation
Static instance names are now documented. fonts/README.md lists all 384 static instances, shows each family and optical tier, and explains how to choose between Display, Text and Micro:
| opsz 45 | |
| Text opsz 10 73% looser | |
| Micro opsz 8 86% looser |
Files
| File | Contents |
|---|---|
CalSansVF |
Cal Sans, every axis |
CalSansFlexVF |
Cal Sans Flex |
calsans-static-essentials.zip |
The everyday static cuts |
calsans-static-full.zip |
All 384 static instances |