« 2006年03月14日 | メイン | 2006年03月16日 »
2006年03月15日
PDFとフォント(5) XSL-FOにおけるフォントの扱い
XSL-FOのフォントについての説明はCSS2を元にしていますが、細かく見ますとCSS2とは少し異なっています。
XSL-FO V1.0 仕様書 7.8 Common Font Propertiesでは、フォントについて大まかに、次のように説明しています。
(1) XSLのフォントモデルは、OpenType仕様で示される技術に準拠して説明されている。
※Microsoft, Adobe. OpenType specification v.1.2.
(2) フォントは、グリフと、そのグリフを表示するために必要なフォント・テーブルという情報の集合である。グリフとフォント・テーブルの集合をフォント・データという。
(3) フォント・テーブルには、文字をグリフに対応付けるのに必要な情報と、グリフの領域を決め、グリフの領域の位置を決めるのに必要な情報を含んでいる。各フォント・テーブルはフォントのウエイトやフォントのスタイルのようなフォントの特性から構成される。
ここで、注意すべきことは、フォントとは単なるグリフの集合ではなく、グリフを印刷平面上に配置していくための様々なデータを含んでいるということです。
さて、XSL-FOで使うフォントの属性は、次の6項目でほぼCSS2と同じです。
(1)フォントファミリー font-family <family-name>、または<generic-family>を指定。
(2)フォントサイズ font-size
(3)フォントストレッチ font-stretch
(4)フォントスタイル font-style
(5)フォントの変形 font-variant
(6)フォントのウエイト font-weight
※XSL-FOはCSS2を若干拡張していますが、あまり本質的ではないので省略します。
font-familyはCSS2と同じです。CSS2で出てきました時、説明しませんでしたが、属性に指定する<family-name>は、フォントの提供者がつける固有名となります。これに対して<generic-family>は、キーワードでserif, sans-serif, cursive, fantasy, monospaceの5種類があります。例えば、和文フォントではserifというより明朝という言い方が、sans-serifというよりゴシックという言い方が一般的です。cursive, fantasyは欧文フォントの概念で和文フォントでは一般的ではないように思います。無理にいえば、cursiveは連綿体に相当すると思います。monospaceは、欧文では手動タイプライタのフォントになります。和文フォントはもともと固定ピッチが基本なのでmonospaceというキーワードを和文フォントに適用するのは意味がないと思います。
<generic-family>はフォントの選択メカニズムで重要になります。
さて、CSS2もXSL-FOも上のように、その文字を可視化する際に使いたいフォントのプロパティを(1)から(6)の属性によって細かく指定できるわけですが、既に見ましたように実際に使うことのできるフォントのファミリーには、指定した属性のものが揃っているとは限りません。いや、むしろ揃っていないことの方が多いでしょう。
その時は、どうするのでしょうか?この時に重要になるのがフォントの選択メカニズムです。この辺については別途調べてみたいと思います。
投票をお願いいたします