【发布时间】:2011-07-28 19:30:48
【问题描述】:
我的项目中的字体渲染突然出现错误。
下图是一个方形精灵,带有一个纹理和 2 个动态文本字段作为子项。
文字本身是正确的。底部字段是 32 位十六进制颜色(“H: 0xFFFFF4A1”),但您可以看到一些字符被拉伸(“x”、“4”和“1”)。在以 ARGB 格式列出每种颜色的第一个文本字段中也是如此。
使用的字体是 Myriad Pro Condensed。我最初使用 Myriad Pro Bold Condensed,我使用了几个月,但昨天突然字体变得比这里可见的更疯狂,所以我切换了。现在这个字体也被错误地渲染了。
我已经验证了字体。
我已经删除了我的 ASO 文件。
我在父精灵对象上使用 cacheAsBitmapMatrix,但 cacheAsBitmapMatrix 假设只影响移动设备,所以我不确定为什么它会在我的 ADL 下运行时呈现这样的字体(如果是问题)桌面。
newSwatch.cacheAsBitmapMatrix = new Matrix();
newSwatch.cacheAsBitmap = true;
这就是我调用字体的方式,它嵌入在我的库中。
//Create Text Field
private function swatchTextField():TextField
{
var myFont:Font = new MyFont();
var textFormat:TextFormat = new TextFormat();
textFormat.bold = true;
textFormat.color = 0xFFFFFF;
textFormat.font = myFont.fontName;
textFormat.size = swatchSize / 10;
var result:TextField = new TextField();
result.antiAliasType = AntiAliasType.ADVANCED;
result.blendMode = BlendMode.ERASE;
result.autoSize = TextFieldAutoSize.LEFT;
result.defaultTextFormat = textFormat;
result.embedFonts = true;
result.multiline = true;
result.selectable = false;
result.type = TextFieldType.DYNAMIC;
return result;
}
我不知道还能做什么。如果我切换到另一种字体,它可能会再次搞砸。当我单击它放大的对象时。放大时它也会旋转一点。这样做时,我可以看到字体错误略有变化。我几乎确信这是 cacheAsBitmapMatrix 的问题,但即使从代码中删除该错误仍然存在。
这是具有不同旋转的同一个对象:
任何线索都将不胜感激!
更新:
这个错误确实不是 Flash 的问题,而是 Apple 在 Mac OS X 10.6.7 中引入的一个错误,它影响了一些开放式字体的显示和打印。该错误已得到解决,现在可以下载修复程序:http://support.apple.com/kb/HT4605
【问题讨论】:
-
只是一个建议,您可以尝试添加 cacheAsBitmap bool 并在结果 textField 上将其设置为 true(创建时)。有时当字体被渲染为矢量转换时可能会导致问题,所以这可能是一个解决方案。
-
除非 newSwatch 是从 swatchTextField 创建的,在这种情况下我错了。 :( 只是猜测。
-
没有变化。即使我从父对象中删除阴影以及删除 cacheAsBitmapMatrix 和 cacheAsBitmap 标志,以便它完全是矢量(除了基本图形和文本字段之间的纹理位图子项),字体仍然呈现不正确。请记住,在这个项目上工作了一个多月后才开始发生这种情况,虽然使用不同的字体似乎是一种解决方案,但新字体最终也会被“感染”。
标签: flash actionscript-3 fonts matrix rendering