是否有可能在 AS3 中获得准确的字符/字体指标?

Posted

技术标签:

【中文标题】是否有可能在 AS3 中获得准确的字符/字体指标?【英文标题】:Is it possible to get accurate character/font metrics in AS3? 【发布时间】:2012-01-12 12:16:29 【问题描述】:

我创建了一个类,它将使用嵌入字体在运行时动态生成位图字体。 到目前为止,它运行良好,只是我对字符间距有一个小问题。

在下图中,第一行是实际的TextField,第二行已经渲染 使用生成的位图字体。

如果您查看单词“fox”或单词“jumped”的“ed”,您会发现字母间距看起来有点奇怪。

TextLineMetrics 类是否有任何替代品可以为我提供更准确的字符指标?

更新:

使用新的 Flash 文本引擎的文本呈现质量:

更新 2:

偶然我最终找到了解决方案:

第一个问题是antiAliasType 属性设置为AntiAliasType.ADVANCED。 尽管它会生成更高质量的文本,但它也会导致 TextLineMetrics 返回不正确的字符宽度。

第二个是它还必须向上取整(使用Math.ceil)到最近的像素,而不是向下取整。

【问题讨论】:

也许这只是一个四舍五入的问题。您是否尝试向上或向下舍入像素值? (或者如果您已经对它们进行四舍五入,您是否尝试过不四舍五入?) 是的,我确实将位置四舍五入到整个像素,现在我尝试不四舍五入,但它没有任何区别,只是导致字符变得模糊。 【参考方案1】:

TextField 太重了。 flash.text.engine 将更好地用于位图生成

【讨论】:

目前看起来不错;使用 TextlineMetrics.width 会返回不一致的宽度,即使我使用的是等宽字体,但使用 FTE 和 TextLine.textWidthTextLine.getAtomBounds 将正确地为所有字符返回相同的宽度。我发现的唯一问题是,在我看来,嵌入式 FTE 文本的质量很差,我添加了另一张图片来演示这个问题 - 与其他方法相比,底线看起来很模糊。有什么方法可以使用 FTE 控制抗锯齿质量?

以上是关于是否有可能在 AS3 中获得准确的字符/字体指标?的主要内容,如果未能解决你的问题,请参考以下文章

无法在adobe中获得帧准确的时间码动画CC

是否有可能在 O(1) 中获得 m 个字符长度组合的第 k 个元素?

预测模型是否准确率越高越好?

等宽字符的像素宽度

在不同的准确性/错误指标之间转换 [关闭]

推荐系统系列2——评价指标