Any map I make with:
ggplot() + geom_sf()
produces the expected map, but does not show the degree sign correctly, as appears from the following picture.
The answer given in this answer on SO - degree symbol incorrect in map axis labels - does not help, and I am posting a separate question as I see a different sign.
Changing font does not help.
I've also tried installing the current version of sf
(0.9) from Github in a separate project with renv
, but have the same result.
I'm on Linux, Fedora 31.
To replicate:
library("ggplot2")
library("sf")
nc <- st_read(system.file("shape/nc.shp", package="sf"))
ggplot() +
geom_sf(data = nc)
2019-03-15 update
The issue is not specific to ggplot/geom_sf; as suggested in the comments, I get the same issue with plot.new(); text(0.5,0.5, bquote(120*degree*N), cex=5)
Also, to clarify, I have not the issue related to Wine detailed in the help of ?X11()
. If I run in my terminal, fc-match Symbol
, I get:
StandardSymbolsPS.t1: "Standard Symbols PS" "Regular"
Update 2019-03-19
Confirmed on a fresh Fedora 31 and Fedora 32 beta install. Probably a Fedora issue.
I tried with different locales (including e.g. "en_US.UTF-8" or "German") and devices (e.g. cairo_pdf()
, cairo_ps()
) with the same result.
X11.options() shows "cairo" as type (changing it to Xlib, or dbcairo does not change the result).
Using the TestChars()
function proposed by dww in the answer below shows the following:
However, if I knit to pdf with knitr, I get most symbols, including °.
If I knit to html, I get the usual garbled signs.
2020-03-20 update
As suggested by @jpmam1, this seems to be related to a regression in pango
, that can be temporarily fixed by downgrading pango
. Dowgrading pango however, breaks other core parts of the OS, such as nautilus
.
I opened a bug on Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=1815128
As it turns out, this misbehaviour is caused by legacy use of symbols in R itself.
This will likely be fixed upstream in R itself: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17748 which references the downstream issue I opened for Fedora after the feedback I received to this question: https://bugzilla.redhat.com/show_bug.cgi?id=1815128
A functioning workaround has been published by Iñaki Ucar on the R mailing list: https://stat.ethz.ch/pipermail/r-devel/2020-March/079185.html
I copy it here for reference:
$ sudo dnf install gdouros-symbola-fonts
Then add the following to /etc/fonts/local.conf (system-wide) or ~/.fonts.conf (just for your user):
<fontconfig> <match target="pattern"> <test name="family"><string>Symbol</string></test> <edit name="family" mode="prepend" binding="same"> <string>Symbola</string> </edit> </match> </fontconfig>
Now you should see this:
$ fc-match Symbol Symbola.ttf: "Symbola" "Regular"
and symbols should render correctly.
Again, credit for this solution goes to Iñaki Ucar.
Thank you all who provided answers to this question for assistance in troubleshooting and facilitating this process. Hopefully, this will be fixed upstream in R core itself.