%include "default.mgp" %default 1 bgrad %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page %center, size 7, font "standard", fore "white", vgap 20 コンピュータにおける文字の扱い 沖縄パーソナルUNIX研究会 ずけらん しん / shin@opus.or.jp %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page はじめに コンピュータで文字を扱う際の入門となるお話 文字コードとは 「いわゆる半角カナ」「機種依存文字」問題 文字数問題 Unicode問題 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page コンピュータで文字を扱うには 文字の形そのものをそのまま扱うこともあるが... 「文字」に対してコード(数値)を割り振ってそれを扱う サイズが小さい(8〜32bits) 検索がしやすい いろいろな実装ができる 通信のためには「共通の符号」が必要 情報交換用文字符号 ASCII JIS X 0201 JIS X 0208 JIS X 0212 JIS X 0212 JIS X 0220 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「文字」とは? 英語の場合は比較的簡単 割と少ない文字で記述ができる(数字、英字、いくつかの記号) AはA, BはB 漢字圏は難しいことが多い 漢字は無限集合? 有限にしても桁違いに多い 「同一の文字」の判定根拠は? 他の言語でもそれぞれの問題を抱える 記号の問題を真面目に考えると全ての言語が無限集合? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「文字」とはなんだろう? 似てるけど違う 一とーと−は違う文字(いち、音引き、マイナス) 二とニも違う(漢字、片仮名) 三とミ... 違うけど同じ? 草冠(サと十十) 一点しんにょう、二点しんにょう %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「文字」とはなんだろう? 違うけど同じ? はしご高とくち高 吉野屋の吉は土口 同じ? 木曽・木曾 渡辺・渡邉・渡邊 斉藤・斎藤・齊藤・齋藤 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 包摂(ほうせつ)規準 ある文字と別の文字が同一であるかどうかの判定を行うための規準 JIS X 0208-1990 歴史的事情があるためすっきりしない 文字の追加があると規準がずれる JIS X 0213 全ての文字に符号を振ることはできない なんらかの規準のもとに振るしかない Unicode %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 文字概念と文字符号 概念に対して符号を割り振る 書体、グリフには左右されないはず...なのだが 歴史的事情 Unicode half width kana %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「いわゆる半角カナ」問題 半角カナ問題(1) 文字符号には「半角」という概念がない(はず) 印刷された文字には半角という概念はある 印刷業界: 半角、全角、1/4角、平体... ワープロの普及、PC9801という標準の存在 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「いわゆる半角カナ」問題 半角カナ問題(2) iso-2022-jp 重複符号化 シフトJIS/EUC-JPの自動判別困難 都市伝説 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「いわゆる半角カナ」問題 半角カナ問題(3) 既に「半角カナ」は存在しない Windows98以降のフォント(MS P明朝/ゴシック) 言葉がひとり歩きしている 指摘のためにJIS X 0201カナを半角で表示するフォントを使ったり 悪循環 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「いわゆる半角カナ」問題 素人に指摘をする場合はこれらの事を念頭に置くこと 「半角カナ」という言葉を使わないようにしよう %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「機種依存文字」問題 昔はパソコンもたくさん種類があった 機種により文字の割り当てがバラバラ 同じメーカーでもバラバラ (JIS 78/83、ワープロとパソコン...) 現状は、WindowsとMacOSとその他 機種に依存しているわけではない 機種に依存しなければ読めるわけでもない 正しく指摘しよう %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「文字数が少ないぞ」問題 自分の使いたい字が使えない 自分の姓の文字が使えない はしご高、鴎の異体字など 名前に関しては人名漢字の制限がある 戸籍の問題かも... 地名・古典・外国語(中国語) では、どこまで増やせばいいのか? 増やした場合のコストは? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「文字数が少ないぞ」問題 JIS X 0208 渡辺・渡邉・渡邊 「人名外字1500V2」というフォント http://www.est.co.jp/fe/jinmei/whatsjg.html >異体字のバリエーションもこんなに豊富です! ● 渡辺の「辺」→65種類 ● 斉藤の「斉」→31種類 ● 佐藤の「藤」→14種類 ● 高橋の「橋」→6種類 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「文字数が少ないぞ」問題 本当に使い分けできるの? bit数が増えるコストよりも、使い分けのコストの方が大きい 前知事の名前(大田)も太田と間違えてるケースが多いのに... %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 「文字数が少ないぞ」問題 結局、現実的な範囲で文字を包摂し、有限の範囲を符号化するしかない あえて包摂しないと明言した文字集合もある(東大GT明朝) どんどん文字集合を追加しているOSもある(TRON) トンパ文字・ホツマ文字....(--; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 文字数を増やすことのコスト bit数が増える でも最近のコンピュ−タだとたいしたことはないかも 当面32bitsあれば充分 使い分けのコスト 一とーと−すら使い分けできない人も多い 〓の意味は? 書体を作成するコスト 人件費の塊 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page JIS X 0213 JIS X 0208では文字が足りない JIS X 0212は失敗だったらしい 無かったことにされかけている 結局UNIXベ−スのシステムでしかちゃんと使われていない 最近は、Unicode対応されたOSなら使える(Winodws/MacOS) 包摂規準がちゃんとしていない JIS X 0213 JIS X 0208(シフトJIS)からの移行性を重視 典拠をちゃんと調査(JIS X 0208に遡って) JIS X 0212とは衝突する %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page JIS X 0213 単純に使うだけなら割と簡単 特にUNIXベ−スなら楽 Vine/Linuxは最初からフォントが入ってる Windows固有の○文字とかが読めるので以外に便利? 一部のアプリケ−ションはそのまま使える 全てのフリ−なUNIXの標準に入るはず %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page JIS X 0213 包摂規準が変わっているので、真面目に使うと頭が痛い http://www.watch.impress.co.jp/internet/www/column/ogata/part2_2.htm 海の異体字(ミ母) 渚の異体字(者に点がある/なし) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page JIS X 0213 JIS X 0208から移行する際は要注意 たいていの場合は気にしないでいい 本気で文字を気にする場合は頭が痛い 「青空文庫」が参考になる http://www.aozora.gr.jp/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Unicode問題 理想と現実が解離 使い物にならないわけではないが... つき合わざるを得ない %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Unicode問題 「全ての文字が16bits」なわけではない 既に16bitsから溢れていて、32bitsの文字集合になっている 無理矢理16bitsに押し込む手法(サロゲートペア) どこかで見たような手法... 複数文字の組み合わせがある プログラマーに取っては全然楽になっていない 能天気なプログラマーは楽になったかも %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Unicode問題 CJKV統合 骨とか 表示する際は「その国に合わせた」フォントが必要 台湾製品の日本語マニュアル 「、」「。」の位置 他国語化するためには、国語の情報が別途必要 iso-2022と比べてどこが良くなったんだろう? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Unicode問題 「変換テーブルがおかしいぞ」問題 \ ¥ 問題 ~ 〜 問題 いろんなテーブルの中身が一致してない unicode.org Microsoft java コード変換の結果が保証されない %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page Unicode問題 そうは言っても... Windows, Macintoshの内部コードはUnicode UNIXでも(外部コードとしての)Unicodeを使わざるを得ない 上手に使い分けるのが必要 妄想を抱いている人がいたら説明してあげよう %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %page 最後に 文字の話は奥が深い 文字の話では立場が違う人がいる 印刷畑の人 コンピュータ畑の人 学者の人 一般人... Webだけでも結構勉強になる