多语言Flex应用程序

时间:2008-12-22 15:53:12

标签: flex fonts runtime multilingual

我正在开发一个多语言的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不同的亚洲字体,怎么能说闪存,嘿,我的“默认字体”现在是这种亚洲字体。如果我必须显示语言名称,如何在不更改列表样式的情况下显示亚洲名称...

这并不容易。

2 个答案:

答案 0 :(得分:1)

您可以在本地化的属性文件中包含fontWeight=boldfontWeight=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启动时下载字体文件,并在用户选择新语言时下载语言文件。