从不同来源创建Flash字体

时间:2011-08-11 08:34:28

标签: flash actionscript fonts

在Actionscript / Flash中,可以创建一个包含字体数据的swf,如下所示:

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 个答案:

答案 0 :(得分:1)

我介绍了在网站上嵌入字体的不同方法(它很长,所以链接更容易):http://divillysausages.com/blog/as3_font_embedding_masterclass

基本上,如果您只想要一个除了字体之外的swf,那么您可以嵌入所需的swf(更改systemFont,或嵌入相同的字体,但如果您想要字体,则更改fontWeight例如,有正常和粗体),导出swf。如果您只想嵌入特定的字形,请直接在unicodeRange参数中设置unicode值。

更简单的方法是通过Flash创建 - 使用您想要的每个字体/字形创建一个文本字段,然后在主SWF中使用它(解释链接中的方式)。它比使用unicode容易得多,特别是如果你只想要一个字形。

你想要做什么 - 为不同的角色嵌入一个字体 - 是可能的,但它很尴尬,而且我不确定你是否能够得到你想要的效果而不需要很多麻烦。将TextFormathttp://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/TextFormat.html)对象与TextField一起使用的常规方法不会真正起作用,因为您一次只能应用一个。

您可以使用HTML文本,并为每种样式使用StyleSheet类(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/StyleSheet.html - ,将fontFamily指向您嵌入的字体,但它会导致很多标记(你需要用不同的样式跨越每个字母)。

可能,但有点尴尬。