Hi

I don't think this is an R issue (it is separate from the Cairo Symbol font problem).

For PDF output, R actually relies on the Symbol font having the Adobe Symbol Encoding (Appendix D of the PDF Reference https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/pdfreference1.7old.pdf) and just outputs the font as "Symbol", which relies on it being one of the Standard 14 Fonts ...

"These fonts have built-in encodings that are unique to each
font."

... and ...

"These fonts, or their font metrics and suitable substitution fonts, must be available to the consumer application."

In other words, R passes the buck to the viewer to either have access to the Adobe Symbol font or use a substitute that has all of the necessary glyphs (and in that case, presumably to also take care of satisfying the Adobe Symbol Encoding).

It is possible for the R user to specify a different font name for the symbol font for PDF output, but that font has to have all of the necessary glyphs and it has to follow the Adobe Symbol Encoding or all bets are off.

Paul

On 12/03/24 06:59, Iñaki Ucar wrote:
Martin, I wouldn't rule out an R issue yet. Fonts are... tricky. So I'm cc'ing Paul Murrell here.

I tried several viewers here and I see the following: Chrome, Firefox and Libreoffice Draw show the symbols; however, evince, okular and xournal++ agree on **not** showing the symbols. **If** there is a bug, the bug would be in fontconfig, because these ones AFAIK properly delegate on fontconfig, which is the system-wide component that decides what font substitution should be made for any given font. However, I see:

$ fc-match Helvetica
NimbusSans-Regular.otf: "Nimbus Sans" "Regular"

which is the right choice. And okular confirms this by showing in a properties dialog that it is substituting Helvetica with URW's Nimbus Sans Regular. So why aren't the symbols displayed? My best guess is that this has something to do with how R encodes such symbols. Paul introduced some changes to fix similar issues for Cairo devices when Fedora dropped support for Type 1 fonts, see [1]. Now, I'm no font expert, but it seems to me that the pdf device may require similar fixes. (And why do xpdf or Firefox show the glyphs... I have no idea. I guess they do their thing without asking fontconfig).

[1] https://blog.r-project.org/2020/04/17/changes-to-symbol-fonts-for-cairo-graphics-devices/ <https://blog.r-project.org/2020/04/17/changes-to-symbol-fonts-for-cairo-graphics-devices/>

Peter, as an aside, note that cairo_pdf embeds the fonts by default.

Best,
Iñaki

