Küçük bir test uygulaması oluşturup deneme yaptım.
ve bu Dinamic Classic Text içerisine ActionScript ile yazı yerleştirdim.
txtDeneme1.text="Deneme";
txtDeneme2.text="Deneme";
sonuç:
yani gerçekten bir problem var. Aynı aileden iki yazı tipi aynı anda embed edildiğinde yalnızca bir tanesi kullanılabiliyor. Bu problemi iki şekilde çözmeyi başardım. 1. Metod Dynamic Classical Text'lerden kalın olacak olanın render HTML özelliğini etkin hale getirdim ve actionScript'i şu şekilde değiştirdim:
txtDeneme1.text="Deneme";
txtDeneme2.htmlText="Deneme";
evet oldukça kötü bir yöntem olduğunun bende farkındayım ama çalıştı.
ikinci method ise daha kullanışlı. Doğrudan TextFormat üzerinden değişiklik yapmak:
import flash.text.TextFormat;
import flash.text.TextField;
txtDeneme1.text="Deneme";
txtDeneme2.text="Deneme";
var tf2:TextFormat = (txtDeneme2 as TextField).getTextFormat();
tf2.bold=true;
(txtDeneme2 as TextField).setTextFormat(tf2);
bu kodlarla çalışan uygulama ise şöyle:
ama bu method'da bu şekliyle kullanışlı değil tabiki. Bu yöntemi biraz daha geliştirmeye karar verdim embed ettiğim fontları Class olarak tanımladım:
sonrada TextFormat ayarlamalarını dinamik olarak yaptım:
import flash.text.TextFormat;
import flash.text.TextField;
Font.registerFont(embededArialBold);
Font.registerFont(embededArialRegular);
txtDeneme1.text="Deneme";
txtDeneme2.text="Deneme";
var arialBoldTextFormat:TextFormat= new TextFormat();
arialBoldTextFormat.font = "Arial";
arialBoldTextFormat.bold = true;
txtDeneme2.setTextFormat(arialBoldTextFormat);
var arialRegularTextFormat:TextFormat= new TextFormat();
arialRegularTextFormat.font = "Arial";
arialRegularTextFormat.bold = false;
txtDeneme2.setTextFormat(arialBoldTextFormat);
ve sorunu çözdüm. Ama bu bir bug ve bu kadar zahmette girmek yerine keşke sorunu Adobe çözseydi :(
No comments:
Post a Comment