Unicode 1.0/1.1への対応

概要


Unicode 1.0(1.0.1)にあって、1.1以降に無い文字、というものがあります。
2.0までは、削除したり移動したり、非互換の仕様変更が当たり前になされていたからです。
更に、一旦削除された後、2.0ないし3.0以降で復活した文字もある。
つまり同じ符号位置ですが、1.0と3.0以降にあり、1.1/2.0/2.1には無い、というものもあるわけです。


処理系内部には、符号位置の対応バージョン表というものを内部に用意してあります。
その符号位置はどのバージョンから追加されたか、という表です。
しかしこれは最新の状態で記されるため、3.0で復活したなら「3.0」と書いておくしかない。「1.0と3.0以降」なんて気の利いた仕様ではない。
従って、表で足りないところは、各バージョンごとに独自の処理を加えるしかない。



処理方針


Unicode系の内部処理は原則として2.0以降の表となり、Unicode文字番号もそれを踏襲するので、入力された時点で2.0以降相当への変換、出力時は2.0以降相当から1.0/1.1への変換、ということをする事にした。

そこで、1.0←→2.0以降と、1.1→2.0、2.0→1.1の変換表を用意し、足りないところは処理で補うこととした。

但し、「1.0にしかない字」もあるので、該当文字は、専用の内部バンクで符号位置を保持することとし、1.0→1.0のような変換でも文字が失われないようにした。



1.0だけの文字


1.0の「NON-SPACING」(文字送りをしない)と、1.1以降現在までの「COMBINING」(結合)が同一の文字だとしても、1.0にしかない文字は幾つかある。

大抵の文字は後で復活しているのだけど、確認した範囲では、次の文字は1.0にしかない。
番号はUnicode 1.0での番号、文字名はUnicode 1.0での名前

U+0371 GREEK NON-SPACING DASIA PNEUMATA
U+0372 GREEK NON-SPACING PSILI PNEUMATA
U+0E70 THAI PHONETIC ORDER VOWEL SIGN SARA E
U+0E71 THAI PHONETIC ORDER VOWEL SIGN SARA AE
U+0E72 THAI PHONETIC ORDER VOWEL SIGN SARA O
U+0E73 THAI PHONETIC ORDER VOWEL SIGN SARA MAI MUAN
U+0E74 THAI PHONETIC ORDER VOWEL SIGN SARA MAI MALAI
U+0EF0 LAO PHONETIC ORDER VOWEL SIGN E
U+0EF1 LAO PHONETIC ORDER VOWEL SIGN EI
U+0EF2 LAO PHONETIC ORDER VOWEL SIGN O
U+0EF3 LAO PHONETIC ORDER VOWEL SIGN AY
U+0EF4 LAO PHONETIC ORDER VOWEL SIGN AI
U+1031 TIBETAN DITTO
U+3004 IDEOGRAPHIC DITTO MARK

U+3004は、1.1以降で出力する場合はU+4EDDへの片方向変換をする。



復活した文字


1.0にあり、1.1で消え、その後復活した文字の対応。
Unicode 1.0とその後とで、次のように関連付けた。

GREEK SMALL LETTERの4字だけは、同じ符号位置で復活している。
文字名はUnicode 1.0での名前

