This repository provides documentation, resources, and test fonts for avar2. To read more, please visit the documentation website and the official specification.
These test fonts cover the major use cases of avar2:
- Distort the design space to accurately represent the type designer’s artistic vision
- Set fences in the design space to restrict ugly zones
- Support higher order interpolation (HOI) / nonlinear interpolation (NLI)
- Blend axes together to simplify controls for end users
Information about the test fonts is included below.
The variable test fonts offer comparisons between current avar1 implementations and new avar2 implementations.
- TestFont[opsz,wdth,wght].ttf The main test font that other test fonts build upon. Includes the letters
H,L, andTacross width and weight axes. The plain base example for variable fonts. - TestFontAvar1[opsz,wdth,wght].ttf A default design space applied to the main test font, implemented with avar1.
- TestFontAvar2[opsz,wdth,wght].ttf The same default design space applied to the main test font, implemented with avar2.
- TestFontFencesAvar2[opsz,wdth,wght].ttf Design space fences, implemented with avar2.
- TestFontOpticalSizeAvar2[opsz,wdth,wght].ttf An optical size axis that manipulates the width and weight axes, implemented with avar2.
The following fonts are similar to the ones above, except the base test font is different. Instead, the Alternate Glyphs test font only has the letter H, which is swapped with H.compressed in condensed widths.
- AlternateGlyphs[opsz,wdth,wght].ttf
- AlternateGlyphsAvar1[opsz,wdth,wght].ttf
- AlternateGlyphsAvar2[opsz,wdth,wght].ttf
- AlternateGlyphsFencesAvar2[opsz,wdth,wght].ttf
- AlternateGlyphsOpticalSizeAvar2[opsz,wdth,wght].ttf
The following fonts test rotation:
- LinearRotation[ZROT].ttf linear rotation with the letter
Hand theZROTRotation in Z axis range between 0-90. - QuadraticRotation[AAAA,BBBB,ZROT].ttf HOI/NIL quadratic rotation with the letter
Hand theZROTRotation in Z axis range between 0-90. Includes intermediate hidden axesAAAAandBBBB.
- TestFont.glyphspackage The main test font that other test fonts build upon. The plain example for variable fonts.
- Config
config-test-font.yaml - 9 masters for width and weight variations
- 3 letters
H,L, andT
- Config
- AlternateGlyphs.glyphspackage A variation of the main test font made for switching shapes / alternate glyphs / glyph replacements.
- Config
config-alternate-glyphs.yaml - 9 masters for width and weight variations
- 1 letter
HwithH.compressedfor condensed widths - The
variable-font-substitutions.feaadds the OpenType Features to switch the glyphs, sincefontMakedoes not support Glyph’s Feature Condition Syntax AlternateGlyphsOriginal.glyphspackagecould not be used, sincefontMakedoes not support Glyph’s corner components.
- Config
- LinearRotation.glyphspackage A variation of the main test font
- Config
config-linear-rotation.yaml - 90 degree linear rotation
- Only supports the default weight
400and width100 - 1 letter
H
- Config
- QuadraticRotation.glyphspackage A variation of the main test font
- Config
config-quadratic-rotation.yaml - 90 degree quadratic rotation
- Only supports the default weight
400and width100 - 1 letter
H - The axis mapping is implemented with
avar2QuadraticRotation.designspace - Includes intermediate hidden axes
AAAAandBBBB
- Config
- avar1.designspace The default design space for
TestFont.glyphspackageandAlternateGlyphs.glyphspackage, implemented with avar1 - avar2.designspace The same default design space for
TestFont.glyphspackageandAlternateGlyphs.glyphspackage, implemented with avar2 - avar2Fences.designspace Design space fences for
TestFont.glyphspackageandAlternateGlyphs.glyphspackage, implemented with avar2 - avar2OpticalSize.designspace An optical size axis that manipulates the width and weight axes for
TestFont.glyphspackageandAlternateGlyphs.glyphspackage, implemented with avar2
To combine .designspace files with test fonts, use fonttools varLib.avar.build.
To fix axis bounds in test fonts, use ./scripts/fix-axis-bounds.py.
To rename fonts after making a new variation, use ./scripts/rename-fonts.py.
For examples, see the Makefile.