On Mon, 11 Mar 2024 at 15:31, <pst...@gmail.com <mailto:pst...@gmail.com>> wrote:

    Hi Martin and Tim,

    I also have this bug. Though I think not necessarily with all the same
    fonts as Martin.

    Using Martin's code:

    https://imgur.com/a/ILUoe3H
    <https://imgur.com/a/ILUoe3H>

    Fedora 39, Evince 45.0

    It's a bug with Evince. I think. I think it's substituting in a font
    set that doesn't have all the required symbols. I think it should be
    possible to install the required fonts, but I haven't found a solution
    that way, yet.

    Nevertheless, the following should work, and may be a better solution
    anyway, given that embedding the fonts is probably more cross-
    platform/viewer friendly:


    You can embed the fonts if you have Ghostscript installed (I think it
    comes with Fedora already(?) if not then:

    sudo dnf install ghostscript

    )


    You can then use the embedFonts() function in R:

    (pdfil <- paste0("plotmath-example_R",
                      with(R.version, paste0(major, sub("[.]", "", minor))),
    ".pdf"))

    pdf(pdfil)
    example(plotmath); mtext(R.version.string)
    dev.off()

    # Use embedFonts to embed the fonts in the PDF
    embedFonts(file = pdfil, outfile = paste0("embedded-example", pdfil),
    options = "-dPDFSETTINGS=/prepress")


    if(interactive()) {
       system(paste("evince", paste0("embedded-example", pdfil), "&"))
    }



    Or you can do it in the terminal:


    gs -dNOPAUSE -dBATCH -dPDFSETTINGS=/prepress -sDEVICE=pdfwrite -
    dEmbedAllFonts=true -sOutputFile=plotmath-example-output_embedded.pdf -
    f plotmath-example_R432.pdf


    Compare:


    Embedded:

    ❯ pdffonts plotmath-example-output_embedded.pdf
    name                   type     encoding emb sub uni object ID
    ---------------------- -------- -------- --- --- --- ------ ---
    KHEPSB+Helvetica       Type 1C  Custom   yes yes no      10   0
    WNPVSJ+Symbol          Type 1C  Custom   yes yes no      12   0
    MQBKOK+Helvetica-Bold  Type 1C  WinAnsi  yes yes no      20   0


    Original:

    ❯ pdffonts plotmath-example_R432.pdf
    name                   type     encoding emb sub uni object ID
    ---------------------- -------- -------- --- --- --- ------ ---
    Helvetica              Type 1   Custom   no  no  no      16  0
    Helvetica-Bold         Type 1   Custom   no  no  no      17  0
    Symbol                 Type 1   Symbol   no  no  no      18  0


    I hope this works for you. Like I said, I *think* it's a problem with
    Evince so it's probably better to file a bug report with them, but I
    also think embedding fonts isn't such a bad idea anyway - you'll know
    the output will display as intended regardless of the viewer on the
    user's system. It does lead to a larger file-size, but I think these
    days we can live with that.

    Thanks,
    Peter




    On Mon, 2024-03-11 at 14:15 +0100, Martin Maechler wrote:
     > > > > > > Tim Taylor
     > > > > > >     on Mon, 11 Mar 2024 11:42:35 +0000 writes:
     >
     >     > Hi Martin
     >     > Probably not the answer you're looking for but on the latest
     > Fedora 39 (workstation edition) both locally, and on a freshly
     > installed VM (with just R-core installed), all fonts render correctly
     > for me in evince.
     >
     >     > $ evince --version
     >     > GNOME Document Viewer 45.0
     >
     >     > $ R --version
     >     > R version 4.3.3 (2024-02-29) -- "Angel Food Cake"
     >     > Copyright (C) 2024 The R Foundation for Statistical Computing
     >     > Platform: x86_64-redhat-linux-gnu (64-bit)
     >
     >     > It may be worth sharing more details about your installation
     > (e.g. Fedora version) to see if anyone has any ideas.
     >
     >     > Tim
     >
     > Thank you, Tim.
     >
     >
     > Fedora is 38 :
     >
     > $ lsb_release -a
     > LSB Version:  :core-5.0-amd64:core-5.0-noarch:cxx-5.0-amd64:cxx-
     > 5.0-noarch:desktop-5.0-amd64:desktop-5.0-noarch:languages-5.0-
     > amd64:languages-5.0-noarch:printing-5.0-amd64:printing-5.0-noarch
     > Distributor ID:       Fedora
     > Description:  Fedora release 38 (Thirty Eight)
     > Release:      38
     > Codename:     ThirtyEight
     >
     > $ evince --version
     > GNOME Document Viewer 44.3
     >
     > R version does not matter at all.
     > Same phenomenon in several versions of R I have installed
     > simultaneously (from source).
     > As I mentioned, I'm slightly misusing the list for non-R problem
     > that I encounter a lot with R  {because I like to use
     > "plotmath"}, so I apologize in advance.
     >
     > Maybe it's rather a matter of fonts installed in
     > /usr/share/fonts/ ??
     >
     > Martin
     >
     >     > On Mon, 11 Mar 2024, at 10:51 AM, Martin Maechler wrote:
     >     >> This problem has bugged me for several years now,
     >     >> and our own IT staff has tried a few things, but then never
     >     >> cared enough to persist fixing it.
     >     >>
     >     >> It *is* a bug in evince, the standard pdf viewer on Fedora and
     >     >> IIUC also quite few other Linux distributions, and
     >     >> *not* a bug in R;  hence I am asking for help/hints here.
     >     >>
     >     >> A very simple example:
     >     >>
     >     >> --------------------------------------------------------------
     > -----------------
     >     >>
     >     >> (pdfil <- paste0("plotmath-example_R",
     >     >> with(R.version, paste0(major, sub("[.]", "", minor))),
     > ".pdf"))
     >     >> ## "plomath-example_R433.pdf"
     >     >>
     >     >> pdf(pdfil)
     >     >> example(plotmath); mtext(R.version.string)
     >     >> dev.off()
     >     >>
     >     >> if(interactive())
     >     >> system(paste("evince", pdfil, "&"))
     >     >>
     >     >> --------------------------------------------------------------
     > -----------------
     >     >>
     >     >> The pdf contains 4 pages, and in all of them *some* of the
     > math
     >     >> symbols are replaced by open rectangles -- because evince does
     >     >> not find the fonts it should.
     >     >>
     >     >> E.g.
     >     >> - page 1: \pi is properly shown,  \phi not
     >     >> - page 2: all greek letters,  \theta, \xi, \eta  are *not*
     > shown
     >     >> ...
     >     >>
     >     >> Simply typing
     >     >>
     >     >> example(plotmath)
     >     >>
     >     >> in the R console will show you everything as it should be but
     > is
     >     >> not for us, using evince.
     >     >>
     >     >> However, *everything* is rendered correctly, if I use very old
     >     >> 'xpdf' {which you may have to install
     >     >>
     >     >> ## OTOH: This always work fine with the very old  'xpdf' :
     >     >> system(paste("xpdf", pdfil, "&"))
     >     >>
     >     >> So the fonts *are* somewhere on my machine, but evince does
     > not
     >     >> find them;
     >     >>
     >     >> How should our IT people fix this?
     >     >>
     >     >> IIRC they did install the Zapf Dingbats fonts -- which then
     > are
     >     >> found by xpdf but not by evince ?
     >     >>
     >     >>
     >     >> Thank you in advance,
     >     >> Martin
     >     >>
     >     >> _______________________________________________
     >     >> R-SIG-Fedora mailing list
     >     >> R-SIG-Fedora@r-project.org <mailto:R-SIG-Fedora@r-project.org>
     >     >> https://stat.ethz.ch/mailman/listinfo/r-sig-fedora
    <https://stat.ethz.ch/mailman/listinfo/r-sig-fedora>
     >     >>
     >
     >     > [[alternative HTML version deleted]]
     >
     > _______________________________________________
     > R-SIG-Fedora mailing list
     > R-SIG-Fedora@r-project.org <mailto:R-SIG-Fedora@r-project.org>
     > https://stat.ethz.ch/mailman/listinfo/r-sig-fedora
    <https://stat.ethz.ch/mailman/listinfo/r-sig-fedora>

    _______________________________________________
    R-SIG-Fedora mailing list
    R-SIG-Fedora@r-project.org <mailto:R-SIG-Fedora@r-project.org>
    https://stat.ethz.ch/mailman/listinfo/r-sig-fedora
    <https://stat.ethz.ch/mailman/listinfo/r-sig-fedora>



--
Iñaki Úcar

--
Dr Paul Murrell (he/him)
Te Kura Tatauranga | Department of Statistics
Waipapa Taumata Rau | The University of Auckland
Private Bag 92019, Auckland 1142, New Zealand
64 9 3737599 x85392
p...@stat.auckland.ac.nz
www.stat.auckland.ac.nz/~paul/

_______________________________________________
R-SIG-Fedora mailing list
R-SIG-Fedora@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-fedora

Reply via email to