在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应取自新罗马字体。
可能吗?如果有,怎么样?
答案 0 :(得分:1)
我介绍了在网站上嵌入字体的不同方法(它很长,所以链接更容易):http://divillysausages.com/blog/as3_font_embedding_masterclass
基本上,如果您只想要一个除了字体之外的swf,那么您可以嵌入所需的swf(更改systemFont
,或嵌入相同的字体,但如果您想要字体,则更改fontWeight
例如,有正常和粗体),导出swf。如果您只想嵌入特定的字形,请直接在unicodeRange
参数中设置unicode值。
更简单的方法是通过Flash创建 - 使用您想要的每个字体/字形创建一个文本字段,然后在主SWF中使用它(解释链接中的方式)。它比使用unicode容易得多,特别是如果你只想要一个字形。
你想要做什么 - 为不同的角色嵌入一个字体 - 是可能的,但它很尴尬,而且我不确定你是否能够得到你想要的效果而不需要很多麻烦。将TextFormat
(http://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
指向您嵌入的字体,但它会导致很多标记(你需要用不同的样式跨越每个字母)。
可能,但有点尴尬。