在flex裡內嵌文字有幾種方式
1. FLEX 動態更換中文字型 ( 非嵌入方式 )
這個請參考下面這篇的教學
http://blog.corausir.org/programing/ausir-777
不過上面的方式 必須以PHP配合
並且空間要支援PHP的EXEC呼叫外部EXE檔的功能
許多空間伺服器並沒有支援這個功能
另外我在測試時也發現一個問題
就是當我要產生的文字過長(ex: 400~500字)
會發生讀取錯誤的問題
2. 直接內嵌字體
(1) 使用css
1 2 3 4 5 6 7 |
@font-face { src: url("location") | local("name"); fontFamily: alias; [fontStyle: normal | italic | oblique;] [fontWeight: normal | bold | heavy;] [advancedAntiAliasing: true | false;] } |
(2)使用as3嵌入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package { import flash.text.Font; public class ArialFont { [Embed(source='assets/fonts/arial.ttf', fontName='ArialV', mimeType='application/x-font', embedAsCFF="true")] private static var ArialF:Class; [Embed(source='assets/fonts/arialbd.ttf', fontName='ArialV', fontWeight="bold", mimeType='application/x-font', embedAsCFF="true")] private static var ArialBoldF:Class; [Embed(source='assets/fonts/ariali.ttf', fontName='ArialV', fontStyle="italic", mimeType='application/x-font', embedAsCFF="true")] private static var ArialItalicF:Class; [Embed(source='assets/fonts/arialbi.ttf', fontName='ArialV', fontWeight="bold", fontStyle="italic", mimeType='application/x-font', embedAsCFF="true")] private static var ArialBoldItalicF:Class; public function ArialFont() { Font.registerFont( ArialF ); Font.registerFont( ArialBoldF ); Font.registerFont( ArialItalicF ); Font.registerFont( ArialBoldItalicF ); } } } |
直接嵌入文字會遇到一個很大的問題,就是文字太肥了,
這時,若我們只需要嵌入該字型檔的部份字型,而不需要全部嵌入
就可以設定unicodeRange
例如下面的範例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?xml version="1.0"?> <!-- fonts/EmbeddedFontCharacterRange.mxml --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Style> @font-face { src:url("../assets/MyriadWebPro.ttf"); fontFamily: myFontFamily; advancedAntiAliasing: true; unicodeRange: U+0041-U+005A, /* Upper-Case [A..Z] */ U+0061-U+007A, /* Lower-Case a-z */ U+0030-U+0039, /* Numbers [0..9] */ U+002E-U+002E; /* Period [.] */ } TextArea { fontFamily: myFontFamily; fontSize: 32; } </mx:Style> <mx:Panel title="Embedded Font Character Range"> <mx:TextArea width="400" height="150"> <mx:text> The Text Uses Only Some of Available Characters 0 1 2 3 4 5 6 7 8 9. </mx:text> </mx:TextArea> </mx:Panel> </mx:Application> |
可以只嵌入部份的文字,
若我們希望只嵌入中文字的話,則可以參考flash-unicode-table.xml裡面
有一般文字檔案的unicode編碼字集範圍
這樣可以大大改善embed文字造成檔案過大及編譯過久的問題了!
參考資料: http://hi.baidu.com/sitoto/blog/item/12528ab1124a345c0923028b.html