Closed probonopd closed 4 years ago
I have written a blog article about the "Font Mikado" process and tools used:
https://medium.com/@probonopd/font-mikado-making-a-libre-typeface-and-learning-a-lot-e5e200eead5b
After having played "Font Mikado" on all five weights, we need to do some consistency checking.
One of the rules for setting points from the Adobe black book is that one should be consistent in setting points. For me this implies that for every glyph, the number of points should be the same for each weight. There are some characters where this is clearly the case, but for "corner cases" it may not. So I need to compare the original and edited versions of all glyphs and see whether we have more than 2 different numbers of points across those; and if yes, inspect those glyphs more closely and apply the changes consistently.
# For each glyph in the font, count the number of lines in the glyph file
# across unedited and edited UFOs for all weights
GLYPHS=$(find font-leutkirch/ -name "*.glif" -exec basename {} \; | sort | uniq)
rm fonts.list || true
for GLYPH in $GLYPHS ; do
echo "$GLYPH" >> fonts.list
find font-leutkirch/ -name "$GLYPH" -exec wc -l {} \; \
| sed 's|font-leutkirch/Opened in OFF saved in LeMo||g' \
| sed 's| normalized/||g' \
| sed 's| and Font Mikado||g' >> fonts.list
echo "-------------" >> fonts.list
done
# Print out the problematic glyphs - ones where we have more than 2 different numbers of lines
# across all the observed UFOs
rm fonts.result || true
for GLYPH in $GLYPHS ; do
LINECOUNTS=$(grep /"$GLYPH" fonts.list | cut -d " " -f 1 | sort | uniq | wc -l)
if [ "$LINECOUNTS" -gt 2 ] ; then
echo "$GLYPH" >> fonts.result
echo "$LINECOUNTS" >> fonts.result
echo "-------------" >> fonts.result
fi
done
# Turns out we have 90 problematic glyphs:
# Glyphs where we have a different number of lines for the glyph across the different weights
# in the original and/or edited UFOs
Results in:
adieresis.glif
4
-------------
ae.glif
4
-------------
a.glif
4
-------------
alpha.glif
5
-------------
ampersand.glif
7
-------------
asciitilde.glif
4
-------------
at.glif
8
-------------
beta.glif
5
-------------
B_eta.glif
5
-------------
B_.glif
3
-------------
cent.glif
5
-------------
c.glif
3
-------------
C_.glif
3
-------------
dcroat.glif
7
-------------
d.glif
3
-------------
dollar.glif
9
-------------
edieresis.glif
5
-------------
e.glif
5
-------------
eng.glif
5
-------------
E_ng.glif
4
-------------
epsilon.glif
6
-------------
eta.glif
5
-------------
eth.glif
6
-------------
E_th.glif
3
-------------
f.glif
4
-------------
germandbls.glif
3
-------------
g.glif
7
-------------
G_.glif
4
-------------
hbar.glif
8
-------------
ij.glif
3
-------------
iota.glif
4
-------------
j.glif
5
-------------
J_.glif
4
-------------
m.glif
3
-------------
napostrophe.glif
4
-------------
nine.glif
3
-------------
oe.glif
4
-------------
omega.glif
3
-------------
onehalf.glif
5
-------------
ordfeminine.glif
4
-------------
oslash.glif
8
-------------
O_slash.glif
7
-------------
parenleft.glif
4
-------------
parenright.glif
4
-------------
percent.glif
3
-------------
p.glif
3
-------------
phi.glif
4
-------------
q.glif
3
-------------
Q_.glif
4
-------------
questiondown.glif
5
-------------
question.glif
6
-------------
registered.glif
6
-------------
R_.glif
4
-------------
rho.glif
5
-------------
R_ho.glif
3
-------------
section.glif
3
-------------
s.glif
4
-------------
S_.glif
5
-------------
sigma.glif
3
-------------
six.glif
4
-------------
sterling.glif
3
-------------
tbar.glif
3
-------------
t.glif
3
-------------
thorn.glif
4
-------------
threequarters.glif
3
-------------
tilde.glif
5
-------------
two.glif
3
-------------
uni00B_2.glif
5
-------------
uni03B_C_.glif
6
-------------
uni0412.glif
4
-------------
uni0417.glif
5
-------------
uni0419.glif
4
-------------
uni0421.glif
3
-------------
uni042D_.glif
4
-------------
uni042F_.glif
4
-------------
uni0430.glif
6
-------------
uni0431.glif
5
-------------
uni0432.glif
4
-------------
uni0435.glif
5
-------------
uni0437.glif
7
-------------
uni043B_.glif
3
-------------
uni0440.glif
4
-------------
uni0444.glif
3
-------------
uni0447.glif
4
-------------
uni044F_.glif
6
-------------
uni0451.glif
4
-------------
uni2117.glif
4
-------------
upsilon.glif
3
-------------
xi.glif
4
-------------
zeta.glif
4
-------------
"3" means that besides the number of glyphs in the original, I have 2 different numbers of glyphs in the edited version, hence I have some inconsistency across the weights. The higher the number, the more inconsistencies in the number of points across weights.
As we can see, the 8 (eight.glyph
) is not in this list because apparently I managed to end up with the same number of points across all weights for this glyph (indicating good consistency), which is as it should be. But unfortunately each character is as straightforward.
So I need to compare and rework the edited versions of those glyphs because apparently when playing Font Mikado I made different decisions when editing the different weights of the same glyph, resulting in an inconsistent number of points across weights.
Turns out that one can play “Font Mikado” using FontForge too, by selecting a point and then pressing Ctrl-M (“Merge”):
Implemented
Play "Font Mikado":
Add points at the extrema using the DTL LetterModeler Glyph Editor Improve tool
Then remove points that are not extrema, inflection points, or tangential points of curves using the DTL LetterModeler Glyph Editor Utilities, Delete point.
Before:
After:
This is a requirement so that we can apply "scale intelligent" afterwards without unintended side effects.
This is an example of what happens if this is not done: