fc2ブログ
 JIS X0501によれば、1つのキャラクタは黒と白の7つのバーモジュールで構成され、黒を1白を0として7つの数字列で表されます。左6個のキャラクタは、先頭のプリフィックスキャラクタによって偶数・奇数パリティのパターンが決まり、右6個のキャラクタはすべて偶数パリティと決められています。パリティとは、1キャラクタにおける黒バーモジュール数の和が偶数(2または4)か奇数(3または5)かということです。また、1キャラクタは2本の黒バーと2本の白バーで構成すると定められていますが、ここでいう1本とは1~4モジュールを意味します。左右のガードバーは「101」、センタバーは「01010」と決められています。

 直感的には分かりにくいので未来舎のISBNコード「9784990348601」を例に取ると、先頭プリフィックスが「9」なので、左キャラクタ「7・8・4・9・9・0」のパリティパターンは「奇数・偶数・偶数・奇数・偶数・奇数」となります。従って「7」は奇数パリティでバーモジュール配列は「0111011」となります。右キャラクタ「3・4・8・6・0・1」のパリティはすべて偶数で、「3」のバーモジュール配列は「1000010」となります。このようにして、すべてのキャラクタのバーモジュール配列を求め、左右及びセンタガードバーを加えてバーコード全体のバーモジュール配列を決定します。

 バーモジュール1個の寸法は幅0.33mm×高さ11mmなので、所定の位置に高さ11mmで複数モジュール幅の長方形を精度良く描画すれば、バーコードを作れることになります。TeXは極めて高精度なのでこれに適しています。なお、バーモジュールは左右ガードバーが6個、センタバーが5個、キャラクタバーが84個(=12×7)で合計95個になり、バーコード全体の横幅は95×0.33=31.35mmとなって書籍JANコードと一致します。しかし、バーコードの高さは、JIS X0501では22.86mmと規定されており、書籍JANコードの11mmとは異なります。また、各ガードバーがキャラクタバーより長く、キャラクタバー下端と文字列の間隔が極めて小さいなど、書籍JANコードとは異なる点があります。

 TeXのコマンドを調べると、幅w pt、高さh ptの黒い長方形を描画するコマンドとして"rule{w pt}{h pt}"、ピクチャー環境での描画位置決めに対しては左下隅の座標を(x,y)とすると"put(x,y)"というコマンドがありました。そこで、h=11mm(31.4pt)一定、y=0一定として、各黒バーの左下隅の座標をx、幅をwとして、順番にコマンド"put(x,0){rule{w pt}{31.4pt}}"を繰り返せばバーコードが作成できることになります。かくして、バーコード作成のTeXコマンドは次のようになります。
書籍バーコード(TeXコード)

これをTeXコンパイルすると図1に示すバーコードが出力されます。
書籍バーコード
 図1 書籍バーコード

 Webで表示する関係で拡大や画像変換を行っているため、若干不鮮明な箇所があるように見えますが、TeX出力をPDFで保存したオリジナルを拡大・縮小せずにそのままレーザプリンタで印刷したものは、高さと幅はピッタリ規定どおりで、極めて鮮明でした。

 これでバーコード作成はできましたが、バーコードの下にISBNコードの文字列をOCR-Bフォントで挿入しなければなりません。また、2段目には分類・価格コードのバーコードを作成する必要があります。問題は、どうやってTeXでOCR-Bフォントを使うかということです。

















管理者にだけ表示を許可する


| HOME |


Design by mi104c.
Copyright © 2024 個人出版コミュニティ, All rights reserved.