计算图上文本的边界框,包括基线以下的文本

Calculate bounding box of text on plot including text below baseline

我正在尝试在条形图中的水平条上绘制文字,因此文字的顶部和底部刚好刷过条形图的顶部和底部。这归结为能够为包括下行和上行的文本计算一个紧密的边界框。例如,考虑

plot( 1:10, 1:10 )
text( 3, 7, "sample", adj=c(0,0), cex=3 )
sh = strheight( "sample" )
abline( h=c( 7, 7+3*sh  ) )

请注意,顶行恰好与 "l" 匹配。 "p" 从底线下降。

这里如何算出合适的底线?

或者,我如何绘制文本以填充给定的高度,例如:

plot( 1:10, 1:10 )
ht = 2
abline( h=c( 7, 7+ht ) )
sh = strheight( "sample" )
sh
text( 3, 7, "sample", adj=c(0,0), cex=2/sh )

这个问题与寻找边界框有关(参见 related stack overflow question)。由于下降器问题,它似乎不一样,那里的解决方案似乎没有完全奏效。

尝试

plot( 1:10, 1:10 )
text(3, 7, ex <- expression("sample"), adj=c(0,0), cex=3 ) 
sh <- strheight(ex)
abline( h=c( 7, 7+3*sh  ) )