是否有可能在 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.textWidth
或 TextLine.getAtomBounds
将正确地为所有字符返回相同的宽度。我发现的唯一问题是,在我看来,嵌入式 FTE 文本的质量很差,我添加了另一张图片来演示这个问题 - 与其他方法相比,底线看起来很模糊。有什么方法可以使用 FTE 控制抗锯齿质量?以上是关于是否有可能在 AS3 中获得准确的字符/字体指标?的主要内容,如果未能解决你的问题,请参考以下文章