フォントの操作
Flash Player 10 以降、Adobe AIR 1.5 以降
FontDescription
オブジェクトは、
ElementFormat
と一緒に使用し、フォントを特定し、その特性の一部を定義します。これらの特性には、フォント名、太さ、ポスチャー、表現、およびフォントの場所(デバイスか埋め込みか)などがあります。
注意:
FTE では、Type 1 のフォントや、Type 3、ATC、sfnt-wrapped CID、Naked CID などのビットマップフォントはサポートされません。
フォント特性の定義(FontDescription オブジェクト)
FontDescription
オブジェクトの
fontName
プロパティは、単一の名前またはカンマで区切った名前のリストである場合があります。 例えば、「Arial, Helvetica, _sans」のようなリストでは、テキスト エンジンは最初に「Arial」を探し、次に「Helvetica」を探します。どちらも見つからない場合は、最後に「_sans」を探します。フォント名のセットには、「_sans」、「_serif」、および「_typewriter」という 3 つの汎用のデバイスフォント名が含まれています。これらのフォントは、再生システム固有のデバイスフォントにマップされます。デバイスフォントを使用するすべてのフォントの記述で、これらのようなデフォルト名を指定すると効果的です。
fontName
が指定されていない場合は、デフォルトとして「_serif」が使用されます。
fontPosture
プロパティは、デフォルト(
FontPosture.NORMAL
)またはイタリック(
FontPosture.ITALIC
)のいずれかに設定できます。
fontWeight
プロパティは、デフォルト(
FontWeight.NORMAL
)またはボールド(
FontWeight.BOLD
)のいずれかに設定できます。
var fd1:FontDescription = new FontDescription();
fd1.fontName = "Arial, Helvetica, _sans";
fd1.fontPosture = FontPosture.NORMAL;
fd1.fontWeight = FontWeight.BOLD;
埋め込みフォントおよびデバイスフォント
FontDescription
オブジェクトの
fontLookup
プロパティは、テキスト エンジンが、テキストのレンダリングのために、デバイスフォントと埋め込みフォントのどちらを探すかを指定します。デバイスフォント(
FontLookup.DEVICE
)を指定すると、ランタイムは再生システムでフォントを探します。埋め込みフォント(
FontLookup.EMBEDDED_CFF
)を指定すると、ランタイムは、SWF ファイルで指定された名前の埋め込みフォントを探します。この設定で使用できるのは埋め込み CFF(コンパクトフォントフォーマット)のみです。 指定したフォントが見つからないと、代替のデバイスフォントが使用されます。
デバイスフォントの場合は、SWT ファイルサイズがより小さくなります。埋め込みフォントでは、プラットフォームへの忠実度が高くなります。
var fd1:FontDescription = new FontDescription();
fd1.fontLookup = FontLookup.EMBEDDED_CFF;
fd1.fontName = "Garamond, _serif";
レンダリングモードとヒンティング
CFF(コンパクトフォントフォーマット)レンダリングは、Flash Player 10 および Adobe AIR 1.5 以降で使用できます。テキストの読みやすさを向上し、小さいサイズのフォントを優れた品質で表示できるフォントレンダリング形式です。この設定は、埋め込みフォントのみに適用されます。
FontDescription
の
renderingMode
プロパティのデフォルト値はこの設定(
RenderingMode.CFF
)です。このプロパティを
RenderingMode.NORMAL
に設定すると、Flash Player 7 以前のバージョンで使用したレンダリングのタイプと一致させることができます。
CFF レンダリングを選択すると、2 番目のプロパティ
cffHinting
は、フォントの横方向の軸がサブピクセルグリッドに収まる方法を制御します。デフォルト値
CFFHinting.HORIZONTAL_STEM
では、CFF ヒンティングを使用します。このプロパティを
CFFHinting.NONE
に保存すると、ヒンティングが除去されます。これはアニメーションや大きいフォントサイズに適しています。
var fd1:FontDescription = new FontDescription();
fd1.renderingMode = RenderingMode.CFF;
fd1.cffHinting = CFFHinting.HORIZONTAL_STEM;
FontDescription のロックとクローニング
FontDescription
オブジェクトを
ElementFormat
に割り当てると、その
locked
プロパティは自動的に
true
に設定されます。ロックされた
FontDescription
オブジェクトを変更しようとすると、
IllegalOperationError
がスローされます。最善の方法は、
ElementFormat
インスタンスに割り当てる前にそのようなオブジェクトを完全に定義することです。
既存の
FontDescription
インスタンスを変更する場合は、まずその
locked
プロパティを確認します。
true
の場合は、
clone()
メソッドを使用して、オブジェクトのロックされていないコピーを作成します。 このロックされていないオブジェクトのプロパティを変更してから、
ElementFormat
インスタンスに割り当てることができます。この
TextElement
から作成された新しい行には新しいフォーマットが適用されます。この同じオブジェクトから作成された前の行は変更されません。
package
{
import flash.display.Sprite;
import flash.text.*;
public class FontDescriptionCloneExample extends Sprite
{
private var tb:TextBlock = new TextBlock();
private var te:TextElement;
private var ef1:ElementFormat;
private var ef2:ElementFormat;
private var fd1:FontDescription = new FontDescription();
private var fd2:FontDescription;
public function FontDescriptionCloneExample()
{
fd1.fontName = "Garamond";
ef1 = new ElementFormat(fd);
var str:String = "This is flash text";
te = new TextElement(str, ef);
tb.content = te;
var tx1:TextLine = tb.createTextLine(null,600);
addChild(tx1);
fd2 = (fd1.locked) ? fd1.clone() : fd1;
fd2.fontName = "Arial";
ef2 = (ef1.locked) ? ef1.clone() : ef1;
ef2.fontDescription = fd2;
tb.content.elementFormat = ef2;
var tx2:TextLine = tb.createTextLine(null,600);
addChild(tx2);
}
}
}
|
|
|