Flash字体嵌入方法

一、如果使用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)
}

 

 

转载于:https://www.cnblogs.com/ddw1997/archive/2011/11/13/2247546.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1,gxwz.fla 光线文字(33KB) 2,hrwz.zip 环绕旋转字(5KB) 3,kzfwz.zip 空中飞舞字(6KB) 4,sdwz.zip 闪电文字(6KB) 5,sjlz2.zip 数据流字(8KB) 6,twfz1.zip 天外飞字1(5KB) 7,twfz2.zip 天外飞字2(5KB) 8,fydwz.zip 发烟的文字(110KB) 9,szdwx.zip 水中的文字(5KB) 10,zzwz.zip 遮罩文字(4KB) 11,bdz.zip 飘动字(3KB) 12,ltz.zip 立体字(8KB) 13,jgz1.zip 激光字(7KB) 14,jgz1-2.zip 激光字2(7KB) 15,twfz3.zip 天外飞字3(4KB) 16,ycpz.zip 洋葱皮字(6KB) 17,fswz.zip 飞闪文字(17KB) 18,xzdwz.zip 旋转的文字(30KB) 19,bzz.zip 爆炸字(5KB) 20,cyz.zip 残影字(6KB) 21,dyz1.zip 叠影字(6KB) 22,fxz.zip 飞絮字(5KB) 23,fcz.zip 风吹字(4KB) 24,sbz.zip 水波字(6KB) 25,xwz.zip 旋涡字(5KB) 26,zgwz.zip 烛光文字(5KB) 27,3dgs.zip 3D跟随(9KB) 28,xxsb.zip 线性鼠标(5KB)<End. 29,scyw.zip 色彩烟雾(119KB) 30,bssb.zip 变色鼠标(5KB) 31,zzsb.zip 遮罩鼠标(4KB) 32,sbgs7.zip 文字跟随1(5KB) 33,wzgs.zip 文字跟随2(5KB) 34,kzgm.zip 控制光芒(6KB) 35,zlwz.zip 坠落文字(6KB) 36,shiny.zip 很cool的文字演示(109KB) 37,hekt.zip 又一款飞行文字,短小精悍,先看看吧;(5KB) 38,maskzoom.zip 一款流动的文字,做法简单,效果不错,值得推荐;(3KB) 39,wraptext.zip 转动文字 模拟文字围绕Y 轴作旋转,一个简单的动画;(3KB) 40,mech.zip 液晶文字 有点像是从液晶显示屏显示出来的文字效果,动感方面也做的不错;(9KB) 41,superholo.zip 3D文字 立体效果应该不是FLASH 做出来的,利用其他的软件把文体做好,然后再导入FLASH 里输出成动画;(103KB) 42,around.zip 旋转文字 一款文字围绕球体旋转,产生立体效果的动画;(4KB) 43,bigm.zip 摇摇字 其实是个3D立体字,背景文字的旋转效果很好看;(44KB) 44,wind.zip 风吹文字 文字随风而起,然后又落下,不要以为是SWISH 做的,看看源码就知道作者是花了不少心思的;(10KB) 45,emboss.zip 立体文字 教你怎么做一种立体文字的方法,源码内容是些简单的E 文;(4KB) 46,thematrix.zip 瀑布文字 一种简单,易做,效果又好的文字效果;用做背景相当不错;(10KB) 47,RotatingWords.zip 滚动文字 产生一种纵向的旋转效果,其实做法很简单,一看源码你就清楚啦;(4KB) 48,neontext.zip 霓虹文字效果;(3KB) 49,windblown.zip 风吹文字 类似SWISH 里面文字随风落下、随风飞起的效果,附带具体说明(不过是E文的);(12KB) 50,letters-Ehtesham.zip 立体字 旋转的立体文字,是利用其他软件制作好AI路径,然后导入FLASH中来完成动画;(50KB) 51,sparkletext.zip 速度文字 运用MASK 制作出来的一种运动文字效果,与瀑布文字有异曲同工之处;(24KB) 52,swirl.zip 扭曲 文字被强行扭曲180度的效果;(3KB) 53,textlights2.zip 大光灯文字 很棒的一种文字效果,文字被模拟成探照灯一样在夜空中扫来扫去,这款文字在晃动的过程中还会转换颜色;(5KB) 54,spheretext.zip 大光灯文字 很棒的一种文字效果,如同夜晚探照灯在夜空扫来扫去;(67KB) 55,shexian700-400-eff.zip 射线文字效果 文字出现的边缘有射线射出,很酷的效果(8KB) 56,fei.zip 飞行文字 动画中使用ACTION来控制键盘输入的文字,使文字按两种预设的效果来生成动画;(6KB) 57,input.zip 文字输入 在FLASH 的键盘里输入文字,然后将其变成动画的内容;(20KB) 58,scroltext400-300-app.zip 滚动文字 就象是按下网鼠中间的滑轮,上下滚动网页一样的效果(5KB) 59,200142102101.zip 字体辉光效果这是一个比较酷(炫)的特殊效果,最早出现在 Ray Of Light 网站,现在您也可以试一下辉光的效果了!快快动手吧(8KB) 60,2000121902101.zip Flash 5 点阵汉字特效这是一个用点阵方式的汉字实现的一些效果的集合,如果您自己动手会制作出惊人的东西(16KB) 61,2000121802102.zip 激光字 一个老的效果:用激光来写字,关心特殊效果的朋友一定要看看(6KB)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值