« Windows Vista と日本語文字コード問題(3) | メイン | リッチテキストPDF2 D&D ベクタープロレジ大賞にノミネート »

2007年01月07日

Windows Vista と日本語文字コード問題(4)

昨日までのお話を一言で言いますと、JIS X0213:2004にある文字を全て取り扱うためにはUnicode処理の強化が必要。多くのアプリケーションで、いままでのままでは、正しく処理できない漢字が最低303文字、非漢字が25文字あるのではないだろうか、ということになります。

「Microsoft Windows VistaにおけるJIS X 0213:2004 (JIS2004)対応について」 2006年11月 Version 1.0(Microsoft)によりますと、Windows Vistaは、このために文字入力用のIME、文字列描画用のUniscribeとGDIといった共通のコンポーネントが強化されているそうです。

文字の処理と言っても、文字列の入力・編集・表示・検索・比較など多様です。Windows Vistaでも、IME、Uniscribe、GDIの変更のみではなく、他にもいろいろ変更になっているはずです。また、Windowsの上で動くアプリケーションの場合は、それがWindowsのコンポーネントが提供する機能をどう使っているかによってかなり事情が変わることに注意しなければなりません。結局、ユーザはアプリケーション毎に確認が必要です。

蛇足ですが、LinuxなどのWindows以外の環境で動くアプリケーションは、Windowsが用意した共通機能を享受できません。JIS X0213:2004 をサポートするには、自力で、Windowsが共通機能として提供しているものに相当する機能を強化しなければなりません。

さて、日経BP IT Pro特番ページを見ますと、「文字が化ける」という観点を強調しています。確かに、印刷・PDF化などの観点からは、文字の形がどうなったかは重要です。次にこの問題を検討します。

第二.新しいフォント「メイリオ」の搭載と「MS明朝」、「MSゴシック」のバージョンアップ

1.「メイリオ」について
「メイリオ」は、Window Vistaに標準で搭載される表示用フォントで、他のWindows環境には提供されません。

日経BPの記事では、Windows Vistaで作成した文書を、XPなどのほかのOSで表示したときの文字化け問題を取り上げていますが、そのうち大部分(前述の303+25文字を除くもの)は文字の字形の変更によるものです。

現在のマルチフォントを使う文書作成ではフォントが違えば、文字の字形デザインは違うということが前提だと思います。

Microsoft は「Windowsの次期バージョンWindows Vista(TM)において日本語フォント環境を一新」(2005年7月29日)で、メイリオは「画面上での可読性を大幅に向上させるまったく新しいデザインのフォント(フォント名:メイリオ)」と発表していますし、極論すれば、Windows Vistaで「メイリオ」を指定した文書は、「メイリオ」以外のシステムフォントをもつ環境では、そのまま表字することができないのは、格別の問題にするにあたらないと考えても良いのではないでしょうか。

「メイリオ」を指定した文書を他の環境にもっていって同じ字形で表示したいのなら、フォントを埋め込むしかないでしょう。従って、「Windows Vistaの新文字セットが引き起こすトラブル」でいろいろ述べている「文字化け」議論は雑誌社特有のあおり文書じゃないか?と私は思ってしまうのです。

文字化けだけではなく、「メイリオ」のメトリックスと「MSゴシック」のメトリックスが、同じでないとすると、「メイリオ」を指定した文書を、「メイリオ」のない環境で、表字すると文書のレイアウト自体が変わってしまいます。そういうことからも「メイリオ」は、Windows Vista専用のものであり、他の環境と字形の交換はできないと考える方が妥当と思います。

投稿者 koba : 2007年01月07日 08:00

トラックバック

このエントリーのトラックバックURL:
http://blog.antenna.co.jp/PDFTool/mt-tbng2.cgi/559

このリストは、次のエントリーを参照しています: Windows Vista と日本語文字コード問題(4):

» JIS2004 関連 from かるあ のメモ
1/30日 の codeseek の勉強会で 亀川さん の文字コードのお話を聞いて、気になったので少し調べてみた。 今回検索してみて、検索し始めるときりがない... [続きを読む]

トラックバック時刻: 2007年02月01日 22:14

コメント

MS明朝、MSゴシックは大きな問題だと思います。

