最終更新日: 2007/04/28

XSL Formatter V4 フォント・サポート

XSL Formatter V4 がサポートしているフォントと、各フォントに対する一般的な考慮点について記述します。これらは、主に UNIX/Linux/Macintosh版のための情報です。Windows版では、インストールされているフォントを特に意識せずにそのまま利用できます。

XSL Formatter V4 は、外字(EUDC) にも対応しています。

サポートされるフォント

XSL Formatter V4 は、以下の種類のフォントに対応しています。

  • Adobe Type 1 フォント

    Adobe Type 1 フォントは、通常 .AFM+.PFB、または .PFM+.PFB フォントファイルのペアから成り、前者は Solaris/Linux/Macintosh/HP-UX/AIX環境で、後者は Windows環境で使用されます。Type 1 フォントに関する詳細は、Adobe Type 1 フォント を参照してください。 以下、単に Type 1 フォントと言った場合は、Adobe Type 1 フォントのことを指します。

  • TrueType フォント

    TrueType フォントファイルは .TTF または .TTC の拡張子を持ちます。TrueType フォントに関する詳細は、TrueType フォント・OpenType (TrueType アウトライン) フォント を参照してください。

  • OpenType フォント

    OpenType フォントファイルは .TTF または .OTF の拡張子を持ちます。前者は TrueType アウトライン情報 が、また後者は、PostScript アウトライン情報が、フォントファイルに含まれます。OpenType フォントに関する詳細は、OpenType (PostScript アウトライン) フォント を参照してください。

  • Macintosh TrueType フォントデータフォークスーツケース

    拡張子 .dfont または .dfon で示される Macintosh TrueType フォントスーツケースに対応しています。これは、フォントがデータフォークに定義されているフォントスーツケースです。Classic MacOS で利用されてきた、フォントがリソースフォークに定義されている旧フォントスーツケースには対応していません。内容は TrueType フォントです。TrueType フォントに関する詳細は、TrueType フォント・OpenType (TrueType アウトライン) フォント を参照してください。

Adobe Type 1 フォント

ここでは、Adobe Type 1 フォント の一般的な情報と、XSL Formatter V4 が Adobe Type 1 フォント にどのように対応しているかを記述します。お使いの環境で、Adobe Type 1 フォントをより便利に使うヒントを示します。

フォントの構成と必要条件

Adobe Type 1 フォントは、以下のフォントファイルから成ります。

拡張子 説明
.PFB (Printer Font Binary) バイナリ圧縮されたフォントのアウトラインが含まれます。
.AFM (Adobe Font Metrics) 一般フォント情報と、フォントメトリクス情報を含むテキストファイルです。 主に、.AFM+.PFB のペアで UNIX で使用されます。
.PFM (Printer Font Metrics) 一般フォント情報と、フォントメトリクス情報が含まれます。 また、Windowsでのフォントメニューの名前となります。 バイナリフォーマットのファイルで、主に .PFM+.PFB のペアで Windowsで使用されます。

XSL Formatter V4 は、.AFM+.PFB または .PFM+.PFBのどちらのタイプの組合わせにも対応しています。

以下は Type 1 フォントに関する必要条件です。

  • 他にも、.PFA (Printer Font Ascii) という拡張子を持つアウトラインファイルが存在しますが、XSL Formatter V4 はこのアウトラインファイルには正式には対応していません。 ほとんどの Type 1 フォント製品が .PFB 形式で出荷されていますので、.PFB 形式のフォントファイルをお使いください。
  • 拡張子 .MMM を持つ Type 1 フォントメトリクスデータには対応していません。 このメトリクスファイルは、Multiple Master Type 1 フォントに使われています。

Adobe Type 1 フォントの使用法

Adobe Type 1 フォントを使用する場合は、font-familyfont-weightfont-style プロパティをFOに指定するだけです。 次のFOは fo:block に Helvetica を指定しています。

<fo:block font-family="Helvetica" font-weight="bold" font-style="italic">
  Helvetica (Bold-Italic) will be applied to this text.
</fo:block>

XSL Formatter V4 は、font-familyfont-weightfont-style の値を、以下の規則を用いて Type 1 フォントにマップします。 それぞれの .AFM.PFM ファイルが異なるマッピングの規則を持っていることに注意してください。

