Flex特殊字符不嵌入

时间:2010-04-23 15:29:46

标签: flex actionscript-3 flex3

我使用以下代码将Arial嵌入到我的应用程序中:

[Embed(source='../assets/fonts/Arial.ttf',fontFamily='CustomFont',fontWeight='regular',
        unicodeRange='U+0020-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E,U+0080-U+00FF,U+0100-U+017F,U+0400-U+04FF,U+0370-U+03FF,U+1E00-U+1EFF,U+2022,U+2219,U+20AC-U+21AC',
        mimeType='application/x-font-truetype' 
        )]
    public static var MY_FONT:Class;
    [Embed(source='../assets/fonts/Arial Bold.ttf',fontFamily='CustomFont',fontWeight='bold',
        unicodeRange='U+0020-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E,U+0080-U+00FF,U+0100-U+017F,U+0400-U+04FF,U+0370-U+03FF,U+1E00-U+1EFF,U+2022,U+2219,U+20AC-U+21AC',
        mimeType='application/x-font-truetype'
        )]
    public static var MY_FONT_BOLD:Class;
    [Embed(source='../assets/fonts/Arial Italic.ttf',fontFamily='CustomFont',fontWeight='regular',fontStyle="italic",
        unicodeRange='U+0020-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E,U+0080-U+00FF,U+0100-U+017F,U+0400-U+04FF,U+0370-U+03FF,U+1E00-U+1EFF,U+2022,U+2219,U+20AC-U+21AC',
        mimeType='application/x-font-truetype'
        )] 
    public static var MY_FONT_ITALIC:Class;
    [Embed(source='../assets/fonts/Arial Bold Italic.ttf',fontFamily='CustomFont',fontWeight='bold',fontStyle="italic",
        unicodeRange='U+0020-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E,U+0080-U+00FF,U+0100-U+017F,U+0400-U+04FF,U+0370-U+03FF,U+1E00-U+1EFF,U+2022,U+2219,U+20AC-U+21AC',
        mimeType='application/x-font-truetype'
        )] 
    public static var MY_FONT_ITALIC_BOLD:Class;
    [Embed(source='../assets/fonts/Arial Unicode.ttf',fontFamily='CustomFont',fontWeight='regular',
        unicodeRange='U+0020-U+0040,U+0041-U+005A,U+005B-U+0060,U+0061-U+007A,U+007B-U+007E,U+0080-U+00FF,U+0100-U+017F,U+0400-U+04FF,U+0370-U+03FF,U+1E00-U+1EFF,U+2022,U+2219,U+20AC-U+21AC',
        mimeType='application/x-font-truetype'
        )] 
    public static var MY_FONT_UNICODE:Class;

它适用于外国字符,但没有特殊字符(版权,商标,欧元符号等)正常工作。有人可以帮忙吗?我检查了我的unicode范围,它们应该可以正常工作!

2 个答案:

答案 0 :(得分:2)

如果你没有指定unicode范围,那么就会出现这些字符(我不建议以这种方式启动,仅用于测试)。如果它们没有嵌入完整字体,可能您的字体版本不包含字符。 Arial Unicode应至少包含版权,它的代码是U + 00A9,我认为它包含在您的范围内,但您可以尝试明确地包含该数字,即添加:U + 00A9-U + 00A9。

您可能会发现此AIR应用程序可用于确定unicode范围:http://undefined-type.com/tag/unicode/

答案 1 :(得分:0)

我建议使用外部库来表示字体esp。考虑到它们的重量,如果嵌入了unicode字符。有一个相当简单的AS3脚本来嵌入系统字体,例如影响

package {
    import flash.display.Sprite;
    public class Impact extends Sprite {
        [Embed(systemFont='Impact', fontName='Impact', mimeType='application/x-font')]
        public static var Impact:Class;
    }    
}

您可以从http://tekkie.flashbit.net/flash/as/embed-system-fonts-with-flex-sdk

获取上述* .as