OpenType language tag

用字系と言語系 (OpenType)

[2] OpenType機能では、 文字 (グリフ) の体系は (よう) () (けい) (script) (げん) () (けい) (language system) の2段階で識別されます。 >>1

仕様書

用字系

[12] (よう) () (けい) (script) は、 関連する文字を集めたものです。 用字系は1つかいくつかの言語で使われるかもしれないものです。 >>11

[13] フォントは1つの用字系にだけ対応することもできますし、 いくつもの用字系に対応することもできます。 >>11

[14] OpenType Layout フォントにおいては、 用字系タグで識別されます。

既定用字系

[20] GSUB GPOS では用字系タグDFLT を指定できます。 用字系特有 (script-specific) ではない機能を定義するために使います。 >>18

[21] 応用は、 対象テキスト用字系についての用字系表が存在していない場合や、 対象テキストが特定の用字系を持たないとき (例えば記号のみ含む場合) に、 DFLT 用字系表を使うべき (should) です。 >>18

[22] 記号等の文字UCD特性用字系Common であるとしても、 必ずしも DFLT を適用するべきとは限りません。 前後の文字用字系でまとめて処理するのが効率的なら、 そうしても構いません >>18
[23] つまり文字やその連なり用字系を決定する具体的な方法は UnicodeOpenType も定めておらず、 実装依存になります。 相互運用性とは。

[24] OpenType は、言語用字系を使って書かれるものだから DFLT 用字系には既定以外の言語系用の指定はあるべきではない (should not) 、 としつつも、そのような指定は認められるもので、 応用もそれに対応するべき (should) だとしています。 >>18

[25] 記号等が用字系に属すると判定されるかどうか不定なら、 DFLT 用字系の指定に従って処理される可能性があるわけですから、 フォント相互運用性のため DFLT 用字系にも言語系依存の指定を含めておくべきということになる気がしますが。

用字系を使った文字列分割

連なり

言語系

[4] (げん) () (けい) (language system) は、 ある用字系を利用する言語の体系によって区別するものです。 用字系言語系で細分することができます >>15

[5] 漢字を使う日本語中文のように、 同じ文字を使っていても異なる慣習で運用されている実態を反映するために使われています。

[27] OpenType Layout フォントにおいては、 言語系タグで識別されます。

[16] 言語系用字系とは違って文章処理クライアント (text-processing client) 文字だけを見て確定させられるとは限りません。 利用者OS言語系を指定する必要があります。 >>15 それがない場合は文章処理クライアントは用字系ごとの既定の言語系の情報を使うことになります >>15, >>28

[17] フォントは、 用字系言語系やその両方に仕立てた情報を記述できます。 >>15

既定言語系

[6] 用字系だけが指定され言語系が指定されない状態は () (てい) (げん) () (けい) (default language system) とされます。

[10] これを表すために dflt という言語系タグが使われています。 >>1

[7] 何を既定言語系にするかはフォント設計者の裁量に委ねられています。 >>1

[8] 中華人民共和国市場を対象としたフォント簡体字中文既定言語系にすればよく、 日本市場を対象にしたフォント日本語 (常用漢字の体系) を既定言語系にすればよい、 ということです。

[9] ただしどれを既定言語系に選ぶかによって既定でない言語系に対応するための lookup 等の記述が複雑になってしまうことがあります。 対応したい言語系のうちで最大公約数的な方法を使っている言語系を既定とし、 それ以外はそこからの差分で記述するのが賢いのかも知れません。 >>1

文脈

[19] GSUB GPOS は、 用字系タグ言語系タグの組み合わせに対して適用されるべき機能を記述します。

[29] JSTF は、 用字系タグ言語系タグの組み合わせに対して適用されるべき事項を記述します。

[26] BASE は、 用字系タグ言語系タグ (と他の要素) の組み合わせに対して適用されるべき基線を記述します。

[32] これらを通して言語情報によるグリフ選択等が実現されます。

処理

GPOS, GSUB, BASE, JSTF, 文字のレンダリング

関連

[3] IETF言語タグUnicodeロケール識別子言語中心の識別子なので言語の下位分類に用字系が入っていますが、 OpenType では用字系の下位分類に言語があります。

[30] metaでは IETF言語タグから派生した ScriptLangTag が使われます。

[31] namecmapには言語ID欄があって、 言語を数値識別子で指定できます。 nameではIETF言語タグも指定できます。 これらの言語指定文字コードの指定と絡み合っています。 OpenTypeにおける文字コード

メモ

[1] OpenType glyph processing (part 2) - Typography | Microsoft Docs, alib-ms, https://docs.microsoft.com/ja-jp/typography/develop/processing-part2#scripts-and-language-systems