分类: 系统运维
2008-03-24 13:51:05
Application{
fontSize:12;
fontFamily: Arial, "_sans";
}
当用户的机器上没有Arial字体,Flash Player自动使用“_sans”设备字体。和系统字体的使用不同,设备字体必须用引号。
有些情况要求必须使用嵌入字体,例如使用了动画效果中的部分效果如Fade(淡入淡出效果)、Rotate(旋转效果),Dissolve(溶解效果)。可以在样式在定义嵌入字体:
@font-face {
src:local("Arial"); //嵌入本机字体
fontFamily: myFont; //字体的别名
fontStyle: normal; //默认normal,正常,可选值:italic | oblique | normal
fontWeight: normal; //默认normal,正常,可选值:bold | heavy | normal
flashType: true; //默认true,添加文本的额外信息,使得文本抗锯齿,平滑显示
}
Application{
fontSize:12;
fontFamily:myFont; //指定字体,使用嵌入字体的别名
}
在嵌入一些双字节型的字体,比如中文字体,日文字体时,字体信息复杂,字体文件大,为了减小程序的文件大
小,可以对嵌入字体的字符范围进行限制,这样,没有使用的字符信息不会被包含在文件中。例如上面使用了英文字体,只能使用英文范围内的字符,如果使用了中
文,将无法显示。
在font-face中使用unicodeRange来指定字符范围,例如:
@font-face {
src:local("Arial");
fontFamily: myFont;
flashType: true;
unicodeRange:
U+0041-U+005A, /* 大写字母 [A..Z] */
U+0061-U+007A, /* 小写字母 a-z */
U+0030-U+0039, /* 数字 [0..9] */
U+002E-U+002E; /* 点 [.] */
}
必须使用字符的字符编码来定义字符范围,这里的字符编码采用Unicode(统一字符编码)标准。
定义字符范围的另一种做法是在flex-config.xml中添加相关信息。用文本编辑器打开位于Flex Builder 2安装目录下的Flex SDK 2/frameworks/flex-config.xml文件,找到
按照以上格式添加字体的字符范围,在
@font-face {
src:local("Arial");
fontFamily: myFont;
flashType: true;
unicodeRange:” englishRange” //等同于U+0020-U+007E
}
在flex-config.xml的同目录下还有一个flash-unicode-table.xml文件,其中列出了绝大部分语言的Unicode的字符范围,供开发者参考,其中也有中文的资料:
嵌入字体的另一种方式是把字体放在外部的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;
}
注意:在使用嵌入字体时,即使是同一字体,它的不同样式比如斜体和粗体要单独进行定义,互相独立,不能混在一起。
使用脚本也可以嵌入字体:
[Embed(mimeType='application/x-font', source='../assets/Arial.TTF', fontName='myArialFont')]
private var myFont:Class;
定义样式:
.PlainText {
fontFamily: myArialFont;
fontSize: 12;
}
如果嵌入的字体很大,生成的程序文件也会很大,导致加载时要花较长时间,要避免这个问题,可以把字体文件打包成SWF文件,然后加载到程序中。下次再说这个问题吧
|