始めの言葉

「プリンターから印刷できて当たり前」と、ユーザーからもSIerからも軽視されがちなプリンターの世界ですが、実際にはお困りだったり、思ったような印刷結果が得られないまま我慢してお使いの皆様のために、今までの経験が役立てばと、このブログを立ち上げました。印刷の基本から、応用情報、問題の解決方法を情報発信すると共に、PDF化など、これからどうするかについても、ご相談に乗れれば幸いです。ご質問はコメントでお寄せください。

2015年4月29日水曜日

文字コードの話 - プリンターの内蔵フォントのJIS対応

急に【余談】になりますが、プリンターの内蔵フォントのセットは、何故JIS規格の変更に追いついていけなくなったかという話です。

IBM系の日本語インパクト・プリンターは、縦24ドット、横24ドットのマトリックスで構成されています。つまり、縦24個 x 横24個の正方形の網目の一つ一つを、黒か白で埋めた結果が、人の目には一つの文字に見えるという訳です。(黒か白は、OnかOff、つまり、1ビットを表しますので、24ドットは3バイトとなる訳です。)
昔話になりますが、私が日本IBMに入社した当時は、当然、PC(パーソナル・コンピューター)は影も形もなく、やっと大型汎用機の世界で、日本語対応(1979年発表)できるようになり始めた時期です。
その時の表示装置(ディスプレイ)上の文字は、もっとドット数の少ない(16x16ドットと記憶しています)構成で日本語の文字を表示していましたが、プリンターの初めてのモデル3283-052(私が本当に一部分関わった)は、IBM 内製のインクジェット・プリンター(連続噴射方式、連続用紙用)で、解像度は240dpiで、文字は、32 x 32 ドットのスペースに28 x 28 ドットでデザインされたものだったと思います。
その後、2番目のモデルとして、印字機構を他社からOEM調達したインパクト・プリンター、3283-053 が出たのですが、このプリンターの内蔵フォントが、24x24ドットでした。
その時だったかに人づてで聞いたのが、各文字の24 x 24 ドットのパターンは、外部のデザイン研究所に依頼して作っていただいたもので、1文字当たりのデザイン料は何と10,000円近い金額が掛かったという話です。(正しい金額は不明ですが、高額であることに間違いはありません。)
そして、設計する文字数は、7,200文字以上あった訳ですから、全部の設計料となるとかなりの額になります。つまり、文字を増やすということは非常にコストの掛かるものなのです。
これは、あくまでも「IBM書体」で、「明朝体」で、「24 x 24 ドット構成」の文字を用意するのに最低限必要な費用ですから、この他に「ゴシック体」とか、レーザー・プリンター用の「32 x 32ドット構成」といったバリエーションを増やそうとすると、その組み合わせ全部に対してほぼ同額の金額が掛かることになりますから、メーカーとしてそう簡単に踏み切れないことは、頷けると思います。
愛という漢字の24 x 24 ドット構成

【余談の余談】
大型汎用機用の日本語システムの次に、1983年にIBMでは「1台3役」と銘打った「マルチステーション5550」を発表してのですが、このシステムのディスプレイの日本語が「24 x 24 ドット構成」が特徴の一つで、競合のN社の「22 x 22 ドット構成」では、複雑な漢字になると省略する箇所が出てきて、正しい文字を表示できないと教えられたことを、今でも覚えています。

もちろん、他にも、プリンター・セッション経由の印刷では必ずしもプリンターの内蔵フォントが全て用意されていないとならない訳ではないといった理由もありますが、漢字のドットのデザインを用意するには大きなコストが掛かることが、内蔵フォントの対応が規格の変化に追いつかない大きな要素と思います。
なお、Telnet5250Eで直結する5400-Fシリーズのライン・プリンターの内蔵フォントは、CCSID1399のバージョン1対応となっています。
CCSID1399のバージョン1については、次回お話しします。

2015年4月20日月曜日

文字コードの話 - 更に続くJIS規格の変化

IBM選定文字
3 番目の表は、やはり557xシリーズ・プリンターの操作マニュアルの付録からの抜粋です。
これらの文字が「IBM選定文字」と言われる文字です。 xFA40の「ⅰ」から、xFA53「Ⅹ」までにローマ数字がありますし、「㈱」もxFA58に、「№」もxFA59にあります。
これらの文字は、前回の新JISで追加される以前からIBMの世界では存在していたこと、新JISでは別の文字コードで追加されたことがお分かりいただけると思います。
つまり、旧JISでは「㈱」はIBM選定文字の1つだったのですが、新JISでは2つ存在することになったのです。

ところで、1983年のJIS規格の変更は、IBMの社内規格とも言えるCCSIDには、どのように反映されたでしょうか?
AS/400や大型の汎用機の世界の文字コード(EBCDIC)では、文字コードの入れ替えは無く、文字コードの「追加」しかありません。
その結果、従来の文字セットに、「新JIS」で追加された文字を追加したのみのCCSID、"CCSID1399"と"CCSID1390"が新たに定義されました。"CCSID1399"と"CCID1390"の違いは、前者は日本語英小文字拡張(CCSID5035)に追加したもの、後者が日本語カナ拡張(CCSID5026)に追加したものの違いです。なお、AS/400の世界では、CCSID1399のみが使用できます。

更にその後、2004年にJISの規格が大幅に改訂され、文字のデザインの変更と文字数の増加が行われました。Windowsのバージョンでは、Windows Vistaに適用されました。詳しくは下記のサイトをご参照ください。
http://home.jeita.or.jp/page_file/20110512150627_F53ZCOuMhJ.pdf
4ページ目をご覧いただくと、文字のデザイン面では、略字だった漢字を元の正しい漢字に戻す変更であることが、お分かりいただけるかと思います。
この規格の変更とプリンターの関係はどうなっているでしょうか?
実は、557x系のドット・プリンターの内蔵フォントでは、このJIS2004の改訂は反映されていません。その結果、内蔵フォントを使うプリンター・セッション経由のPDT印刷では、印刷できない文字が出てくることになるはずですが、実際には印刷できていると思います。その理由は、プリンター・セッションが、JIS2004で追加された文字については、文字コードの代わりに、文字イメージ(Windowsフォント)をプリンターに送信しているからです。
では、Telnet5250Eを使った直結印刷ではどうでしょうか?
(次回に続く)

2015年4月13日月曜日

文字コードの話 - 文字化けではないが少し違う?新JISと旧JIS

前回までの半角文字の文字化け以外にも、印刷された文字が少し違うというケースがあります。
例えば、同じ「かご」という漢字の竹冠の下部が、「龍」ではなく「竜」が印刷されたり、その逆だったり、「ひのき」という漢字が、「檜」だったり「桧」だったりする場合です。
これらの文字は、いわゆる「新JIS規格」と「旧JIS規格」で文字コードと文字の関係が入れ替わった文字の組み合わせの一部です。「いわゆる新JIS、旧JIS」と言ったのは、「新JIS」と言っても、今から30年以上前の、1983年に行われたJISの規格の変更を境に「新」と「旧」の区別をしているからです。
下の表は、557xシリーズ・プリンターの操作マニュアルの付録からの抜粋です。「文字コード」は、Shift-JISコード、(旧)は旧JIS規格、(新)は新JIS規格を表わしています。例えば、文字コードx88B1
新JISと旧JISで文字コードが入れ替わった文字
は、魚の「あじ」を表わす漢字ですが、旧JIS規格では右側のつくりの中に、カタカナのムが3つありますが、新JIS規格では1つです。文字コードxE9CBでは、それが逆になっています。
この表の中の他の文字もそうですが、古来の正しい文字とそれを簡略化した文字の組み合わせにおいて、旧JIS規格では正しい文字が値の小さい方の文字コードに、新JIS規格では簡略化された文字が値の小さい方の文字コードに入れ替わったと言えると思います。そのような組み合わせが29組あることをこの表は表わしています。
その結果、これらの文字については、同じ文字コードをプリンターに送っても、プリンターの初期設定が「旧JIS規格」か「新JIS規格」かによって、印刷する文字が逆になってくるということになります。



その他に、新JISと旧JISの間では、新JISで文字が追加されたという違いもあります。左の表も、557xシリーズ・プリンターの
操作マニュアルの付録からの抜粋ですが、ここでは新JISで追加された文字を表わしています。
新JISで追加された文字
この表では、文字コードを、左端の4桁の英数字と1行目の1桁の英数字と合わせて表わしています。例えば、先頭の「①」は、x8740、「㈱」はx878A ということになります。「新JIS」に対応したプリンターは、これらの文字を内蔵フォントとして持っているということになります。丸で囲んだ数字や、1文 字で単位を表わした文字等は、NEC拡張文字と言って、NEC独自規格だった文字をJISに取り込んだものです。
一方、ややこしいのは、ローマ数字や、株式会社の記号「㈱」は、IBMでも、旧JISの時代から、独自に別の文字コードを定義して持っていたという点です。


(続く)






2015年4月7日火曜日

文字コードの話 - 文字化けはなぜ起きるか? 続き



カタカナを先に追加した文字コードは、"CCSID930"という上の表です。その空いている箇所(青色)に英語の小文字を追加して、両方の文字を共存できるようにしたものが、下の"CCSID5026"です。
この中で、例えばカタカナの"ア"の文字コードは、"CCISD5026"では"x81"ですが、"CCSID5035"の"x81"は、"a"ですから、もし同じ"x81"という文字コードがプリンターに送られてきても、プリンターの持っている内蔵フォントの文字コードが、どちらの文字になっているかによって、印刷結果に「文字化け」が発生するわけです。
AS/400側だけでなく、プリンター側でも"CCSID5026"と、"CCSID5035"に合わせた内蔵フォントと文字コードの関係を持っていて選択できるようになっています。AS/400側のCCSIDと、プリンターの初期設定を合わることで、「文字化け」の無い正しい印刷ができるということです。
(例えば、5400ライン・プリン ターの初期設定では、「エイスウカナ モジセット」がCCSID5026用、「エイ コモジ セット」がCCSID5035用となります。)
ただし、ここで言っている「プリンター」とは、5400ライン・プリンター等の、AS/400とTtelnet5250やTwinaxで直結して印刷するタイプのものを指しま す。

プリンター・セッション経由の印刷では、プリンター・セッションが、EBCDICからShift-JISに文字コード変換を行いますので、文字コード の設定を合わせる必要があるのは、プリンター・セッションの設定ということになります。
プリンター・セッションの画面で「通信」->「構成」と選択すると、下の画面が表示されます。その中の下の方にある「939日本語英数小文字拡張」は、AS/400側のCCSIDが"5035"であることを表わします。
("CCSID5026"の場合は、930日本語英数カナ拡張を選択します。)