Flex

Flex教學-讀取本機字型與嵌入字型解決文字鋸齒

2009/02/25

  最近正在蝦搞一個線上的影像編輯器,原本想除了可編輯影像外,還可輸入一些簡單文字,與選擇字型,於是在網路爬了好多文章,好不容易找到了一個,可以直接抓取本端的文字,但當把文字指定該字型時,幾乎所有的文字都只會顯現新細體,但英文字有些還會有反應,於是才得知到,原來是文字沒有嵌入的原因,於是便將文字給嵌入了,文字果真可正常的顯示字型,也解決了鋸齒問題,但才載入一個Aril標楷體,檔就已經18mb了,因此梅干作了一點整理,上面先把使用者已裝的文字載入,後面再放進自已所要嵌入的文字,各位待會可以比較一下。


FontFace.mxml

<?xml version=“1.0” encoding=“utf-8”?>


mx:Script

import mx.events.ListEvent;
import flash.text.Font;
[Bindable]
private var arr:Array=new Array();

private function init():void {
//載入本機已安裝字型
arr=Font.enumerateFonts(true);
arr.sortOn(“fontName”, Array.CASEINSENSITIVE);
var arrFont:Array=new Array;
for(var i:int=0; i < arr.length; i++) { if(i != arr.length){ arrFont.push(arr[i].fontName); }else{ //自行嵌入字型 arrFont.push([“【梅字型】Arial”,“【梅字型】標楷體”]); } }
arr=arrFont;
}

        private function changeColor():void
        {               
            this.mylb.setStyle("color",fontColor.value);                
        }
        private function chageSize():void
        {
            this.mylb.setStyle("fontSize",fontSize.value);
        }
        private function fontB(event:MouseEvent):void
        {
            if(event.target.selected){
                this.mylb.setStyle("fontWeight","bold");
            }else{
                this.mylb.setStyle("fontWeight","");
            }               
        }
        private function fontI(event:MouseEvent):void
        {
            if(event.target.selected){
                this.mylb.setStyle("fontStyle","italic");
            }else{
                this.mylb.setStyle("fontStyle","");
            }           
        }
        private function fontU(event:MouseEvent):void
        {
            if(event.target.selected){
                this.mylb.setStyle("textDecoration","underline");
            }else{
                this.mylb.setStyle("textDecoration","");
            }           
        }
        private function fontFamily():void
        {
            //trace(this.myfonts.selectedLabel);
            this.mylb.setStyle("fontFamily",this.myfonts.selectedLabel);
        }   </mx:Script><br />
<mx:ComboBox id="myfonts" dataProvider="{arr}" change="fontFamily()"/><br />
<mx:HBox><br />
    <mx:ColorPicker id="fontColor" change="changeColor()"/><br />
    <mx:NumericStepper id="fontSize" minimum="8" maximum="72" stepSize="1" value="12" change="chageSize()" width="52"/><br />
    <mx:Button label="B" click="fontB(event)" toggle="true" width="35"/><br />
    <mx:Button label="I" click="fontI(event)" toggle="true" width="35"/><br />
    <mx:Button label="U" click="fontU(event)" toggle="true" width="35"/><br />
</mx:HBox><br />
<mx:Label id="mylb" text="梅問題Minwt.com" fontSize="12"/><br />

/mx:Application


FontFace.css

@font-face{
src: local(“Arial”);
fontFamily:【梅字型】Arial;
}

@font-face{
src: local(“標楷體”);
fontFamily:【梅字型】標楷體;
advancedAntiAliasing: true;
}
/
@font-face{
src: url(“fonts/wt040.ttf”);
fontFamily:【梅字型】王漢宗綜藝體;
}
/


範例預覽
這邊梅干只嵌入標楷體與Aril二字型,檔就已經18mb了,但效果差很多喔!請耐心等候它~

[範例下載]