6.5 ダイナミックフォント
ダイナミックフォント
biz-Stream では、ダイナミックフォントで使用するフォントについてあらかじめ設定しておりません。
ダイナミックフォントをご利用になる前は、bsxml.dtd、pdf.properties への追加作業が必要です。
ダイナミックフォントの種類
ダイナミックフォントは、その使用用途に以下の3つに分類されます。
- 和文フォント
- 欧文フォント
- Unicodeフォント
和文フォント
和文フォントを利用したい場合に選択します。
Unicodeにのみ存在する文字を出力したい場合はUnicodeフォントを選択してください。
欧文フォント
欧文フォントを利用したい場合に選択します。
Unicodeフォント
和文フォント、欧文フォントでUnicodeにのみ存在する文字を出力したい場合に選択します。
サロゲートペア、異体字セレクタに対応しますが、UniJIS-UTF16-HおよびUniJIS-UTF16-Vは全てのUnicodeは網羅していませんので、出力できない文字もあります。その場合は埋め込みフォントを選択してください。
また、閲覧環境で同じフォントがインストールされていない場合に代替フォントで表示されず、フォントエラーとなります。
追加設定の手順
-
bsxml.dtd に、biz-Stream で使用するフォント名(任意)を追加します。
a) 横書きフォントの場合: dFont エンティティに追加
b) 縦書きフォントの場合: dVFont エンティティに追加
-
pdf.properties に、フォントの詳細を追加します。
<フォント名>部分には、「bsxml.dtd」で指定したフォント名を指定してください。
a) load.font.<定義名>.<フォント名>.file=(フォントファイル名)(※1)
b) load.font.<定義名>.<フォント名>.name=(PostScript 名)(※2)
c) load.font.<定義名>.<フォント名>.encoding=(指定可能エンコーディング)(※3)
d) load.font.<定義名>.<フォント名>.cmap=3,10(※4)
e) load.font.<定義名>.<フォント名>.ivscmap=0,5(※5)
- ※1フォントファイルがインストールされているディレクトリを含めた指定を行ってください。
- ※2フォントファイルの拡張子が ttc の場合のみ設定が必要です。
- ※3指定可能エンコーディングは、フォント種類に応じて以下のように指定を行ってください。
フォント種類 定義名 指定可能エンコーディング 和文フォント japanese 横書き:PDF90msp_RKSJ_H
縦書き:PDF90msp_RKSJ_V
(省略時は横書きのエンコーディングが有効になります)欧文フォント latin PDFWinAnsiEncoding Unicodeフォント ※6 unicode 横書き:PDFIdentity_H
縦書き:PDFIdentity_V
(省略時は横書きのエンコーディングが有効になります) - ※4サロゲートペアを表示する場合に設定が必要です。Unicodeフォントの場合のみ指定可能です。
- ※5異体字セレクタを表示する場合に設定が必要です。Unicodeフォントの場合のみ指定可能です。
- ※6代替フォントで表示されないため、表示側にも同じフォントがインストールされている必要があります。
-
プロパティファイルを修正した際に、ASCII 文字以外の文字(日本語など)が含まれている場合は、JDK のnative2asciiなどのツールでASCII 文字のみ含まれる形に変換する必要があります。
追加設定サンプル
-
「メイリオ」をダイナミックフォントとして設定するサンプルです。
bsxml.dtd のdFont エンティティに、「Meiryo_Dynamic_H」「Meiryo_Dynamic_V」(任意)の名前で追加します。<!ENTITY % dFONT "Arial | Century | ・・・・・・・ | Meiryo_Dynamic_H |Meiryo_Dynamic_V"> -
pdf.properties に、ダイナミックフォントの詳細を指定します。
例1:(和文フォント)「メイリオ」の場合
# メイリオ(横書きフォント)
load.font.japanese.Meiryo_Dynamic_H.file=C:/Windows/Fonts/meiryo.ttc
load.font.japanese.Meiryo_Dynamic_H.name=Meiryo
load.font.japanese.Meiryo_Dynamic_H.encoding=PDF90msp_RKSJ_H
# メイリオ(縦書きフォント)
load.font.japanese.Meiryo_Dynamic_V.file=C:/Windows/Fonts/meiryo.ttc
load.font.japanese.Meiryo_Dynamic_V.name=Meiryo
load.font.japanese.Meiryo_Dynamic_V.encoding=PDF90msp_RKSJ_V
例2:(欧文フォント)「Segoe UI」の場合
# Segoe UI
load.font.latin.SegoeUI_Dynamic.file=C:/Windows/Fonts/segoeui.ttf例3:(Unicodeフォント)「Meiryo UI」の場合
# Meiryo UI(横書きフォント)
load.font.unicode.MeiryoUI_Dynamic_H.file=C:/Windows/Fonts/meiryo.ttc
load.font.unicode.MeiryoUI_Dynamic_H.name=MeiryoUI
load.font.unicode.MeiryoUI_Dynamic_H.encoding=PDFIdentity_H
load.font.unicode.Meiryo_Dynamic_H.cmap=3,10
load.font.unicode.Meiryo_Dynamic_H.ivscmap=0,5
# Meiryo UI(縦書きフォント)
load.font.unicode.MeiryoUI_Dynamic_V.file=C:/Windows/Fonts/meiryo.ttc
load.font.unicode.MeiryoUI_Dynamic_V.name=MeiryoUI
load.font.unicode.MeiryoUI_Dynamic_V.encoding=PDFIdentity_V
load.font.unicode.MeiryoUI_Dynamic_V.cmap=3,10
load.font.unicode.MeiryoUI_Dynamic_V.ivscmap=0,5
例4:(Unicodeフォント)「Arial Unicode MS」の場合
# Arial Unicode MS(横書きフォント)
load.font.unicode.ArialUnicodeMS_Dynamic_H.file=C:/Windows/Fonts/ARIALUNI.TTF
load.font.unicode.ArialUnicodeMS_Dynamic_H.encoding=PDFIdentity_H
# Arial Unicode MS(縦書きフォント)
load.font.unicode.ArialUnicodeMS_Dynamic_V.file=C:/Windows/Fonts/ARIALUNI.TTF
load.font.unicode.ArialUnicodeMS_Dynamic_V.encoding=PDFIdentity_V
レイアウト・デザイナの設定
-
レイアウト・デザイナでダイナミックフォントを利用するには、フォント設定でダイナミックフォント名「Meiryo_Dynamic_H」「Meiryo_Dynamic_V」を追加します。
-
設定方法はレイアウト・デザイナ ガイド『4.5 フォント設定』をご参照ください。
設定後はレイアウト・デザイナの再起動が必要です。
-
設定方法はレイアウト・デザイナ ガイド『4.5 フォント設定』をご参照ください。
-
レイアウトファイルの作成を行います。
ページレイアウトに、ダイナミックフォントを設定したいレイアウトオブジェクトを配置します。
そのオブジェクトのプロパティの Font/font-family 属性に上記で追加したダイナミックフォント名を設定します。
(例)<Label Name="test" Font="Meiryo_Dynamic_H" ・・・ />
<VerticalLabel Name="test" Font="Meiryo_Dynamic_V" ・・・ />
追加設定サンプル実行結果
-
追加した「Meiryo_Dynamic_H」と「Meiryo_Dynamic_V」を使用してPDF ファイルを生成します。
-
生成したPDF ファイルのフォント情報で、エンコーディングと、実際のフォントが正しいことを確認してください。
注意事項
- TrueTypeフォント、OpenTypeフォントがご利用できます。
- OpenTypeフォントはスタイル指定をしても無視します。
- pdf.properties への追加作業時には、次の設定を変更しないようご注意ください。
# Dynamic Font
load.font.class.1=PDFDynamicJapaneseFont
load.font.class.2=PDFDynamicLatinFont
load.font.class.3=PDFDynamicUnicodeFont