原文链接:http://www.cnblogs.com/ddw1997/archive/2011/11/13/2247546.html

一、如果使用flash cs5.5



1.先新建一个字体fla文件,然后是文本-字体嵌入,如图













然后发布swf

2.导入swf,并使用字体

var __fontClass:Class = _loader.contentLoaderInfo.applicationDomain.getDefinition("FontX") as Class;
Font.registerFont(__fontClass);
var __format:TextFormat = new TextFormat();
var __tf:TextField = new TextField();
//var __fontArr:Array= Font.enumerateFonts(false);
var myFont:Font = new MyFont() as Font;
__format.font = myFont.fontName;
__tf.defaultTextFormat = __format;
__tf.embedFonts = true;
__tf.text = 'ABCDefg123456,.';

二、如果使用as项目



1.首先还是建立font.swf

package
{
import flash.display.Sprite;
import flash.text.Font;
import flash.text.TextField;
import flash.text.TextFormat;
public class fonts extends Sprite
{
    [Embed(source="font1.ttf",fontName="name1",embedAsCFF="false",unicodeRange="U+0020,U+0041-005A,U+0020,U+0061-007A,U+0030-0039,U+002E,U+0020-002F,U+003A-0040,U+005B-0060,U+007B-007E,U+0020-002F,U+0030-0039,U+003A-0040,U+0041-005A,U+005B-0060,U+0061-007A,U+007B-007E")]
    public var FontClass1:Class;
    [Embed(source="font2.ttf",fontFamily="Franklin Gothic Book",embedAsCFF="false",unicodeRange="U+0020,U+0041-005A,U+0020,U+0061-007A,U+0030-0039,U+002E,U+0020-002F,U+003A-0040,U+005B-0060,U+007B-007E,U+0020-002F,U+0030-0039,U+003A-0040,U+0041-005A,U+005B-0060,U+0061-007A,U+007B-007E")]
    public var FontClass2:Class;

    public function fonts()
    {
        var __fontArr:Array= Font.enumerateFonts(false);
        //Font.registerFont(myFont);
        for each(var __font:Font in __fontArr)
            trace(__font.fontName, __font.fontType);
    }
}
}

source        指定要嵌入的字体文件路径。还可以用 systemFont指定一个系统中安装的字体。这样的话就可以不需要 source参数了。

    fontName      这个实际上就是 fontFamily 的别名。

    embedAsCFF    如果不提供这个参数,默认就是true。所以,如果系统你嵌入的字体用于TextField,一定要将其设置为false。

    unicodeRange  要嵌入的文本的范围。见下表:



 



嵌入字体范围:



    大写字符      U+0020,U+0041-U+005A

    小写字符      U+0020,U+0061-U+007A

    数字            U+0030-U+0039,U+002E

    标点符号      U+0020-U+002F,U+003A-U+0040,U+005B-U+0060,U+007B-U+007E

    基本拉丁字符    U+0020-U+002F, U+0030-U+0039, U+003A-U+0040, U+0041-U+005A, U+005B-U+0060, U+0061-U+007A, U+007B-U+007E



当然,还有中文范围等等,详细的可以找到你本机的 FlexSDK/frameworks/flash-unicode-table.xml



2.导入swf,使用字体

package
{
import flash.display.Sprite;
import flash.display.Loader;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.system.LoaderContext;
import flash.system.ApplicationDomain;
import flash.system.SecurityDomain;
import flash.net.URLRequest;
import flash.text.Font;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.utils.setTimeout;

public class LoadEmbedFont extends Sprite
{
    public function LoadEmbedFont()
    {
        _loader = new Loader();
        _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handler_comp);
        _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, handler_error);
        _loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handler_error);

        var __loaderContext:LoaderContext = new LoaderContext(true ,new ApplicationDomain(null));
        //如果自己又被父SWF载入了一次,那么应用程序域就必须设置成当前域或者是子域才行
        //var __loaderContext:LoaderContext = new LoaderContext(true, ApplicationDomain.currentDomain);
        //如果载入的字体swf与发起载入的swf不在一个网域,就需要将安全域设定为当前安全域
        //var __loaderContext:LoaderContext = new LoaderContext(true, ApplicationDomain.currentDomain, SecurityDomain.currentDomain);
        _loader.load(new URLRequest('myfont.swf'),  __loaderContext);
        //_loader.load(new URLRequest('http://10.0.0.5:5300/swf/assets/ui/fonts_local.swf'),  __loaderContext);
    }

    private var _loader:Loader;
    private var __fontObj:Font
    private function handler_comp($evt:Event):void
    {
        trace('载入字体成功');
        var __font:* = _loader.content;

        Font.registerFont(__font.FontClass1);
        Font.registerFont(__font.FontClass2);

        //也可以使用这种方式获取嵌入的字体类,类的名称是“源文件类名_嵌入目标变量名称”
        //var __fontClass:Class = _loader.contentLoaderInfo.applicationDomain.getDefinition("fonts_FontClass1") as Class;
//        trace('class:',__fontClass);
//        __fontObj = new __fontClass();
//        Font.registerFont(___fontClass);
        showTF();

    }

    private function handler_error($evt:Event):void
    {
        trace($evt.toString());
    }

    private function showTF():void
    {
        var __fontArr:Array= Font.enumerateFonts(false);
        trace('AppDomain font list:', __fontArr.length);
        for each(var __font:Font in __fontArr)
        {
            trace(__font.fontName, __font.fontType, __font.fontStyle);
            var __tf:TextField = new TextField();
            __tf.name = 'tf_'+__font.fontName;

            __tf.width = 200;
            var __format:TextFormat = new TextFormat();
            //__format.font = __fontObj.fontName
            __format.font = __font.fontName;
            __tf.defaultTextFormat = __format;
            __tf.embedFonts = true;
            __tf.text = 'ABCDefg123456,.';
            __tf.x = Math.random()*this.stage.stageWidth;
            __tf.y = Math.random()*this.stage.stageHeight;
            addChild(__tf);
            trace('__tf:', __tf.name, __tf.text, __tf.x, __tf.y);
        }
    }
}
}

