[ubuntu-jp:1142] Re: 8.10にアップグレードで用紙設定文字化け

Naruhiko Ogasawara naruoga @ gmail.com
2008年 11月 2日 (日) 10:47:10 GMT


小笠原@某プリンタベンダ勤務です。


といっても弊社はいまのところ Linux のドライバを作って出してはいないの 
で、現在せこせこと勉強している最中です。
ので、もしかしたら間違った記述があるかもしれませんのでツッコミは歓迎します。


Shunta Susuki さんは書きました:
> 8.04から8.10にアップデートしたところ、印刷時にプリンタのプロパティ開いて
> 用紙設定を見ると、A4以降の日本語表記が文字化けしてしまっています。
> mixiで解決策を教えてもらったのですが、
> 
> **引用開始**
> /etc/cups/ppd/*.ppd
> の中身に
> LanguageEncodingがISO Latinで設定されていたので、UTF-8に直してCUPSをRestart
> すれば日本語で表示されるようになりました。
> その上のLanguageはEnglishのまま放置してますが、一応表示は直るようです。
> **引用終了**
 >
> とのこと。
> 試しに8.04を見てみるとISO Latinで設定されています。

実は私も思い違いしていて mixi では間違ったコメントをしてしまいましたが、
Encoding を "UTF-8" にするというのは「ラッキーで動いた」可能性が高いです。


まず前提ですが、Linux には Windows のようなプリンタ標準 UI がいまのとこ 
ろ存在しません。
したがって、system-config-printer にせよ各アプリケーションにせよ、CUPS 
の API を叩いて PPD の表示文字列をもらってきて、それを各自で表示している 
わけです。

# 昔はこれすらなくて、アプリごとに PPD 読み込みの UI があったり
# しましたけど、そういう昔のことは小生よく知りません (^^;)。


それで、Adobe による PPD の定義では LanguageEncoding は、http: 
//www.google.co.jp/url?sa=t&source=web&ct=res&cd=1&url=http%3A%2F%2Fwww.adobe.com%2Fdevnet%2Fpostscript%2Fpdfs%2F5003.PPD_Spec_v4.3.pdf&ei=NnYNSfWkL6WsswLszPnSBg&usg=AFQjCNElUuSHrZW7F_qDw-EcvRm6h_xLOQ&sig2=7z3Mtv1UNDJXwme5mZzpkA 
  を参照すると:

• ISOLatin1—Uses the ISOLatin1 encoding
• ISOLatin2—Uses the ISOLatin2 encoding
• ISOLatin5—Uses the ISOLatin5 encoding
• JIS83-RKSJ—Uses the RKSJ (informally known as “Shift JIS”) encoding
and the JIS X0208-1983 character set
• MacStandard—Uses Macintosh® standard encoding
• WindowsANSI—Uses Windows® ANSI encoding, as defined by Microsoft®
for use in the Windows operating system
• None—The encoding is not specified.

しかサポートされておらず、UTF-8 というエンコーディングは存在しません。

一方で、CUPS 1.2 から Mulitilingual PPD という仕組みが用意されていて、こ 
れは一個の PPD で Locale を切り替えると表示言語が変わるという仕組みなの 
ですが、

http://www.cups.org/documentation.php/doc-1.4/spec-ppd.html

を見るとわかるように、この場合は:

LanguageVersion: English
LanguageEncoding: ISOLatin1

とし、それとは無関係に、エンコーディングを UTF-8 にするのが正しいです。

がしかし、OOo や GIMP や system-config-printer を含め、Multilingual PPD 
をサポートしているアプリがほとんどないので、残念ながら日本語の場合は従来 
どおり JIS83-RKSJ にして SJIS で出さざるを得ないというのがドライバ作成側 
の現状になっています。

# ただ、8.10 では某 Printing の標準化団体のマネージャが
# system-config-printer を大幅に書き換えたために、そこらへんの現状は
# 変わっているかもしれません。


前置きが長くなりましたが、要は:

・本来なら日本語 Monolingual な PPD を、upgrade のときに誰かが (余計な気 
を効かせて) Mulitilingual 化しようとした
・けど中途半端なので、PPD の LanguageEncoding だけ ISO Latin1 に代わり、 
実際の中身は手つかず (= SJIS) のまま

[可能性1]
・アプリは ja な文字列を CUPS に要求する
・CUPS は Multilingual PPD だと思って ja な文字列を返そうとするのだけ 
ど、そんなものはない
・ので、元々の文字列を英語だと思って UTF-8 で返す
[可能性2]
・アプリは無指定で文字列を CUPS に要求する
・CUPS は元々の文字列を英語だと思って UTF-8 で返す

・アプリはそれを表示しようとして文字化け


てなシナリオではないかと想像します。
んで、LanguageEncoding だけ "UTF-8" にすると、「そんなん知らないよ」と 
いって特にエンコーディングをいじらないでうまくいくと。


さしつかえなければ、どちらから入手されたどのドライバであるかをお教えいた 
だければ、もうちょっと深堀りした調査ができるかと思いますが、お願いできま 
すでしょうか?
さらに問題が起きた /etc/cups/ppd/*.ppd をもらえたりするとさらに嬉しいです。

また、どのアプリで UI を見たかも教えていただけると幸いです。
先ほどのように、CUPS とのインタフェース、UI の作りとも、アプリによってま 
ちまちというのが現状なので。

どこが原因かを突き止めたら、適切な upstream に連絡したいと思います。


> 追記:ちなみに私の環境だけかもしれませんが、VLゴシックに設定してOOoの
> ワープロで印刷すると『ッ』だけがなぜか印刷されません。

私の環境でも後で試してみます。
3.0 でも NG なら OOo のコミュニティに報告したほうがいいかもですね。

-- 
Naruhiko (Naru) Ogasawara
naruoga at gmail.com
mixi: http://mixi.jp/show_friend.pl?id=609294
Twitter: https://twitter.com/naruoga
Wassr: http://wassr.jp/user/naruoga



ubuntu-jp メーリングリストの案内