如何查找具有特定字体和字体大小的文本的位长度

How to find bit length of text with specific font and font size

我正在开发 NativeScript JavaScript 代码来为地图创建动态文本标记。我有为特定字符串创建标记的代码。我的下一步是获取任何给定的字符串,以位为单位确定其高度和宽度,并创建大小适合包含文本的标记。

我的问题是在给定文本字符串本身、字体大小和字体系列的情况下找到文本的大小。

看起来 getMeasuredWidth 可以工作,除了在该函数 return 一个值之前字符串必须已经加载到页面上。就我而言,我只需要计算大小;文本不会以其他方式出现在页面上(标记中的文本变成图像)。

有办法吗?

var bmp = BitmapFactory.create(200);
bmp.dispose(function (b) {
try {
  b.drawRect(
    "100,34", // size
    '0,0', // upper-left coordinate
    KnownColors.Black, // border color
    KnownColors.Cornsilk // fill color
  );

  b.writeText(
    "Parking",
    "2,25",
    { color: KnownColors.Black, size: 8, name: 'fontawesome-webfont', });

...

在上面的代码中,外接矩形的“100”的宽度实际上代表了"Parking"的位宽加上少量的padding。我想要做的是计算矩形的高度和宽度,而不是对其进行硬编码。

试试这个,查找标签大小而不是在单击按钮时将其添加到页面

export function onFindButtonTap(args: EventData) {
 const button = <any>args.object;

 const label = new Label();
 label.text = "Hello, found my size?"
 label.fontSize = 20;

 (<any>label)._setupAsRootView(button._context);
 label.onLoaded();
 label.measure(0, 0);
 console.log(`Width : ${label.getMeasuredWidth()} x Height : ${label.getMeasuredHeight()}`);
}

Playground Sample

注意:我还没有机会用 iOS 对其进行测试,如果您遇到任何问题,请告诉我。