> Thanks. Do you have meanwhile found an explanation why o-tilde looks
so bad for Times New Roman at 16ppem?
All 4 letters in each row have a different approach:
õ: vertical stretch, no segment removal
ñ: no vertical stretch, segment removal
ã: vertical stretch and segment removal
all other tildes: no changes applied
Actually, I tried the o tilde character again with no adjustments and it looked the same. In this case, the vertical stretch wasn't enough to fix the issue.
> Sounds good. Unfortunately, I'm a bit short of time right now; I'll
think about your algorithm within the next few days. However, please
proceed anyway!
I implemented the algorithm for all glyph variants! The version I used is different from what I wrote originally to fix some errors. Here's the current version:
results is now a global set of glyphs instead of an argument to the function. It initially starts empty
fs is a global set of features, also initially empty
all other definitions are the same
func all_glyphs(codepoint c)
{
result = result ∪ lookup(c, fs)
foreach (feature f ∈ (features - fs)) //for all features not already in fs
{
new_glyphs = lookup(c, fs ∪ f) - result
if (new_glyphs != ∅)
{
result = result ∪ new_glyphs
fs = fs ∪ f
all_glyphs(c)
fs = fs - f
}
}
}
I've only tried it on a pretty simple case so far, so I'll need to assemble a more complex test font or two.