高度なテキストレンダリング

Flash Player 9 以降、Adobe AIR 1.0 以降

ActionScript 3.0 では、埋め込みフォント、アンチエイリアス設定、アルファチャンネル制御、およびその他固有の設定を含む、表示するテキストのプロパティを制御する様々なクラスが flash.text パッケージに用意されています。 CSMSettings、Font、TextRenderer の各クラスを始めとするこれらのクラスとプロパティについては、『ActionScript 3.0 リファレンス』で詳細に説明しています。

埋め込みフォントの使用

アプリケーションで TextField に対して特定のフォントを指定すると、Flash Player または AIR は同じ名前のデバイスフォント(ユーザーのコンピューターに存在するフォント)を検索します。そのようなフォントがシステムに見つからない場合や、名前が同じでバージョンが若干異なるフォントが存在している場合には、テキストの表示が、意図したものとはかなり異なるものになることがあります。デフォルトでは、Times Roman フォントでテキストが表示されます。

意図したとおりに適切なフォントがユーザーに表示されるようにするには、アプリケーションの SWF ファイルにそのフォントを埋め込みます。埋め込みフォントにはいくつかの利点があります。

  • 埋め込みフォントの文字はアンチエイリアス処理されるので、エッジが滑らかに見えます。テキストのサイズが大きい場合に特によくわかります。

  • 埋め込みフォントを使用しているテキストは回転することができます。

  • 埋め込みフォントを使用しているテキストは透明や半透明にすることができます。

  • 埋め込みフォントには CSS の kerning スタイルを使用することができます。

埋め込みフォントを使用する場合の最大の制約は、そのためにアプリケーションのファイルサイズまたはダウンロードサイズが増加することです。

フォントファイルをアプリケーションの SWF ファイルに埋め込む方法は、開発環境によって異なります。

フォントを埋め込んだ後は、次の作業を行って、TextField で正しい埋め込みフォントが使用されるようにします。

  • TextField の embedFonts プロパティを true に設定します。

  • TextFormat オブジェクトを作成し、そのオブジェクトの fontFamily プロパティに、埋め込みフォントの名前を設定します。その後で、作成した TextFormat オブジェクトを TextField に適用します。埋め込みフォントを指定するとき、 fontFamily プロパティに格納する名前は 1 つだけにする必要があります。このプロパティでは、複数のフォント名を含むカンマ区切りリストを使用することはできません。

  • CSS スタイルを使用して TextField やコンポーネントのフォントを設定している場合は、CSS プロパティ font-family に、埋め込みフォントの名前を設定します。埋め込みフォントを指定する場合、 font-family プロパティに格納する名前は 1 つだけにする必要があります。名前のリストを格納しないでください。

Flash でのフォントの埋め込み

Flash Professional では、TrueType フォントや Type 1 PostScript フォントを含め、システムにインストールされているほとんどすべてのフォントを埋め込むことができます。

アプリケーションでは次のような様々な方法でフォントを埋め込むことができます。

  • ステージ上にある TextField のフォントとスタイルのプロパティを設定し、[フォントを埋め込む] チェックボックスをクリックします。

  • フォントシンボルの作成と参照

  • 埋め込みフォントシンボルを含むランタイム共有ライブラリの作成と使用

アプリケーションでフォントを埋め込む方法について詳しくは、『Flash ユーザーガイド』の「ダイナミックテキストフィールド用またはテキスト入力フィールド用の埋め込みフォント」を参照してください。

Flex でのフォントの埋め込み

Flex アプリケーションでは次のような様々な方法でフォントを埋め込むことができます。

  • スクリプトで [Embed] メタデータタグを使用する

  • @font-face スタイル宣言を使用する

  • フォントのクラスを作成し、 [Embed] タグを使用して埋め込みます。

Flex アプリケーションで直接埋め込むことができるのは TrueType フォントのみです。 Type 1 Postscript フォントなど、その他の形式のフォントは、最初に Flash Professional を使用して SWF ファイルに埋め込んだ後、その SWF ファイルを Flex アプリケーションで使用します。 Flex の SWF ファイルの埋め込みフォントの使用について詳しくは、『Flex 4 ユーザーガイド』の「SWF ファイルからのフォントの埋め込み」を参照してください。

シャープ、太さ、およびアンチエイリアスの制御

Flash Player または AIR では、テキストのサイズ変更、色の変更、または様々な背景でテキストを表示する場合に、シャープネス、太さ、アンチエイリアスなどのテキスト表示制御の設定がデフォルトで決定されます。非常に小さなテキスト、非常に大きなテキスト、様々な独自の背景を使用するテキストを使用する場合など、これらの設定を制御したい場合があります。 flash.text.TextRenderer クラスとその関連クラス(CSMSettings クラスなど)を使用して、Flash Player または AIR の設定をオーバーライドすることができます。これらのクラスにより、埋め込みテキストのレンダリング品質を正確に制御することができます。 埋め込みフォントについて詳しくは、 埋め込みフォントの使用 を参照してください。

注意: シャープネス、太さ、または gridFitType プロパティを設定する場合、または TextRenderer.setAdvancedAntiAliasingTable() メソッドを使用する場合は、 flash.text.TextField .antiAliasType プロパティの値が AntiAliasType.ADVANCED である必要があります。

次の例では、 myFont という名前の埋め込みフォントを使用している表示テキストに、カスタム CSM(Continuous Stroke Modulation)プロパティとフォーマットを適用します。ユーザーが表示テキストをクリックすると、カスタム設定が Flash Player または Adobe AIR によって適用されます。

var format:TextFormat = new TextFormat(); 
format.color = 0x336699; 
format.size = 48; 
format.font = "myFont"; 
 
var myText:TextField = new TextField(); 
myText.embedFonts = true; 
myText.autoSize = TextFieldAutoSize.LEFT; 
myText.antiAliasType = AntiAliasType.ADVANCED; 
myText.defaultTextFormat = format; 
myText.selectable = false; 
myText.mouseEnabled = true; 
myText.text = "Hello World"; 
addChild(myText); 
myText.addEventListener(MouseEvent.CLICK, clickHandler); 
 
function clickHandler(event:Event):void 
{ 
    var myAntiAliasSettings = new CSMSettings(48, 0.8, -0.8); 
    var myAliasTable:Array = new Array(myAntiAliasSettings); 
    TextRenderer.setAdvancedAntiAliasingTable("myFont", FontStyle.ITALIC, TextColorType.DARK_COLOR, myAliasTable); 
}