• [gentoo-user] PHP, Haru, Ghostscript, Courier, and Nimbus

    From Matthias Hanft@21:1/5 to All on Mon Nov 7 13:00:01 2022
    Hi,

    since many years, I'm using PHP (currently 7.4) and the (self-
    compiled) Haru extension to produce PDF invoices on my server.

    Internally, Haru seems to use Ghostscript, because:

    - up to app-text/ghostscript-gpl-9.55.0-r2, when you look at the
    PDF "properties" and then the "fonts" tab, there is "Courier",
    "Helvetica" and "Helvetica-BoldOblique" - just as requested in
    my PHP script like
    $myPdf=new HaruDoc();
    [...some page settings...]
    $myFont=$myPdf->getFont('Courier', 'WinAnsiEncoding');

    - from app-text/ghostscript-gpl-9.56.1-r3 on, everything looks like
    before, but in the "properties/fonts" tab of the resulting PDF,
    the fonts are now "NimbusMonoPS-Regular", "NimbusSands-BoldItalic"
    and "NimbusSans-Regular".

    I have already found this "translation" in the file /usr/share/ghostscript/9.56.1/Resource/Init/Fontmap.GS but there is
    obviously no relevant difference in that file between 9.55 and 9.56.

    Some of my customers now seem to have trouble if the fonts in the
    PDF properties are named "Nimbus" instead of "Courier" - they just
    see some hieroglyphics when displaying the PDF.

    Any idea that's going wrong here?

    Thanks in advance,

    -Matt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michael@21:1/5 to All on Mon Nov 7 12:27:38 2022
    On Monday, 7 November 2022 11:56:34 GMT Matthias Hanft wrote:
    Hi,

    since many years, I'm using PHP (currently 7.4) and the (self-
    compiled) Haru extension to produce PDF invoices on my server.

    Internally, Haru seems to use Ghostscript, because:

    - up to app-text/ghostscript-gpl-9.55.0-r2, when you look at the
    PDF "properties" and then the "fonts" tab, there is "Courier",
    "Helvetica" and "Helvetica-BoldOblique" - just as requested in
    my PHP script like
    $myPdf=new HaruDoc();
    [...some page settings...]
    $myFont=$myPdf->getFont('Courier', 'WinAnsiEncoding');

    - from app-text/ghostscript-gpl-9.56.1-r3 on, everything looks like
    before, but in the "properties/fonts" tab of the resulting PDF,
    the fonts are now "NimbusMonoPS-Regular", "NimbusSands-BoldItalic"
    and "NimbusSans-Regular".

    I have already found this "translation" in the file /usr/share/ghostscript/9.56.1/Resource/Init/Fontmap.GS but there is
    obviously no relevant difference in that file between 9.55 and 9.56.

    Some of my customers now seem to have trouble if the fonts in the
    PDF properties are named "Nimbus" instead of "Courier" - they just
    see some hieroglyphics when displaying the PDF.

    Any idea that's going wrong here?

    Thanks in advance,

    -Matt

    If your customers do not have Nimbus fonts available on their OS/PDF viewer, the viewer application will proceed using font substitution. It will use whichever font family it thinks is the closest match, I would assume
    Helvetica. Their application appears to get confused and substitute the
    Nimbus fonts with something else. In any case, the solution to this is to embed the Nimbus fonts in the PDF file.


    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCAAdFiEEXqhvaVh2ERicA8Ceseqq9sKVZxkFAmNo+boACgkQseqq9sKV ZxlYEhAA5r25sJYBWOzKqE4jwlE/Kum9W4e+jnYEFnKWMRXw/sa1GQnPqhURwZ63 SgpgoC1fKUCE0RtEFnuOZ4FpKpFtzW80r3YmOU9ZBHcQKut+8cfaBQefBiX+uF86 oTMfhhnrPwtAH4a3hJJD77+kbfI6Hi1AW/ZafDxAO997++e+EupmT3lSPisNiFCE UjYa2YtwdVA1YLLfHwpngqbTRq0LOEFOZKZ9qHL2pbockq9q4/U1C72pyCxbxP6p dpVSO6I1kDvm/Q1c0c4oipyKOAFvocBURggiwZpG0htwNUTQSzMSJGXoU7anZbut iCojyOW7aXBSTcuUkSQosddvUsPCFW1bn+Ca0/XjfiJ/XJmxs9s1Mxqg55uUV38f pAnybRZWpGGMeyeyinTf/gxT6cODhhSX4MpQ46KFflnkN1+vo4kgVshnJlZl+jsL zZvnt3gX43DRZr3zdekLu5MH03jqS18ChcvDfYWgDOORFTZDOi8vxNcBDpcEMetW s8DGqQGGm3wUj4POSlMXXAjIbREscSWSYawphS/4FGrZ6nNIFYGawz70IATvXLLQ hT52vh7wewb5jStZtArsTlG96kv61KItJBHHNZvXCC7STPofCZykxJJO08TRZWJZ +cCc+3xh13VKVdMP+l4VMEQzAbiDMnKYoyJK0VnAXR9sgFEWygk=
    =6VHb
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Hanft@21:1/5 to Michael on Mon Nov 7 18:40:01 2022
    Michael wrote:

    If your customers do not have Nimbus fonts available on their OS/PDF viewer, the viewer application will proceed using font substitution. It will use whichever font family it thinks is the closest match, I would assume Helvetica. Their application appears to get confused and substitute the Nimbus fonts with something else. In any case, the solution to this is to embed the Nimbus fonts in the PDF file.

    How would I do that? It seems to be impossible for "Courier" because this
    is a built-in font "and all viewers can display them", as stated at https://durak.org/sean/pubs/software/php-7.0.0/haru.builtin.fonts.html
    So it won't make much sense to embed Courier into the PDF anyway?!

    It's just that >=ghostscript-gpl-9.56 won't write the requested font name
    $myFont=$myPdf->getFont('Courier', 'WinAnsiEncoding');
    into the PDF, but the substituted font name "Nimbus" (which seems to
    confuse some PDF readers). Why did they change it from 9.55 to 9.56?
    This is strange...

    To be completely independent from any PDF display software, I could imagine that the following could help:

    - install media-fonts/corefonts
    - load the ttf font with embed=true:
    https://durak.org/sean/pubs/software/php-7.0.0/harudoc.loadttf.html
    for example,
    $myFontName=$myPdf->loadTTF('/usr/share/fonts/corefonts/cour.ttf', TRUE);
    $myFont=$myPdf->getFont($myFontName, 'WinAnsiEncoding');

    but I guess it will blow up my nice little PDF files (29 K only!) to a
    multiple size... :-(

    Anyway, I'll give it a try.

    -Matt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)