jida...@jidanni.org writes:

> Is there something I can do in .xpdfrc to work around this?
> Is there something I can do as a Debian user?
> Is there a different way to read such pdfs on Debian?
> Do you all just use Adobe to read them?
>

You can apply this patch to poppler.  This will affect all fonts
rendered in xpdf.

--- a/poppler/CairoFontEngine.cc
+++ b/poppler/CairoFontEngine.cc
@@ -174,7 +174,6 @@
     return gFalse;
 
   font_face = cairo_ft_font_face_create_for_ft_face (face,
-							  FT_LOAD_NO_HINTING |
 							  FT_LOAD_NO_BITMAP);
   if (cairo_font_face_set_user_data (font_face,
 				     &_ft_cairo_key,
@@ -324,7 +323,6 @@
   _ft_open_faces = l;
 
   l->font_face = cairo_ft_font_face_create_for_ft_face (tmpl.face,
-							  FT_LOAD_NO_HINTING |
 							  FT_LOAD_NO_BITMAP);
   if (cairo_font_face_set_user_data (l->font_face,
 				     &_ft_cairo_key,
In fact Freetype2 had developed a heuristic based on the font name to
detect broken 'dyn' fonts and turn on bytecode interpreter accordingly.
But this method will fail on many PDFs because the embedded fonts often
have their name mangled.

IMHO there are some possible solutions:

 1. Turn on/off hinting by config via application or environment
    variable or X resources, etc.

 2. Improve the Freetype2 heuristic to better detect the broken fonts
    and let poppler rely on it.

 3. Maybe it's possible to allow a subset of bytecodes that only apply
    on broken fonts without interfering normal fonts?  Dunno, have to
    ask freetype gurus.

- Kanru
-- 
A badly written book is only a blunder. A bad translation of a good
book is a crime.
                -- Gilbert Highet

Reply via email to