[R-sig-Fedora] evince not showing "greek" and "math" in *.pdf plots
Iñaki Ucar
|uc@r @end|ng |rom |edor@project@org
Wed Mar 13 16:53:45 CET 2024
I see. Peter, you are right about the font that causes the issue. Paul,
thanks for your insights. I'll bring this to the Fedora font experts to see
if we can arrive at a more permanent fix. I'll report back with any
conclusion.
@Martin: Meanwhile, at least you have options. One is to embed the fonts,
either as Peter suggested or using cairo_pdf instead. Alternatively, Peter
also has shown how to instruct fontconfig to select other fonts as
replacements.
Hope it helps,
Iñaki
On Tue, 12 Mar 2024 at 22:10, Paul Murrell <paul using stat.auckland.ac.nz> wrote:
> 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, <pstils using gmail.com
> > <mailto:pstils using 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 using r-project.org <mailto:
> R-SIG-Fedora using 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 using r-project.org <mailto:R-SIG-Fedora using 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 using r-project.org <mailto:R-SIG-Fedora using 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
> paul using stat.auckland.ac.nz
> www.stat.auckland.ac.nz/~paul/
>
>
--
Iñaki Úcar
[[alternative HTML version deleted]]
More information about the R-SIG-Fedora
mailing list