我已经做了很多搜索,但还没有找到解决方案,我希望这里的董事会可以帮助我。
我已经设置了一个项目(以前我有很多项目的方式),它使用单独的字体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
}
任何建议非常感谢!谢谢!
答案 0 :(得分:1)
尝试检查字体fontType属性,如果字体Type属性为“embedded CFF”,则它们不会显示TextField,因为您需要Flash Text Engine进行渲染。
答案 1 :(得分:1)
有时使用[Embed]而不是swf帮助嵌入字体文件(最近遇到过)。