Alpha version of RobotoFlex made with avar2 data. (work in progress)
- File Size Comparison
- Current folder structure
- fonts
- source
- The designspace and variable font builder
File | glyphs | file-size | bytes per glyph |
---|---|---|---|
RobotoA2-avar2-VF.ttf | 1,042 | 476 | |
RobotoFlex[...].ttf | 948 | 1,885.33 |
1,885.3291139241/476.072 = 3.96x smaller
476.072/1,885.3291139241 = 25.25140022%
RobotoA2
├── docs/
├── fonts/
├── OFL.txt
├── source/
├── README.md
├── requirements.txt
├── tools/
- Fonts
- This folder contains variable font binaries for testing, in subfolders for different stages of the project.
- Source
- This folder contains various source files used to design and build the variable fonts. Source files include UFO font sources, designspace files, Python scripts, as well as additional text files with data for glyph sets, glyph constructions, measurements, parametric blends, and fences.
- docs
- This folder is meant to contain font proof tests.
The Fonts folder currently contains two subfolders which correspond to different development stages of the project.
Fonts
├── AsciiAlpha/
├── LGCAlpha/
├── TechAlpha/
- AsciiAlpha
- Our second (successful) attempt at building an avar2 font, ascii only.
- LGCAlpha
- THIS contains the latest WIP fonts.
- TechAlpha
- Our first (failed) attempt at building an avar2 font.
⚠️ These files are no longer useful and can probably be archived in a branch.
AsciiAlpha
├── RobotoA2-avar1-VF.ttf
├── RobotoA2-avar2-VF.ttf
└── RobotoA2-avar2-fences-VF.ttf
- RobotoA2-Roman_avar1.ttf
- Variable font in avar1 format. Blended axes are created by instantiating their extrema from parametric axes, and inserting them into the designspace as sources.
- RobotoA2-Roman_avar2.ttf
- Variable font in avar2 format. Blended axes are created by defining mappings from parametric axes to extrema input values.
- RobotoA2-Roman_avar2_fences.ttf
- Attempt to build an avar2 font with “fences” to restrict the limits of parametric values at blended extrema locations.
⚠️ The added fences work at the default location, but not at the blended extrema.*
* see Implementing fences
LGCAlpha
├── RobotoA2-avar2-VF.ttf
└── RobotoA2-avar2-fences-VF.ttf
- RobotoA2-avar2.ttf
- Variable font in avar2 format. Blended axes are created by defining mappings from parametric axes to extrema input values, **with fencing mappings**
- RobotoA2-avar2-no-fences.ttf
- Variable font in avar2 format. Blended axes are created by defining mappings from parametric axes to extrema input values, **without fencing mappings**
Just like the Fonts folder, the Sources folder contains subfolders which correspond to different stages of the project:
Source
├── TechAlpha/
└── Parametric-avar2/
- TechAlpha
- Sources in the TechAlpha folder were derived from the original RobotoFlexavar1 parametric sources. A measurements file in JSON format is included, as well as the original extrema sources in a subfolder. With the exception of the `extrema` sources and the measurements file (which are used in the initial blends calculation, see below), all other files are no longer useful and can probably be archived in a branch.
- Parametric-avar2
- Sources in the Parametric-avar2 folder were recreated from a revised default. These are the current WIP files.
- tools
- This folder collects various small scripts which were used during development of TechAlpha and/or Parametric-avar2 sources. Most of them are no longer needed. The most relevant ones are listed below.
Folder containing source files, designspace, and features.
Roman
├── *.ufo
├── measurements.json
├── blends.json
├── fences.json
├── features
│ └── *.fea
├── instances
│ ├── RobotoA2-opsz8.ufo
│ ├── RobotoA2-opsz144.ufo
│ ├── RobotoA2-wdth25.ufo
│ ├── RobotoA2-wdth151.ufo
│ ├── RobotoA2-wght200.ufo
│ └── RobotoA2-wght800.ufo
├── RobotoA2-avar2.designspace
└── RobotoA2-avar2-no-fences.designspace
- *.ufo
- Font sources in UFO format, with files named according to their variation parameters.
- measurements.json
- Standalone JSON file containing definitions for various font- and glyph-level measurements. Created using the Measurements tool from the VariableValues extension. See Measurements format for documentation of the data format.
- blends.json
- Standalone JSON file containing definitions of blended axes and blended sources from parametric axes. This data is used to build the avar2 designspace.
- fences.json
- Standalone JSON file containing definitions of min/max fence values for parametric values at blended sources. This data is used to add mappings for fences to the avar2 designspace (experimental).
- features
- Subfolder with files containing OpenType code which can be linked to the source fonts. Currently not used when building the variable fonts.
- instances
- Subfolder containing instances generated from the parametric sources, which are used to add blended axes to the avar1 designspace. Also useful for comparison with the original RobotoFlex var1 sources for blended extrema.
- RobotoA2-avar2.designspace
- Designspace for building avar2 variable font. Includes avar2 mappings which define blended sources from parametric values.
- RobotoA2-avar2-no-fences.designspace
- Designspace for building avar2 variable font. Does not includes avar2 fencing mappings, so we can see the parametric axes’ full range
- Scratch folder
- Parametric axis from RobotoFlex public version.
* All variable fonts are built into the Fonts/LGCAlpha
folder.
A selection of production scripts which are worth mentioning:
- glyphConstruction folder
- Contains all the glyphconstruction recipes by script
- copyGlyphsToSources.py
- Copy base glyphs from the default to the parametric sources.
- fixGlyphs.py
- Used make miscellaneous fixes needed glyphs on all the defined sources.
- getRecipe.py
- Used to get the current glyph construction recipes, without anchors.
- mark-components.py
- Mark glyphs in the current font containing components with different colors depending on their components' nesting level.
The different Variable Fonts are built by a single build-RobotoAvar2.sh
shell script.
First make virtualenv.
virtualenv tools/robotoflexA2-env
Then install dependencies.
source tools/robotoflexA2-env/bin/activate
pip install -r requirements.txt
deactivate
Finally build Variable Fonts.
sh source/Parametric-avar2/build-RobotoAvar2.sh