フォントファミリー名は同じなのに、かなり多くの文字の字形が違うという、非互換のバージョンアップをしてしまったのですね。

これは、実は明日のブログネタなので、お楽しみに。

投稿者 小林 : 2007年01月08日 16:51

XPで作ったMSゴシックの文書がVista上で「化ける」例もありますよ。「Windows VistaとXP以前とで字体が変わった第一水準漢字116字」などの話ですね。これだとフォントが「同じ(フォントのバージョンは違いますが)」なのに表示が変わることになります。
http://d.hatena.ne.jp/uakira/20060306

投稿者 成瀬 : 2007年01月08日 16:01

前半はその通りですね。後半、「巷の。。」以下については、次のように考えます。

MSゴシックやメイリオ(恐らく、TrueTypeアウトラインのOpenTypeフォントと思います)のような、TrueTypeアウトライン系フォントでは、CIDではなくTrueTypeのグリフID(GID)を使って、グリフを特定します。

このGIDはアドビのCIDのように標準化されていなくて、フォントファイル固有で、フォント間の互換性はまったくありません。

PDFのTrueTypeフォント埋め込みでは、PDFファイル中にはGIDが埋め込まれます。一方、WindowsのGDIでも文字のグリフをGIDで特定し、そのグリフを表示します。

GDIドライバ系のPDF作成ソフトでは、WindowsのGDIからGIDをもらってPDFに埋め込みますので、表示される文字の形と埋め込まれる文字の形は、理論上、同一になるはずです。ならなければバグ?

GDIドライバ系でないPDF作成ソフト、例えばXSL FormatterのPDF生成は、自力で(Windowsとは独立に)フォント・ファイルからGIDを取り出してPDFに埋め込むため、まれに、Windows経由で画面に表示するグリフとPDFに埋め込まれるグリフがずれてしまうことがあります。

この原因は、WindowsのGDIが勝手に別のフォントのグリフを使って表示する場合があるためです。この場合、アプリケーションが表示したつもりのフォントと、Windowsが表示するフォントが違ってしまいます。そこで、PDFに埋め込まれるグリフとWindowsの画面に表示されているグリフがずれてしまうのでしょう。これはWindowsのアーキテクチャ上の問題と思います。

そのような訳で、「巷の。。」以下の問題を調べるには、具体的にどういうフォントを指定したときか?PDF生成をどうやって行ったか?を調べなければならないと思います。

以上は、私の理解している範囲の知識なので間違っている可能性もあります。どうしてもおかしいようなら、社内の技術者に聞いてみれば違う回答になるかもしれません。

直井さんの記事はまだ読んでないのですが、あとで見てみます。

投稿者 小林 : 2007年01月08日 12:05

いえ、その「フォント埋め込み」こそが、実は問題でして…。たとえば、従来のMSゴシックのU+564Cの文字「口へんに曽」をPDFに埋め込む場合、CIDは2747になるのが普通です。これに対し、メイリオのU+564Cの文字「口へんに曾」をPDFに埋め込む場合には、CIDは7721になるべきです。ところが巷のソフトウェアは、U+564Cに対してCID=2747決め打ちになってしまっていて、メイリオに対してもCIDが2747になってしまう場合が大半なんですよ。これは、Adobe-Japan1に完全に違反してるんですが、まだ今のところ、直井さんhttp://d.hatena.ne.jp/NAOI/20061228/ くらいしか、このことに気づいてなくて…。

投稿者 安岡孝一 : 2007年01月07日 22:59

それはその通りかもしれません。

しかし、ソフトウエアを作って販売する立場から見ると、世界の市場は日本国内市場の10倍はあります。そこで、勝負できないソフトハウスはもう生き残れないと思います。

私としては、日本国内市場でしか利用できないシフトJISにはあまり関心ありません。欧米のソフトハウスにとっても同じじゃないでしょうか。

投稿者 小林 : 2007年01月07日 18:40

「Linuxなど…」のくだりですが、一部のアプリケーションではEUCやSJISの符号化方式を使って、JIS X 0213の全文字を扱うことが既に可能になっています (私自身、何年も前からJIS X 0213の文字をLinux上で自由に使っています)。Unicodeに拘らなければ楽なこともありますね。

投稿者 やの : 2007年01月07日 18:03

コメントしてください




保存しますか?