script

用字系と言語系 (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 用字系にも言語系依存の指定を含めておくべきということになる気がしますが。

注意を要するもの

[49] ほとんどは小文字4文字で構成されます。

[50] DFLT のみ大文字が使われています。

[36] Bangla が beng, Bangla v.2 が bng2 のように、 「v.2」に別の用字系タグが割り当てられたものがいくつかあります。 >>33

[47] このうち mymr推奨されず (not recommended) MyanmarUnicode 符号化に対応するフォントmym2 を使うべき (should) とされます。 >>33

[48] 他には特にそうした規定はありません。

[51] lao , nko , vai SPACE を使います。

[52] 用字系の名前が4文字なければ必ず を使うわけでもなく、 漢字 (Han) は hani です。

[53] vi SPACE を2つ使います。

[54] OpenType 仕様書には 'yi ' (空欄に見える部分は U+00A0 U+00A0) と提示されていて、 2つの空白文字が表示されるように NBSP を使うが、実際には SP であると説明されています。 >>33

[55] Musical Symbols を表す musc があります。 >>33

[57] Musical としか説明がありませんが、 Unicode にある西洋音楽系の音楽記号群を指すのでしょうか。 他に Byzantine Music を表す byzm があります >>33

[56] Mathematical text layout を表す math があります。 math layout に関連する機能のため math layout engine が使う想定であり、 MATH の説明を参照するようにと説明があります。 >>33

[58] Hangul Jamo を表す jamo は、 推奨されない (not recommended) とされ、 Unicode conjoining jamo 文字に対応するフォントhang を使うべき (should) とされます。 >>33

[59] Hiragana と Katakana のどちらも同じ kana が割り当てられています。 >>33


[74] 追加については OpenTypeタグを参照。

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

連なり

関連

[34] 用字系タグは通常 Unicode用字系に対応しますが、 必ずしも1対1対応ではありません。 >>33

[35] 用字系タグISO 15924 用字系符号UnicodeScript より前からあるため、 異なる考え方で登録されたものもありますし、 特定の OpenType Layout 実装と関係して登録されたものもあります。 >>33

言語系

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

[61] ここでの言語系とは、 ある用字系文章 (text) がどう表示 (presented) されるべき (should) かの typographic convention の集合を表します。 >>60

[62] そのような convention は特定の言語だったり、 利用 (usage) 分野 (genre) だったり、 異なる出版 (different publications) だったり、 その他の要因に関連付いているかもしれません (may) >>60

[63] 例えばあるの文字の特定のグリフ異体 (variant) が特定の言語だったり、 phonetic transcription数学的記法 (mathematical notation) だったりのために必須 (required) であるかもしれません (may) >>60

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

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

[64] convention の集合は、複数の場面 (scenario) にわたて共有されるかもしれません (may) 。 例えば2つの別の (無関係の) 言語が同じ convention に従っているかもしれません (may) 。 しかし言語系タグは必要性が認識され次第の登録となるので、 タグそれぞれが convention の異なる固有 (distnct and unique) の集合を表すという保証はありません。 >>60

[65] 言語系タグは、複数の言語に適用される convention を表現するとの意図で登録することができます (can) 。 その場合は言語系タグの説明にその意図を反映させるべきです (should) >>60

[66] ある特定の言語に複数の別の typographic convention の集合が存在することもあります (may) >>60

[67] これらより、 言語系タグは必ずしも言語1対1対応の関係にはありません。 >>60

[68] しかし多くの登録済みの言語系タグは特定の言語の typographic convention の集合を表すことを意図したものであります。 そのように言語系タグと1つ以上言語に関係性があるときは、 言語系タグの登録簿に ISO 639 言語符号が示されています。 >>60

[77] 実際、1個だけ ISO 639 言語符号が示されているものもあれば、 数十個の言語符号が列挙されているものもいくつかあります。
[80] 多くの言語系タグには ISO 639 言語符号が示されていますが、 1つも示されていないものもいくつかあります。

[76] BCP 47 言語タグ異体部分タグが参照される形で説明されているものもあります。 >>60

[81] ISO 15924 用字系符号の対応が示されているものもいくつかあります。

[82] 説明として UTC 文書が示されているものがあります。

[83] 他の言語系タグへの参照が示されているものがいくつかあります。 (見よとあるだけでどういう関係性なのかは書かれていません。)

言語系の選択

[69] text content の言語を宣言する情報が応用に利用可能なときは、 応用は当該 text の表示時に適用する default language system tag の選択にその情報を使うことができます (may) >>60

[70] しかし応用によっては利用する言語系タグの選択権を利用者に与えることを好むかもしれません (could be preferable) 応用使い方 (scenario) 次第で、 選択権を内容の著者に与えることにしても、 内容の読者に与えても、両方に与えても構いません (may) >>60

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

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

既定言語系

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

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

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

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

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

注意を要するもの

[71] 言語系タグ大文字3文字と SPACE か、大文字4文字のものだけが登録される convention となっています。 >>60

[78] 実際には数字も使われています。

[72] dfltDFLT恒久的に予約 (permanently reserved) されています。 OpenType フォント言語系記録 (LangSysRecord) で言語系タグ dflt, DFLT を含むべきではありません (should never) >>60 (Note)

[73] フォント開発工具によっては dfltDFLT既定言語系を表すために使うことがあります (may) 。 これはそのような工具の固有の慣習に過ぎず、 OpenType フォントとしては専用ので表され、 言語系タグとしては使いません。 工具はそのように適切に変換を行う責任があります。 >>60

[79] Divehi (Dhivehi, Maldivian) と説明されている DHV には (deprecated) とも書かれています。 >>60


[75] 追加については OpenTypeタグを参照。

文脈

[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