2011-08-11 79 views
1

在ActionScript /閃存就可以創建一個包含字體數據emedding這樣的SWF創建一個Flash字體:不同來源

package { 
    import flash.display.Sprite; 
    public class Font_times_new_roman extends Sprite { 
    [Embed(
    systemFont='times new roman', 
    mimeType='application/x-font', 
    fontName='times new roman', 
    fontWeight='normal', 
    fontStyle='regular', 
    unicodeRange='U+0020-U+007E,U+00A0-U+00AC,U+00AE-U+00FF,U+0100-U+017F,U+037E-U+037E,U+0384-U+038A,U+038C-U+038C,U+038E-U+03A1,U+03A3-U+03CE,U+0400-U+045F,U+20AC-U+20AC')] 
    public static var FontClass:Class; 
    } 
} 

現在我想的是,創造這樣的事情有來自不同來源字體的字形。

例如unicode字符x應該來自Arial,而字符y應該來自新羅馬時代。

是可能的嗎?如果是的話,怎麼樣?

回答

1

我掩護你可以在我的網站中嵌入的字體不同的方式(這是很長,所以它更容易鏈接):http://divillysausages.com/blog/as3_font_embedding_masterclass

基本上,如果你只是想要一個SWF那也沒什麼,但字體,那麼您嵌入的那些你需要(改變systemFont,或嵌入相同的字體,但如果你想要一個正常的和粗體的字體,例如改變fontWeight),導出swf。如果您只想嵌入特定的字形,請直接在unicodeRange參數中設置unicode值。

一個更簡單的方法是通過Flash來創建一個文本字段,然後在你的主要swf中使用它(解釋鏈接中的方式)。這比使用unicode更容易,特別是如果你只需要一個字形。

你正在做什麼 - 爲不同角色嵌入字體 - 是可能的,但它很尷尬,而且我不確定你會不經意地獲得你想要的效果麻煩。與TextField一起使用TextFormathttp://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/TextFormat.html)對象的常規方法不會真正起作用,因爲您一次只能應用一個對象。

您可以使用HTML文本和StyleSheet類(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/StyleSheet.html - 對於每種樣式,請將fontFamily指向您嵌入的字體),但會導致很多標記(您需要跨度每封信都有不同的風格)。

可能,但有點尷尬。

+0

謝謝。不知道這是否可行。我想要做的是以下幾點:我有一個缺少所有希臘字符的字體。現在因爲它們看起來與其他所有角色完全不同,所以我不妨將它們與其他字體整合在一起。 – clamp

+0

在這種情況下,您需要嵌入一種字體,該字體對您正在查找的字符具有適當的支持,或者使用類似於arial的字體(如果不需要,可能不會嵌入它)。 TweetDeck做這樣的事情 - 他們的正常字體只是拉丁字符。如果你想要完整的字母表,你需要關閉嵌入的字體 – divillysausages