進階文字顯示Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本 ActionScript 3.0 在 flash.text 套件中提供了多種可控制顯示文字屬性的類別 (包含內嵌字體、消除鋸齒設定、Alpha 色版控制和其他特定設定)。「Adobe® Flash® Professional CS5 的 ActionScript® 3.0 參考」提供了這些類別和屬性 (包含 CSMSettings、Font 和 TextRenderer 類別) 的詳細說明。 使用內嵌字體當您在應用程式中指定 TextField 的特定字體時,Flash Player 或 AIR 會尋找名稱相同的裝置字體 (位在使用者電腦上的字體)。如果在系統上找不到該字體,或使用者的同名字體版本稍有不同,則顯示的文字與您所預期的會有極大的差異。 若要確定使用者看到的是正確的字體,您可以將該字體內嵌至應用程式 SWF 檔。內嵌字體具有許多優點:
使用內嵌字體的最大限制是會增加應用程式的檔案大小或下載大小。 將字體檔內嵌至應用程式 SWF 檔的正確方法會隨著開發環境而有所不同。 內嵌字體之後,您就可以確定 TextField 使用的是正確的內嵌字體:
在 Flash 中內嵌字體Flash Professional 可讓您內嵌幾乎系統上所安裝的所有字體,包含 TrueType 字體和 Type 1 Postscript 字體。 您可以透過多種方式將字體內嵌至應用程式,包含:
如需有關如何將字體內嵌至應用程式的詳細資訊,請參閱「使用 Flash」中的「動態或輸入文字欄位的內嵌字體」。 在 Flex 中內嵌字體您可以透過多種方式將字體內嵌至 Flex 應用程式,包含:
您只能在 Flex 應用程式中直接內嵌 TrueType 字體。其他格式的字體 (例如 Type 1 Postscript 字體) 可以使用 Flash Professional 先內嵌至 SWF 檔,然後再於 Flex 應用程式中使用該 SWF 檔。如需有關在 Flex 中使用來自 SWF 檔內嵌字體的詳細資訊,請參閱 Using Flex 4 中的 “Embedding fonts from SWF files”。 控制銳利度、粗細和消除鋸齒Flash Player 或 AIR 預設時便會決定文字顯示控制的設定 (例如調整文字大小、變更顏色,或顯示於各種背景時的銳利度、粗細和消除鋸齒)。在某些情況下 (例如,如果文字太小或太大,或文字位在不同的背景上),您可能會想要保有控制這些設定的權限。您可以使用 flash.text.TextRenderer 類別和其相關類別 (例如 CSMSettings 類別),來覆寫 Flash Player 或 AIR 設定。這些類別可讓您精確控制內嵌文字的顯示品質。如需有關內嵌字體的詳細資訊,請參閱使用內嵌字體。 備註: flash.text.TextField.antiAliasType 屬性必須有值 AntiAliasType.ADVANCED,才能讓您設定銳利度、粗細或 gridFitType 屬性,或使用 TextRenderer.setAdvancedAntiAliasingTable() 方法。
下列範例會使用內嵌字體 myFont,將自訂連續筆劃調整 (CSM) 屬性和格式套用至顯示的文字。使用者按一下顯示的文字時,Flash Player 或 Adobe AIR 會套用自訂設定: var format:TextFormat = new TextFormat(); format.color = 0x336699; format.size = 48; format.font = "myFont"; var myText:TextField = new TextField(); myText.embedFonts = true; myText.autoSize = TextFieldAutoSize.LEFT; myText.antiAliasType = AntiAliasType.ADVANCED; myText.defaultTextFormat = format; myText.selectable = false; myText.mouseEnabled = true; myText.text = "Hello World"; addChild(myText); myText.addEventListener(MouseEvent.CLICK, clickHandler); function clickHandler(event:Event):void { var myAntiAliasSettings = new CSMSettings(48, 0.8, -0.8); var myAliasTable:Array = new Array(myAntiAliasSettings); TextRenderer.setAdvancedAntiAliasingTable("myFont", FontStyle.ITALIC, TextColorType.DARK_COLOR, myAliasTable); } |
|