使用嵌入swf的字体
发布时间:2020-12-15 18:02:22 所属栏目:百科 来源:网络整理
导读:9.12.1.问题 你想从SWF 文件中嵌入字体,并将其应用在你的程序中。 9.12.2.解决办法 生成一个嵌有字体的SWF ,然后利用@font-face 指令声明你想在程序中嵌入的打印机字体。 9.12.3.讨论 你能从单个包含嵌入字体的SWF 文件中为你的程序嵌入多种打印机字体样式
9.12.1.问题
你想从SWF 文件中嵌入字体,并将其应用在你的程序中。 9.12.2.解决办法 生成一个嵌有字体的SWF ,然后利用@font-face 指令声明你想在程序中嵌入的打印机字体。 9.12.3.讨论 你能从单个包含嵌入字体的SWF 文件中为你的程序嵌入多种打印机字体样式。与从字体文件中嵌入字体相反,从SWF 中嵌入的方法具有可携带性的优势。你能将你系统中可用的字体嵌入进SWF 文件,然后传给其他开发人员,他们不再需要担心编译时是否内在地包含相应的字体。 想要在SWF 文件中嵌入字体,首先在Flash IDE 中生成新的FLA 文件,然后向舞台中添加带有指定的打印机字体集的动态文本域,并选择待嵌入的字符范围(图9-1).
图9-1.添加动态文本域并嵌入字体范围。
本例中,每个动态文本域都添加了Verdana 字体并选择了打印机字体属性。正如你能看到的,粗斜体样式是从属性面板中获取的。通过选择面板中的Embed 按钮, 你能明确字符范围以减小文件尺寸。找一个符合你的项目名称保存该FLA 文件(本例中该文件命名为Verdana.fla) 然后发布剪辑。 声明SWF 文件中嵌入的字体和声明字体文件中字体的方法相似。若要从SWF 文件中嵌入字体,不用通过url 函数定义字体文件位置或者通过local 函数定义字体名称,你只要利用url 指令指明SWF 文件的位置。方法如下:
-CSS
@font-face?{
src:?url("styles/fonts/Verdana.swf"); font-family:?Verdana; } /*设置粗体以及斜体:*/ @font-face?font-family:?Verdana; font-weight:?bold; font-style:?italic; } 嵌入的字体是ActionScript API 中flash.text.Font 的子类。你能通过Font 类的enumerateFonts静态方法访问一系列设备和嵌入的字体。enumerateFonts 的参数是一个标记用来判断返回数组中是否包括设备字体。下面的例子利用嵌入的字体填充数据单元,这些字体嵌入在<mx:Style>标记中声明的字体SWF 文件中: -XML
<mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"?layout="vertical"?creationComplete="creationHandler();">
<mx:Style> @font-face src:?url("assets/fonts/Verdana.swf"); } @font-face font-weight:?bold; } Label?font-size:?15px; } .verdanaBoldStyle?} .verdanaItalicStyle?} .verdanaBoldItalicStyle?} </mx:Style> <mx:Script> <![CDATA[ [Bindable] ? private? var?fontArray:Array; [Bindable] ? var?selectedFontStyle:String; [Bindable] var?selectedFontWeight:String; function?creationHandler(): void?{ var?embeddedFonts:Array?=?Font.enumerateFonts(); embeddedFonts.sortOn(? "fontStyle",Array.CASEINSENSITIVE?); fontArray?=?embeddedFonts; } function?changeHandler(): var?italic:RegExp?=?/italic/i; var?bold:RegExp?=?/bold/i; selectedFontStyle?=(?String(?fontGrid.selectedItem.fontStyle).match(italic)?)? 'italic':? 'normal'; selectedFontWeight?=(?String(?fontGrid.selectedItem.fontStyle).match(bold)?)?? 'bold':? 'normal'; } ]]> </mx:Script> mx:Label?text="Select?a?font?form?the?grid?below:"?/> mx:DataGrid?id="fontGrid"?dataProvider="{fontArray}"?change="changeHandler();"> mx:columns> mx:DataGridColumn?headerText="Font?Name"?dataField="fontName"?width="150"?/> Font?Style"?fontStyle"?/> Font?Type"?fontType"?/> </mx:DataGrid> 100%"?textAlign="center"?{fontGrid.selectedItem.fontName?+?'?:+fontGrid.selectedItem.fontStyle}"?fontFamily="{fontGrid.selectedItem.fontName}" fontStyle="{selectedFontStyle}"?fontWeight="{selectedFontWeight}"/> mx:Application> creationComplete 事件处理器访问程序中的嵌入字体数组,然后更新用作DataGrid 实例的dataProvider 的可绑定的fontArray 成员。一旦从数据格子中选择打印机字体,标签的字体样式属性在运行时就会更新。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |