Home

Awesome

Glyph Nanny

Screen Shot

This tool provides live feedback about the technical quality of a glyph. It's designed to help both new designers and experienced pros:

New Designers

Did you just start drawing with beziers? Yeah, I totally agree. They are frustrating. This tool is designed to help you quickly see where problems are so that you can learn how to fix them and how to avoid them in the future. Keep in mind that the displayed notes and marks are generated by math and are not a definitive list of things that must be corrected. It's always (okay, not always) acceptable to break the rules as long as you have a good reason. Think of the comments as reminders to think through why you have things where they are.

Experienced Pros

Do you get super annoyed when things are perfectly straight or you have duplicated contours or other dumb accidents like that? Me too. You can use this tool to look for whatever things you want it to in real time so that you have to stop wondering "Is that segment straight?" and "Did I hit command-V twice?" Please open an issue if there are tests that you'd like to have added to the repertoire.

Usage

If you want to turn the display on or off, or edit the list of tests performed, look under Extensions > Glyph Nanny in the application menu.

Also located under Extensions > Glyph Nanny in the application menu is an option for testing an entire font.

Scripting

Glyph Nanny's tests are available through a scripting API that is accessible through the glyphNanny module.

API

registeredTests()

Returns a dictionary of all registered tests. The keys are the test identifiers and the values are dictionaries of data about the tests.

testGlyph(glyph, tests=None)

Test glyph and return a report in the form of a dictionary. tests is a lists of the test identifiers that should be executed. If tests is None all registered tests will be executed.

testLayer(layer, tests=None, ignoreOverlap=False, progressBar=None)

Test layer and return a report in the form of a dictionary. tests is a lists of the test identifiers that should be executed. If tests is None all registered tests will be executed. If ignoreOverlap is True a non-destructive "remove overlap" operation will be performed on the data that will be tested.

testFont(font, tests=None, ignoreOverlap=False, progressBar=None)

Test font and return a report in the form of a dictionary. tests is a lists of the test identifiers that should be executed. If tests is None all registered tests will be executed. If ignoreOverlap is True a non-destructive "remove overlap" operation will be performed on the data that will be tested.

formatGlyphReport(report)

Format a dictionary report into a string.

formatLayerReport(report)

Format a dictionary report into a string.

formatFontReport(report)

Format a dictionary report into a string.

Example

import glyphNanny

glyph = CurrentGlyph()
report = glyphNanny.testGlyph(glyph)
report = glyphNanny.formatGlyphReport(report)
print(report)

Versions

2.0.5

2.0.4

2.0.3

2.0.2

2.0

0.3

0.2

Minor bug fixes.

0.1

Initial version.