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同样支持嵌入斜体或粗体,但是如果是使用外部字体嵌入,使用变体会在编译时报错,同样的设置用系统字体则没有问题。提醒大家使用的时候注意一下。

    示例文件下载

  • 相关阅读:
    [LeetCode]2. Add Two Numbers链表相加
    Integration between Dynamics 365 and Dynamics 365 Finance and Operation
    向视图列添加自定义图标和提示信息 -- PowerApps / Dynamics365
    Update the Power Apps portals solution
    Migrate portal configuration
    Use variable to setup related components visible
    Loyalty management on Retail of Dynamic 365
    Modern Fluent UI controls in Power Apps
    Change screen size and orientation of a canvas app in Power App
    Communication Plan for Power Platform
  • 原文地址:https://www.cnblogs.com/keng333/p/2632184.html
Copyright © 2011-2022 走看看