我已經瞭解了在AS3中嵌入字體的所有主題,我可以找到並嘗試所有解決方案。我可能錯過了一些明顯的東西,但我不完全明白我在做什麼,請引導我朝着正確的方向前進。許多答案都涉及Flash Builder或其他工具,但我使用的FlashDevelop爲。不知道這是否重要。爲什麼我不能在AS3中顯示嵌入的字體?
我有這行我Main.as:
[Embed(source = "assets/SKA_75_marul_CE_extended.ttf",
fontName = "SKA_75_marul_CE_extended",
fontWeight = "bold",
advancedAntiAliasing = "true",
mimeType = "application/x-font")]
public static var SKA_75_marul_CE_extended:String;
而這種存在於擴展雪碧的構造方法調用Pointer.as:
var format:TextFormat = new TextFormat();
format.font = "SKA_75_marul_CE_extended";
format.color = 0xFFCCCC;
format.size = 20;
var label:TextField = new TextField();
label.defaultTextFormat = format;
label.text = "test";
label.embedFonts = true;
label.antiAliasType = AntiAliasType.ADVANCED;
//label.setTextFormat(format); --> I tried this too, didn't work...
label.defaultTextFormat = format;
label.x += img.width + 50;
this.addChild(label);
唯一的辦法我發現要讓它顯示任何內容,如果我關閉embedFonts。我試過嵌入C:/windows/fonts/arial.ttf沒有成功。
嵌入字體似乎是一種黑暗的藝術,我必須在掙扎1個小時後才能承認。請發送幫助。
UPDATE:
這裏的工作代碼,原來它是由於其操作的正確順序...:
[Embed(source="assets/SKA_75_marul_CE_extended.ttf",
fontName = "myFont",
mimeType = "application/x-font",
fontWeight="normal",
fontStyle="normal",
unicodeRange="U+0020-U+007E",
advancedAntiAliasing="true",
embedAsCFF="false")]
private var myEmbeddedFont:Class;
var tf:TextFormat = new TextFormat("myFont", 20,0xffffff);
var t:TextField = new TextField;
t.embedFonts = true; // very important to set
t.defaultTextFormat = tf;
t.text = text;
t.x += img.width + 50;
t.width = 700;
this.addChild(t);
謝謝您的回答。 「正確的操作順序」原來是關鍵 – 2015-05-16 13:31:54