r-lib / ragg

Graphic Devices Based on AGG
https://ragg.r-lib.org
Other
172 stars 24 forks source link

Whitespace in expression is ignored #136

Closed teunbrand closed 11 months ago

teunbrand commented 1 year ago

If I put a space in an expression, it seems as if the space isn't rendered. In the example below, I had expected a space between 'µ' and 'M'. It sort-of seems specific to the transition from non-plain-text elements (the µ) to plain text elements. Rendering expression(mu*" M"*" F") correctly puts a space between 'M' and 'F' but not 'µ' and 'M'.

library(grid)

temp <- tempfile(fileext = ".png")
ragg::agg_png(temp, scaling = 4)

grid.newpage()
grid.draw(textGrob(expression(mu*" M")))

dev.off()
#> png 
#>   2
knitr::include_graphics(temp)

Created on 2023-06-21 with reprex v2.0.2

thomasp85 commented 11 months ago

I can't seem to reproduce this... what system are you seeing this on?

filedd6b262eb829

teunbrand commented 11 months ago

This was on a Linux machine, but I just tested and I don't see this in a windows machine. Here is one with session info:

library(grid)

temp <- tempfile(fileext = ".png")
ragg::agg_png(temp, scaling = 4)

grid.newpage()
grid.draw(textGrob(expression(mu*" M")))

dev.off()
#> png 
#>   2

knitr::include_graphics(temp)

Created on 2023-10-04 with reprex v2.0.2

Session info ``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.0.5 (2021-03-31) #> os Ubuntu 20.04.6 LTS #> system x86_64, linux-gnu #> ui X11 #> language (EN) #> collate en_US.UTF-8 #> ctype en_US.UTF-8 #> tz Europe/Amsterdam #> date 2023-10-04 #> pandoc 3.1.1 @ /usr/lib/rstudio-server/bin/quarto/bin/tools/ (via rmarkdown) #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> ! package * version date (UTC) lib source #> cli 3.6.0 2023-01-09 [1] CRAN (R 4.0.5) #> P curl 4.3 2019-12-02 [?] CRAN (R 4.0.5) #> digest 0.6.31 2022-12-11 [1] CRAN (R 4.0.5) #> evaluate 0.20 2023-01-17 [1] CRAN (R 4.0.5) #> P fastmap 1.1.0 2021-01-25 [?] CRAN (R 4.0.5) #> fs 1.6.1 2023-02-06 [1] CRAN (R 4.0.5) #> glue 1.6.2 2022-02-24 [1] CRAN (R 4.0.5) #> highr 0.10 2022-12-22 [1] CRAN (R 4.0.5) #> htmltools 0.5.4 2022-12-07 [1] CRAN (R 4.0.5) #> httr 1.4.5 2023-02-24 [1] CRAN (R 4.0.5) #> knitr 1.42 2023-01-25 [1] CRAN (R 4.0.5) #> lifecycle 1.0.3 2022-10-07 [1] CRAN (R 4.0.5) #> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.0.5) #> P mime 0.10 2021-02-13 [?] CRAN (R 4.0.5) #> P png 0.1-7 2013-12-03 [?] CRAN (R 4.0.5) #> purrr 1.0.1 2023-01-10 [1] CRAN (R 4.0.5) #> R.cache 0.16.0 2022-07-21 [1] CRAN (R 4.0.5) #> R.methodsS3 1.8.2 2022-06-13 [1] CRAN (R 4.0.5) #> R.oo 1.25.0 2022-06-12 [1] CRAN (R 4.0.5) #> R.utils 2.12.2 2022-11-11 [1] CRAN (R 4.0.5) #> R6 2.5.1 2021-08-19 [1] CRAN (R 4.0.5) #> ragg 1.2.5 2023-01-12 [1] CRAN (R 4.0.5) #> reprex 2.0.2 2022-08-17 [1] CRAN (R 4.0.5) #> rlang 1.1.0 2023-03-14 [1] CRAN (R 4.0.5) #> rmarkdown 2.20 2023-01-19 [1] CRAN (R 4.0.5) #> rstudioapi 0.14 2022-08-22 [1] CRAN (R 4.0.5) #> sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.0.5) #> styler 1.9.1 2023-03-04 [1] CRAN (R 4.0.5) #> systemfonts 1.0.4 2022-02-11 [1] CRAN (R 4.0.5) #> textshaping 0.3.6 2021-10-13 [1] CRAN (R 4.0.5) #> vctrs 0.6.1 2023-03-22 [1] CRAN (R 4.0.5) #> withr 2.5.0 2022-03-03 [1] CRAN (R 4.0.5) #> xfun 0.37 2023-01-31 [1] CRAN (R 4.0.5) #> xml2 1.3.3 2021-11-30 [1] CRAN (R 4.0.5) #> P yaml 2.2.1 2020-02-01 [?] CRAN (R 4.0.5) #> #> [1] /DATA/home/t.vd.brand/R/x86_64-pc-linux-gnu-library/4.0 #> [2] /opt/R/4.0.5/lib/R/library #> #> P ── Loaded and on-disk path mismatch. #> #> ────────────────────────────────────────────────────────────────────────────── ```
thomasp85 commented 11 months ago

My best guess is that this is somewhat specific to the symbol font on your Linux system. plotmath expressions are rendered as single glyphs through the graphics engine so ragg has little to do with how the single glyphs are placed.

I'd be happy to look into it in more detail if you share the fonts being used on your system (specifically what "Symbol" and "Sans" maps to)

teunbrand commented 11 months ago

My best guess is that this is somewhat specific to the symbol font on your Linux system

Yeah that might well be the case. Is there a way to specify which symbol font to use for plotmath expressions?

I'd be happy to look into it in more detail if you share the fonts being used on your system (specifically what "Symbol" and "Sans" maps to)

Sure, but I wouldn't place this right at the top of the priority queue :)

systemfonts::font_info(c("sans", "symbol"))[, 2:9]
#>   index              family   style italic  bold monospace weight  width
#> 1     0         DejaVu Sans    Book  FALSE FALSE     FALSE normal normal
#> 2     0 Standard Symbols PS Regular  FALSE FALSE     FALSE normal normal

Created on 2023-10-09 with reprex v2.0.2

thomasp85 commented 11 months ago

Try systemfonts::register_variant('symbol', <name of another symbol font>) (not sure if it works)

teunbrand commented 11 months ago

Yep that worked, so this must be a font issue and nothing to do with ragg. Sorry for the noise!