Serafettin, part one

August 13th, 2010 Paul Flo Williams Comments off

I’ve recently been triaging FontForge bugs on Fedora, and hit a problem with bug 600108, in which the latest version of FontForge crashes while building Serafettin.

I patched FontForge locally, so I could identify the glyphs that caused it to crash, but I’ve now come to the conclusion that Serafettin itself is the problem, and FontForge’s validation says as much, in these lines:

  • Two glyphs have the same name.
  • Two glyphs have the unicode.

I’ve never met these errors before. Sure enough, close examination of Serafettin reveals that there are three copies of some of the glyphs in the font, with the same name and Unicode point. Now that Orcan has given me access to the Subversion repository, I’m currently working on removing the incorrect copies of glyphs, before simplifying the outlines of the rest, to allow it to build again.

Categories: Fonts, Linux Tags:

Off-curve misrendering

July 7th, 2010 Paul Flo Williams Comments off

Adam Hyde came up with a question about a misrendering of a font on the FontForge Users’ mailing list. A colleague had designed a font in FontForge which looked fine except when used in Adobe Illustrator (of unspecified version). He provided two examples of characters whose shapes had developed distinct “ears”.

Peter Baker suggested that the common feature in this case was that the first point of the contours was not on the curve. My investigations proceeded along the same lines, and suggested that more than just these two characters were affected.

I’ve modified the supplied font, Transmediale, to suggest how I think Illustrator will render all of the characters that I think will be misrendered. I’ve shown the “ears” in the image below.
"Ears" in Transmediale

The fix is simple enough in this case, as the start point of the contours can be changed in FontForge.

A quick test suggests that DejaVu fonts may also be misrendered. We will see.

Categories: Fonts Tags:

The undervalued bool

June 16th, 2010 Paul Flo Williams Comments off

A colleague of mine wanted to reduce the repetition in this fragment of C++:

funcA(false);
funcB(false);
funcC(false);
funcD(false);
funcA(true);
funcB(true);
funcC(true);
funcD(true);

and, in a burst of sheer genius, came up with this solution:

for (bool status = false; status <= true; ++status) {
  funcA(status);
  funcB(status);
  funcC(status);
  funcD(status);
}

He then scratched his head as the program looped for eternity.

Who could have predicted that a common-or-garden bool could have so many values? Let me count them. The possible values of bool are false, snopes, statistically_significant, almost_true, true, very_true and tautology. ++tautology gives you tautology right back, as any fule kno.

Categories: Poor choices Tags: