請看TextField API Reference和getTextFormat()
方法。 (耶!)
它返回一個TextFormat
對象,該對象包含的TextField,然後可以經由setTextFormat()
施加到另一個文本字段的完整定義。也就是說,字體系列在AS3中的工作方式稍有不同(可悲的是,不是Adobe的錯,而是操作系統)。例如,Myriad Pro有Regular,Light,Semibold和Bold。但是,一旦嵌入,只顯示兩個實際的字體名稱,並且區分它們的唯一方法是設置TextFormat.bold = true
。
有趣的是,省略這些同伴字體之一的嵌入不會拋出一個錯誤,而是在你僅嵌入無數Pro的定期,而不是無數臨大膽的情況下,設置TextFormat.bold = true
將在常規模式下執行模仿粗體(這實際上會比實際粗體字質量低得多,但是它可以工作)。
希望能夠解決問題。
更新
我看着Signika,它顯然是從急性身份危機受到影響。爲了舉例說明,嵌入整個字體系列並運行以下命令:
var fontList:Array = Font.enumerateFonts();
for(var i:int = 0; i < fontList.length; i++) {
trace("Font Name: " + fontList[i].fontName + ", " + fontList[i].fontStyle)
}
這將跟蹤環境中存在的每種字體的列表。可悲的是,無論您如何嵌入字體(以編程方式或通過導入庫),字體都會覆蓋其他系列條目(假設是因爲它們報告的方式與環境無差別)。
// Myriad Pro Results:
Font Name: Myriad Pro, regular
Font Name: Myriad Pro, bold
Font Name: Myriad Pro Light, regular
Font Name: Myriad Pro Light, bold
運行鍼對無數的Pro系列相同的查詢實際上報告四個條目,沒有重疊,而Signika將只報告的4 2。
// Signika Results:
Font Name: Signika, regular
Font Name: Signika, bold
我前面提到依然存在:使用上述API方法將導致TextFormat
對象,充分說明所使用的字體。這些區別在於對象上的name:String
和bold:Boolean
屬性。但是,由於Flash會覆蓋具有相同報告屬性的嵌入對象(或者根本不覆蓋),因此您隨時可以使用4種家族樣式中的2種:常規版本和粗體版本。
希望澄清事情。
我正在使用getTextFormat方法。但它不告訴我什麼風格。其實,沒有風格的財產,或類似的東西。順便說一句,我總是嵌入字體,否則我會在清晰度方面得到糟糕的結果。我錯過了什麼嗎? – Artemix
這取決於你的意思是「風格」。 'getTextFormat'返回一個具有以下屬性的對象:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/TextFormat.html。您可以使用同一個對象並將其應用於新的TextField並複製外觀。正如你從上面給出的例子中看到的那樣,在特定字體的屬性中沒有引用「Semibold」,並且實際上顯示爲「TextFormat.bold = true」的「Myriad Pro Light」,但它是Myriad Pro Semibold ,這就是你如何通過編程來定義它。 – Atriace
對於「清晰度方面的糟糕結果」,您可以打開Anti-Aliasing以提高「antiAliasType」屬性的易讀性(http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/閃存/文本/ TextField.html#的antiAliasType)。只需執行'myTextField.antiAliasType = flash.text.AntiAliasType.ADVANCED' – Atriace