[Rd] Plotmath on Fedora 31 broken with with pango >= 1.44 - workarounds?

Martin Maechler m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Tue Mar 31 21:24:46 CEST 2020

>>>>> Paul Murrell 
>>>>>     on Tue, 31 Mar 2020 09:41:30 +1300 writes:

    > Hi
    > On 30/03/20 10:43 pm, Iñaki Ucar wrote:
    >> On Mon, 30 Mar 2020 at 04:24, Paul Murrell <paul using stat.auckland.ac.nz> wrote:
    >>> Hi
    >>> I have created an R branch that contains a potential fix ...
    >>> https://svn.r-project.org/R/branches/R-symfam/
    >>> This allows, for example, ...
    >>> cairo_pdf(symbolfamily="OpenSymbol")
    >>> ... to specify that the OpenSymbol family should be used as the "symbol"
    >>> font (e.g., for "plotmath") in R.
    >> Will this be a default on Linux? Or are you planning any mechanism
    >> (env variable, option...) to make it the default? Because, otherwise,
    >> as pango is updated across distributions, R graphics will be "broken"
    >> by default unless the user explicitly calls the graphics device in
    >> that way to set that option, which I would say is uncommon.

    > Good question.  Currently, for x11() (and png() etc) the default is 
    > taken from X11.options().  So it is possible to set this default for a 
    > session, or even for an installation via one of the ?Startup mechanisms 
    > (e.g., an R_HOME/etc/Rprofile.site file).

    > For svg(), cairo_pdf(), and cairo_ps(), the default is hard-coded in the 
    > function arguments, but I *think* they are used less as default graphics 
    > devices.

    > Another option would be to try to detect Fedora and set the default 
    > X11.options() differently there.  Two problems:  I am not sure there is 
    > a reliable R code chunk for detecting Fedora (sessionInfo()$running?) 
    > let alone Fedora >= 30;   

Yes,  sessionInfo()$running  is sufficient for both  *and*
there's a faster way in latest R versions, as I had the same
need and found sessionInfo() should be modularized here, and so
we have the  'osVersion'  variable since  R 3.6.0

> osVersion
[1] "Fedora 30 (Thirty)"
> find("osVersion")
[1] "package:utils"

{it is put into utils at package load time}

    > what to set the default to?  (just has to be a 
    > font with a good Unicode coverage that is pretty much guaranteed to be 
    > in a default Fedora install).

    > Paul

    >> Iñaki
    >>> This is just a separate branch for now because, while I have tested it
    >>> under Unbuntu 18.04 and Fedora 31, I cannot even build R for Windows
    >>> (right now) or Mac (ever) and I do not want to drop a bomb on R-devel at
    >>> this stage of the release process for R 4.0.0.
    >>> The attached file contains at least an outline of steps required to do a
    >>> minimal test if anyone wants to try the fix on Linux.
    >>> cc'ing Simon and Jeroen in case they are able to help with checking that
    >>> this builds and works on Mac and/or Windows.
    >>> NOTEs:
    >>> - 'symbolfamily' can only be specified when a graphics device is opened,
    >>> and it is then fixed for that device.
    >>> - on Windows, for cairo-based devices, the "symbol" font is still
    >>> hard-coded as "Standard Symbols L"
    >>> Paul
    >>> On 30/03/20 8:15 am, Paul Murrell wrote:
    >>>> Hi
    >>>> Thanks for your input on this Iñaki and Nicolas.
    >>>> I am starting testing an R fix for this problem today.
    >>>> As suggested, the plan is to allow the R user to specify a font family
    >>>> other than "symbol" for plotmath output (or, more generally, in R
    >>>> parlance, for 'font=5' or 'fontface=5') on a Cairo-based graphics device.
    >>>> Paul
    >>>> On 27/03/20 11:30 pm, Iñaki Ucar wrote:
    >>>>> On Wed, 25 Mar 2020 at 12:25, Nicolas Mailhot
    >>>>> <nicolas.mailhot using laposte.net> wrote:
>>>>> <snip>
>>>>> R brought this all on itself by hardcoding a Windows-only “Symbol” font
>>>>> family name in its default conf. Linux systems are UTF-8 by default for
>>>>> ~20 years now, they don’t need the forcing of magic font families to
>>>>> handle symbols not present in the 8-bit legacy Windows encodings.
>>>>> The actual effect of this conf is not the selection of font files with
>>>>> special and unusual symbols. It is to priorize fonts that match the
>>>>> "Symbol" magic name. And those fonts are few and crumbling on Linux
>>>>> systems, because no one has needed to bother with them since Linux
>>>>> switched to UTF-8 last millenium.
>>>>> Just stop using “Symbol” in R and things will work a lot better.
>>>>> Alternatively, prepare to maintain the “Symbol” aliasing stack in
>>>>> fontconfig (and fight with wine for it), because *no* *one* *else*
>>>>> *cares* about this legacy Windows-specific stuff.
    >>>>> So, in the light of Nicolas' input (thanks!), I think that font
    >>>>> selection should be fixed upstream in R. I'd be happy to put all this
    >>>>> together in R's bugzilla, but I don't have an account. Could someone
    >>>>> please invite me?
    >>>>> Iñaki
    >>>>> ______________________________________________
    >>>>> R-devel using r-project.org mailing list
    >>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
    >>> --
    >>> Dr Paul Murrell
    >>> Department of Statistics
    >>> The University of Auckland
    >>> Private Bag 92019
    >>> Auckland
    >>> New Zealand
    >>> 64 9 3737599 x85392
    >>> paul using stat.auckland.ac.nz
    >>> http://www.stat.auckland.ac.nz/~paul/

    > -- 
    > Dr Paul Murrell
    > Department of Statistics
    > The University of Auckland
    > Private Bag 92019
    > Auckland
    > New Zealand
    > 64 9 3737599 x85392
    > paul using stat.auckland.ac.nz
    > http://www.stat.auckland.ac.nz/~paul/

    > ______________________________________________
    > R-devel using r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel

More information about the R-devel mailing list