Tweak CFF hinting after font file has been produced

I'm investigating why some OTF fonts render fuzzy on Windows 7. A TTF version looks crisp, yet OTF is rendered a little fatter.

I know DirectWrite on these older Windows has it's problems, but I want to see if there's anything I can influence in the font itself to make it look a little better. Playing with the "blue values" in the generated font doesn't seem to make any visual difference (admittedly I only just now learned about them so this might be obvious). Are these only used while generating the font and simply stored as metadata? I understand CFF hinting is done in the rasteriser, but is there anything you can influence from the font itself?


  • Thomas Phinney
    As best as I recall....

    > I'm investigating why some OTF fonts render fuzzy on Windows 7.

    Only some? If so, it may be that they are unhinted? Or could you be seeing different behaviors in different apps, depending on which Windows rendering API they use?

    I understand CFF hinting is done in the rasteriser

    No, normally Windows 7 uses the hints in the font.

    That said, CFF hints are much simpler than TTF instructions, and hence you are more limited in how you can affect that rendering. Also, the rasterization model used for CFF on Windows 7 is just less sophisticated than (no ClearType applied).

    Mostly, you can either hint major strokes, or not. Unhinted outlines will render more fuzzy on Windows 7, if I recall correctly. 

    You could also use Vstem and Hstem values to tell the rasterizer what the primary stroke thicknesses are in the font and aid rendering. You could "lie" about these numbers and make them a bit lighter than the real numbers. I doubt it's worth it. With CFF on Win 7, this would likely mostly affect rendering at relatively large sizes. We are talking full pixels here for stroke thickness and hinting. So most likely

    Blue Values are used to determine where to enforce overshoot control (at lowish ppem sizes). Nothing to do with "fuzziness."
  • Roel Nieskens
    Thanks for the thorough answer, Thomas. Turns out the font was unhinted indeed. I didn't know how to determine that for CFF fonts, but your answer turned me in the right direction. Next on my todo: pull this font through a CFF autohinter to see the difference.

    To clarify, I was looking at fonts used as webfonts in Internet Explorer, not in other apps.