.AFM ファイルのマッピング規則

FOのプロパティ マッピング規則
font-family .AFM ファイル内の Global Font Information の FamilyName パラメータの値に対応します。
font-weight .AFM ファイル内の Global Font Information の Weight パラメータの値に対応します。 "Bold"、"Demi"、"ExtraBold" のパラメータ値は、font-weight="bold" とみなされ、それ以外の値は、font-weight="normal" とみなされます。
font-style .AFM ファイル内の Writing Direction Information の ItalicAngle パラメータの値に対応します。 パラメータ値 "0" は、font-style="normal" とみなされ、それ以外の値は、font-style="italic" とみなされます。

.AFM ファイルはテキストファイルなので、テキストエディタを使って、これらのパラメータを容易に確認することができます。 .AFM ファイルに関する詳細は、Adobe Font Metrics File Format Specification を参照してください。

WindowsNameモード では、.AFM ファイルに対するマッピング規則は適用されません。WindowsNameモード.AFM ファイルを使用するには、フォントファミリに対する別名の定義 をご利用ください。

.PFM ファイルのマッピング規則

FOのプロパティ マッピング規則
font-family .PFM ファイル内の WindowsName パラメータの値に対応します。
font-weight .PFM ファイル内の PFMHEADER の dfWeight パラメータの値に対応します。パラメータ値は "400" または "700" です。
font-style .PFM ファイル内の dfItalxic パラメータの値に対応します。 パラメータ値 "0" は、font-style="normal" とみなされ、それ以外の値は、font-style="italic" とみなされます。

.PFM ファイルはバイナリフォーマットのため、通常はテキストエディタでは内容を見ることができません。 .PFM ファイルに関する詳細は、Building PFM Files for PostScript-Language CJK Fonts を参照してください。 もともと .PFM ファイルは Windows用にデザインされたものですが、現在、最初の仕様を Microsoft MSDN から入手するのは困難になっています。

.AFM ファイルの "FamilyName" と .PFM ファイルの "WindowsName" が異なる場合があります。.AFM ファイルの "Weight" や .PFM ファイルの "dfItalic" なども同様です。 例えば、Adobe が供給する HVC_____.AFM のフォントファミリ名は、"Helvetica" ですが、対応する HVC_____.PFM はフォントファミリ名を "Helvetica-Condensed" として定義しています。

Adobe Type 1 フォントの埋め込み

XSL Formatter V4 は、PDFファイルへの Type 1 フォントの埋め込みに対応しています。 フォントを埋め込むためには、以下を準備してください。

  • .AFM+.PFB、または .PFM+.PFB のフォントファイルをフォント構築ファイルの <font-folder> で指定されているフォルダに準備してください。
  • オプション設定ファイルの <embed-font> 要素に埋め込むフォントファミリ名を指定します。または <pdf-settings embed-all-fonts="true"> を指定します。

フォントを埋め込まない場合は、.AFM または .PFM ファイルのどちらかが必要です。 フォントが埋め込まれていないPDFファイルを読むには、ユーザの環境に実際にPDFに使用されているフォントがインストールされている必要があります。

XSL Formatter V4 は、Type 1 フォントのグリフのうち、使用しているもののみを埋め込みます。

.AFM ファイルを使用した場合のユニコードとグリフのマッピング

Adobe Type 1 フォントを .AFM ファイルで使うためには、ユニコード文字がどのように Type 1 フォントのグリフにマッピングされるかを知っている必要があります。 以下に、PDFファイル内での Type 1 フォント処理を簡単に説明します。

  • PDF ファイル内で、Type 1 フォントに属する文字は、0~255 の値の文字コードを用いて格納されています。
  • PDF ファイル内の各 Type 1 フォントがエンコーディングパラメータを持ち、これにより文字コードグリフ名の対応付けが定義されます。
  • PDFを読むアプリケーション(Adobe Acrobat または Readerなど)は、エンコーディングパラメータを使って、文字コードグリフ名 に変換し、グリフ名 を索引キーとして使用して、Type 1 のグリフのアウトラインを呼び出します。 そして最終的に、このアウトラインデータを用いてグリフを描写します。
エンコーディングの詳細については、Adobe portable document format, version 1.3Appendix D を参照してください。

例えば、ある Type 1 フォントのエンコーディングパラメータが、Adobe Standard Encoding で、"•" (U+2022 BULLET) をPDFファイルに記述したい場合は、 文字コード 0xB7(183) を選択しなければなりません。なぜならばこの文字のグリフ名は、"bullet" であり、これは 0xB7 として Adobe Standard Encoding に定義されているからです。

これらから、PDFファイルに文字を書くには、まず、ユニコードのグリフ名を知っている必要があります。 この処理については、Unicode and Glyph Names に記述されています。 もっとも重要なマッピングの規則は、AGL (Adobe Glyph List) ファイルに記述されています。AGL は単純なテキストファイルで、800以上の Latin文字に対してユニコードからグリフ名へのマッピング規則を定義しています。XSL Formatter V4 は、このデータをユニコードからグリフ名にマップする際に使用します。
以下では、XSL Formatter V4 が、どのようにユニコードをグリフ名にマップし、PDFファイルに文字コードを記述するかを簡単に説明します。

  1. FOに、あるユニコードがテキストに使われているとします。
  2. XSL Formatter V4 は、AGLデータを使って、このユニコードのグリフ名を取得します。
  3. .AFM ファイルを調べて、その Type 1 フォントのエンコーディングパラメータを決定します。
  4. また、.AFM ファイル文字メトリクス(AFM file character metrics)を調べて、グリフ名の文字コードの情報を取得します。
  5. 取得した文字コードとエンコーディング情報をPDFファイルに記述します。

.PFM ファイルを使用した場合のユニコードとグリフのマッピング

Adobe Type 1 フォントを .PFM ファイルで使う場合は、XSL Formatter V4 は別の方法で、ユニコードをグリフにマップします。このとき、グリフ名は使用しません。

.PFM ファイルは、PFMヘッダの dfCharSet 項目に、ひとつのエンコーディングデータを持っています。この 1バイトの項目には、文字セット(character set)と呼ばれる値が含まれています。Windows環境では、WINGDI.H ファイルに、以下の文字セットが定義されています。

名前 コードページ
ANSI_CHARSET01252
HEBREW_CHARSET1771255
ARABIC_CHARSET1781256
GREEK_CHARSET1611253
TURKISH_CHARSET1621254
VIETNAMESE_CHARSET1631258
THAI_CHARSET222874
EASTEUROPE_CHARSET2381250
RUSSIAN_CHARSET2041251
BALTIC_CHARSET1861257

Microsoft が提供する Unicode to code page mapping data を用いて、XSL Formatter V4 は、ユニコードから文字コードへ変換し、PDFに記述します。 このマッピングデータは最大で 256個のエントリを持ちます。これはコードページが 8ビット文字幅のみを提供するためです。 コードページデータに定義されていないグリフは、フォントのアウトラインデータに存在しない限り使用できません。

コードページマッピングとフォントファイル内の実際のエンコーディングは、適合しない場合があるので、.PFM+.PFB のペアを主として Type 1 フォントを使用するのは、推奨されていません。この組み合わせは補助的な方法としてお使いください。

グリフ名マッピングの変更

.AFM ファイルを使用した場合のユニコードとグリフのマッピングで説明したように、AGLはユニコードとグリフ名のマッピング規則を提供します。 これは、一般に使用されている Latin文字に対応していますが、フォントの中にはAGLに適合しない特別なフォントもあります。 例えば、Adobe Type 1 製品である Carta (CR______.AFM, CR______.PFM, CR______.PFB) には、189の絵グリフと 標準外のグリフ名があります。 これらのグリフ名をAGLの中から調べると、適合するグリフ名は 14個のみで、それ以外はAGLに適合しません。 そのままだと、.AFM+.PFB の組み合わせの Carta は、ほとんどのグリフが使えないことになります。

この問題を回避するのに、XSL Formatter V4 は2つの方法を提供します。 ひとつは、このフォント独自の グリフリストファイルを作成する方法、もう一つは、フォント構築ファイルに、<skip-glyphname-mapping>を指定する方法です。

グリフリストファイル

