2012-04-06 58 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