一直以來Flash對中文的支持就不是很好,不少人都發現不少漢字在Flex中沒法設置粗體,就是其中一個表現,通過一夜的折騰,終於突破了這個難題,其實,答案就在Adobe的官方教程裏,只能怪本身英文水平太差,廢話不表,直入正題,爲了便於描述,以google的思源黑體爲例:css
第一步:將字體編譯成swf文件java
將本身須要的字體(常規和粗體通常是分開的兩個字體文件,若是你還須要斜體和粗斜體,也可拷貝進來)拷貝到本身的程序中,我這裏是將思源黑體的NotoSansHans-Regular.otf和NotoSansHans-Bold.otf拷貝到src根目錄(這些在編譯後就能夠刪掉了),而後在根目錄創建syht.css,內容以下:app
/* CSS file */ @namespace s "library://ns.adobe.com/flex/spark"; @namespace mx "library://ns.adobe.com/flex/mx"; @font-face { src:url('NotoSansHans-Regular.otf'); font-family:syht; font-weight:normal; embed-as-cff:true; } @font-face { src:url('NotoSansHans-Bold.otf'); font-family:syht; font-weight:bold; embed-as-cff:true; }
而後右鍵:Compile CSS to SWF,編譯後會在目標文件夾生成syht.swf文件,這個就是包含了思源黑體的字體文件了,而後能夠刪除掉字體文件和syht.css,避免項目在重編譯時耗費時間.字體
第二步:加載字體文件flex
在主程序的初始化階段加載字體文件,這裏我是將syht.swf放在程序根目錄.google
protected function application1_initializeHandler(event:FlexEvent):void { FlexGlobals.topLevelApplication.styleManager.loadStyleDeclarations2("syht.swf", true); }
上述代碼中主程序在載入完成後會當即加載syht.swf字體文件url
第三步:添加對EmbeddedFontRegistry的引用spa
在主程序中import mx.core.EmbeddedFontRegistry;orm
<fx:Script> <![CDATA[ import mx.core.FlexGlobals; import mx.events.FlexEvent; import mx.core.EmbeddedFontRegistry; EmbeddedFontRegistry; protected function application1_initializeHandler(event:FlexEvent):void { FlexGlobals.topLevelApplication.styleManager.loadStyleDeclarations2("syht.swf", true); } ]]> </fx:Script>
第四步:添加編譯選項-theme+=frameworks\projects\spark\MXFTEText.cssblog
若是提示找不到該文件,請直接去SDK包裏對應的目錄下找,並拷貝到程序中,好比拷貝到根目錄,那麼-theme+=MXFTEText.css便可
而後就能夠設置fontFamily=syht來應用字體了,通常都是在global樣式中設定默認字體,我就不寫代碼了.
另外,若是是Flex3,那麼請忽略第四步,而且第一步的css中embed-as-cff請設置爲false