[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:14015] Re: Gnumericでのセル入力フォント指定



ずいぶん昔の話のような気がしますが、まだ10日前の話題だったか…

From: Shun-ichi TAHARA (田原 俊一) <jado@flowernet.gr.jp>
Message-Id: <20020507.010324.846949595.jado@flowernet.gr.jp>

> > # Excelは、もう不要です
> 
> と思ったんですが、『〜』等の特定の文字を含むExcelシートをgnumericで読
> むと化けてしまいます。実に惜しい。
> 
> iconv のバグなのか、Excel が変なコードを吐いているのかはわかりませんが、
> 手が空いたら追いかけてみようかなぁ…

この件追いかけてみました。Plamo とはあまり関係ないですが、まぁプラット
フォーム横断な国際化(というか、Microsoft とのおつきあい)の面倒な一面で
も垣間見えたらと思いまして、こっちに投げちゃいます。

1. Excel(多分97以降) は、.xls 保存時に、セルの中身をUTF-8に変換するが、
   このとき『〜』は、なぜか『全角チルダ』文字に相当するUNICODEに変換さ
   れる。ちなみに、GLibc が持っているマップ的には、

       文字         JIS         GB2312  UCS2    UTF8
   『〜(波線)』   0x2141(x0208)        0x301C 0xE3809E
   『全角チルダ』 0x2237(x0212) 0x212B 0xFF5E 0xEFBD9E

   のようになっている。つまり、Excel で入力した『〜』は、0xE3809E とい
   う UTF8 のコードで格納されるべきなのに、なぜか 0xEFBD9E という別の
   コードで格納されていることになる。

2. Excel のファイルをUNIX側で解釈して、GNU iconv 等でデコードすると、
   簡体字中国語(GB2312)か、補助漢字(JISx0212) でデコードされる。まわり
   が日本語文字だと、補助漢字になることもあるけど、基本的に GB が優先
   みたい。もちろん GB に変換不能の時は JIS になる。
   なお、他の機種依存文字(マル付き数字など)は、GB で多数定義されている
   ので、このへんが入っていても GB でデコードしようとする。

3. Gnumeric では、今のところ LANG=ja のときの内部コードが EUC-JP なの
   で、これに変換される。結果、『〜』は補助漢字のチルダとしてデコード
   される。
   この文字、ロケールマップを見る限りは「全角チルダ」だけど、MSゴシッ
   クとかに定義されているグリフは、どう見ても半角サイズ(もちろん幅的に
   は全角なんだけど)。仮にこれが表示できても、変なんだろうなぁ…
   ちなみに、マル数字などの機種依存文字は、EUC-JP にマップ不能であるた
   め、iconv がエラーを返す結果、『?』に変換される。

4. ここは未確認なんだけど、Gnumeric のセル表示時に、どうもSJISで扱って
   る(Gnumeric が .xls を吐くときにSJISを使うせいだと思う)みたいで、表
   示するときに化けちゃう(上の編集領域(GtkEntry)では大丈夫なんだけど)。
   どっちにしても、.xls で書き出したときに、Excel95形式にされて、全部
   SJISにされてしまうので、ここで完全に破綻。
   註) SJISには JISx0201, JISx0208, JISx0213(3,4水準)しかマップできない

5. xlHtml+w3m+Mew で、Excelの添付ファイルを開くときには、xlHtmlとw3mは、
   utf-8のまま扱って、Emacs(Mule-UCS)が直接 UNICODE をハンドリングして
   表示するが、Mule-UCS は問題の文字を GB のチルダを使って表示しようと
   する。こっちのほうのグリフは、まさに日本語の『〜』と同じに見えるの
   で、違和感なく表示できてる。

背景として、

・Windowsの持っているUNICODEマップが変?
・GNUのマップはどうなんだろう(GBのチルダは、どちらかというと波線だと思
  うんだが…)

という食い違いがありますね。誰か unicode.org が出しているマップを見た
ことのある方はいらっしゃいませんか? (私もうこれ以上根性が続かない…)

とりあえず、やっつけでパッチを当てて、無理矢理『〜』に引き戻すようにし
た(一応 zh_CN 環境下ではチルダのままにするようにしてる)のですが、こん
な行き当たりばったりの修正は、さすがにフィードバックする気にはなりませ
ん。

まあ、おそらく、

・Gnumeric が Excel97形式(UTF-8)で書き出せるようにする
・GTK+-2.x + Pango に移行して、内部的に UNICODE のままハンドリングする

という(当然向かうべき)方向で、この問題は自然に解消するのでしょう。

# というわけで、Plamo用の新GNOMEパッケージでは、『〜』でも化けない
# Gnumericが収録される予定(いいから早く作れ > 自分)。
_______________________________
田原 俊一   jado@flowernet.gr.jp, shunichi_tahara@zenrin.co.jp
                                  http://flowernet.gr.jp/jado/
FingerPrint:  16 9E 70 3B 05 86 5D 08  B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

Follow-Ups
[plamo:14016] Re: Gnumeric でのセル入力フォント指定, Yoshinori Ariie
References
[plamo:13840] Re: Gnumericでのセル入力フォント指定, Shun-ichi TAHARA (田原 俊一)
[plamo:13841] Re: Gnumeric でのセル入力フォント指定, Yoshinori Ariie
[plamo:13842] Re: Gnumericでのセル入力フォント指定, Shun-ichi TAHARA (田原 俊一)

[検索ページ] [メール一覧]
Plamo ML 公開システム