このグリフリストファイルは単純なテキストファイルで、特定のフォントでのユニコードとグリフ名のマッピングを記述します。 フォーマットは、AGLファイルと同様です。

  • 最初の項目は、4桁の大文字16進数字で、ユニコードの値を表します。
  • 2番目の項目は、.AFM ファイルに定義されているグリフ名です。
  • 3番目の項目は、ユニコードの文字名です。この項目はなくても構いません。
  • すべての項目はセミコロン ";" を使って分離されている必要があります。"#" で始まる行はコメント行とみなされます。

以下は グリフリストファイル の一例です。このグリフリストファイルは、ユニコードのプライベートユーザエリアを Cartaフォントのグリフ名にマップします。 ただし、空白と数字はそのままです。

# Carta sample glyphlist file
# file name:carta-glyphname.txt
0020;space;
E000;circle;
E001;lookoutcontrol;
E002;triangle;
E003;diamond;
E004;hexagon;
E005;explode2;
E006;lookout;
E007;IRBM;
E008;ICBM;
E009;explode1;
E00A;ruin;
E00B;goldbar;
E00C;lighthouse;
E00D;mining;
E00E;gaging;
0030;zero;
0031;one;
0032;two;
0033;three;
0034;four;
0035;five;
0036;six;
0037;seven;
0038;eight;
0039;nine;
E00F;boundary;
...

グリフリストファイルを作成したら、フォント構築ファイルに、このグリフリストファイルのエントリを追加します。 Carta フォントが /home/resource/fonts ディレクトリにある場合、以下のような <glyph-list> エントリを追加します。

<font-config>
  <font-folder path="[Install directory]/fonts">
    <glyph-list file="ZapfDingbats-glyphname.txt" afm="ZapfDingbats.afm"/>
  </font-folder>
  <font-folder path="/home/resource/fonts">
    <glyph-list file="carta-glyph-list.txt" afm="CR______.AFM"/>
  </font-folder>
</font-config>

グリフリストファイルの追加作業は以上で終了です。以下のFOは、その下に示されたPDFファイルに変換されます。

<fo:block font-family="Carta">
&#xE000; &#xE001; &#xE002; &#xE003; &#xE004;
&#xE005; &#xE006; &#xE007; &#xE008; &#xE009;
&#xE00A; &#xE00B; &#xE00C; &#xE00D; &#xE00E;
&#x0030; &#x0031; &#x0032; &#x0033; &#x0034;
&#x0035; &#x0036; &#x0037; &#x0038; &#x0039;
&#xE00F;
</fo:block>

Sample Carta PDF file

グリフ名マッピングの省略

もう一つの方法として、XSL Formatter V4 がグリフ名のマッピングを無視するように指示することができます。 これは、フォント構築ファイルに、<skip-glyphname-mapping> 要素を指定します。

<font-config>
  <font-folder path="[Install directory]/fonts">
    <glyph-list file="zapfdingbats-glyphname.txt" afm="ZapfDingbats.afm"/>
  </font-folder>
  <font-folder path="/home/resource/fonts">
    <skip-glyphname-mapping afm="CR______.AFM"/>
  </font-folder>
</font-config>

.AFM ファイルに対してこのオプションが指定されると、FO内のユニコードの文字は、フォントエンコーディングの範囲内であれば、すべてPDFの文字にマップされます。 例えば、ユニコード U+0021 の場合、この文字は Cartaフォントのエンコーディングでは、10進数の 33が "circle" として定義されているので、直接PDFファイルに記述されます。 ユニコード U+0101 は、喪失グリフとしてエラーになりますが、これは、Cartaフォントのエンコーディングに定義されていないからです。 どのユニコードの文字が利用可能かは、.AFM ファイルを調べれば確認できます。 以下は、Cartaフォントの .AFM ファイルの一部ですが、ユニコードの文字が "C" の右側の数字と一致している場合、その文字は利用可能です。

EncodingScheme FontSpecific
StartCharMetrics 189
C 32 ; WX 280 ; N space ; B 0 0 0 0 ;
C 33 ; WX 560 ; N circle ; B 30 150 530 650 ;
C 34 ; WX 620 ; N lookoutcontrol ; B 15 60 605 741 ;
...
C 250 ; WX 1042 ; N boat ; B 30 0 1012 280 ;
C 251 ; WX 852 ; N portofentry ; B 30 123 822 677 ;
C 252 ; WX 946 ; N whwycounty ; B 0 -58 946 857 ;
C 253 ; WX 1154 ; N whwytridown ; B 0 -100 1154 899 ;
C 254 ; WX 1072 ; N whwytriright ; B 0 -121 1073 919 ;
EndCharMetrics

