One thing I've realized in my type design journey is how tricky it is to prevent little errors. Be it an inconsistency in spacing, a random glyph not quite sitting on the baseline, an odd curve, there's so much room for things to go wrong unnoticed. This is becoming most apparent in a typeface family that I've been working on for almost a year, mainly because I might still make systemic changes later in the process, which then get implemented inconsistently. For instance, I tightened up the spacing considerably, and am now finding tons of little errors in the spacing of diacritical characters.
I'm using FontLab, which has FontAudit for finding inconsistencies in the actual drawing quality, but this doesn't help kerning, metrics, or glyphs that may be drawn just fine but have a subjective error which the software doesn't recognize as such.
So, how do you folks handle this? Is there a smarter way to go about things than "look closely at every single glyph in every single master, and then again at every single glyph in context"? Any quality control tips and discussion are welcomed!
1
Comments
Kerning though... ugh. I built big kerning classes to start with. And one trick I use is to separate accented lowercase from their unaccented compatriots in separate classes, because otherwise I have issues in cap-to-lowercase combinations.
@Vassil Kateliev took over the kerning though—have to let him explain his process. IIRC it involved URW KernMaster plus the classes I had already built.
The automated testing is done with a program called Collidoscope, but this may not be too interesting for non-Nastaliq. The semi-automated testing may be interesting, because it uses a pattern language to create the test strings. For example:
This will produce every single possible string made up of zero-to-three character combination of glyphs with dots above or below followed by one of the tricky end characters, then every possible string of zero-to-three characters with kasras or dots below followed by the tricky end characters, and then every possible sequence of isolated letter followed by one-to-three characters with dots below - those three rules produce 5509 strings in all. (My font correctly renders 4208 of them, which is a bit annoying.)
The software behind that is Stringbrewer.
It can also help you to adjust your design process in the future, even the way you draw stuff. I always try to get as far as possible without kerning and only kern when there’s no other way around. And this is in fact not about kerning, it’s about getting everything else. Treating drawing and spacing and proofing as once process (which it in fact is) really helps to get more consistency from the beginning. Also, contextual alternatives are underrated as well as narrow marks for accented i’s. It may seem like it adds more characters to manage, but it minimizes other work and potential problems.
@Alex Visi I've been trying to automate as much as my font editor allows me, but I know I'm not utilizing every option. Are you also talking about custom scripts and the like? If so, where do you get started with those?
One of the resources that I have found more precious to stay on track for the most important glyphs, to decide what to prioritize, is Microsoft Typography’s "Character Design Standards”. From there, you can deepen your knowledge on specific glyph designs, but it is a great resource.
Here are a few useful resources for learning python in type-related context:
https://pythonfordesigners.com/
https://www.drawbot.com/
https://glyphsapp.com/learn/scripting-glyphs-part-1
https://robofont.com/documentation/building-tools/
On Windows, IIRC FontLab offers to install Python when you install FontLab.
http://pythonfordesigners.com/
are mostly about Python 3.