« 数値型の憂鬱(2) | トップページ | OpenTypeレイアウトへの道(2)・・・ScriptList »

2008年7月20日 (日)

OpenTypeレイアウトへの道

前回のOpenTypeフォント の投稿から随分、日が過ぎたが別件(この投稿のコメント欄)で久しぶりにやる気が沸いたので続きをやってみる。タイトルも「OpenTypeレイアウトへの道」となんだかカッコつけた名前にしてみたhappy02

今回からフォントがOpenTypeであるがためのテーブル、つまり、従来のTrueTypeフォントに追加された新しいOpenTypeレイアウトテーブルと呼ばれるGSUB、GPOS、GDEF、BASE、JSTFの5つのテーブルを見ていこうと思う(といっても、これらのテーブルは複雑だから、すべて説明するまでモチベーションが続かないと思うが・・・むしろ、1つのテーブルだけで終わるかもbearing)。で、いきなり、上記のテーブルの中を見ても混乱すると思うし、まずは、概要や用語について。

まず、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のタイポグラフィのサイトを参照ということで。

て、ここまでだと何のことだかというこだと思うが、次回に続く・・・

« 数値型の憂鬱(2) | トップページ | OpenTypeレイアウトへの道(2)・・・ScriptList »

フォント」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1497665/39651760

この記事へのトラックバック一覧です: OpenTypeレイアウトへの道:

« 数値型の憂鬱(2) | トップページ | OpenTypeレイアウトへの道(2)・・・ScriptList »

自作ソフトウェア

無料ブログはココログ

メモ