2012-04-06 55 views
1

我嵌在我的應用程序,像這樣:Flex綁定到嵌入Arial字體變量,名爲private var arial:String?

[Embed(source="/assets/arial.ttf", fontName="Arial")] 
private const arial:String; 

的Flex錯誤有以下幾點:

警告:不兼容的嵌入字體爲mx.core '宋體' 指定::的UITextField(UITextField75)。該組件要求使用embedAsCFF = false聲明嵌入字體。

將上述內容更改爲private const embArial:String;得到錯誤的乘坐。爲什麼是這樣?這個解釋的內部是什麼?

更改fontName不能解析。將變量更改爲Arial:字符串確實解決。更改爲arial:類無法解析。非常奇特。它似乎綁定到變量名稱arial。

沒有任何關於字體的教程或規範真正解決了將字體嵌入綁定到變量時發生的情況。

回答

2

如果您的組件是MX(Halo),您希望embedAsCFF爲false。

對於Spark組件,您embedAsCFF:true。

CSS實現:

星火例子:

 
@font-face 
{ 
    font-family: "Myriad Web Pro"; 
    src: url("./assets/fonts/MyriadWebPro.ttf"); 
    font-weight: normal; 
    embedAsCFF: true; /* Spark */ 
    advancedAntiAliasing: true; 
    unicodeRange: 
     U+0041-U+005A, /* Upper-Case [A..Z] */ 
     U+0061-U+007A, /* Lower-Case a-z */ 
     U+0030-U+003F, /* Numbers [0..9] */ 
     U+0020-U+002F, /* Space + Punctuation [ !"#$%&'()*+,-./ ] */ 
     U+003A-U+0040; /* Special Chars [ :;[email protected] ] */ 
} 

MX暈例子:

 
@font-face 
{ 
    font-family: "Myriad Web Pro"; 
    src: url("./assets/fonts/MyriadWebPro.ttf"); 
    font-weight: normal; 
    embedAsCFF: false; /* Halo */ 
    advancedAntiAliasing: true; 
    unicodeRange: 
     U+0041-U+005A, /* Upper-Case [A..Z] */ 
     U+0061-U+007A, /* Lower-Case a-z */ 
     U+0030-U+003F, /* Numbers [0..9] */ 
     U+0020-U+002F, /* Space + Punctuation [ !"#$%&'()*+,-./ ] */ 
     U+003A-U+0040; /* Special Chars [ :;[email protected] ] */ 
} 

使用Flex,我發現很容易與CSS工作的字體。只需在您的主應用程序鏈接樣式表:

<!--- CSS style --> 
<fx:Style source="assets/css/common.css" /> 

如果你喜歡嵌入,它應該是爲轉碼Class類型。

嵌入實現:

[Embed(systemFont = "Arial", fontWeight = "Regular", fontName = "Arial", mimeType = "application/x-font", embedAsCFF = "false", 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,U+00A1-U+00A1,U+00A3-U+00A3,U+00A9-U+00A9,U+00AE-U+00AE,U+00B0-U+00B0,U+00BC-U+00BE,U+00BF-U+00BF,U+00C0-U+00FF,U+2013-U+2014,U+2018-U+2019,U+201C-U+201D,U+2022-U+2023,U+2120-U+2120,U+2122-U+2122")] 
    private static const Arial:Class; 

在你的嵌入,分別Spark或MX暈組件添加embedAsCFF=trueembedAsCFF=false

+0

我很欣賞答案,我知道這一切。問題是關於Flex爲什麼以及如何在全局範圍內綁定到一個名爲arial的變量的特性。 – MetaChrome 2012-04-06 22:03:59

+1

我認爲答案是這樣的:當你嵌入字體(或圖像)時,你需要在你的代碼中引用它。所以嵌入式資產與一個變量相關聯,我們可以在代碼中使用它。當您將此變量更改爲字符串時,您的錯誤消失了,我假設關聯失敗的B/C。該變量需要被鍵入爲一個類,以便您稍後可以實例化此類的一個實例並在您的代碼中引用它。 – 2012-04-06 23:55:36

+0

不管變量var arrial是一個String還是一個類,它都沒有消失。但我鼓勵你不要尋求答案,因爲這不是一個好奇的問題,而是一個相關的問題。 – MetaChrome 2012-04-07 23:54:45