CookBook2 応用編

2-1フォントを埋め込む

フォントの埋め込み機能を利用して外字を出力してみましょう。
外字フォントファイルとして "nabe1.ttf" フォントを使用します。

グリフnabe1.ttf フォント
UnicodeU+e000

利用するAPIは以下の通りです。

【利用API】

クラス:Field
メソッド:setIsEmbeddedFont(Boolean b);

【引数】

b : フォント埋め込みの有無
false:"埋め込まない"(デフォルト) true:"埋め込む"

【用途】

フィールドにフォントの埋め込みの有無をセットします。

記述例

//フォントを埋め込みたいフィールドを取得します。
Field xField = report.getField("xInfoName_phone");
//埋め込みフォントを許可します。
xField.setIsEmbeddedFont(true);
//ユニコード 0xe000を含んだ文字列を埋め込みます。
report.putFieldData(xInfoName_phone, "渡\ue000 健二");

【 注意 】
埋め込みフォントを使用する場合、事前に以下の手順にしたがってフォントを登録してください。

1. 外字TrueTypeフォントファイルを用意する。

外字作成ツールを利用して外字を作るか、人名・地名などの外字を収録したフォント素材集を利用しTrueTypeフォントファイル(*.ttf,*.ttc)を用意します。
市販ツールを使用した外字フォントファイルの作り方を「2-5-2 付録-外字フォントの作り方」で紹介します。参考にしてください。

2. フォントファイルを登録する。

1-13-3 付録-TrueTypeフォントを登録する」を参考にして、1. で用意したTrueTypeフォントファイルを登録します。

【 注意 】
WPRLをインストールした環境設定のままでサンプルプログラムを実行する場合は、"nabe1.ttf" ファイルはFONTディレクトリに配置されています。
フォントファイルのFONTディレクトリへのコピー作業は必要ありません。waddTTFユーティリティを実行してください。

関連づけを行なうフォント"MSGothic"フォントも同様の手順で登録してください。

登録が完了すると"true_type_fonts.properties"ファイルに以下のエントリが追加されます。

―― 省略 ――
MS-Gothic=msgothic.ttc,0
MSGothic=msgothic.ttc,0
MS-PGothic=msgothic.ttc,1
MSPGothic=msgothic.ttc,1
MS-UIGothic=msgothic.ttc,2
MSUIGothic=msgothic.ttc,2
nabe1=nabe1.ttf

3. 論理フォントとの関連付けを行なう。

APIから指定するフォントファイル名が論理フォントです。 指定された論理フォント名は、report.propertiesファイルに登録した対応関係によって物理フォント名に変換されます。
対応関係が定義されていない場合、APIで指定したフォントファイル名を物理フォント名として扱います。
ここでは、"MSGothic" フォントのUnicodeプライベート使用領域に対して、"nabe1" フォントを物理フォントとして対応づけます。
対応づけるためのreport.propertiesファイルの該当部分は以下のようになります。

font.MSGothic.latin=MS-Gothic
font.MSGothic.cjk=MS-Gothic
font.MSGothic.private=nabe1

論理フォントと物理フォント

WPRLでは、APIによって指定するフォント名称は、論理フォントを示します。
WPRLは、フォントの指定時に以下のような内部動作をしてフォントファイルを求めます。
ひとつの論理フォントに対して3つの文字コード領域毎に異なる物理フォントを対応づけることができます。
この内部動作によって、任意のTrueTypeフォントファイルを外字フォントファイルとして扱うことが可能となります。

1.report.propertiesファイルから、論理フォント名称に対応した 物理フォント名称を求めます。

report.propertiesファイルでは、1つの論理フォントに対して3つの文字コード領域毎に物理フォントを関係づけることができます。
論理フォントをFontAとした場合、report.propertiesファイルで使用するキーを以下に示します。
それぞれのキーに対して設定する値は、物理フォント名を指定します。

キー領域名称該当するUnicode文字ブロック
FontA.latin英数文字領域BASIC_LATIN(U+0000 - U+007F)~ GREEK_EXTENDED(U+1F00 - U+1FFF)
FontA.private私用領域PRIVATE_USE_AREA(U+E000 - U+F8FF)
FontA.cjkCJK領域それ以外

2.FONTディレクトリ配下に存在するtrue_type_fonts.propertiesファイルから物理フォント名称に一致するフォントファイル名称を求めます。

3.フォントファイル名称から、フォントファイルを取得します。

フォントの埋め込み確認

プログラムを実行しPDF帳票を出力したら、フォントが正しく埋め込まれているかどうかの確認をします。

Adobe AcrobatからテンプレートPDFを開き、[ファイル]/[文書のプロパティ]から、"文書のプロパティ"ダイアログを開き"フォント"を選択します。

テンプレートPDFで使用しているフォントが表示されています。

Adobe Acrobatから出力したPDF帳票を開き、上記と同様に"文書のプロパティ"ダイアログを開き"フォント"を選択します。

テンプレートPDFに対して使用しているフォントが増え、外字フォントnabe1と、nabe1に関連付けられているMS-Gothicが"(埋め込みサブセット)"と表示されていることから、PDFにこれらのフォントが埋め込まれていることがわかります。

PAGE TOP