我正在使用RMagick,我希望使用用户设置的背景颜色垂直或水平(取决于用户输入)绘制文本。我遇到了一个奇怪的问题:get_type_metrics(text)返回无效数据。实际宽度/高度小于方法返回的值。
我一直在尝试使用上升/下降值,但没有运气。有没有办法确定文本字符串的实际宽度/高度?我已经看到几个解决方案在空图像上绘制文本然后确定宽度高度然后逐个像素地查看整个图像,但imho这是愚蠢的,真的是资源消耗。另外,我发现PHP GD有同样的问题,没有解决方案。
P.S。我不能使用Draw#annotate,因为用户应该能够更改背景框大小。
答案 0 :(得分:3)
正如我已经发现的那样,FreeType Glyph Conventions中记录了bounds
结构的TypeMetric
gc = Magick::Draw.new { ... }
# *** setup gc with font, stroke, pointsize, ... *** THATS IMPORTANT!
metrics = gc.get_type_metrics("your text")
box_width = metrics.width # this one is ok by default
box_height = (metrics.bounds.y2 - metrics.bounds.y1).round # this is the actual heihgt
成员的未记录文件,以及您的真实宽度&文本的高度确定如下
{{1}}