missing dejavusansmono in rrdtool pango cairo fontconfig
Rainer Müller
raimue at macports.org
Wed May 2 14:15:45 UTC 2018
On 2018-05-02 12:44, macports at parvis.nl wrote:
> Macports installs fonts in /opt/local/share/fonts.
> This directory is seen only by fontconfig (defined in
> /opt/local/etc/fonts/fonts.conf).
> Most software uses cairo for advanced font handling and pango for the
> heavy-lifting in cairo. This is called pangocairo. rrdtool has '#include
> <pangocairo.h>'.
>
> Pango has a simple tool to show font examples:
> pango-view --backend=<backend> --text ' iiiiwwww ' --font
> 'DejaVuSansMono 36' # execute in XQuartz
I think this should be
--font 'DejaVu Sans Mono 36'
At least it only works for me with spaces when I manually install the
font to /Library/Fonts/DejaVuSansMono.ttf.
> Note that backend is for pango, not for cairo.
> With backend 'xft' or 'ft2' DejaVu shows fine.
> With backend 'cairo' the replacement is done ('cairo' is the default
> backend for pango, see pangocairo).
>
> The problem lies in cairo. If 'quartz' is enabled, 'fontconfig' is not used.
> The Portfile for cairo explicitely enables 'quartz' and 'x11'.
> With 'quartz' disabled everything works as expected.
>
> I cannot oversee the consequences of disabling 'quartz' for cairo.
The native macOS font renderer searches for fonts only in paths such as
~/Library/Fonts, /Library/Fonts, and /System/Library/Fonts as documented
in [1]. There does not seem to be a way to extend that.
We could install our fonts to a path such as /Library/Fonts/MacPorts/ to
make them available to native applications by default. However, this
would be a long-term solution as that requires changes in base for a
${fonts_dir} to be handled just like ${applications_dir}.
> On the pango mailing list, Behdad Esfahbod offered the solution to set
> environment variable 'env var PANGOCAIRO_BACKEND=fc' and that works fine.
While I agree this is a problem that should be solved for all ports, one
workaround for rrdtool would be to use a simple shell script wrapper
that exports this environment variable before executing the real binary.
However, that is only necessary if rrdtool can only work correctly with
"DejaVu Sans Mono". Would it be acceptable to use a different font that
is always available for the time being? Even a generic 'monospace'
should give similar results.
Rainer
More information about the macports-dev
mailing list