FOを以下のように書けば、出力されるPDFは先のものと同様になります。

<fo:block font-family="Carta">
&#x0021; &#x0022; &#x0023; &#x0024; &#x0025;
&#x0026; &#x0027; &#x0028; &#x0029; &#x002A;
&#x002B; &#x002C; &#x002D; &#x002E; &#x002F;
&#x0030; &#x0031; &#x0032; &#x0033; &#x0034;
&#x0035; &#x0036; &#x0037; &#x0038; &#x0039;
&#x003A;
</fo:block>

フォントファミリに対する別名の定義

複数のタイプの Type 1 フォントをインストールした場合、フォントファミリ名に関して面倒な問題が起こります。 例えば、Adobe製品の Eurostile Type 1 フォントを .AFM+.PFB のペアでインストールした場合、フォントファイルの組み合わせによっては、フォントの選択時に問題が発生します。 以下に、いくつかのフォントファイルの組み合わせにおけるフォントファミリ名の問題を記述します。

PFB name PFM information AFM information
WindowsName dfWeight dfItalic FullName FamilyName Weight ItalicAngle
EU______.PFB Eurostile 400 0 Eurostile Medium Eurostile Medium 0
EUB_____.PFB Eurostile Bold 400 0 Eurostile Bold Bold 0
EUEX____.PFB Eurostile ExtendedTwo 400 0 Eurostile Extended #2 Roman 0
EUBEX___.PFB Eurostile ExtendedTwo 700 0 Eurostile Bold Extended #2 Bold 0

これらのフォントを、.PFM+.PFB の組み合わせで使用する場合、.PFM ファイルは、すべて異なる フォントファミリ名 を使用するため問題はありません。一方、これらのフォントを、.AFM+.PFB の組み合わせでインストールした場合、すべてのフォントファミリ名は Eurostile となり、しかも同じ太さ(weight)を持つ複数のフォントが存在することになります。太さの値の MediumRomanfont-weight="400" として解釈され、Boldfont-weight="700" として扱われます。したがって、FOで以下のような記述を指定すると、フォントの選択が不確定になります。

<fo:block font-family="Eurostile">
  It is uncertain which font applies: "Eurostile Medium" or "Eurostile Extended #2"
</fo:block>
<fo:block font-family="Eurostile" font-weight="bold">
  It is uncertain which font applies: "Eurostile Bold" or "Eurostile Bold Extended #2"
</fo:block>

この問題を回避するためには、フォント構築ファイルで、<alias> 要素を用いて新たなフォントファミリ名の別名を定義する必要があります。 以下は、 .PFM に似せたフォントファミリ名の定義例です。

<font-config>
  <font-folder path="[Install directory]/fonts">
    <glyph-list file="ZapfDingbats.txt" afm="ZapfDingbats.afm"/>
  </font-folder>
  <font-folder path="/home/resource/fonts">
    <!-- Set the family-name and weight to the PFM definition -->
    <font-alias  file="EU______.AFM">
      <alias family-name="Adobe Eurostile"/>
    </font-alias>
    <font-alias  file="EUB_____.AFM">
      <alias family-name="Adobe Eurostile Bold" weight="normal"/>
    </font-alias>
    <font-alias  file="EUEX____.AFM">
      <alias family-name="Adobe Eurostile ExtendedTwo"/>
    </font-alias>
    <font-alias  file="EUBEX___.AFM">
      <alias family-name="Adobe Eurostile ExtendedTwo" weight="bold"/>
    </font-alias>
  </font-folder>
</font-config>

この別名のフォントファミリ名を用いて、以下のようなFOを作成することができます。

<fo:block font-family="Adobe Eurostile">
  "Eurostile Medium" will be applied to this text.
</fo:block>
<fo:block font-family="Adobe Eurostile Bold">
  "Eurostile Bold" will be applied to this text.
</fo:block>
<fo:block font-family="Adobe Eurostile ExtendedTwo">
  "Eurostile Extended #2" will be applied to this text.
</fo:block>
<fo:block font-family="Adobe Eurostile ExtendedTwo" font-weight="bold">
  "Eurostile Bold Extended #2" will be applied to this text.
