CiPT 3.7.0

cipt_icon

CiPT 3.7.0 を公開しました!
ダウンロードは CiPT Web サイトでどうぞ。

  • OS X 10.10(Yosemite)でクラッシュする場合があったのを修正。thanks! 深沢さん
  • 結合文字の有無を「\p{M}」で検出するようにした。
  • 環境設定:結合文字列の合成と警告の設定がデフォルトでOFFだったのをONにした。
  • その他ちょこちょこ。
  • そして専用サイトで公開!

ひさしぶりにCiPTをアップデートしましたよ。Yosemite対応で取りかかったんですけど、いろいろほったらかしで懸案だったところも修正。さらにずっと使ってくださっている方が思いのほか多いようで、ありがたいな~と専用サイトにしちゃいました。アイコンも変えたかったんですけど、変えるほどの変更はしていないのでそのまま。たぶんずっとこのまま(笑

Glee 1.8.1

Glee_icon
Glee 1.8.1 を公開しました!
ダウンロードは Glee Web サイトでどうぞ。

  • バージョンを取得できない場合があったのを修正。thanks! あかつきさん

今回の修正。inddファイルの先頭あたりには16進ダンプすると表れるバージョン情報があります。Gleeはこれまで、それが特定の位置にあることを前提にしていました。ところが、その出現位置がズレているinddが稀にあって、ちゃんと取得できない場合があったんですね。それでもドキュメントヒストリーで取得できればそっちを表示していたので、私もずっと気がつかなかったんです。そして、v1.8.0の改訂で16進ダンプ情報を最優先に処理するようにしたら、問題が顕在化し、あかつきさんから報告をいただいたという次第。今回から16進ダンプ情報が多少ズレていても取得できるようにしたので大丈夫ですよ。

Unicode正規化 用語の混乱について 第4.2版


初版 2010/4/5
第2版 2013/5/10 誤解を修正。全面的に書き直し。
第3版 2014/7/13 なるべく分かりやすく全面的に書き直し。
第4版 2015/5/20 さらに分かりやすく全面的に書き直し。
第4.1版 2015/5/27 まだ分かりにくいと不評なので書き直し。
第4.2版 2015/5/27 さらに分かりやすく調整。


Unicode正規化の考え方自体はとてもシンプルです。でも、よく知ろうとしていろいろ調べると、用語がハイコンテキストすぎて、混乱してワケがわからなくなります。日本で一般的に見られる用語を図にしてみましょう。
Confusion_J_A
混乱するのはどこだと思いますか?
Confusion_J_B
“合成済み文字” と “合成文字” の2か所です。どちらも言葉として同じ意味です。それなのに、異なった状態を表す用語として無理矢理に使い分けようとしています。ここから、以下のような奇妙な文章ができあがります。

  • 合成された文字を分解すると合成された文字になる。
  • 合成された文字を合成すると合成された文字になる。

ハイコンテキストというより、人に伝える言葉としておかしい。これで混乱するなというのは無理です。実は、権威筋の方々ほど、この混乱する用語の使い方をする傾向があるのです。

提案

この混乱を防ぐにはどうしたらいいのでしょうか。なんと、用語をたった1つ変えるだけで解決します。
NotConfusion_J
右側の “合成文字” を “結合文字列” にします。そうすると、右側の状態は “結合” となり、左右が異なった状態であることを用語ではっきり区別できるようになります。

この提案にはちゃんと裏付けがあります。

詳細

そもそも、冒頭の混乱はどうして起こったのでしょうか。答えを先に言うと、UnicodeとUCSの2つの規格で使われている用語を無理矢理に混在させているのが原因です。

UnicodeとUCS

UnicodeとUCSの関係を簡単に説明しておきます。Unicodeは私企業の団体が決めた標準規格、一方のUCS(ISO/IEC 10646)は公的な国際標準規格です。大人の事情でUCSはUnicodeをそのまま呑み込むことになり、文字コードの規格として両者はまったく同じものです。でも、両者の規格書の「解説文」は、それぞれが作成しているので同じではありません。とくに用語の相違が著しい。

用語の相違

まずUCSの用語から見てみましょう。
2014-09-01版PDFから採取。日本語訳はJIS X 0221から採取。
UCS
驚いたことに、UCSには左側の状態 “1つの文字コードで1文字” を表す用語が存在しません。あるのは “分解” だけで、その分解された結果を “Composite Sequence(合成列)” としています。

右側の “合成列” のアイデアは、UCSが発祥です。権威筋の方々がこれを “合成” と呼ぶのはそこに由来するようです。ちなみに、これを “合成文字” と呼ぶのはUCSの規格書でも使われていないスラングです。

Unicode正規化は、左右の状態を対として扱っています。しかし、UCSの用語にあるのは右側だけ。つまり、USCの用語では、どうやってもUnicode正規化を記述できないのです。そのため、規格書の『21 Normalization forms』では「Normalization forms … are specified in the Unicode Standard UAX#15」とUnicodeへ丸投げし、自ら解説することを放棄しています。

それでは、Unicodeの用語はどうでしょうか。
UAX#15のrev.41から採取。日本語訳は英日用語集から採取(ただし「結合文字の並び」は採用せず「結合文字列」を採用。理由は記事下のコメントで説明)。
UnicodeStandard
左右の状態を対として扱い、用語でも状態を区別できるようにしっかりと配慮されています。

冒頭の用語の混乱は、UCSの用語で表せないところをUnicodeの用語で補っているのが原因です。混乱して当たり前ですよね。

この混乱を防ぐには、以下の3点が必要です。

  • Unicodeの用語体系を採用し、さらにその体系を前提にしていることを自明とする
  • UCSの用語体系を使うときは「UCSの合成」と明示する
  • 「合成文字」という用語を使わない

上記の提案で「用語をたった1つ変えるだけで解決する」としたのは、Unicodeの用語体系を採用することなのです。

OSX10.9以降のHannotateとHanziPenは中国語フォント

OSX10.9(Mavericks)からシステム付属のフォントに、

  • Hannotate SC
  • Hannotate TC
  • HanziPen SC
  • HanziPen TC

上記フォントが追加されていますけど、これは日本語フォントではありません。中国語フォントです。SCは簡体字(Simplified Chinese)、TCは繁体字(Traditional Chinese)です。

Adobe CS6を使っていると、フォントメニューの日本語フォントのエリアにあるので、日本語フォントだと思い込んでしまいます。
CS6_fontmenu
でも、CC以降のフォントメニューではちゃんと中国語フォントのエリアにあります。しかも、Illustratorでは中国語のローカライズ名で表示されるので、うっかり日本語フォントと間違えることはありません。
hannotate_hanzipen
日本語フォントだと思ってしまう原因は他にも「仮名がある」ことですよね。先日教えてもらったのですけど、中国の文字コード(GB)はそもそも日本のJISコードを手本に作られたので、日本語の仮名が入っているんですって。だから中国語フォントには仮名がある。びっくり。

中国語なので漢字も日本語とは違います。とくに「直」なんかは全然違いますよね。さらに、縦組にすると日本語の文字は縦組用のグリフがないので、ヘンなことになります。
hanzipenSC_vert
ここだけの話、日本語だけの書籍のフォーマットでこのフォントを指定したものが本当にあったんですよ。くれぐれも仕事では使わないようにしましょうね!

注:日本語版は販売されています。 PDF