googlefonts / ufo2ft

A bridge from UFOs to FontTools objects (and therefore, OTFs and TTFs).
MIT License
151 stars 43 forks source link

Add dotted circle filter #593

Closed simoncozens closed 2 years ago

simoncozens commented 2 years ago

Google Fonts' fontbakery tool has recently made it mandatory for fonts supporting complex scripts to contain a dotted circle (U+25CC) glyph, and for this glyph to have appropriate anchors for all attachable marks.

This is a boring job to do manually, and both the drawing and the anchor positioning can be automated.

This PR introduces a filter which can be called at font build time (--filter "ufo2ft.filters.dottedCircleFilter::DottedCircleFilter(pre=True)") which checks for the presence of a dotted circle glyph, adds one if there is not one present, computes average anchor positions for attaching anchors and adds any missing anchors to the dotted circle glyph.

Example:

$ fontmake -o ttf -g src/NotoNastaliqUrdu.glyphs --filter "ufo2ft.filters.dottedCircleFilter::DottedCircleFilter(pre=True,dots=10)"
...
$ shape master_ttf/NotoNastaliqUrdu-Regular.ttf '◌ِّ'
[uni25CC=0+727|ShaddaNS=0@-312,-97+0|KasraNS=0@-368,-164+0]

shape

madig commented 2 years ago

Very nice idea, but could use some tests! 😀 Plus docstrings.

simoncozens commented 2 years ago

I do plan to add some tests.

simoncozens commented 2 years ago

Good to go?