[6] [DFN[[[ISO 15924]]]] は、世界各地で用いられる[[用字系]]に対して[[符号]]を与えるものです。
[120] [[言語タグ]]における[DFN[[RUBYB[[[用字系]]] @en[[CODE(ABNF)[script]]]]]][[部分タグ]]は、
[[言語]]を書き表す時に使う[[用字系]]や[RUBYB[[[書字体系]]]@en[writing system]]を表します。
[[ISO 15924]] のラテン文字4文字による[[用字系符号]]がそのまま利用されています。
;; [231] [[言語タグ]]全体については、「[[言語タグ]]」の項を参照してください。
[234] [[Unicode言語識別子]]・[[Unicodeロケール識別子]]では [DFN[[[Unicode]] [RUBYB[用字系符号]@en[script code]]]]
または [DFN[[CODE[unicode_script_subtag]]]] と呼ばれています [SRC[>>233]]。
* 仕様書
[REFS[
- [123] [[ISO 15924]] [CITE@en[Information and documentation -- Codes for the representation of names of scripts]]
(有料)
- [244] [CITE@en-us[ISO 15924 Registration Authority]] ([TIME[2009-09-26 07:40:01 +09:00]] 版)
- [232] [[BCP 47]]
- [233] [CITE@en-us[UTS #35: Unicode Locale Data Markup Language]] ([TIME[2011-07-19 03:14:51 +09:00]] 版)
- [247] [CITE@en-us[UTS #35: Unicode LDML: Collation]] ([TIME[2013-09-18 19:18:43 +09:00]] 版)
]REFS]
* 用法
[245] [[ラテン文字]]4文字の[[用字系符号]]は、次のように使われています。
[FIG[
- [[言語タグ]]の[[用字系部分タグ]]として (>>230)
- [[言語タグ]]の[[拡張U]]の [CODE(lang)@en[[[kr]]]] の[[型]]の一部として (>>246)
]FIG]
* 用字系部分タグ
** 意味
[230] [[用字系]][[部分タグ]]はその[[言語タグ]]によって表される[[言語]]で主として使う[[用字系]]を表しているだけであって、
その[[言語タグ]]が付された対象がその[[用字系]]だけによって構成されるとは限りません。
[SRC[[[RFC 5646]] 4.2.]]
** 構文
[121] [[用字系]]は[[言語]]や[[拡張言語]]の後で、他の[[部分タグ]]の前に高々1つだけ置かなければ[['''なりません''']]
[SRC[[[RFC 4646]] 2.2.3., [[RFC 5646]] 2.2.3.]]。
[124] [[言語タグ]]に[[用字系]][[部分タグ]]を含めても他と区別する上で意味が無い時、
[[言語]]や[[拡張言語]]の[[部分タグ]]の登録に [[Suppress-Script]] が含まれている時には、
[[用字系]]は省略する[['''べきです''']]。 [SRC[[[RFC 4646]] 2.2.3., [[RFC 5646]] 2.2.3.]]
[242] [[用字系]]は、[[U拡張]]の [CODE(lang)@en[[[kr]]]] の[[型]]の一部としても使うことができます。
* 拡張Uの [CODE(lang)@en[kr]] における用字系符号
[246] [[言語タグ]]の[[拡張U]]の [CODE(lang)@en[[[kr]]]] では[[用字系符号]]以外の[[文字]]の種別を表す値も使える他、
利用可能な[[用字系]]の値も制限されています [SRC[>>247]]。
* 語彙
[122] [[用字系部分タグ]]として用いられる4文字の[[ラテン文字]]である[[用字系]]は、 [[ISO 15924]]
で定義、またはそれに従い登録されたものを、更に [[IANA]] に登録したものです。
[SRC[[[RFC 4646]] 2.2.3., [[RFC 5646]] 2.2.3.]]
;; [125] [[用字系]]として [[ISO 15924]] に含まれていないものは [[IANA]]
に登録することはできません。 [[RFC 4646]] には必要があれば[[異体]]として登録できると記述されていました
[SRC[[[RFC 4646]] 2.2.3.]] が、 [[RFC 5646]] では削除されています。
** 私用
[235] >>123 には[[私用]]の [CODE(lang)[[[Qaaa]]]] .. [CODE(lang)[[[Qabx]]]] も含まれます。
[SRC[[[RFC 4646]] 2.2.3., [[RFC 5646]] 2.2.3.]]
[241] [[Unicode言語識別子]]・[[Unicodeロケール識別子]]では [CODE(lang)[[[Qaaq]]]]-[CODE(lang)[[[Qabx]]]]
は将来も意味を割り当てないので[[私用]]として使って良いとしています [SRC[>>233]]。
それ以外の >>235 の[[用字系]][[部分タグ]]は特別な意味に使う意図があるようで、
>>236、>>239、>>240 の3つが定義されている他、残りも将来の拡張で使用できるように予約しているようです (明記されていませんが)。
*** [CODE(lang)[Qaai]]
[236] [[Unicode言語識別子]]・[[Unicodeロケール識別子]]では [DFN[[CODE(lang)[[[Qaai]]]]]]
に「[RUBYB[継承]@en[inherited]]」という意味を割り当てています [SRC[>>233]]。
[237] ただし、 [CODE(lang)[[[Zinh]]]] を使うのがより好ましいともしています [SRC[>>233]]。
;; [238] [CODE(lang)[[[Zinh]]]] は後から正式に [[ISO 15924]] の[[符号]]として割り当てられたようです。
*** [CODE(lang)[Qaac]]
[255] [[PropertyValueAliases.txt]] によれば [CODE(lang)[[[Qaac]]]] は [CODE(lang)@en[[[Coptic]]]] / [CODE(lang)@en[[[Copt]]]]
と同義とされています。
*** [CODE(lang)[Zyyy]]
[239] [[Unicode言語識別子]]・[[Unicodeロケール識別子]]では [DFN[[CODE(lang)[[[Zyyy]]]]]]
に「[RUBYB[共通]@en[common]]」という意味を割り当てています [SRC[>>233]]。
*** [CODE(lang)[Zzzz]]
[240] [[Unicode言語識別子]]・[[Unicodeロケール識別子]]では [DFN[[CODE(lang)[[[Zzzz]]]]]]
に「[RUBYB[不明]@en[unknown]]」という意味を割り当てています [SRC[>>233]]。
[250] [CODE(lang)@en[[[kr]]]] (>>246) においては [CODE(lang)@en[[[Zzzz]]]] は [CODE(lang)@en[[[others]]]]
と同義とされており、明示されていない[[符号]]すべてを表す [SRC[>>247]] ことになっています。
** 一覧
[251] [[ISO 15924]] の[[用字系符号]]の一覧は >>244 にあり、 [[HTML]] として公開されています。
[[Unicode用字系特性値]]との対応関係も記述されています (>>249)。
[252] [[BCP 47]] の登録簿にも[[用字系部分タグ]]の一覧が含まれています。 [[BCP 47]] の項を参照してください。
[REFS[
- [253] [CITE[manakai/data-web-defs]] ([TIME[2014-03-08 02:20:43 +09:00]] 版)
]REFS]
[254] >>253 にも[[用字系部分タグ]]や [CODE(lang)@en[[[kr]]]] の値とその実装に必要な情報が [[JSON]] として含まれています。
* 用字系抑制
[200] [[IANA]] 登録簿には [[Suppress-Prefix]] (用字系抑制) 欄があります。
これは[[言語]]と[[拡張言語]]の登録にのみ使われ、
当該[[言語]]・[[拡張言語]]と指定された[[用字系]]を組み合わせて使う[['''べきではない''']]ことを表します。
[SRC[[[RFC 4646]] 3.1., [[RFC 5646]] 3.1.2.]]。
[201] 使うべきではないというのは不適切な組み合わせというわけではなく、
自明な組み合わせであるので必要がない限り明示しなくても良いということです。
使わないことにより [[RFC 3066]] 以前の[[用字系]]が無い頃の[[言語タグ]]との互換性を維持できます
[SRC[[[RFC 5646]] 3.1.9.]]。
;; [207] ほんと、なんで[[用字系]]を間に挟んだんでしょうね・・・。
[EG[
[208] 例えば [CODE(lang)[[[is]]]] ([[アイスランド語]]) は普通 [CODE(lang)[[[Latn]]]]
([[ラテン文字]]) で表記されるので、 [CODE(lang)[[[is]]]] の用字系抑制には
[CODE(lang)[[[Latn]]]] が指定されています。従って [CODE(lang)[[[is-Latn]]]]
ではなく、単に [CODE(lang)[[[is]]]] とするべきです。
[211] しかし他の[[用字系]]と併用する場合には、敢えて明示する意味があるかもしれません。
例えば[[アイスランド語]]を [CODE(lang)[[[Brai]]]] ([[点字]]) 表記した[[文書]]と[[ラテン文字]]で表記した[[文書]]が選択できるなら、それぞれ
[CODE(lang)[[[is-Brai]]]] と [CODE(lang)[[[is-Latn]]]] と表すのが良いでしょう。
[SRC[[[RFC 4646]] 4.1., [[RFC 5646]] 4.1.]]
]EG]
[EG[
[212] 複数の[[用字系]]が使われることがある[[言語]]であっても、
[[用字系]]を明示せずに省略した方が良いこともあります。例えば[[音声]]だけなら、
[[用字系]]は意味が無いので省略して [CODE(lang)[[[uz]]]] のように表すことができます。
あるいは、「書かれていない」ことを表す [CODE(lang)[[[Zxxx]]]] を使って
[CODE(lang)[[[uz-Zxxx]]]] のように表すこともできます。
[SRC[[[RFC 4646]] 4.1., [[RFC 5646]] 4.1.]]
]EG]
* 歴史
[126] [[RFC 1766]] や [[RFC 3066]] の頃は[[用字系]][[部分タグ]]はありませんでした。
[19] RFC 1766 は[[用字系]]の識別までを含めた例として [CODE(LANG)[az-arabic]] と
[CODE(LANG)[az-cyrillic]] を挙げていますが、 RFC 3066
にはそのような用途の例示さえありません。 [639FAQ] (>>3) は用字系の識別には言語符号より
[[ISO15924]] を使うようにと言っているのと関係があるかもしれません
(しないかもしれません)。
[20] しかしなんにせよ用字系の指定も含めた言語札が使えた方が、
(用字系を別途指定出来る規格なんて多分ないので) 良いと思います。
[30] [[正書法]]がどうこうを含んだ奴は用字系込みに近いよな。違うことは違うが。
[35] >>19-30 [[用字系札]]を使えるようにしる!
[148] [[RFC 3066]] までは[[用字系]][[部分タグ]]はなかったので、
[CODE(lang)[[[zh-TW]]]] のように[[言語]]と[[地域]]を直接つなげたものが一般的で、
現在でも広く用いられていますが、 [[RFC 4646]] はなぜか[[用字系]]を間に挟む構文としました。
そのため [CODE(lang)[[[zh-Hant-TW]]]] のような表記がより厳密なものとされ、
実質的な非互換変更となっています。
[[前方一致]]などの一般的な比較方法でも [CODE(lang)[[[zh-TW]]]] と
[CODE(lang)[[[zh-Hant-TW]]]] は一致しません。
;; [149] [CODE(lang)[[[zh-TW]]]] は[[台湾]]で使われている[[伝統字]]の[[中文]]を表す[[言語タグ]]として広く使われていますが、
[[RFC 4646]] 以降の定義に従うなら単に[[台湾]]の[[中文]]を表すに過ぎず、
[[伝統字]]であることまで含めた意味でこの[[言語タグ]]を使うことは不正確になります。
意味的な一貫性を考えれば確かにその方が良いのでしょうが、既存の慣習的解釈に対して非互換変更を行う価値があるようには到底思えません。
現に [[RFC 4646]] が出版されてから数年が立ちますが、 [CODE(lang)[[[zh-Hant-TW]]]]
のような表記が普及している、あるいは普及していくようにはまったく思えません。
* 関連
[248] [[Unicode用字系特性値]]も[[用字系]]を識別するものですが、 [[Unicode]] と [[ISO 15924]]
では[[用字系]]の粒度が異なっているため、必ずしも一対一対応していません。
[249] [[ISO 15924]] の登録簿 (>>243) には、両者の対応関係も「[[Property Value Alias]]」として記載されています。