Flex字体篇——动态嵌入字体(按需嵌入)

来源:互联网 发布:淘宝apass会员是什么 编辑:程序博客网 时间:2024/05/21 13:22

接上篇:Flex字体篇——动态嵌入字体

按需嵌入

中文字体小的几M,大的十几M,如果把整个中文字体都嵌入到swf会使容量增大,不利于网络传输,这时应该采取按需嵌入的办法,只把使用到的字符才嵌入到字体swf里。

按需嵌入的字体样式

需要编译的css文件:wb_fz22.css

/* Generate by wizBuilder CS */

/* Text:1608 Char:62 */

@font-face {

src:local("方正黑体简体");

fontFamily: WB-方正黑体简体;

fontStyle: normal;

fontWeight: normal;

advancedAntiAliasing: true;

unicodeRange:

U+65B9,U+6B63,U+9ED1,U+4F53,U+7B80,U+000A,U+003C,U+0046,U+004F,U+004E,U+0054,U+0020,U+004B,U+0045,

U+0052,U+0049,U+0047,U+003D,U+0022,U+0031,U+003E,U+002F,U+8BF7,U+53CC,U+51FB,U+8FD9,U+91CC,U+7F16,U+8F91,

U+6587,U+672C,U+002E,U+0050,U+0032,U+0033,U+0034,U+0035,U+0036,U+0037,U+0038,U+0039,U+0030,U+5E72,U+9898,

U+000D,U+786E,U+9009,U+9879,U+9519,U+8BEF,U+5355,U+0074,U+0072,U+0075,U+0065,U+0066,U+0061,U+006C,U+0073,

U+0078,U+65C1,U+767D;

}

该css文件是外部exe自动生成,并且自动进行编译生成字体swf的,其中U+****的代码是使用到的unicode字符。

C#中生成上述unicode字符的主要代码如下:

private static string ToUnicode(char value)

{

byte[] bytes = Encoding.Unicode.GetBytes(value.ToString());

return "U+" + bytes[1].ToString("X2") + bytes[0].ToString("X2");

}

如何让外部exe自动编译css生成swf参考上篇方法使用命令行。

何时才按需嵌入字体

在设计阶段,用户输入是不确定的,应该把整个字库嵌入到编辑环境满足用户的编辑需要。

在发布后浏览阶段,这时用户的输入已经确定,应该只嵌入所需的字符。

整个字库嵌入和按需嵌入的比较

整个字库嵌入的容量

按需嵌入的容量(根据使用的字符数量变化)