我正在开发一个多语言的flex应用程序,必须运行27种以上的语言,包括亚洲语,希伯来语和阿拉伯语,以及所有欧洲语言。
我们使用嵌入式字体(Myriad Pro),并且在css中有很多样式可以使用嵌入字体。我们已经测试了Myriad的修改版本,包括取自Arial Unicode的所有非西方unicode字符,它可以正常工作,但swf的重量是不可接受的。
我们在css中有这两行......
@font-face
{
src: url("MyriadPro-Semibold.otf");
fontFamily: "Default Font";
fontWeight: bold;
advancedAntiAliasing: true;
}
@font-face
{
src: url("MyriadPro-Regular.otf");
fontFamily: "Default Font";
advancedAntiAliasing: true;
}
其余的stlyes在需要时使用“默认字体”。
在维护当前样式表的同时,使用运行时加载字体实现多语言应用程序的最佳解决方案是什么?
是的,当用户更改语言时,将从服务器下载语言,但不是字体。
我担心的是,如果我必须下载与Myriad不同的亚洲字体,怎么能说闪存,嘿,我的“默认字体”现在是这种亚洲字体。如果我必须显示语言名称,如何在不更改列表样式的情况下显示亚洲名称...
这并不容易。
答案 0 :(得分:1)
您可以在本地化的属性文件中包含fontWeight=bold
或fontWeight=normal
的属性。然后,您可以使用setStyle()来更改应用程序。上一个链接的一个例子:
StyleManager.getStyleDeclaration("Button").
setStyle("color","Blue");
可能是:
StyleManager.getStyleDeclaration("DefaultFont").
setStyle("fontWeight",
resourceManager.getString('locale_properties', 'fontWeight'));
这不是完全正确的例子,但我希望它指出你正确的方向。
另一种方法是动态加载新样式表: How do you dynamically load a CSS file into a Flex application?
答案 1 :(得分:0)
不应该将.swf中嵌入的字体和语言文件从服务器下载吗?
在.swf启动时下载字体文件,并在用户选择新语言时下载语言文件。