【问题标题】:how to install macos system truetype collection fonts into R?如何将macos系统truetype集合字体安装到R中?
【发布时间】:2021-08-31 21:55:14
【问题描述】:

Charter 是 macOS 中的系统字体。 Fontbook 告诉我它在 truetype 集合中/System/Library/Fonts/Supplemental/charter.ttc。然而,由于某种原因,库extrafonts 函数findfonts()/System/Library/Fonts/Supplemental/ 中找到了 ttf 字体,但似乎忽略了 ttc 字体。是否也有一种简单的方法可以使用这些 truetype 集合字体?指点赞赏。


PS:幸运的是,在这种特殊情况下,我可以使用“Cairo”包安装来自/usr/X11/lib/X11/fonts/Type1/c0648bt_.pfb 的charter 字体。这仍然适用于

library(Cairo)
CairoFonts(regular="Bitstream Charter")
1. family: "Bitstream Charter", style: "Regular", file: "/usr/X11/lib/X11/fonts/Type1/c0648bt_.pfb"
> CairoFonts(regular="Bitstream Charter")

然后所有绘图都将使用Charter 字体。但是,这对于 x11 中没有的其他字体可能也不会那么容易。

【问题讨论】:

    标签: r fonts


    【解决方案1】:

    我之前通过使用 sysfonts 和 showtext 解决了类似的问题。看看这是否适合您的用例:

    library(ggplot2)
    #install.packages("sysfonts")
    library(sysfonts)
    #install.packages("showtext")
    library(showtext)
    
    font_add(family = "charter", regular = "/System/Library/Fonts/Supplemental/charter.ttc")
    showtext_auto()
    ggplot(mtcars, aes(wt, mpg)) +
      geom_point() +
      ggtitle("Charter ttc Example") +
      theme(text = element_text(family = "charter", size = 20),
            axis.text = element_blank())
    

    编辑 1

    pdf 设备对您可以使用的字体有限制:我相信它必须是“PostScript 字体数据库”字体之一(请参阅https://www.rdocumentation.org/packages/grDevices/versions/3.6.2/topics/postscript)。

    要使用石英设备,您可以使用par()更改字体,例如

    TestChars <- function(...)
     {
       info = l10n_info()
       r <- c(32:126, 160:254)
       par(pty = "s")
       plot(c(-1,10), c(20,260), type = "n", xlab = "", ylab = "", xaxs = "i", yaxs = "i")
       grid(11, 24, lty = 1)
       mtext(paste("MBCS:", info$MBCS, "  UTF8:", info$`UTF-8`, "  Latin:", info$`Latin-1`))
       mtext(paste(LETTERS, collapse=" "), side = 3, padj = -2)
       mtext(paste(letters, collapse=" "), side = 3, padj = -4)
       for(i in r) try(points(i%%10, 10*i%/%10, pch = i, font = 5,...))
     }
    par(family="Charter")
    TestChars()
    

    cairo_pdf 设备可以使用其他字体,但它显示为粗体(不知道为什么;请参阅 https://stackoverflow.com/a/38545416/12957340),并且 Charter 字体中的许多特殊字符似乎不兼容,例如

    cairo_pdf(file="test.pdf")
    par(family="Charter")
    TestChars()
    dev.off()
    

    【讨论】:

    • 这是否依赖 ggplot2?在我的 Mac 上,没有 ggplot2,它没有错误,但是普通(xquartz)显示是不可读的。 pdf 设备告诉我,如果我通过姓氏,charter 是一个未知的字体系列,如果我不通过则忽略charter 字体。
    • 我已经更新了我的答案,但总的来说这是一个具有挑战性的问题。如果您可以分享您的预期用例,我可能会帮助您进行故障排除,但除非您有充分的理由避免使用您的 Cairo 解决方法,否则我不确定是否可以提供更多帮助,抱歉。
    • 我原始消息中的“PS:”让 Cairo 设备正常工作。使用CairoPDF 设备然后工作。但我猜尚不支持 truetype 集合。谢谢你的帮助。不用担心。
    【解决方案2】:

    我在 Mac 上遇到了类似的问题。我使用了以下代码:

    library(showtext)
    font_add("Optima", "Optima.ttc")
    showtext.auto()
    

    然后我可以使用以下字体:

    family = "Optima"
    

    或在主题参数中将其应用于整个图表:

    base_family = "Optima" 
    

    【讨论】:

      猜你喜欢
      • 2014-07-16
      • 2020-12-06
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 2018-06-25
      • 1970-01-01
      • 2019-07-13
      相关资源
      最近更新 更多