必须使用字符的字符编码来定义字符范围,这里的字符编码采用Unicode(统一字符编码)标准。
定义字符范围的另一种做法是在flex-config.xml中添加相关信息。用文本编辑器打开位于Flex Builder 2安装目录下的Flex SDK 2/frameworks/flex-config.xml文件,找到<fonts>标签。
<fonts>
<languages>
<language-range>
<lang>englishRange</lang>
<range>U+0020-U+007E</range>
</language-range>
</fonts>
按照以上格式添加字体的字符范围,在<lang>标签中设定标签的名称。这样,在程序中可以直接使用该名称来定义字符范围。例如:
@font-face {
src:local("Arial");
fontFamily: myFont;
flashType: true;
unicodeRange:” englishRange” //等同于U+0020-U+007E
}
在flex-config.xml的同目录下还有一个flash-unicode-table.xml文件,其中列出了绝大部分语言的Unicode的字符范围,供开发者参考,其中也有中文的资料:
<language-range>
<lang>Chinese (All)</lang>
<range>U+3000-U+303F,U+3105-U+312C,U+31A0-U+31BF,U+4E00-U+9FAF,U+FF01-U+FF60,U+F900-U+FAFF,U+201C-U+201D,U+2018-U+2019,U+2014,U+2026,U+FFE5,U+00B7</range>
</language-range>
嵌入字体的另一种方式是把字体放在外部的swf中,然后加载swf文件。例如:
@font-face {
src:url("./Arial.swf"); //指定文件地址
fontFamily: “myFont”;
}
这里不能使用flashType属性,该属性的值由SWF文件决定,无法再更改。在使用该字体之前,必须保证SWF文件已经加载完毕。
要在程序中使用该字体:
@font-face {
src:url("./Arial.swf");
fontFamily: “myFont”;
}
.PlainText {
fontFamily: "myFont ";
fontSize: 12;
}
.BoldText {
fontFamily: "myFont ";
fontSize: 12;
fontWeight: bold;
}
注意:在使用嵌入字体时,即使是同一字体,它的不同样式比如斜体和粗体要单独进行定义,互相独立,不能混在一起。
使用脚本也可以嵌入字体:
private var myFont:Class;
定义样式:.PlainText {
fontFamily: myArialFont;
fontSize: 12;
}
如果嵌入的字体很大,生成的程序文件也会很大,导致加载时要花较长时间,要避免这个问题,可以把字体文件打包成SWF文件,然后加载到程序中。下次再说这个问题吧