`fontsize` 在 `grid` 图形中代表什么?

What does the `fontsize` represent in `grid` graphics?

fontsize用于确定R图形中文字或点的大小。但它实际上代表什么?例如,

grid::grid.newpage()
grid::grid.points(default.units = "npc", 
                  gp = gpar(fontsize = 100))

这里,点fontsize是100。所以,我有两个问题:

  1. 这个值是什么意思,半径,直径还是点的面积?我能找到任何参考资料吗?
  2. 100的单位是什么?具体来说,是指100 pointsize (1 fontsize = 1pt)吗?否则,它是由设备规格决定的吗?如果是这样,1 fontsize = ?pt.

此外,我还有一个问题,在 R 语言中,是否有任何方便的函数可以将 pt 转换为像素 (px)?例如,我们可以将 pt 单位转换为 mm 单位,如

convertUnit(unit(1, "pt"), "mm", valueOnly = TRUE)

请问有没有查询屏幕尺寸然后从pt转换成px的函数?

谢谢!

grid.points() 绘制的符号大小取决于几个因素,主要是 pch,它决定了符号的形状,size。默认情况下,后者是 unit(1, "char"),这意味着大小进一步取决于当前字体大小(fontsizecex)。

图形引擎源代码 (https://github.com/r-devel/r-svn/blob/master/src/main/engine.c#L2110) 的深处是一些常量,它们根据符号形状进一步修改标称符号大小。例如,pch=1 将大小乘以 .375 得到圆半径。

是的,fontsize=100表示100pt。

下面的代码通过绘制一个符号和一个等宽的矩形来演示计算:

library(grid)
grid.newpage()
pushViewport(viewport())
grid.points(.5, .5)
grid.rect(width=2*.375*unit(1, "char"))
grid.points(.5, .5, gp=gpar(fontsize=100))
grid.rect(width=2*.375*unit(100, "pt"))