40
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Fusic Advent Calendar 2017

Day 16

「それ本当に外字ですか?」と聞くための準備

Last updated at Posted at 2017-12-16

普段はインフラとかをやっているはずなんです。

外字とは

ユーザーまたはメーカーが独自に作成して登録した文字。
ユーザー定義文字とも呼ぶ。
JISコード表に含まれていない、異字体や記号などを利用したい場合に作成する。
Windows 98などでは、付属する外字エディターで外字を作成し、登録できる。

ざっくり言うと、「文字コードで表現できないので、独自に拡張した文字」のこと。

いつ使うのよ

多くは人名・地名でのマイナー漢字。
あと「㌢㍍」よろしく独自記号を使いたいなんて場合にも使われるけど、これは今回の話の対象外です。

人名における外字の具体例

マイナー漢字

漢字はJISの規格で第1~第4水準に分類されます。
このうち第3水準、第4水準の漢字はShift_JISの文字コードで定義されていないものが多い。
そういった漢字を使用する際に、外字として登録しているケース。
※ 実際に遭遇した例としては、「㐂」とか「昱」とか。
※ 「第2水準だけど、その文字が見つからないから外字で登録した」ってケースも割とあります。

あと別の例として、中国語でのみ使われる漢字なんてのも。

異体字

有名なのは「高」に対する「髙(はしごだか)」みたいな。
これはかなり種類が多く、例えば「辺」の異体字だと

と収拾つかないくらい存在するわけで。
で、表示できない異体字を外字として登録しているケース。

外字を運用する上での問題点

要は「ユーザ独自で定義するもの」なので、各々ばらばらに登録・管理していると

  • 同じ文字コードなのに違う文字が出る
  • 特定のPCでしか文字が表示されない

といった問題が発生します。
これを解消するべく、外字を管理・配布するサーバもあったりするくらい。

それ本当に外字でないといけないの?

ようやく本題。

このうち第3水準、第4水準の漢字はShift_JISの文字コードで定義されていないケースが多く、それらを使用する際に外字を登録していました。

と書いたんですが、システムで使用する文字コードがUTF-8の場合、「外字で取り扱わなければいけない漢字」はほとんど存在しません。

マイナー漢字(第3・第4水準漢字)

Unicodeにおいては、全て定義済みです。
中国語の漢字についても同様に定義されているので、使用可能です。

異体字

これもUnicodeにおいては定義されているものの、少し定義の仕方が違います。
通常の文字を表すコードに加え、IVSというセレクタの値を用いて異体字を区別しています。
具体的な例は

あたりを読むと分かりやすいかと。

例外

現(2017年12月)時点ではまだ、文字コードが割り当てられてない文字が存在します。

とは言えこれらも含め、2017年度末(2018年3月末)で全文字の符号化が完了する予定となっています。

( http://mojikiban.ipa.go.jp/1309.html 「符号化状況」より引用 )

2018年度中には、対応フォントで取り扱えるようになるのではないでしょうか。

入力の仕方

普通に変換できるケースもありますが、そうではない場合や読みが分からない場合。

1. 探す

http://mojikiban.ipa.go.jp/search/
で探す。
※ 画数は「10-12」のような範囲指定が可能なので、多少探しやすいかと。

2. 見つけたらコピー

例えば「萩」の異体字を探していた場合

ちゃんと「コピペフィールド」が用意されているので、コピー

3. ペースト

以下PowerPointでペーストした例。

2017-12-11_17h01_13.png

フォントがIVSに対応していない場合、文字コード部のみで判定される。

エディタによっては

2017-12-11_17h03_21.png

てな感じで、後ろに変な記号が入ったりする。この部分がIVS。

ブラウザにも同様にペーストできるんですが。
入力フォーム部分、表示部分ともIVS対応フォントで表示するようCSSで指定しておかないと、ちゃんと入力されているか非常に判断しづらい。
※ 見た目には普通の「萩」が入力されているようにしか見えない。

IVSに対応したフォント

上記例のIPAmj明朝がおそらくもっとも有名かと。
他のフォントを使用したい場合は
https://citpc.jp/product_font.html
あたりで探していただくのがよいかと思われます。

それでも困るケース

というわけで、UTF-8で統一されている環境だったら困らない状況は割と整っています。
しかしそれでも困るケースはあるわけで

  • 深遠な理由でShift_JISで出力しなきゃいけない
    • もっともこの場合は第3水準・第4水準もわりかしアウト
  • 対応したフォントを使えない
  • IPAも把握していない謎の文字を使っている

なんてケースはカバーしようがないです。

BOM使えば解決するケースもあるにはある

ただし、WindowsとExcel、およびCSVの話であれば回避できるケースがあります。
ExcelでCSVファイルをそのまま(それこそダブルクリックとかで)開いて使用する場合、

  • Shift_JISのCSVファイル: 文字化けしない
  • UTF-8のCSVファイル: 文字化けする

という問題にぶち当たるんですが。
BOM(Byte Order Mark)付きのUTF-8であれば、そのままExcelで開いても文字化けしなかったりします。
要件などもろもろクリアになるのであれば、BOM付UTF-8を使うという選択肢もなくはないです。
※ とは言え、BOM付きUTF-8であまりいい思い出がないのも事実ですが。。。

というわけで

「それ本当に外字ですか?」とクライアントに聞ける環境は、わりかし整っているというお話でした。

  • データ移行で正しくマッピングしてあげなきゃいけない
  • そもそも該当する文字を探すのが大変
  • どこかでShift_JISが必須なもんでやっぱり導入できない

なんて話もあったりなかったりしますが、まあそれはそれ。

まとめ

自分の投稿のタグがばらばらすぎて、何屋さんなんだろうと思います。

40
43
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?