Comment 18 for bug 327757

Revision history for this message
Peter Hendrickson (pdh-wiredyne) wrote :

Fontconfig is the culprit. Evince calls Popper which calls FcFontSort in libfontconfig to find the font most similar to "Courier." The first font it gets is "Nimbus Mono L", "Bold Oblique". The right font is actually the next one, "Nimbus Mono L", "Regular".

I see this on "Hardy Heron" as well as "Intrepid Ibex." The problem is not visible in Evince or Poppler on "Ibex", probably due to extensive changes in Poppler. It may affect anything that calls libfontconfig, however. On "Heron", I hard wired Evince to choose the second font and everything worked perfectly.

I've attached a code fragment (fchello.c) modelled on the part of Poppler calling libfontconfig. To compile it do:
cc -c -o fchello.o fchello.c
cc -o fchello fchello.o -lfontconfig

The first lines of output look like this:
> 0: "Nimbus Mono L", "Bold Oblique", "/usr/share/fonts/type1/gsfonts/n022024l.pfb"
> 1: "Nimbus Mono L", "Regular", "/usr/share/fonts/type1/gsfonts/n022003l.pfb"
> 2: "Nimbus Mono L", "Bold", "/usr/share/fonts/type1/gsfonts/n022004l.pfb"
> 3: "Nimbus Mono L", "Regular Oblique", "/usr/share/fonts/type1/gsfonts/n022023l.pfb"
> 4: "DejaVu Sans Mono", "Book", "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf"

Note that "fc-match Courier" does the right thing (see above) even though this way of calling
libfontconfig does the wrong thing.

This is the "Ibex" release I tested:
> Description: Ubuntu 8.10
> Release: 8.10

This is the version of libfontconfig:
> libfontconfig1:
> Installed: 2.6.0-1ubuntu4
> Candidate: 2.6.0-1ubuntu4
> Version table:
> *** 2.6.0-1ubuntu4 0
> 500 http://us.archive.ubuntu.com intrepid/main Packages
> 100 /var/lib/dpkg/status

This is the "Heron" release I tested:
> Description: Ubuntu 8.04.2
> Release: 8.04

This is the version of libfontconfig:
> libfontconfig1:
> Installed: 2.5.0-2ubuntu3
> Candidate: 2.5.0-2ubuntu3
> Version table:
> *** 2.5.0-2ubuntu3 0
> 500 http://us.archive.ubuntu.com hardy/main Packages
> 100 /var/lib/dpkg/status