【发布时间】:2011-05-07 04:28:29
【问题描述】:
我在这方面做了很多搜索,但还没有找到解决方案,我希望这里的董事会可以帮助我。
我已经建立了一个项目(就像我之前有很多项目一样),它使用单独的字体 SWF 为我的项目提供字体。加载后,我使用 Font.registerFont() 将这些字体注册到全局字体目录。我的文本样式来自外部加载的样式表。
由于某种我无法弄清楚的原因,当我尝试创建一个 textField 并使用我的嵌入字体时,文本会从屏幕上消失。如果在创建 textField 时我将 embedFonts 设置为 false,那么文本确实会以正确的大小和颜色出现(取自样式表),但显然我的自定义字体应该是默认系统字体。
我使用的代码如下:
TTWTextHelper.traceAvailableFonts();
TTWTextHelper.traceStyleSheet(myStyleSheet);
var myText = new TextField;
with (myText)
{
width = 250;
autoSize = TextFieldAutoSize.LEFT;
selectable = false;
antiAliasType = AntiAliasType.ADVANCED;
styleSheet = myStyleSheet;
embedFonts = true;
border = true;
multiline = true;
wordWrap = true;
htmlText = "<span class='body'>Test</body>";
}
myText.x = 300;
myText.y = 300;
addChild(myText);
我知道(显然)我的字体是嵌入的,因为当我运行 TTWTextHelper.traceAvailableFonts() 时,我列出了两种字体。
public static function traceAvailableFonts():void
{
/*
* See what fonts we have to play with
*/
var embeddedFonts:Array = Font.enumerateFonts(false);
embeddedFonts.sortOn("fontName", Array.CASEINSENSITIVE);
trace("how many fonts? " + embeddedFonts.length);
Tools.pr(embeddedFonts);
}
结果:
how many fonts? 2
(array) {
[0] => (object) [object MarkerFeltThinPlain]
[1] => (object) [object MarkerFeltWidePlain]
}
并且我知道我的 styleSheet 已加载并且正在被 actionscript 正确解析,就像我运行 TTWTextHelper.traceStyleSheet(myStyleSheet);我得到了正确列出的样式:
public static function traceStyleSheet(_styleSheet:StyleSheet):void
{
trace("Tracing StyleSheet: " + _styleSheet);
var styles:Array = _styleSheet.styleNames;
for each(var style : * in styles)
{
trace("Style Name: " + style);
var thisStyle:Object = _styleSheet.getStyle(style);
Tools.pr(thisStyle);
}
}
结果:
Tracing StyleSheet: [object StyleSheet]
Style Name: a
(object) {
[color] => (string) #ff0000
[leading] => (string) 2
[fontFamily] => (string) "MarkerFeltThin-Plain"
[fontSize] => (string) 15
[textAlign] => (string) left
}
Style Name: .title
(object) {
[color] => (string) #ff0000
[leading] => (string) 2
[fontFamily] => (string) "MarkerFeltWide-Plain"
[fontSize] => (string) 20
[textAlign] => (string) left
}
Style Name: .body
(object) {
[color] => (string) #4b4b4b
[leading] => (string) 2
[fontFamily] => (string) "MarkerFeltThin-Plain"
[fontSize] => (string) 15
[textAlign] => (string) left
}
非常感谢任何建议!谢谢!
【问题讨论】:
-
我在这方面做了更多的尝试......并且遇到了一个特殊的问题/解决方案......我在发布我的 fonts.swf 文件时使用 MAC CS5我注意到如果字体名称(不是链接或类名称,而是字体名称)的标题中有多个单词或任何标点符号,那么它在我的项目中将不起作用。例如,“Arial”或“Century”或“Hurculanum”都有效,而“MarkerFeltThin-Plain”或“Stencil Std”或“Co Headline Bd”则无效。在这两个列表中混合了 TrueType 和 OpenType。这是踢球者,我在 PC CS3 上创建了相同的文件,一切正常。
标签: actionscript-3 actionscript fonts embed