</fo:block>
新たに定義する <font-alias> 要素の family-name 属性は、フォントファイル内の他の定義されているどの別名とも異ならなければなりません。 また、太さと斜体の組み合わせは、同じフォントファミリ名を持つフォントの中でユニークでなければなりません。

WindowsNameモード

XSL Formatter V4 Windows版では、PDFを生成することなく印刷を行うことができます。これは、Windowsの機能を利用して行われるため、フォントの取り扱いもWindowsに準じます。すなわち、Windowsは、.PFM ファイルの WindowsName を用いてフォントにアクセスします。 このため、.AFM ファイルの FamilyName でマッピングしようとしても、うまくマッピングできない可能性があります。 フォント構築ファイルに <name-processing-mode mode="windows-name"/> を指定することにより、この問題を回避できます。しかし、そのときは .AFM ファイルへの指定が直接できなくなりますので、.AFM ファイルについては、別名を定義する必要があります。

しかし、Windows自身には .AFM ファイルは含まれていないので、多くの場合、この問題を意識する必要はありません。

TrueType フォント・OpenType (TrueTypeアウトライン) フォント

ここでは、TrueType フォントOpenType (TrueType outline) フォント の一般情報と、XSL Formatter V4 がどのようにそれらを取り扱っているのかを説明します。お使いの環境で、より便利にこれらのフォントをお使い頂くヒントを示します。

フォントの構成と必要条件

TrueType フォントは、Apple Computer によって開発され、Windows 環境で使われています。OpenType フォントは、プラットフォーム非依存のフォントとして Adobe と Microsoft により共同開発されました。 もともと OpenType フォントは、2種類の性質を持っています。 ひとつは、TrueType アウトライン であり、もうひとつは PostScript アウトライン です。TrueType アウトライン を持つ OpenType フォントファイルは、拡張子 .TTF または .TTC のファイルを持ちます。PostScript アウトライン を持つ OpenType フォントファイルの拡張子は .OTF です。 ここでは、元々の TrueType フォントと OpenType(TrueType outline) フォントを一緒に説明します。 以降では、TrueType フォントOpenType(TrueType outline) フォント をあわせて、TrueType フォント として記述します。

Macintosh TrueType フォントデータフォークスーツケースも TrueType フォントで、拡張子は .dfont または .dfon です。.TTF といくらか違いはありますが、TrueType の扱いはほとんど同じですので、解説は割愛します。

TrueType フォントは、拡張子 .TTF または .TTC の単一ファイルで構成されています。 .TTCTrueType Collection の短縮形で、単一ファイル内に複数の TrueType フォントを含みます。 CJKフォントで使われることがあります。

以下は、TrueType フォントの必要条件です。

  • ユニコードをグリフインデクスにマップするための cmap table が必要です。ほとんどの TrueType フォントはそれを持っています。
  • 古い TrueType フォントの中には、OS/2 table にコードページ情報を持っていないフォントがあります (ulCodePageRange1, 2)。 これは、XSL Formatter V4 がフォントの選択を行う際に影響を与えますので、このような古い TrueType フォントはお使いいただかないことをお勧めいたします。
cmap table など、TrueType フォントの詳細については、以下のようなサイトを参照してください。

TrueType フォントの使用法

TrueType フォントを使用するには、.TTF (.TTC) ファイルを、フォント構築ファイルの <font-folder> 要素で指定したディレクトリに置き、FOの中で、使用したいフォントを font-family に指定します。

<fo:block font-family="Arial" font-weight="bold" font-style="italic">
  If you install arialbi.ttf file,
  TrueType Arial (Bold-Italic) will be applied to this text.
</fo:block>

XSL Formatter V4 は、font-familyfont-weightfont-style の値を、以下の規則を用いて TrueType フォントにマッピングします。

FOのプロパティ マッピング規則
font-family 次の値を持つ name table データに対応します。
  • Platform ID = 3 (Microsoft)
  • Platform-specific encoding ID = 1 (Unicode)
  • Name ID = 1 (Font Family Name)
font-weight OS/2 tableusWeightClass 項目の値に対応します。 この項目には、100~900までの 100単位の太さの値が含まれます。
font-style OS/2 tablefsSelection 項目の最下位ビットに対応します。 このビットがオンならば、font-style="italic" とみなされます。

