用于Label的Spark嵌入字体

时间:2014-05-03 17:05:17

标签: flex air flex-spark

我一直在Flash和Flex中使用字体嵌入。我以为我明白它如何与Spark一起工作但是...... 我将Apache Flex 4.12与AIR 13.0一起使用

我的CSS:

@font-face {
    src: url("../../../lib/formata-light-1361538983.ttf");
    fontFamily: "Formata-Light";
    embedAsCFF:true;
}
@font-face {
    src: url("../../../lib/formata-light-1361538983.ttf");
    fontFamily: "Formata-Light-NoCFF";
    embedAsCFF:false;
}
@font-face {
    src: url("../../../lib/Formata-Regular.ttf");
    fontFamily: "Formata";
    embedAsCFF:true;
    fontWeight: normal;
}
@font-face {
    src: url("../../../lib/Formata-Regular.ttf");
    fontFamily: "Formata-NoCFF";
    embedAsCFF:false;
    fontWeight: normal;
}
@font-face {
    src: url("../../../lib/Formata-Bold.ttf");
    fontFamily: "Formata";
    embedAsCFF:true;
    fontWeight: bold;
}
@font-face {
    src: url("../../../lib/Formata-Bold.ttf");
    fontFamily: "Formata-NoCFF";
    embedAsCFF:false;
    fontWeight: bold;
}

我的代码:

<s:VGroup id="grp_debug">
    <s:Label fontFamily="Formata-Light" text="Label Formata-Light" fontWeight="normal" />
    <s:Label fontFamily="Formata-Light-NoCFF" text="Label Formata-Light-NoCFF" fontWeight="normal" />
    <s:Label fontFamily="Formata" text="Label Formata" fontWeight="normal" />
    <s:Label fontFamily="Formata-NoCFF" text="Label Formata-NoCFF" fontWeight="normal" />
    <s:Label fontFamily="Formata" text="Label Formata bold" fontWeight="bold" />
    <s:Label fontFamily="Formata-NoCFF" text="Label Formata-NoCFF bold" fontWeight="bold" />

    <s:RichText fontFamily="Formata-Light" text="RichText Formata-Light" fontWeight="normal" />
    <s:RichText fontFamily="Formata-Light-NoCFF" text="RichText Formata-Light-NoCFF" fontWeight="normal" />
    <s:RichText fontFamily="Formata" text="RichText Formata" fontWeight="normal" />
    <s:RichText fontFamily="Formata-NoCFF" text="RichText Formata-NoCFF" fontWeight="normal" />
    <s:RichText fontFamily="Formata" text="RichText Formata bold" fontWeight="bold" />
    <s:RichText fontFamily="Formata-NoCFF" text="RichText Formata-NoCFF bold" fontWeight="bold" />

    <s:Button fontFamily="Formata-Light" label="Button Formata-Light" fontWeight="normal" />
    <s:Button fontFamily="Formata-Light-NoCFF" label="Button Formata-Light-NoCFF" fontWeight="normal" />
    <s:Button fontFamily="Formata" label="Button Formata" fontWeight="normal" />
    <s:Button fontFamily="Formata-NoCFF" label="Button Formata-NoCFF" fontWeight="normal" />
    <s:Button fontFamily="Formata" label="Button Formata bold" fontWeight="bold" />
    <s:Button fontFamily="Formata-NoCFF" label="Button Formata-NoCFF bold" fontWeight="bold" />

</s:VGroup>

我得到了什么:

Different tryes with embedding fonts

我认为Label可以使用CFF字体,因为它使用TLF引擎。无论如何,尝试了每个配置,LabelRichText无效... 顺便说一句,我不明白为什么Buttons可以使用CFF和非CFF字体。

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,但我并不完全满意。

首先,您必须确保在安装Flex和AIR SDK时检查了Flex字体管理器。

最新版本的Apache Flex似乎在嵌入CFF字体方面存在问题。 由于嵌入在旧版本(Flex 4.10 AIR 3.8)中运行良好,我将jar复制到/ lib / external / optional中。

afe.jar是唯一一个具有显着尺寸变化的人(1.37Mo - > 626Ko)。它必须是使用的那个(CFFFontManager是优先的但不起作用......)因为现在显示了我的字体。 虽然有一个丑陋的填充物。

enter image description here

如果有人找到允许使用预期的CFFFontManager的解决方案,那就太棒了。

答案 1 :(得分:-1)

您是否了解移动项目you have to embed fonts twice?我复制了以下文字:

关于移动设备中的字体,您需要了解一些事项:

  • 所有移动设备外观,LabelItemRenderer和IconItemRenderer使用

  • StyleableTextField(基于TextField)而不是Flash文本 发动机(FTE)

  • Spark Label组件使用FTE StyleableTextField 仅支持embedAsCFF = false
  • 的嵌入字体
  • 你必须嵌入 字体两次,一次使用embedAsCFF = false,再次使用embedAsCFF = true, 在两种类型的文本组件中使用字体
  • 避免使用嵌入式 带有可编辑文本的字体(TextInput和TextArea)