`

[转]在纯AS工程中嵌入个别字体方法

阅读更多


2009-11-26 10:00

前两天接到主管任务,让研究在纯AS工程中嵌入个别字体。在网上找了一大通,也只找到了在Flex项目中使用CSS也嵌入个别字体的方法。最后很无奈的发现网上好像没有我想找的资料。就在此时让我有个想法,在CSS中控制嵌入字体使用的是unicodeRange属性,那我能不能在Embed标签中也使用它呢?实验发现,Embed标签中是可以使用unicodeRange属性的。下面说说我在纯AS工程中是怎么嵌入个别字体的。

工程开始之前先告诉大家,我要嵌入的字符是"空山无人,水流花开。",要使用的字体是楷体字;

1.打包要嵌入字体到一个Swf文件中

(1).新建一个纯AS工程,内容如下:

代码
1 package {
2  import flash.display.Sprite;
3  import flash.system.Security;
4  import flash.text.Font;
5
6  public class LoadFont extends Sprite
7 {
8 [Embed(source="C:/WINDOWS/Fonts/SIMKAI.TTF",fontName="kai",mimeType="application/x-font",unicodeRange="U+7a7a,U+5c71,U+65e0,U+4eba,U+ff0c,U+6c34,U+6d41,U+82b1,U+5f00,U+3002")]
9 public var RoundHand:Class;
10
11 public function LoadFont()
12 {
13 }
14 }
15 }

其中,source的值就是字符所在位置(控制面板--字体--楷体,点右键就可以看到其所在位置),

fontName的值就是该字体名称,只要确保唯一,可随意起。

mimeType的值照抄。

unicodeRange的值就是"空山无人,水流花开。",这几个字对应的unicode

RoundHand就是该字体绑定的类,也是唯一的。

工程建好后编译,会在bin-debug目录下生成一个名为LoadFont.swf文件。

2.在工程中使用字体

在自己的工程中想要使用该字体,先要用下一段:

 

 

代码
1 fontLoader = new Loader();
2 fontLoader.load(new URLRequest("LoadFont.swf的路径"), new LoaderContext(false, loaderInfo.applicationDomain));
3 fontLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
4
5 private function completeHandler(e:Event):void
6 {
7 fontLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
8 fontLoader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
9 var MyFont:Class = getDefinitionByName("LoadFont_RoundHand") as Class;
10 // 注册全局字体
11 Font.registerFont(MyFont);
12 var myFont:Font = new MyFont() as Font;
13 // 应用字体
14 var format:TextFormat = new TextFormat(myFont.fontName, 25, null, true);
15 txt.defaultTextFormat = format;
16 // 嵌入字体
17 txt.embedFonts = true;
18 txt.text = "空山无人,水流花开。";
19 }
20
21

其中注意getDefinitionByName的参数格式为“所在类名+"_"+embed的类名”。

 

代码
1 整个工程如下:
2
3 package
4 {
5 import flash.display.Loader;
6 import flash.display.Sprite;
7 import flash.display.StageAlign;
8 import flash.display.StageQuality;
9 import flash.display.StageScaleMode;
10 import flash.events.Event;
11 import flash.events.ProgressEvent;
12 import flash.net.URLRequest;
13 import flash.system.LoaderContext;
14 import flash.text.Font;
15 import flash.text.TextField;
16 import flash.text.TextFormat;
17 import flash.utils.getDefinitionByName;
18
19 public class FontTest extends Sprite
20 {
21 private var txt:TextField;
22 private var fontLoader:Loader;
23 public function FontTest():void
24 {
25 if(stage!=null){
26 init();
27 }else{
28 addEventListener(Event.ADDED_TO_STAGE,init);
29 }
30 }
31 private function init():void{
32 stage.quality = StageQuality.HIGH;
33 stage.scaleMode = StageScaleMode.NO_SCALE;
34 stage.align = StageAlign.TOP_LEFT;
35 stage.showDefaultContextMenu = false;
36
37 txt = new TextField();
38 txt.x = stage.stageWidth/3;
39 txt.y = stage.stageHeight/2;
40 txt.width = 500;
41 txt.height = 30;
42 addChild(txt);
43
44 fontLoader = new Loader();
45 fontLoader.load(new URLRequest("LoadFont.swf"), new LoaderContext(false, loaderInfo.applicationDomain));
46 fontLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
47 fontLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
48 }
49 private function progressHandler(e:ProgressEvent):void
50 {
51 var ratio:int = e.bytesLoaded / e.bytesTotal * 100;
52 txt.text = "loading... " + ratio + "%";
53 }
54
55 private function completeHandler(e:Event):void
56 {
57 fontLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
58 fontLoader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
59 var MyFont:Class = getDefinitionByName("LoadFont_RoundHand") as Class;
60 // 注册全局字体
61 Font.registerFont(MyFont);
62 var myFont:Font = new MyFont() as Font;
63 // 应用字体
64 var format:TextFormat = new TextFormat(myFont.fontName, 25, null, true);
65 txt.defaultTextFormat = format;
66 // 嵌入字体
67 txt.embedFonts = true;
68 txt.text = "空山无人,水流花开。";
69 }
70 }
71 }
72

分享到:
评论

相关推荐

    Word转PDF文件,如何在PDF中嵌入字体[收集].pdf

    Word 转 PDF 文件中的字体嵌入方法 在软件开发中,经常需要将 Word 文档转换为 PDF 文件,并在 PDF 文件中嵌入字体,以满足某些杂志的上传要求,例如 ASCE 杂志。下面将详细介绍如何在 PDF 文件中嵌入字体。 首先...

    word to pdf嵌入字体的问题

    在进行文档转换时,尤其是在将Word文档转换为PDF格式的过程中,确保字体正确嵌入是非常重要的一步。正确的字体嵌入不仅能确保文档的一致性和可读性,还能提高文档的可移植性。本文将详细介绍如何检查PDF文档中的字体...

    AS3字体嵌入终极教程 附带unicodeRange获取器支持新老文本引擎(转)

    在ActionScript 3 (AS3)中,字体嵌入是为确保用户能在任何计算机上正确显示自定义或特殊字体的关键技术。这篇“AS3字体嵌入终极教程”着重讲解了如何在Flash Player或Adobe AIR环境中处理字体嵌入,并提供了一个...

    Word2021文档中嵌入字体的方法.docx

    ### Word2021文档中嵌入字体的方法 #### 知识点一:为何需要嵌入字体? 在创建Word文档时,我们经常会使用各种各样的字体来美化文档或突出特定内容。然而,当我们把文档分享给其他人时,如果对方计算机上没有安装...

    动态嵌入字体

    动态嵌入字体是一种在Flash(SWF)内容中使用特殊技术来实现字体显示的方法。这种方法主要是为了解决在Web上展示个性化或特定字体时遇到的问题,因为不同的用户计算机上可能并未安装所需字体,从而导致内容显示不...

    WPF在资源内嵌入字体

    在Windows Presentation Foundation (WPF) 中,内嵌字体是一种强大的特性,它允许开发者将特定的字体文件嵌入到应用程序资源中,以便在用户没有安装该字体的情况下也能正确显示文本。这样,开发人员可以确保应用程序...

    WPF_嵌入字体_EmbeddedFont

    WPF_嵌入字体_EmbeddedFont

    @face-font 嵌入中文字体实例和ttf转换eot, woff, svg转换工具

    在网页设计中,为了保证网页在不同设备和浏览器上的显示效果,有时我们需要将自定义的字体文件嵌入到网页中。`@font-face` 是 CSS3 提供的一种字体嵌入规则,它允许开发者将本地或者在线的字体文件引入到网页中,使...

    AS3动态加载字体

    在ActionScript 3 (AS3)中,动态加载字体是一种技术,允许开发者在应用程序运行时加载和使用新的字体。这可以极大地提高应用的灵活性,尤其是对于那些需要展示各种独特字体或者用户可定制字体的应用。本知识点将深入...

    flash actionscript3游戏开发之 5种将fla中的资源嵌入到Flex或者纯AS3项目中的方法.zip

    在Flash ActionScript3游戏开发中,将FLA中的资源嵌入到Flex或纯AS3项目是常见的需求。这些资源可能包括位图、字体、声音、动画等,它们是游戏视觉效果和交互体验的重要组成部分。本篇文章将详细讲解五种不同的嵌入...

    自定义web字体并通过@font-face在网页中嵌入自定义字体

    `@font-face`规则是CSS(层叠样式表)提供的一种方法,允许开发者在网页中使用非系统默认的字体,使得设计师能够更加自由地实现他们的视觉设计理念。本篇文章将详细探讨如何使用`@font-face`规则在网页中嵌入自定义...

    PPT嵌入特殊字体在没有特殊字体的电脑里怎么显示?.docx

    所谓嵌入字体,就是将特殊字体嵌入到 PPT 文件中,这样,即使在其他电脑上播放,也可以正确地显示字体。下面是 Office 2021 版的操作步骤: 1. 打开 PPT,选择【开始】,然后在左侧找到【选项】一栏,点击进入选项...

    Flex3.0设备字体,字体嵌入

    通过这种方法,可以将所需的字体文件编译进SWF文件中,或者在运行时动态加载到SWF文件中。这样一来,无论用户计算机上是否安装了该字体,应用程序都能正确显示文本。此外,嵌入字体还具有一些其他优点: - **抗锯齿*...

    linux环境word转pdf所需字体

    4. **配置转换选项**:在使用LibreOffice或其他类似工具时,确保在转换设置中勾选“嵌入字体”选项,这样在生成的PDF中,字体信息会随文档一起保存,避免了目标机器缺少字体的问题。 5. **脚本自动化**:对于批量...

    pdfbox转图片所需字体

    这通常是由于PDF文档中使用的某些字体在目标系统(如操作系统或PDFBox运行的环境)中不存在造成的。为了解决这个问题,我们需要确保系统包含所有PDF文档中引用的字体,或者在转换过程中正确地处理这些缺失的字体。 ...

    解决无法嵌入特殊字体的办法.docx

    值得注意的是,虽然这种方法可以帮助我们在不同设备上保持演示文稿的视觉一致性,但并不是所有字体都能被嵌入。某些字体可能因为版权或技术限制而无法嵌入。在这种情况下,选择一个与原字体相似的、可嵌入的替代品就...

    PowerPoint 2021 无法嵌入某些字体.docx

    解决这个问题的方法是在创建演示文稿的计算机上替换这些受限制的字体为可以嵌入的字体。以下是一步步的指南: 1. 首先,打开你的PowerPoint演示文稿。 2. 点击左上角的“Microsoft Office 按钮”,然后选择“另存为...

    TTF字体库裁剪&TTC转TTF字体工具

    这些方法可以在不牺牲字体质量的情况下进一步减小文件大小,特别是在Web字体和嵌入式应用场景中。 6. 字体版权问题: 在处理字体文件时,必须注意版权问题。不是所有字体都可以免费裁剪和分发,因此在操作前确保你...

Global site tag (gtag.js) - Google Analytics