これらの情報は Microsoft が提供する TrueTypeフォント解析ツール(TTFdump)を使って調べることができます。 例えば HG-GothicB のフォントファミリ名を調べるには下記のようにコマンドラインから ttfdump を実行します。

>  ttfdump c:\winnt\fonts\HG-GothicB.ttf

出力される name table 情報の中から上記マッピング規則に合致する情報を見つけます。 HG-GothicB の場合は下記の情報が合致します。Data がフォントファミリ名に相当しますので HG-GothicB のフォントファミリ名は「HGゴシックB」であることが分かります。

 9. Platform ID:       3
    Specific ID:       1
    Language ID:       1041
    Name ID:           1
    Length:            14
    Offset:            362
       Data:  0 48  0 47 30 B4 30 B7 30 C3  <  .H.G0´0·0Ã
             30 AF  0 42                    <  0¯.B

別の言語IDと共に複数のフォントファミリ名を持つフォントがありますが、XSL Formatter V4 では、font-family の値にこれらの名前を使うことができます。 例えば、simsun.ttf は、"SimSun" と "宋体" という2つのフォントファミリ名を持ちますが、どちらの名前も有効です。

TrueType フォントの埋め込み

XSL Formatter V4 は、Type 1 フォントと同様に TrueType フォントをPDFファイルへ埋め込むことができますが、大きな違いとして、埋め込みライセンスがあります。TrueType フォントは、OS/2 tablefsType 項目に、ライセンス情報を持っています。XSL Formatter V4 はこのライセンス情報を考慮し、埋め込み禁止フォントを埋め込もうとした場合はエラーとします。
なお、TrueType フォントは、使用されているグリフだけが埋め込まれます。

PDFのリファレンスマニュアルでは、あらゆるビューアアプリケーションが期待どおりの正しい表示をするためには、TrueType フォントを埋め込むように推奨しています。 TrueType フォントが埋め込まれていないPDFを Adobe Acrobat または Reader が処理する際、特定のユニコード文字とフォントの組み合わせによっては、エラーが表示される場合があるからです。 例えば、タイ語の文字が使われている TrueType フォントが非埋め込みで作成されたPDFファイルは、Adobe Acrobat または Reader で開こうとすると、実際にフォントが存在するにも関わらず、"font not found" のエラーが表示されます。一方、アラビア語が使われているフォントは、埋め込みをしなくてもこのようなエラーは起こりません。

OpenType (PostScriptアウトライン) フォント

ここでは、OpenType (PostScript アウトライン) フォントの一般情報と XSL Formatter V4 がどのようにそれらを取り扱っているのかを説明します。お使いの環境で、より便利にこれらのフォントをお使い頂くヒントを示します。

フォントの構成と必要条件

OpenType (PostScript アウトライン) は、フォントの構成と必要条件 に記述されている OpenType フォントの1種類です。 OpenType (PostScript アウトライン) フォントは、拡張子が .OTF で、単一のファイルから構成されます。また、OpenType (PostScript アウトライン) は、ふたつのカテゴリに分類されます。 ひとつは、OpenType (PostScript) CID フォントであり、もうひとつは、OpenType (PostScript) non-CID フォントです。以下でこれらのカテゴリを簡単に説明します。

Type Contents Treatment in PDF
Non-CID フォント 主に Latin文字のグリフを含み、グリフは、グリフ名を使ってインデクスされます。これは、Type 1 フォントと同様です。 Type1
CID フォント 主に CJK ideograph グリフを含み、グリフは、CIDを用いてインデクスされます。 Type0 (CIDFontType0)

OpenType は、新しい標準形式です。XSL Formatter V4 からお使いいただく際に必要な条件はありません。

OpenType (PostScript アウトライン) フォントの使用法

使い方、family-namefont-weightfont-style のマッピング規則は、TrueType フォントと同様です。 詳細は、フォントの構成と必要条件 を参照してください。

OpenType (PostScript アウトライン) の中には、100の倍数でない font-weight 値を持つフォントがありますが、この場合、XSL Formatter V4 は値を四捨五入します。

OpenType (PostScript アウトライン) フォントの埋め込み

フォントの埋め込み条件は、TrueType フォントと同様です。詳細は、TrueType フォントの埋め込み を参照してください。

