evince not showing "greek" and "math" in *.pdf plots
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/ 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 at 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 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 at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-fedora
>>
> [[alternative HTML version deleted]]
_______________________________________________ R-SIG-Fedora mailing list R-SIG-Fedora at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-fedora
_______________________________________________ R-SIG-Fedora mailing list R-SIG-Fedora at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-fedora
I?aki ?car [[alternative HTML version deleted]]