我有一个 flex 3 项目,我正在尝试将其升级到 flex 4.6 sdk。我的应用程序中有许多嵌入字体。当我通过 Eclipse/Flash 构建器构建时,这些显示正常。当我使用 mxmlc 构建时,没有使用嵌入的字体。我以相同的方式为两者构建字体,所以我假设有一些我缺少的编译器选项,或者我有导致问题的编译器选项。我已经尝试了所有我能想到的编译器选项,现在我陷入了死胡同……
<target name="compile" depends="getswcs, compilemodules">
<echo message="mxmlc=${mxmlc}"/>
<echo message="flex.lib.dir=${flex.lib.dir}"/>
<echo message="flex.extlib.dir=${flex.extlib.dir}"/>
<echo message="flex.locale=${flex.locale}"/>
<echo message="flex.locale.dir=${flex.locale.dir}"/>
<exec executable="${mxmlc}" dir="${basedir}" failonerror="true">
<arg line="'src/${main}'" />
<arg line="-o 'bin/${component.lowercase.name}.swf'" />
<arg line="-l+='${flex.lib.dir}'" />
<arg line="-sp src" />
<arg line="-accessible" />
<arg line="-strict" />
<arg line="-el '${flex.extlib.dir}'" />
<arg line="-compatibility-version=3.0.0" />
<arg line="-target-player '11.1'" />
<arg line="-include-libraries+=lib" />
<arg line="-locale ${flex.locale}" />
<arg line="-l+='${flex.locale.dir}'" />
</exec>
</target>
compileModules 构建我的字体,例如:
<exec executable="${mxmlc}" dir="${basedir}" failonerror="true">
<arg line="fonts/OCRAEXT.as" />
<arg line="-static-link-runtime-shared-libraries" />
<arg line="-o bin/lib/OCRAEXT.swf" />
</exec>`
作为文件:
public class OCRAEXT extends Sprite
{
[Embed(source='OCRAEXT.TTF', fontName='_OCRAEXT', embedAsCFF='false',
unicodeRange='U+0030-U+0039,U+002E,U+002F,U+20AC')]
public static var font:Class;
}
我认为这里没有问题,因为在 Eclipse 中构建应用程序之前,字体已经通过我的 compileModules 构建,字体显示正确。