OpenTypeレイアウトへの道
前回のOpenTypeフォントの投稿から随分、日が過ぎたが別件(この投稿のコメント欄)で久しぶりにやる気が沸いたので続きをやってみる。タイトルも「OpenTypeレイアウトへの道」となんだかカッコつけた名前にしてみた
。
今回からフォントがOpenTypeであるがためのテーブル、つまり、従来のTrueTypeフォントに追加された新しいOpenTypeレイアウトテーブルと呼ばれるGSUB、GPOS、GDEF、BASE、JSTFの5つのテーブルを見ていこうと思う(といっても、これらのテーブルは複雑だから、すべて説明するまでモチベーションが続かないと思うが・・・むしろ、1つのテーブルだけで終わるかも
)。で、いきなり、上記のテーブルの中を見ても混乱すると思うし、まずは、概要や用語について。
まず、OpenTypeレイアウトテーブルはグリフを置換(Substitution)、ポジショニング(Positioning)するための情報を提供するが、それらのデータはスクリプト(Script)、言語システム(Language System)、フィーチャー(Feature)、ルックアップ(Lookup)によって構成される。
スクリプトというのは、1つ以上の言語を表現するために使われる関連のあるグリフの集合のことでトップレベルに定義される。例えば、ラテン文字を表すラテンスクリプトは英語、フランス語、ドイツ語など多くの言語を表記するために使われる。対照的に、ひらがなやカタカナを表すスクリプトは日本語だけを表記するために使われる(漢字を表すスクリプトは日本語だけでなく中国語などでも使われる)。OpenTypeレイアウトでは単一のフォントで複数のスクリプトをサポートすることができる。また、スクリプト内に言語システムを定義する。
言語システムというのは、文字通り、言語のことである。また、言語システム内に言語を表すためのグリフの使用方法のルールであるフィーチャーを定義する。
フィーチャーというのは、言語を表すためのグリフの使用方法のルールのことである。例えば、日本語の縦書きの為に、横書き用のグリフを縦書き用のグリフに置換するためのvertフィーチャ、また、アラビア語では文字の字形が単語内での位置によって、語頭形(initial form)、語中形(medial form)、語末形(final form)などに変わるがそのための、init、medi、finaフィーチャーというのがある。フィーチャーはルックアップを使って定義される。
ルックアップというのは、グリフの置換やポジショニングを適用するグリフ、グリフに適用する操作の種類や適用された結果などを定義する。例えば、グリフ置換では、通常、どのグリフがどのグリフに置換されるか、つまり、置換元のグリフのとそれらの置換先のグリフなどを定義する。
ちなみに、これらスクリプト、言語システム、フィーチャーはOpenTypeフォント内の各テーブルを識別するのと同じように、タグと呼ばれる4バイトの印字可能なASCII文字(0x20-0x7E)で識別され、MicrosoftやAdobeによって既に登録済みタグがある。それらの登録済みのタグの一部を掲載してみる。
| スクリプト | スクリプトタグ |
| Arabic | arab |
| Armenian | armn |
| Balinese | bali |
| Bangali | beng |
| Bangali v.2 | bng2 |
| ・・・省略・・・ | |
| CJK Ideographic | hani |
| Coptic | copt |
| ・・・省略・・・ | |
| Hebrew | hebr |
| Hiragana | kana |
| ・・・省略・・・ | |
漢字?を表すhaniタグ、ひらがな・カタカナ?を表すkanaタグがあることがわかるが、Microsoftの資料によると、スクリプトタグはMicrosoft Typographyによって定義され、各タグはUnicodeにおけるそれぞれの文字コードレンジに対応するそうである。
| 言語システム | 言語システムタグ |
| Abaza | ABA |
| Abkhazian | ABK |
| ・・・省略・・・ | |
| Greek | ELL |
| English | ENG |
| Erzya | ERZ |
| Spanish | ESP |
| ・・・省略・・・ | |
| Italian | ITA |
| Hebrew | IWR |
| Javanese | JAV |
| Yiddish | JII |
| Japanse | JAN |
| ・・・省略・・・ | |
英語を表すENGタグ、日本語を表すJANタグがあるのがわかる。
| フレンドリ名 | フィーチャータグ |
| Access All Alternates | aalt |
| Above-base Forms | abvt |
| ・・・省略・・・ | |
| JIS78 Forms | jp78 |
| JIS83 Forms | jp83 |
| JIS90 Forms | jp90 |
| JIS2004 Forms | jp04 |
| ・・・省略・・・ | |
| Ruby Notation Forms | ruby |
| ・・・省略・・・ | |
| Vertical Writing | vert |
| ・・・省略・・・ | |
vertタグは先ほど述べたように縦書きのためのタグ、rubyタグは振り仮名のためのタグである。
すべてのタグとその詳細は、Microsoftのタイポグラフィのサイトを参照ということで。
て、ここまでだと何のことだかというこだと思うが、次回に続く・・・
| 固定リンク
「フォント」カテゴリの記事
- OpenTypeフォントの続き(12)・・・PostScriptアウトラインの更に続き(2009.11.12)
- OpenTypeフォントの続き(11)・・・PostScriptアウトラインの続き(2009.11.07)
- OpenTypeフォントの続き(10)・・・PostScriptアウトライン(2009.11.04)
- OpenTypeフォントの続き(2)・・・OpenTypeテーブル(2008.02.07)
- CFF/Type2 Charstring(2009.10.26)

コメント
瑣末なことですが…
「フューチャー」より「フィーチャー」の方が良さげな気がします。
投稿: ななし | 2008年9月 6日 (土) 00時04分
ご指摘の通りですね。気づかずに間違った癖が付いてました。フューチャーじゃ、futureかな。ので、後で修正しておきます。
ありがとうございます。
投稿: vanilla | 2008年9月 6日 (土) 01時32分