标签:
1 package 2 { 3 import flash.display.Sprite; 4 import flash.text.Font; 5 import flash.text.TextField; 6 import flash.text.TextFormat; 7 8 /** 9 * @author Frost.Yen 10 * @E-mail 871979853@qq.com 11 * @create 2015-6-26 下午3:23:38 12 * 13 */ 14 [SWF(width="800",height="600")] 15 public class EmbedFonts extends Sprite 16 { 17 /** 18 * •source 指定要嵌入的字体文件路径。还可以用 systemFont指定一个系统中安装的字体。这样的话就可以不需要 source参数了。 19 •fontName 这个实际上就是 fontFamily 的别名。 20 •embedAsCFF 如果不提供这个参数,默认就是true。所以,如果系统你嵌入的字体用于TextField,一定要将其设置为false。 21 •unicodeRange 要嵌入的文本的范围。见下表: 22 23 嵌入字体范围: 24 •大写字符 U+0020,U+0041-U+005A 25 •小写字符 U+0020,U+0061-U+007A 26 •数字 U+0030-U+0039,U+002E 27 •标点符号 U+0020-U+002F,U+003A-U+0040,U+005B-U+0060,U+007B-U+007E 28 •基本拉丁字符 U+0020-U+002F, U+0030-U+0039, U+003A-U+0040, U+0041-U+005A, U+005B-U+0060, U+0061-U+007A, U+007B-U+007E 29 •中文字符 U+3000-303F,U+3105-312C,U+31A0-31BF,U+4E00-9FAF,U+FF01-FF60,U+F900-FAFF,U+201C-201D,U+2018-2019,U+2014,U+2026,U+FFE5,U+00B7 30 31 详细的可以找到你本机的 FlexSDK/frameworks/flash-unicode-table.xml。还可以参考Setting character ranges。 32 */ 33 [Embed(source="fonts/msyh.ttf",fontName="YaHei_font",embedAsCFF="false",mimeType="application/x-font",unicodeRange="U+0020-U+002F, U+0030-U+0039, U+003A-U+0040, U+0041-U+005A, U+005B-U+0060, U+0061-U+007A, U+007B-U+007E,U+0020-U+002F,U+003A-U+0040,U+005B-U+0060,U+007B-U+007E,U+0030-U+0039,U+002E,U+0020,U+0061-U+007A,U+0020,U+0041-U+005A,U+3000-303F,U+3105-312C,U+31A0-31BF,U+4E00-9FAF,U+FF01-FF60,U+F900-FAFF,U+201C-201D,U+2018-2019,U+2014,U+2026,U+FFE5,U+00B7")] 34 private var _font:Class; 35 public function EmbedFonts() 36 { 37 var fontArr:Array= Font.enumerateFonts(false); 38 for each(var font:Font in fontArr) 39 trace(font.fontName, font.fontType); 40 //Font.registerFont(_font);//注册字体,如果在Embed字体的类中使用它,则不需要注册字体也可,上面的for each可以测试得知 41 42 test(); 43 } 44 private function test():void 45 { 46 var text:TextField = new TextField(); 47 text.width = 800; 48 text.height = 600; 49 text.selectable = false; 50 text.wordWrap = true; 51 52 var textFormat:TextFormat = new TextFormat(); 53 textFormat.font = "YaHei_font"; 54 textFormat.size = 24; 55 textFormat.color = 0xff0000; 56 text.appendText("0123456789\n"); 57 text.appendText("abcdefghijklmnopqrstuvwxyz\n"); 58 text.appendText("ABCDEFGHIJKLMNOPQRSTUVWXYZ\n"); 59 text.appendText("今天很困难,明天更困难,后天很美好。但是绝大多数人死在了明天晚上,如果你不努力的话。\n"); 60 text.appendText("水的清澈,並非因為它不含雜質,而是在於懂得沉澱;心的通透,不是因為沒有雜念,而是在於明白取捨。\n"); 61 text.appendText("/ * + - @!#$%^&*()~><‘;、(*^__^*)O(∩_∩)O嗯!<( ̄ˇ ̄)/[]~( ̄▽ ̄)~*\n"); 62 text.embedFonts = true; 63 text.setTextFormat(textFormat); 64 addChild(text); 65 66 trace(toOxString("ˇ▽")); 67 } 68 /** 69 * 返回16进制unicode码 70 * @param str 字符 71 * @return 72 * 73 */ 74 private function toOxString(str:String):String 75 { 76 var result:String=""; 77 var len:int=str.length; 78 for (var i:int=0; i < len; i++) 79 { 80 result += "U+" + (str.charCodeAt(i)).toString(16); 81 if(i < len - 1) 82 { 83 result += ","; 84 } 85 } 86 return result; 87 } 88 } 89 }
[ActionScript 3.0] 使用Embed在类中嵌入字体
标签:
原文地址:http://www.cnblogs.com/frost-yen/p/4602652.html