[6] ISO 15924 は、世界各地で用いられる用字系に対して符号を与えるものです。
[22] 各用字系にラテン文字4文字の符号が割り当てられています (一覧: >>251)。
[23] 通常、1文字目は大文字、2文字目以降は小文字で表記されます。
[27] 用字系符号を採用した各種プロトコルで大文字と小文字をどう扱うかは、 それぞれです。
[24] ISO (と RA) が定める標準の符号の他に、 私用が認められる符号群があります。
[235] >>123 には私用の Qaaa
.. Qabx
も含まれます。
RFC 4646 2.2.3., RFC 5646 2.2.3.
[241] Unicode言語識別子・Unicodeロケール識別子では Qaaq
-Qabx
は将来も意味を割り当てないので私用として使って良いとしています >>233。
それ以外の >>235 の用字系部分タグは特別な意味に使う意図があるようで、
>>236、>>239、>>240 の3つが定義されている他、残りも将来の拡張で使用できるように予約しているようです (明記されていませんが)。
Qaai
[236] Unicode言語識別子・Unicodeロケール識別子では Qaai
に「継承」という意味を割り当てています >>233。
Qaac
[255]
Unicode用字系特性値の別名として用字系符号に相当するものを定める
PropertyValueAliases.txt によれば、
Qaac
は Coptic
/ Copt
と同義とされています。
[13] 絵文字に Qaae
が用いられたことがありますが、
現在は Zsye
が好ましいと考えられています >>1。
[14] Klingon に Qaak
が用いられたことがあります >>1, >>2 が、
現在は Piqd
が好ましいと考えられています。
Zinh
[5]
Zinh
は「inherited script」を表すとされています。
[7] ただし IANA登録簿では、 言語タグでの利用は想定していないとされています。
[8]
Unicode言語識別子・Unicodeロケール識別子には他に Qaai
がありますが、より新しい Zinh
がより好ましいとされています >>233。
[9]
UCD では Inherited
と同義とされています。
inherit
という値がありますが、言語タグ全体の "inherit" を表していて、
用字系だけが対象の Zinh
とは少し違います。
>>17 も参照。[44]
ScriptLangTag
では使うべきではありません
>>43。
Zxxx
[12]
Zxxx
は unwritten document
を表すとされています。
[46]
ScriptLangTag
では使うべきではありません
>>43。
Zyyy
[239] Unicode言語識別子・Unicodeロケール識別子では Zyyy
に「共通」という意味を割り当てています >>233。
[45]
ScriptLangTag
では使うべきではありません
>>43。
Zzzz
[240] Unicode言語識別子・Unicodeロケール識別子では Zzzz
に「不明」という意味を割り当てています >>233。
[250] kr
(>>246) においては Zzzz
は others
と同義とされており、明示されていない符号すべてを表す >>247 ことになっています。
[47]
ScriptLangTag
では使うべきではありません
>>43。
[10] Zmth
は Mathmatical notation
を表すとされています。
[11] Zsye
は記号 (絵文字版) を、
Zsym
は記号を表すとされています。
[48] Kana が仮名じゃなくて片仮名だけしかない罠にまたハマってしまった。 わかっているのについやってしまう、ほんと誰がこんなクソ仕様にしたんだよ
[31] 0埋めありでASCII数字3桁で表される数値符号があります。
[33] 利用されているのかは不明です。
[251] ISO 15924 の用字系符号の一覧は >>244 にあり、 HTML および平文形式で公開されています。 Unicode用字系特性値との対応関係も記述されています (>>249)。
[252] BCP 47 の登録簿にも用字系部分タグの一覧が含まれています。 BCP 47 の項を参照してください。
[254] >>253 にも用字系部分タグや kr
の値とその実装に必要な情報が JSON として含まれています。
[37] >>34 符号の一覧および >>36 その名称の各言語翻訳テキストデータ。
[40] >>39 符号の一覧、 Unicode用字系特性値との対応関係入り。
[245] ラテン文字4文字の用字系符号は、次のように使われています。
[17] XSL-FO の 'script'
特性では値に
<ISO Script Code> / 'auto' / 'none' / 'inherit'
を採用しています。
仕様書: Formatting Properties http://www.w3.org/TR/xsl/slice7.html#script
[18]
Pronunciation Lexicon Specification (PLS) Version 1.0
http://www.w3.org/TR/pronunciation-lexicon/#S4.5
では orthography
属性に
ISO 15924 の名前を採用しています。
[21] 同仕様 (や関連仕様) の alphabet
属性では ipa
など表音字母の種類を指定しますが、
それもここでいう用字系札
の範疇のような気もしますしむしろ言語札の特殊なもののような気もしますが自然言語は別レイヤで更に存在していますし(謎)。
結局言語と文字(の種類)と文字の使い方(の体系)は切っても切り離せないのに多対多対応なのが悪いのだ(謎)。
[120] IETF言語タグにおける用字系部分タグは、 言語を書き表す時に使う用字系や書字体系を表します。 ISO 15924 のラテン文字4文字による用字系符号がそのまま利用されています。
[234] Unicode言語識別子・Unicodeロケール識別子では Unicode 用字系符号
または unicode_script_subtag
と呼ばれています >>233。
[230] 用字系部分タグはその言語タグによって表される言語で主として使う用字系を表しているだけであって、 その言語タグが付された対象がその用字系だけによって構成されるとは限りません。 RFC 5646 4.2.
[122] 用字系部分タグとして用いられる4文字のラテン文字である用字系は、 ISO 15924 で定義、またはそれに従い登録されたものを、更に IANA に登録したものです。 RFC 4646 2.2.3., RFC 5646 2.2.3.
[121] IETF言語タグでは、 用字系は言語や拡張言語の後で、他の部分タグの前に高々1つだけ置かなければなりません RFC 4646 2.2.3., RFC 5646 2.2.3.。
[124]
IETF言語タグに用字系部分タグを含めても他と区別する上で意味が無い時、
言語部分タグや拡張言語部分タグの登録に
Suppress-Script
が含まれている時には、
用字系は省略するべきです。
RFC 4646 2.2.3., RFC 5646 2.2.3.
[41]
ScriptLangTag
では用字系部分タグは必須で、ちょうど1個だけ書けます。
言語部分タグの次に書きますが、
言語部分タグが省略された場合は先頭に来ます。
[50] 後方互換性を崩してまで言語部分タグと地域部分タグの間に用字系部分タグを挟み込むことに関しては激論がありましたが、 地域よりも用字系の方が言語に密接しているという主張が通りました。 >>49
[51] この「地域よりも用字系の方が言語に近い」というのは本当に処理を複雑にして後方互換性を犠牲にしてまで守るべき価値がある真理だったのかは中々に怪しいもので、 例えば中文言語タグの現在に至る混乱はこれに起因するところが大きいといえます。 中華人民共和国と中華民国の事案の他にも、 大韓民国と朝鮮民主主義人民共和国の朝鮮語の事案や、 蒙古国と中華人民共和国の蒙古語の事案、 旧ソ連諸語のキリル文字とラテン文字の事案など、 国家というものの用字系に対する影響力は絶大で、 順序を逆にしていた方が簡単に扱えたケースが多そうにも思われます。
[52] Xユーザーのざぎん 𒎎𒍝𒆳さん: 「@draftcode @osa_k 中国語の方は事実上 zh-CN と zh-TW / zh-HK で代替できることが多いものの、例えばセルビア語はラテン文字表記とキリル文字表記の両方が一般に使われている(sr-SR-Latn と sr-SR-Cyrl)があるので script 必須ですしね」 / X, , https://twitter.com/na4zagin3/status/1381100709924405250
[200] IANA 登録簿には Suppress-Prefix (用字系抑制) 欄があります。 これは言語と拡張言語の登録にのみ使われ、 当該言語・拡張言語と指定された用字系を組み合わせて使うべきではないことを表します。 RFC 4646 3.1., RFC 5646 3.1.2.。
[201] 使うべきではないというのは不適切な組み合わせというわけではなく、 自明な組み合わせであるので必要がない限り明示しなくても良いということです。 使わないことにより RFC 3066 以前の用字系が無い頃の言語タグとの互換性を維持できます RFC 5646 3.1.9.。
[208] 例えば is
(アイスランド語) は普通 Latn
(ラテン文字) で表記されるので、 is
の用字系抑制には
Latn
が指定されています。従って is-Latn
ではなく、単に is
とするべきです。
[211] しかし他の用字系と併用する場合には、敢えて明示する意味があるかもしれません。
例えばアイスランド語を Brai
(点字) 表記した文書とラテン文字で表記した文書が選択できるなら、それぞれ
is-Brai
と is-Latn
と表すのが良いでしょう。
RFC 4646 4.1., RFC 5646 4.1.
[212] 複数の用字系が使われることがある言語であっても、
用字系を明示せずに省略した方が良いこともあります。例えば音声だけなら、
用字系は意味が無いので省略して uz
のように表すことができます。
あるいは、「書かれていない」ことを表す Zxxx
を使って
uz-Zxxx
のように表すこともできます。
RFC 4646 4.1., RFC 5646 4.1.
[42]
ScriptLangTag
では用字系部分タグは必須で、
IETF言語タグの用字系抑制側の設計とは真逆です。
kr
における用字系符号[242] 用字系は、U拡張の kr
の型の一部としても使うことができます。
[246] 言語タグの拡張Uの kr
では用字系符号以外の文字の種別を表す値も使える他、
利用可能な用字系の値も制限されています >>247。
nu
における用字系符号[256] LDML および言語タグの拡張Uの nu
では数字の種類に識別子を与えていますが、
対応する用字系符号をそのまま用いるのを原則とし、それで表現できないものに対してはそれより長い識別子を与えています。
[248] Unicode用字系特性値も用字系を識別するものですが、 Unicode と ISO 15924 では用字系の粒度が異なっているため、必ずしも一対一対応していません。
[28]
が、対応関係にあるものについては、
ISO 15924
の符号と同じ4文字符号が
Unicode用字系特性値側でも短い別名となっていて、
区別なく使えます。
[249] ISO 15924 の登録簿 (>>244) には、両者の対応関係も「Property Value Alias」として記載されています。
[126] RFC 1766 や RFC 3066 の頃は用字系部分タグはありませんでした。
[19] RFC 1766 は用字系の識別までを含めた例として az-arabic
と
az-cyrillic
を挙げていますが、 RFC 3066
にはそのような用途の例示さえありません。 [639FAQ] (>>3) は用字系の識別には言語符号より
ISO15924 を使うようにと言っているのと関係があるかもしれません
(しないかもしれません)。
[20] しかしなんにせよ用字系の指定も含めた言語札が使えた方が、 (用字系を別途指定出来る規格なんて多分ないので) 良いと思います。
[30] 正書法がどうこうを含んだ奴は用字系込みに近いよな。違うことは違うが。
[148] RFC 3066 までは用字系部分タグはなかったので、
zh-TW
のように言語と地域を直接つなげたものが一般的で、
現在でも広く用いられていますが、 RFC 4646 はなぜか用字系を間に挟む構文としました。
そのため zh-Hant-TW
のような表記がより厳密なものとされ、
実質的な非互換変更となっています。
前方一致などの一般的な比較方法でも zh-TW
と
zh-Hant-TW
は一致しません。