別名を使ったフォントファミリの統合

OpenType (PostScript outline) CID フォントの中には、フォントファイルごとにフォントファミリ名を定義しているフォントがあります。 もともとこれらのフォントは、同じフォントファミリに属し、異なる font-weight値を持ちます。

Font file Family-name Weight Italic
HeiseiKakuGoStd-W3.otf "Heisei Kaku Gothic Std W3" 300 Normal
HeiseiKakuGoStd-W5.otf "Heisei Kaku Gothic Std W5" 500 Normal
HeiseiKakuGoStd-W7.otf "Heisei Kaku Gothic Std W7" 700 Normal
HeiseiKakuGoStd-W9.otf "Heisei Kaku Gothic Std W9" 900 Normal

Windows環境において、同じフォントファミリ名に対して、3つを超えて weight値を持つことができない(Macintosh環境ではこのような組み合わせが可能です)ため、これらのフォントは、フォントファイルごとに異なるフォントファミリ名を持ちます。 これらのフォントを異なるフォントファミリ名で使用するのが不便な場合は、フォント構築ファイルに、以下のような別名定義を加えると、フォントファミリ名を統合することができます。

<font-config>
  <font-folder path="[Install directory]/fonts">
    <glyph-list file="ZapfDingbats.txt" afm="ZapfDingbats.afm"/>
  </font-folder>
  <font-folder path="/home/resource/fonts">
    <!-- Integrate the four OTF font's family name to
         "Heisei Kaku Gothic Std"-->
    <font-alias  file="HeiseiKakuGoStd-W3.otf">
      <alias family-name="Heisei Kaku Gothic Std" weight="300" />
    </font-alias>
    <font-alias  file="HeiseiKakuGoStd-W5.otf">
      <alias family-name="Heisei Kaku Gothic Std" weight="500" />
    </font-alias>
    <font-alias  file="HeiseiKakuGoStd-W7.otf">
      <alias family-name="Heisei Kaku Gothic Std" weight="700" />
    </font-alias>
    <font-alias  file="HeiseiKakuGoStd-W9.otf">
      <alias family-name="Heisei Kaku Gothic Std" weight="900" />
    </font-alias>
  </font-folder>
</font-config>

この別名定義されたフォントファミリ名を使用して、FOを以下のように作成することができます。

<fo:block font-family="Heisei Kaku Gothic Std" font-weight="300">
  "Heisei Kaku Gothic Std W3" will be applied to this text.
</fo:block>
<fo:block font-family="Heisei Kaku Gothic Std" font-weight="500">
  "Heisei Kaku Gothic Std W5" will be applied to this text.
</fo:block>
<fo:block font-family="Heisei Kaku Gothic Std" font-weight="700">
  "Heisei Kaku Gothic Std W7" will be applied to this text.
</fo:block>
<fo:block font-family="Heisei Kaku Gothic Std" font-weight="900">
  "Heisei Kaku Gothic Std W9" will be applied to this text.
</fo:block>

外字

XSL Formatter V4 では、外字(EUDC: End User Defined Character) を利用することができます。

Windows版では、外字の情報をレジストリから取得するので、フォント構築ファイルに外字情報を作成する必要はありませんが、フォント構築ファイルに外字情報が記述されている場合はそれも考慮されます。 Windows版以外では、外字を利用するためにはフォント構築ファイルに外字情報を作成しておく必要があります。

<font-config>
 <name-processing-mode mode="windows-name"/>
 <windows-registry reference="enable"/>
 <font-folder path="c:\Windows\Fonts"/>
 <eudc-processing mapping="enable">
  <eudc-range start="57344" end="63743">
  <eudc-system-default file-path="c:\Windows\Fonts\EUDC.TTE"/>
  <eudc-map family-name="MS 明朝" file-path="c:\Program Files\east\jinmei3\FEJPMIN.TTG"/>
  <eudc-map family-name="MS P明朝" file-path="c:\Program Files\east\jinmei3\FEJPMIN.TTG"/>
 </eudc-processing>
</font-config>

外字の利用は、利用者は意識する必要がありません。XSL Formatter V4 は、文字コードによって、自動的にフォントの切り替えを行います。


Copyright © 1996-2010 Antenna House, Inc. All rights reserved.
Antenna House is a trademark of Antenna House, Inc.