Comment 22 for bug 26118

Revision history for this message
Marciano Siniscalchi (msiniscalchi) wrote : Re: [Bug 26118] Re: Bad rendering (hinting) in Evince and Xpdf

For the record, the fix that works for me is to change the
#ifdef...#else...#endif block beginning at line 179 of file
SplashFTFont.cc as follows:

  // if we have the FT2 bytecode interpreter, autohinting won't be used
  // MS: actually, disregard bytecode setting, as it yields poor results anyway
// #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
// if (FT_Load_Glyph(ff->face, gid,
// aa ? FT_LOAD_NO_BITMAP : FT_LOAD_DEFAULT)) {
// return gFalse;
// }
//#else
  // FT2's autohinting doesn't always work very well (especially with
  // font subsets), so turn it off if anti-aliasing is enabled; if
  // anti-aliasing is disabled, this seems to be a tossup - some fonts
  // look better with hinting, some without, so leave hinting on
  if (FT_Load_Glyph(ff->face, gid,
      aa ? FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP
                       : FT_LOAD_DEFAULT)) {
    return gFalse;
  }
//#endif

[sorry if I don't generate a patch---I still haven't learned how to do so...]

In other words, I force autohinting off if anti-aliasing is enabled,
regardless of whether or not Freetype was compiled with the bytecode
interpreted on (which, in Ubuntu, it is).

Notice that this compile-time checking that poppler does explains why
this bug is hard to trace. Even if you recompile Freetype without the
BC on, it still won't matter, as poppler is compiled against the
"standard" Ubuntu distribution with BC enabled.

M

--
Marciano Siniscalchi