场景:
Flex应用程序利用@ font-face声明嵌入字体.(嵌入字体需要能够旋转文本.)
该应用程序最初是作为英语应用程序开发的,但在本地化期间,有必要找到能够显示亚洲字符的unicode字体.应用程序的原始实现使用四种字体来满足字符强调的各种排列.Bold,Bold Italic,Italic和Normal都是通过Arial系列中相应的Arial字体提供的.
问题:
当尝试将字体编译成可用于粗体,斜体和粗体斜体的字体时(是的,它不是理想的,这只是一个测试,看它是否可以完成):
@font-face { src:url("/fonts/ArialUnicode.ttf");
fontFamily: myFamily;
fontWeight: normal;
fontStyle: normal;
advancedAntiAliasing: true; }
@font-face { src:url("/fonts/ArialUnicode.ttf");
fontFamily: myFamily;
fontWeight: bold;
fontStyle: normal;
advancedAntiAliasing: true; }
etc.
Run Code Online (Sandbox Code Playgroud)
问题是,在编译应用程序时,Flex会变得暴躁,并提供以下错误消息:
[ERROR] /dirpath/Style.css:[49,-1] exception during transcoding: Font for alias 'myFont' with italic style was not found at: file:/dirpath/fonts/ArialUnicode.ttf
因此,与一些调查已经确定,由于统一既不支持也不斜体大胆,当Flex编译器试图嵌入字体,它会不高兴,因为它无法找到那个将满足CSS要求指定位置的字体.
现在,当font-face声明恢复到最简单的形式时:
@font-face { src:url("/fonts/ArialUnicode.ttf");
fontFamily: myFamily;
fontWeight: normal;
fontStyle: normal;
advancedAntiAliasing: true; }
Run Code Online (Sandbox Code Playgroud)
一切编译好,应用程序显示所有正常的重量,正常风格的亚洲字符罚款.但是,当在样式表中显示要以粗体或斜体显示的内容时,会出现一个框,表示没有嵌入字体,也没有任何可以在这些样式中呈现该字符的系统字体.
现在这里变得奇怪了.
如果在系统上安装完全相同的Unicode字体,它将开始以粗体和斜体显示亚洲字符.这没有任何意义,因为当Flex试图嵌入该字体以满足上述css样式时,Bold和Italic字符不在字体中.然而很明显,这个字体被用来显示粗体和斜体字符,就像它们在作为系统字体安装之前只是盒子一样.这是某种Flex伏都教吗?如果是这样,我可以通过某种方式以编程方式调用所述voodoo,因为我不能依赖用户必须出去并在他们的系统上安装unicode字体.
编辑:以下是一些可能澄清问题的进一步信息.
我的问题是不是真的,我们怎么办多种字体的面孔和罗马字符的权重,这是"怎样的Flex应用粗体和斜体的系统字体.更所以,当它说,试图嵌入时字体不支持那些那个字体."
使问题可重现的步骤如下: