2010-05-14 71 views
0

我對[emb​​ed]標記有問題。即使我將textfield的embedFonts屬性設置爲true,文本也不會顯示出來。[embed]標記和字體問題

事情是,它以前的工作,並經過一些改變(不涉及字體)它沒有。我想了解字體的嵌入過程如何在我的代碼中找到錯誤。

我宣佈:

[Embed(source = 'asset/font.ttf', fontName="font", mimeType="application/x-font-truetype")] private static var font:String; 

指定的字體方案。

然後我在聲明我的textFormat時調用「font」。 「fontName」屬性是與textformat的鏈接嗎?

我Flashdevelop中和flex_sdk_4.0.0.14159工作(大土坯之一,空氣(〜140mo))

THX!

-Leg

+0

你說它以前工作過(在你做出改變之前)......你做了什麼改變?對於什麼值得我輸入嵌入的字體作爲類不是字符串。我還經常需要在embed語句中設置fontStyle和fontWeight屬性以使它們正確嵌入。你在調用Font.registerFont(font)嗎? – heavilyinvolved 2010-05-14 16:00:08

+0

它在很久以前。我想我沒有改變任何有關字體的東西。我試圖註冊,它也不會改變任何^^。不錯的嘗試 :)。這個文檔很糟糕:/ – Legogo 2010-05-16 11:04:23

回答

2

這可能是一個棘手的事情得到恰到好處。大約10天前,我不得不與這個戰鬥,只有嘗試將幾個名稱和參數組合到嵌入中才能使其工作。

我讀博客報道,有軼事的建議,如果你需要加粗或不加什麼,你必須包括fontStyle。這裏是爲我工作的咒語:我不認爲unicodeRange

[Embed(source="assets/HelveticaBold.ttf", 
     fontName="HelveticaBold", 
     fontWeight="bold", 
     unicodeRange='U+0020-U+002F,U+0030-U+0039,U+003A-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E')] 
private static var HelveticaBold:Class; 

嚴格必要的,但我並不需要整個字體和上面爲您提供了「基本拉丁語」在IDE的等價物。

當我想要使用的字體我這樣做是這樣的:

var titleFormat:TextFormat = new TextFormat(); 
    titleFormat.font = "HelveticaBold"; 
    titleFormat.bold = true; 
    titleFormat.color = 0x0; 
    titleFormat.size = 18; 

    var errorTitle:TextField = new TextField(); 
    addChild(errorTitle); 
    errorTitle.embedFonts = true; 
    errorTitle.autoSize = TextFieldAutoSize.LEFT; 
    errorTitle.antiAliasType = AntiAliasType.ADVANCED; 
    errorTitle.x = 5; 
    errorTitle.y = 5; 
    errorTitle.defaultTextFormat = titleFormat; 

我無法相信我錯過了最重要的一塊。在我強制mxmlc編譯器使用自定義字體管理器之前,上述操作無效。

添加如下編譯器選項:

-managers=flash.fonts.AFEFontManager 

有上troubleshooting fonts in Flex 3一個Adobe的技術說明,列出了可用的字體管理器。嘗試他們,直到你找到一個工作。

+0

[embed]標籤中的fontName或fontFamily:它有關係嗎? 如果我將管理器行添加到編譯器選項,它將返回一個錯誤:「無法找到指定的文件」。 這是非常棘手的:/ – Legogo 2010-05-16 11:00:13

+0

在網絡上的其他一切後,編譯器標誌終於爲我解決了它。 – Dwayne 2010-10-20 04:55:50