我像我这样嵌入在我的应用程序中:
[Embed(source="/assets/arial.ttf", fontName="Arial")]
private const arial:String;
使用以下内容进行Flex错误:
警告:为mx.core :: UITextField(UITextField75)指定了不兼容的嵌入字体'Arial'。此组件要求使用embedAsCFF = false声明嵌入字体。
将上面的内容更改为私有const embArial:String;得到了错误。为什么是这样?这个解释的内部是什么?
更改fontName无法解决。将变量更改为Arial:String确实解析。更改为arial:类无法解析。非常特别。它似乎与变量名称arial绑定。
没有关于字体的教程或规范真正解决了当字体嵌入绑定到变量时会发生什么。
答案 0 :(得分:2)
如果您的组件是MX(Halo),则希望embedAsCFF为false。
对于Spark组件,您可以嵌入AsCFF:true。
CSS实施:
Spark示例:
@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 [ :;?@ ] */ }
MX Halo示例:
@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 [ :;?@ ] */ }
使用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 Halo组件添加embedAsCFF=true
或embedAsCFF=false
。
答案 1 :(得分:1)
这个Adobe page has the syntax you need用于使用元数据在Actionscript中嵌入字体(注意,您也可以使用CSS嵌入字体)。