0

我需要为不同的字符集应用不同的系统字体,如 SimSun 和 Calibri,例如,A、B、C...和承、认...
我有这个问题,因为象形文字在 Calibri 中不可读,但英文字母看起来SimSun中的丑陋。而且我希望我的应用程序在两种语言中看起来都很漂亮。那么有人知道我怎么能弄清楚吗?

4

2 回答 2

1

一种方法是根据当前语言环境(这将确定需要哪些字符集)动态加载具有 CSS 样式的不同嵌入字体。

首先创建嵌入的字体。

英文.css

@font-face {
        fontFamily: Calibri;
        fontStyle: normal;
        fontWeight: normal;
        ...
}

Application
{
        font-family: Calibri;
}

其他.css

@font-face {
    font-family:SimSun;
    ... 
}

Application {
    font-family: SimSun
}

然后根据您的语言环境,选择要加载的文件。声明了 CSS,以便将字体应用于整个应用程序,因此您只需要在一个地方执行此操作,可能在 application 上preInitialize

应用程序.mxml

loadLocaleFont() {
    var cssFileToLoad = getLocaleCssFile();
    var styleEvent:IEventDispatcher = StyleManager.loadStyleDeclarations(cssFileToLoad);
}
于 2013-01-16T21:19:16.410 回答
0

您可以在自定义FontManagement 类中实现开关。如果您的主要字体不支持某种语言,请恢复为另一种字体或使用系统字体(客户端默认)。使用类作为格式化对象的集中LabelTextField

或者,您可以尝试将字体嵌入 cssclass并将style名称分配给您的LabelTextField对象。两者都应该工作。

var params:Object = {color:0xffffff , size:12, supported:false , etc...};
var tf:TextField= FontManagement.formatTextField(tf , params );

public class FontManagement
{
    public static function formatTextField( textfield:TextField , params:Object ):TextField
    {
        if( params.supported )
           tf.embedFonts = true;
        else
           tf.embedFonts = false;

        return textfield;
    }
}
于 2013-01-16T13:05:25.977 回答