0

我正在开发一个多语言 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;
}

其余字体在需要时使用“默认字体”。

在保持当前样式表的同时,使用运行时加载字体实现多语言应用程序的最佳解决方案是什么?


是的,当用户更改语言而不是字体时,这些语言是从服务器下载的。

我担心的是,如果我必须下载与 Myriad 不同的亚洲字体,怎么能说 Flash,嘿,我的“默认字体”现在是这种亚洲字体。如果我必须显示语言名称,如何在不更改列表样式的情况下显示亚洲名称...

这并不容易。

4

2 回答 2

1

您可以在本地化的属性文件中fontWeight=boldfontWeight=normal在本地化属性文件中包含一个属性。然后您可以使用setStyle()来更改应用程序。上一个链接的示例:

StyleManager.getStyleDeclaration("Button").
            setStyle("color","Blue");

这可能是:

        StyleManager.getStyleDeclaration("DefaultFont").
                    setStyle("fontWeight",
resourceManager.getString('locale_properties', 'fontWeight'));

这不是完全正确的示例,但我希望它为您指明正确的方向。

另一种方法是动态加载新样式表: 如何将 CSS 文件动态加载到 Flex 应用程序中?

于 2008-12-31T07:04:02.440 回答
0

而不是将字体和语言文件嵌入 .swf 中,您不应该从服务器下载它们吗?

在 .swf 启动时下载字体文件,并在用户选择新语言时下载语言文件。

于 2008-12-22T16:19:47.033 回答