UITextFieldで埋め込みフォント(Flex 4.6)を使用しようとしています。Windowsに登録されているフォントを使用している限りは正常に機能しますが、登録されていないフォントの場合、UITextFieldはデフォルトでTimesRoman(または同様のもの)になります。
フォントが埋め込まれているかどうかを確認すると、Trueが返されることに注意してください(FlexGlobals.topLevelApplication.systemManager.isFontFaceEmbedded(txtFormatCoda))
だから私は何が欠けていますか?
以下のコードでは、フォントKreditをWindowsフォントに追加すると、UIテキストフィールドはKreditフォントで表示されますが、Windows / fontディレクトリから削除すると、フィールドはTimesNewRoman(デフォルトフォント)で表示されます。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="onComplete()">
<s:Group id="TextCanvas" x="121" y="97" width="474" height="800">
</s:Group>
<fx:Style>
@font-face {
src: url("fonts/KREDIT1.TTF");
fontFamily: Kredit;
embed-as-cff:false;
advancedAntiAliasing:true;
}
</fx:Style>
<fx:Script>
import mx.core.FlexGlobals;
import mx.core.UIComponent;
import mx.core.UITextField;
import mx.core.UITextFormat;
public function onComplete():void{
var txtFldCoda:UITextField = new UITextField();
var txtFormatCoda:UITextFormat = new UITextFormat(this.systemManager);
var compCoda:UIComponent = new UIComponent();
compCoda.addChild(txtFldCoda);
txtFldCoda.embedFonts=true;
txtFldCoda.width=300;
txtFormatCoda.size=33;
TextCanvas.addElement(compCoda);
txtFldCoda.text="Testing Kredit";
txtFormatCoda.font= "Kredit";
txtFormatCoda.color="0x0ff345";
var b2:Boolean = FlexGlobals.topLevelApplication.systemManager.isFontFaceEmbedded(txtFormatCoda);
if(b2==false){
trace("not embedded: " + txtFormatCoda.font);
}
txtFldCoda.defaultTextFormat= txtFormatCoda;//note that setTextFormat must be after setting the text
txtFldCoda.setTextFormat(txtFormatCoda);//note that setTextFormat must be after setting the text
txtFldCoda.x=0;
txtFldCoda.y=100;
}
</fx:Script>
</s:Application>