Skip to content

madig/Font-Set-Experiment

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Font Set Experiment

What would it look like if you designed a font source format with the following goals:

  1. Suitable for large font projects with multiple scripts moving at different speeds and with different scopes
  2. Trying hard to avoid Git merge conflicts by reducing their surface area
  3. Easier diffing for human eyes by structuring data in tables where it makes sense
  4. Avoiding data duplication where reasonably possible

A format aimed at font gardeners, or engineers, rather than font designers and design applications.

The General Idea

  1. Organize sources into disjoint sets, e.g. a Common, Latin, Cyrillic and Arabic set with a disjoint glyph set.
  2. Each set can contain arbitrary sources, e.g. Regular, Bold, Condensed Regular, containing the designed part of the design space
  3. Each source is roughly akin to a standalone UFO and will contain a default layer and any number of arbitrary other layers, just like a standalone UFO
  4. A layer in a source can have composites referencing glyphs from the same source or from the identically named source in a different set, e.g. the Cyrillic set regular "A-cy" can reference the Latin set regular "A". Glyphs in non-default layers can reference glyphs from the same non-default layer or from the default layer of the same source in any other set.
  5. Sets contain global glyph data like Unicode values, Postscript names, Unicode variation sequences, OpenType GDEF category, whether to export the glyph, etc. sources and layers can contain local data that may override some data higher up the chain.
  6. An integrated designspace file describes the design space like the Designspace v5 format does with continuous and discrete axes and instances.
  7. An external fontproject.toml file describes the products to be produced from the font set, which fonts to be assembled from which sets, which variable fonts are going to contain which axis subset, etc.
  8. An external tool has to "complete" the design space as appropriate for e.g. variable font compilation, e.g. if only a single .notdef glyph is present but you have 10 axes, the glyph may need to be copied into all places unless the tool produces deltas directly. E.g. a script that does not have italics, like Arabic, may require the compiler to copy the uprights into all Italic slots, taking into consideration that the Light uprights need to be copied to the Light italics and the Bold uprights to the Bold italics.
  9. Sources for design applications are generated by exporting sets to e.g. UFO or Glyphs.app formats. They are later imported into sets again.

About

What would it look like if you designed a font source format for font engineers?

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published