3.查看字体

import flash.text.Font;
var allFonts:Array = Font.enumerateFonts(true);
allFonts.sortOn("fontName", Array.CASEINSENSITIVE);

for(var i:uint=0;i<allFonts.length;i++){
        trace("字体名称:"+allFonts[i].fontName+"字体样式:"+allFonts[i].fontStyle+"字体类型:"+allFonts[i].fontType)
}

【转】Flash字体嵌入方法的更多相关文章

  1. PPT嵌入字体的方法

    使用ppt的时候,很多时候会使用一些特殊字体,在其他计算机上无法正常显示.这个时候就需要导出PPT的时候进行字体嵌入. 1.1 常规方法 所谓常规方法,是指那些字体的许可协议允许随意分发,我们才能导出 ...

  2. Matlab,Visio等生成的图片的字体嵌入问题解决方法

    确保所有字体嵌入,是生成高质量学术论文的必要条件.但是在Windows下,总会遇到Matlab或Visio生成字体没有嵌入的问题,当然这个问题的解决办法有很多(例如,对于Visio可以这样做:直接拷贝 ...

  3. EDAS字体嵌入问题解决方法

    提交IEEE EDAS文章时出现:“The paper PDF file cannot be accepted: Publishers require that PDF fonts are embed ...

  4. 快速EDAS字体嵌入问题

    在用edas向国际会议投稿的时候,往往要检查pdf稿件的格式,例如页边距.行距.字体等.经常碰到的一个问题就是字体未嵌入到文件中.因为大家一般用CTex里面的ps2pdf生成pdf文件,图片中的字往往 ...

  5. WPF设置全局字体和字体嵌入

    原文:WPF设置全局字体和字体嵌入 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/CLeopard/article/details/40590373 ...

  6. font-face自定义字体使用方法

    今天闲的蛋疼小七来聊一聊关于css3的font-face属性的使用方法: 首先应该好多人没用过这个属性,那只能说你们的设计师还是有人性的, 一旦电脑系统没有的特殊字体或者你设计师故意装13为难你就需要 ...

  7. Sourceinsight最佳配色方案及颜色字体调整方法

    在Ubuntu下面用Gedit有一款比较好看的配色,应该是Darkblue.按照那个样子在SI里面做了一个差不多的,按个人喜好,背景色换成黑色,如下所示: 配色的方案文件可以从此处链接免费下载: 配色 ...

  8. FCKEditor编辑器添加中文字体的方法

    默认情况下,FCKEditor在进行文本编辑时,无法使用中文字体.让其添加中文字体的方法: 1.打开 fckconfig.js 文件,找到第154行(大概),会发现: 程序代码: FCKConfig. ...

  9. 奥森图标和CSS特殊字体使用方法

    作为第一篇博文,写这个 我快要被气炸,好吧,废话不说了 昨天在项目中发现有很多这些Awesome图标 也在网上找了下Font Awesome下载后这些文件,现在的版本是4.2,Font Awesome ...

随机推荐

  1. python数据结构(一)------序列

    数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合:在Python中,最基本的数据结构是序列(sequence),序列中的每个元素被分配一个序列号--即元素的位置,也称为索引. p ...

  2. 项目架构开发:数据访问层之Logger

    接上文 项目架构开发:数据访问层之Cache 本章我们继续ILogger的开发 ILogger.cs public interface ILogger { void Info(object messa ...

  3. ThinkPHP项目总结

    1.当你 require ThinkPHP之后,会自动在App目录下生成 common, Home, Runtime 三个文件夹. 2.输入网址 http://localhost/blog/app/i ...

  4. HTML 5入门知识(五)

    本地存储Web Storage 使用HTML 5的Web Storage功能,可以在客户端存储更多的数据,而且可以实现数据在多个页面中共享甚至是同步. cookie存储数据的不足 cookie可用于在 ...

  5. Maven与Eclipse使用中遇到的问题解决之道

    在使用Maven以及Eclipse的Maven插件时,我和同事遇到了一下几个问题,本着知其然知其所以然的学习精神,总结如下: Unrecognised tag 问题 由于我使用本地代理仓库,所以set ...

  6. jenkins配置邮箱服务器(126邮箱)

    安装Email Extension Plugin 安装过程容易失败,多试几次 一.开启126邮件的SMTP获取授权码 二.配置管理员邮件地址   三.设置邮件通知 四.点击Test Configura ...

  7. 用 node.js 创建第一个Hello World

    如果我们使用PHP来编写后端的代码时,需要Apache(xampp) 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi.从这个角度看,整个"接收 HTTP ...

  8. 队列工厂之(MSMQ)

    最近vs2017神器正式版发布让人很是激动,vs2017支持了很多语言的开发,从前端-后端-底层的支持,堪称是工具中的神器:netcore我喜爱的架构之一也得到了大力的宣传,应群友的邀请将在队列工厂( ...

  9. 1230: [Usaco2008 Nov]lites 开关灯

    1230: [Usaco2008 Nov]lites 开关灯 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1162  Solved: 589[Sub ...

  10. javascript写贪吃蛇游戏(20行代码!)

    <!doctype html> <html> <body> <canvas id="can" width="400" ...