zoukankan      html  css  js  c++  java
  • Flash字体嵌入方法总结—(2)ActionScript基础篇

    在上一篇使用字体元件的时候,我们接触到了TextField对象的embedFonts属性。在这里,我们进一步的探讨一下怎么在ActionScript中使用嵌入文本。

    一旦我们在Flash IDE中嵌入了字体,swf文件中就包含了该字体的矢量信息。ActionScript也可以使用这些信息。继续上文的例子,我们添加如下代码:

    var fmt:TextFormat = new TextFormat();
    fmt.font = "STZhongsong";//华文中宋
    fmt.size = 36;
    fmt.color = 0x336699;
    
    var txt:TextField = new TextField();
    txt.text = "中文字型测试";
    txt.autoSize = TextFieldAutoSize.LEFT;
    txt.embedFonts = true;
    txt.setTextFormat(fmt);
    addChild(txt);

    我们用ActionScript建立了一个文本框,内容为“中文字型测试”,字体为“华文中宋”。因为“测试”这两个字体信息没有被嵌入,所以不会被渲染出来。再来看看使用css的两种用法:

    var style:StyleSheet = new StyleSheet();
    style.parseCSS("foo{font-family:STZhongsong;font-size:36;color:#336699}");
    
    // 用法1
    var fmt:TextFormat = style.transform(style.getStyle("foo"));
    txt.text = "中文字型测试";
    txt.setTextFormat(fmt);
    
    // 用法2
    //txt.styleSheet = style;
    //txt.htmlText = "<foo>中文字型测试</foo>";

    两种方式都可以把格式赋给文本框,但是和TextFormat方法一样的是需要注意字体的名字不是我们在IDE里看到的“华文中宋”,而是字体的英文名"STZhongsong"。如何找到字体的英文名可以到字体目录里去查看信息,也可以用我在下一篇进阶篇中介绍的方法。

    以上总结的是ActionScript使用嵌入字体的方法,但都是基于在IDE中完成了字体嵌入的操作的。下面我们来看看另外的方法:使用Flex SDK。

    首先大家都应该看看gotoAndLearn上的这篇视频教程,Lee非常详尽的介绍了使用Runtime Font Loading的方法。通过使用Flex SDK,使得在ActionScript中嵌入字体变为可能。我们来看看嵌入字体所使用的代码:

    [Embed(systemFont="Arial", fontName="MyArial", unicodeRange="U+0020-U+007e", mimeType="application/x-font")]
    var ClassName : Class;

    在这两行代码中,我们创建了一个虚拟字体"MyArial"。和在IDE中的操作效果一样,映射的是系统字体Arial的标准形式。unicodeRange 是我们所需要的重要参数,它界定了嵌入字符的范围。"U+0020"这类的数字表示字符的unicode编码,虽然没有在IDE里面直观,但是我们可以用教程里提到的在线工具作为辅助。

    经过一番搜索,发现了polyGeek上开发了一个for Flex css的字体嵌入工具。根据他的算法,我改写了一个输出Embed标签的,并加入了一些汉字用的范围,完善了更多功能,命名为:Flash中文字体嵌入助手

    Flash中文字体嵌入助手

    如果你使用Flex SDK编译的话,可以用这个工具生成的类代码,建立一个自己的FontLibrary。在要使用这个字体的地方,只要在文档类中包含一个对FontLibrary的引用,就可以把字体一起编译进来。更多使用FontLibrary的方法和思路,我们在下一篇深入讨论。

    此外还需要提一下字体的变体样式。Flex SDK同样支持嵌入斜体或粗体,但是如果是使用外部字体嵌入,使用变体会在编译时报错,同样的设置用系统字体则没有问题。提醒大家使用的时候注意一下。

    示例文件下载

  • 相关阅读:
    20 模块之 re subprocess
    19 模块之shelve xml haslib configparser
    18 包 ,logging模块使用
    vue项目的搭建使用
    课程模块表结构
    DRF分页组件
    Django ContentType组件
    跨域
    解析器和渲染器
    DRF 权限 频率
  • 原文地址:https://www.cnblogs.com/keng333/p/2632184.html
Copyright © 2011-2022 走看看