Responsive lettering in SVG, export tools for RoboFont.
JavaScript Python HTML Other
Switch branches/tags
Nothing to show
Clone or download
LettError Better color conversion.
Update some prints for py3.
Sort for non-empty glyphs in new font before saving - looks cleaner.
Change import for boundsPen from robofab to fontTools. Bye robofab!
Bump version to 1.8.1
Should work on < RF3
Latest commit c14fdfc Mar 21, 2018

README.md

responsiveLettering

Responsive Lettering

Responsive lettering: scalable, interpolating vector shapes that can make themselves fit in a range of rectangles.

The python code consists of a couple of scripts to generate the SVG needed for responsive lettering. These are also included in the RoboFontExtension. All scripts are for RoboFont.

The www/ folder contains a working example. As it is loading .js and .json files it might be necessary to serve the files from a real server. When everything works it should look something like this.

The www code depends on

  • jQuery, but probably not a very specific version
  • snap.js, a very handy library for manipulating SVG data.

All the vector data comes from json, so in theory it might be possible to rewrite all this without snap.js.

Robofont extension

RoboFont Extension

The RoboFont extension is a useful tool for previewing and exporting vector work in a UFO to mathshape data. It can also be installed director from RoboFontMechanic.

Export to Designspace

Variable font generated from a responsive lettering project exported to designspace Version 1.7 introduces a simple export to designspace with separate master UFOs, which is useful if you want to generate a variable font from the data using Batch. The exporter makes some assumptions about the glyph names in the source file. These are valid glyphnames (depending on the model):

  • narrow-thin
  • wide-thin
  • medium-thin
  • narrow-bold
  • wide-bold

The script checks the font.lib entry at com.letterror.mathshape.designspace for information about the designspace topology. If you worked from a template generated with this extension then the settings are probably right. If there is no entry in the lib the script assumes a twobytwo designspace.

  • twobytwo: two axes, four masters
  • twobyone: one axis, two masters
  • threebyone: one axis, three masters

Credits

Ideas and code very much in debt to Jeremie Hornus, Nina Stössinger, Andrew Johnson, Onur Yazıcıgil, and Nick Sherman.

License

The Responsive Lettering package is published under the BSD-3 license.