R 文本组上的widthDetails()不';不注意字体大小-解决方法?

R 文本组上的widthDetails()不';不注意字体大小-解决方法?,r,r-grid,R,R Grid,网格实用程序应用于文本栏时,似乎不会注意字体大小 > version$version.string [1] "R version 3.3.1 (2016-06-21)" > library(grid) > widthDetails(textGrob(label="abcdef", gp=gpar(fontsize=12))) [1] 0.5inches > widthDetails(textGrob(label="abcdef", gp=gpar(fontsize=8.8

网格实用程序应用于文本栏时,似乎不会注意字体大小

> version$version.string
[1] "R version 3.3.1 (2016-06-21)"
> library(grid)
> widthDetails(textGrob(label="abcdef", gp=gpar(fontsize=12)))
[1] 0.5inches
> widthDetails(textGrob(label="abcdef", gp=gpar(fontsize=8.8)))
[1] 0.5inches
事实上,检查(代码的暴露部分)时,它看起来完全忽略了per grob图形参数

> grid:::widthDetails.text
function (x) 
{
    bounds <- grid.Call(L_textBounds, as.graphicsAnnot(x$label), 
        x$x, x$y, resolveHJust(x$just, x$hjust), resolveVJust(x$just, 
            x$vjust), x$rot, 0)
    if (is.null(bounds)) 
        unit(0, "inches")
    else unit(bounds[3L], "inches")
}
<bytecode: 0x49eab10>
<environment: namespace:grid>
>网格:::widthDetails.text
功能(x)
{

bounds我仍然认为这算是网格中的一个bug,我将为其他答案保留这个选项,但对于我来说,一个足够的解决方法是使用grob的图形参数推送视口

widthDetailsWithGP <- function (grob) {
    if (!is.null(grob$gp)) {
        pushViewport(viewport(gp=grob$gp))
        on.exit(popViewport())
    }
    return(widthDetails(grob))
}

widthDetailsWithGP我仍然认为这算是网格中的一个bug,我将保留此选项,等待其他答案,但对我来说,一个足够的解决方法是使用grob的图形参数推送视口

widthDetailsWithGP <- function (grob) {
    if (!is.null(grob$gp)) {
        pushViewport(viewport(gp=grob$gp))
        on.exit(popViewport())
    }
    return(widthDetails(grob))
}
widthDetailsWithGP