U+0370→U+0345 GREEK NON-SPACING IOTA BELOW
U+03D7→U+037E GREEK QUESTION MARK
U+03D8→U+0374 GREEK UPPER NUMERAL SIGN
U+03D9→U+0375 GREEK LOWER NUMERAL SIGN
U+03DB→U+03DB GREEK SMALL LETTER STIGMA (※3.0以降)
U+03DD→U+03DD GREEK SMALL LETTER DIGAMMA (※3.0以降)
U+03DF→U+03DF GREEK SMALL LETTER KOPPA (※3.0以降)
U+03E1→U+03E1 GREEK SMALL LETTER SAMPI (※3.0以降)
U+03F3→U+0384 GREEK SPACING TONOS
U+03F4→U+0385 GREEK SPACING DIAERESIS TONOS
U+03F5→U+037A GREEK SPACING IOTA BELOW
U+05F5→U+FB1E HEBREW POINT VARIKA
U+1000→U+0F40 TIBETAN LETTER KA
U+1001→U+0F41 TIBETAN LETTER KHA
U+1002→U+0F42 TIBETAN LETTER GA
U+1003→U+0F44 TIBETAN LETTER NGA
U+1004→U+0F45 TIBETAN LETTER CA
U+1005→U+0F46 TIBETAN LETTER CHA
U+1006→U+0F47 TIBETAN LETTER JA
U+1007→U+0F49 TIBETAN LETTER NYA
U+1008→U+0F4A TIBETAN LETTER REVERSED TA
U+1009→U+0F4B TIBETAN LETTER REVERSED THA
U+100A→U+0F4C TIBETAN LETTER REVERSED DA
U+100B→U+0F4E TIBETAN LETTER REVERSED NA
U+100C→U+0F4F TIBETAN LETTER TA
U+100D→U+0F50 TIBETAN LETTER THA
U+100E→U+0F51 TIBETAN LETTER DA
U+100F→U+0F53 TIBETAN LETTER NA
U+1010→U+0F54 TIBETAN LETTER PA
U+1011→U+0F55 TIBETAN LETTER PHA
U+1012→U+0F56 TIBETAN LETTER BA
U+1013→U+0F58 TIBETAN LETTER MA
U+1014→U+0F59 TIBETAN LETTER TSA
U+1015→U+0F5A TIBETAN LETTER TSHA
U+1016→U+0F5B TIBETAN LETTER DZA
U+1017→U+0F5D TIBETAN LETTER WA
U+1018→U+0F5E TIBETAN LETTER ZHA
U+1019→U+0F5F TIBETAN LETTER ZA
U+101A→U+0F60 TIBETAN LETTER AA
U+101B→U+0F61 TIBETAN LETTER YA
U+101C→U+0F62 TIBETAN LETTER RA
U+101D→U+0F63 TIBETAN LETTER LA
U+101E→U+0F64 TIBETAN LETTER SHA
U+101F→U+0F65 TIBETAN LETTER REVERSED SHA
U+1020→U+0F66 TIBETAN LETTER SA
U+1021→U+0F67 TIBETAN LETTER HA
U+1022→U+0F68 TIBETAN LETTER A
U+1026→U+0F72 TIBETAN VOWEL SIGN I
U+1027→U+0F80 TIBETAN VOWEL SIGN SHORT I
U+1028→U+0F74 TIBETAN VOWEL SIGN U
U+1029→U+0F7A TIBETAN VOWEL SIGN E
U+102A→U+0F7C TIBETAN VOWEL SIGN O
U+102B→U+0F85 TIBETAN CHUCHENYIGE
U+102C→U+0F7F TIBETAN VISARGA
U+102E→U+0F7E TIBETAN ANUSVARA
U+102F→U+0F3D TIBETAN RIGHT BRACE
U+1030→U+0F37 TIBETAN UNDER RING
U+1033→U+0F04 TIBETAN SINGLE ORNAMENT
U+1034→U+0F0D TIBETAN SHAD
U+1035→U+0F0B TIBETAN TSEG
U+1036→U+0F83 TIBETAN CANDRABINDU
U+1037→U+0F82 TIBETAN CANDRABINDU WITH ORNAMENT
U+1038→U+0F14 TIBETAN COMMA
U+1039→U+0F11 TIBETAN RINCHANPHUNGSHAD
U+103A→U+0F08 TIBETAN RGYANSHAD
U+103B→U+0F35 TIBETAN HONORIFIC UNDER RING
U+103C→U+0F3C TIBETAN LEFT BRACE
U+103D→U+0F7B TIBETAN VOWEL SIGN AI
U+103E→U+0F7D TIBETAN VOWEL SIGN AU
U+1040→U+0F20 TIBETAN DIGIT ZERO
U+1041→U+0F21 TIBETAN DIGIT ONE
U+1042→U+0F22 TIBETAN DIGIT TWO
U+1043→U+0F23 TIBETAN DIGIT THREE
U+1044→U+0F24 TIBETAN DIGIT FOUR
U+1045→U+0F25 TIBETAN DIGIT FIVE
U+1046→U+0F26 TIBETAN DIGIT SIX
U+1047→U+0F27 TIBETAN DIGIT SEVEN
U+1048→U+0F28 TIBETAN DIGIT EIGHT
U+1049→U+0F29 TIBETAN DIGIT NINE
U+104A→U+0F0E TIBETAN DOUBLE SHAD
U+104B→U+0F84 TIBETAN VIRAMA
U+104C→U+0F39 TIBETAN LENITION MARK
U+32FF→U+3004 JAPANESE INDUSTRIAL STANDARD SYMBOL


各文字の対応については、可能な限り適切になるよう配慮しましたが、もし問題等あれば報告願います。

2009/01/11(日)12:56 |Comments(2) |Trackback(0)

文字 | プログラミング | コンピュータ | [編集]

▲ページトップ

コメント

U+0371と U+0372は、それぞれU+0314とU+0313にUnifyされたとのことなので、1.1以降で出力する場合は片方向変換にするのがよろしいかと。
http://unicode.org/Public/TEXT/OLDAPIX/CHANGES.TXT
2009/01/11(日)16:33 |えむけい | URL |編集
▲ページトップ

情報ありがとうございます。

片方向変換するよう、処理を変更してみました。
2009/01/11(日)17:52 |miraicorp | URL |編集
▲ページトップ

コメントの投稿

Microsoft Windows Codepage : 50220 (CP50220) ホーム 日本語
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR