我正在尝试使用calcStringMetric来获取字符串的宽度。在创建视口期间定义cex之类的属性时,我得到了预期的结果
grid.newpage()
pushViewport(viewport())
get.gpar(c("cex")) #1
calcStringMetric("Hello World")$width #0.864
grid.newpage()
pushViewport(viewport(gp = gpar(cex=1.4)))
get.gpar(c("cex")) # 1.4
calcStringMetric("Hello World")$width #1.212
但是如何即时更新这些值?例如也许现在我想在不创建新视口的情况下计算cex 2的长度。
根据 calcStringMetric
的帮助此功能的度量标准信息基于字体 调用此函数时有效的设置。它不会 必须与任何文本的度量标准信息相对应 在页面上绘制。
和 gpar
默认参数设置由ROOT视口定义, 从图形设备获取其设置。这些默认值可能有所不同 设备之间(例如,PNG的默认填充设置不同 设备与PDF设备相比)
所以我认为 calcStringMetric 会退回到当前视口中定义的属性。
#Empty initialize but re define
grid.newpage()
pushViewport(viewport())
current.viewport() # and now how do I set a new custom cex to call calcStringMetric
# .....
get.gpar(c("cex"))