我是 Ticore,論壇上看有人問 Flash CS5.5 用 AS3 建立的 TextField 無法動態設置中文字體
實際測試之後,發現並不是 Flash IDE 的問題
而是 Flash Player 10.2, 10.3 且當 swf version 為 11, 12 時,TextField 用中文名稱設定字型失效
測試程式碼如下:

package {
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFormat;
 
	[SWF(width="300", height="200")]
	public class Main extends Sprite {
 
		public function Main() {
			var txt:TextField = new TextField();
			// txt.defaultTextFormat = new TextFormat("Microsoft JhengHei", 16);
			txt.defaultTextFormat = new TextFormat("微軟正黑體", 16);
			txt.text = "微軟正黑體";
			txt.x = 100;
			txt.y = 50;
			addChild(txt);
		}
	}
}

假如用 Flash CS5.5 發布為 Flash Player 10.2 版本
就會發現 “微軟正黑體” 設置失效
假如改成發布為 Flash Player 10, 10.1 版本
中文字體設置又正常了

最簡單的解決方式是統一使用中文字型的英文名稱
譬如 “微軟正黑體” 英文叫做 “Microsoft JhengHei”
這樣就能成功動態設置中文字型了

可是在 Flash Builder 開發上,SDK 都有最低 Player 版本的限制
無法隨意亂設 Player Version
另一方面,這個設定值也是需要對應 SDK 目錄下有 playerglobal.swc
假如真的確定程式碼內沒有需要用到 Player 10.2, 10.3 新 API 話
還可以用編譯參數 -swf-version=10 的方式,來改善這問題

SWF 版本與 Player 版本對照可以參考這裡
Versioning in Flash Runtime (-swf-version)
只要將 SWF 版本設為 10,就算使用 10.3 Player 播放
它也會自動關閉新的 API,以舊版的功能執行
間接避開 TextField 找不到中文字體問題