Flex字体篇——动态嵌入字体

news/2024/5/19 20:16:16 标签: flex, application, 编译器, function, encoding, css

概述

Flex编译器,位于flex sdk的bin目录,例如:Flash Builder 4 sdk 3.5 "C:/Program Files/Adobe/Adobe Flash Builder 4/sdks/3.5.0/bin", 编译器的详细使用说明参考官方文档Using the Flex Compilers主题。

mxmlc.exe:应用程序编译器,可以把*.mxml(*.as)、*.css等主要文件编译成swf。

flash/flex使用设备字体存在严重锯齿问题,不够美观,而且当计算机没有相应字体时会造成内容无法显示等问题,该系列文章介绍flex技术平台下如何实现字体的动态嵌入。

字体样式

需要编译的css文件:WB_Arial.css

/* CSS file */

@font-face {

    src:local("Arial");

    fontFamily: WB-Arial; /* 嵌入后的字体名称 */

    fontStyle: normal;/* 常用值:normal, italic */

    fontWeight: normal; /* 常用值:normal, bold */

    advancedAntiAliasing: true;

}

使用mxmlc.exe编译字体样式

打开命令行,运行以下命令编译css,生成swf:(格式:mxml.exe [srcFile] –output [destFile])

mxmlc.exe WB_Arial.css

使用字体swf

用编辑器生成WB_Arial.swf后,在FontTest2.mxml里加载使用:

<![CDATA[

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*" creationComplete="Init()" backgroundColor="#FFFFFF">

    <mx:Script>

            import mx.events.StyleEvent;

            private var styleLoader:IEventDispatcher;

            private function Init():void

            {

                styleLoader = mx.styles.StyleManager.loadStyleDeclarations("Fonts/WB_Arial.swf",false, true);//加载字体swf

                styleLoader.addEventListener(StyleEvent.COMPLETE, OnStyleEvent);

                styleLoader.addEventListener(StyleEvent.ERROR, OnStyleEvent);

            }

            private function OnStyleEvent(event:StyleEvent):void

            {

                if(event.type == StyleEvent.COMPLETE)

                {

                    trace("load WB_Arial.swf complete....");

                    var textField:TextField = new TextField();

                    textField.type = TextFieldType.DYNAMIC;

                    textField.autoSize = TextFieldAutoSize.LEFT;

                    textField.embedFonts = true;//嵌入设置

                    var format:TextFormat = new TextFormat("WB-Arial", 40);//默认使用嵌入的WB_Arial字体

                    textField.defaultTextFormat = format;

                    textField.text = "Anti-Money Laundering";

                    textField.rotation = 10;

                    _Panel.addChild(textField);

                }

                else if(event.type == StyleEvent.ERROR)

                {

                    trace(event.errorText);

                }

            }

    </mx:Script>

    <mx:UIComponent x="10" y="10" id="_Panel">

        

    </mx:UIComponent>

</mx:Application>

]]>

进阶

  1. 命令行生成swf这项操作,可以让外部exe来完成,实现swf的动态生成。
  2. 文字的高级处理请尽量使用flash.text.TextField类,以便达到更好的控制,不建议使用mx.*命名空间下的文本控件。
  3. TextField的htmlText支持多种嵌入字体同时显示,但确保htmlText里面使用的字体都是嵌入的。

Next

英文字体文件比较少,例如:Arial,把常规、加粗、斜体等各种组合都生成相应的字体swf,总文件大小还在可接受的范围内。

但对于中文字库,文件比较大,把整个字库都嵌入,文件太大不利于网络传输,必须按需嵌入,下篇将介绍中文字体动态嵌入的解决方案。


http://www.niftyadmin.cn/n/1574733.html

相关文章

Flex字体篇——动态嵌入字体(按需嵌入)

接上篇&#xff1a;Flex字体篇——动态嵌入字体 按需嵌入 中文字体小的几M&#xff0c;大的十几M&#xff0c;如果把整个中文字体都嵌入到swf会使容量增大&#xff0c;不利于网络传输&#xff0c;这时应该采取按需嵌入的办法&#xff0c;只把使用到的字符才嵌入到字体swf里…

区块链100讲:能够证明你是你的数字签名和多重签名

随着区块链相关技术的创新和突破&#xff0c;很多有形或无形资产都将实现去中心化&#xff0c;数字资产将无处不在。要保护数字出版物版权&#xff0c;实现去中心化&#xff0c;解决业界多年来版权保护不力的难题。无论数字资产&#xff0c;还是数字出版版权&#xff0c;都是有…

HTTP服务器开发教程

<![CDATA[ 概述 最近因为项目需要&#xff0c;必须自己实现一个HTTP服务器的部分功能。 需求大概是这样的&#xff0c;winform里使用webrowser控件显示一个本地的html页面&#xff0c;同时winform启动http服务&#xff0c;本地html页面里通过javascript使用XMLHttpReq…

百篇大计敬本年之Web开发之路 —— Ubuntu 14.04 安装 Web 服务器 Apache2

为什么80%的码农都做不了架构师&#xff1f;>>> 最近在研究Web开发项目&#xff0c;需要在虚拟机里的Ubuntu系统上开启 Web 服务器。以下为 Web 服务器搭建心得。&#xff08;所有知识皆从网络搜集所得&#xff09; 第一步&#xff1a;更新软件源 # sudo apt-get u…

Socket的正确关闭(改良版)

TIME_WAIT状态 如果服务端的Socket比客户端的Socket先关闭&#xff0c;会导致客户端出现TIME_WAIT状态&#xff0c;占用系统资源。 所以&#xff0c;必须等客户端先关闭Socket后&#xff0c;服务器端再关闭Socket才能避免TIME_WAIT状态的出现。 判断客户端Socket的关闭 …

容量估算--随时更新

一、 数据库服务器的硬件估计 首先确定系统要支撑的tps峰值是多少&#xff0c;这个数值一般由实际业务量来估计或者设计容量确定。实际业务估计可以通过考察旧系统业务峰值出现的时间和峰值访问量来估计&#xff0c;设计容量则是系统设计初期就决定的设计指标&#xff0c;决定了…

我的HTTP服务器

技术平台&#xff1a;.net 作品介绍&#xff1a; 基于Sokect技术构建 目前只支持静态文件&#xff0c;功能正在逐步完善… 轻量级的HTTP服务器&#xff0c;功能控制、扩展方便&#xff0c;能够很容易就把代码集成到其他winform应用。 效果图 用IE访问 欢迎交流 MSN&am…

Hadoop生态圈-hive五种数据格式比较

Hadoop生态圈-hive五种数据格式比较 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。转载于:https://www.cnblogs.com/yinzhengjie/p/9154401.html