加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用嵌入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 成员。一旦从数据格子中选择打印机字体,标签的字体样式属性在运行时就会更新。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读