JAN/EAN

 JAN(Japanese Article Number)コードは日本での名称で、国際的には、EAN(European Article Number)と呼ばれます。 よって、バーコードの作成の立場から見ればこれらはまったく同じものと思ってよいのです。
 コード体系に規定があり、国区分コード+メーカコード+商品コード+チェックデジット等の仕様が決められていますが、 まったく別のシステムで閉じて使用するのであれば、規定されたコード体系にとらわれずに、自由なコード体系を作ってよいのです。  種類としては、13桁の標準コードと8桁の短縮コードがあります。

1.バーとスペースの基礎知識

 一番幅の狭いバーとスペースが基本要素で、これを1モジュールと呼びます。バーとスペースの種類は、1〜4モジュールの4種類あります。 幅の違いは、基本要素の整数倍になっています。
 1モジュールのスペースは、バイナリーコードの0(zero)を表し、1モジュールのバーは、バイナリーコードの1(one)を表します。 1文字は、2つのバーと2つのスペースで構成されており、バーとスペースのトータル幅は、7モジュールです。

  4種類のスペース  4種類のバー

 要するに、1文字は7ビットで表現されており、0と1をスペースとバーに置き換えればよいのです。 表現できる文字は、数字(0〜9)のみです。 例として、バイナリーコードで「1110010」と定義されている1文字のバーとスペースの組合せは以下のようになります。

 1モジュールの基本寸法は0.33mmで、0.8倍まで縮小でき、そして、2.0倍まで拡大できます。
SVG形式で作成されるバーコードは、基本寸法(0.33mm)になっています。(2015年8月22日追記)

2.13桁の標準コード(JAN−13/EAN−13)の構成

   

 13桁の最初の1桁は、シンボルとしては存在していません。バーとスペースのみを見ると12文字分しかないのです。 文字の組合せで最初の付加文字を作り出していますが、この説明は後で出てきます。バーとスペースの基本構成は以下の通りです。

左側の
マージン
左側の
ガード
バー
左側の
6文字分の
コード
センター
バー
右側の
6文字分の
コード
右側の
ガード
バー
右側の
マージン

左側のマージン10モジュール程度以上のスペースが必要です。
左側のガードバースタートコードを表し、「101」と表現します。
左側の6文字分のコードこの文字の組合せで先頭1桁を作り出します。文字コード表は下記参照。
センターバーセンターコードを表し、「01010」と表現します。
右側の6文字分のコード左側の文字定義と異なっています。文字コード表は下記参照。
右側のガードバーストップコードを表し、「101」と表現します。
右側のマージン10モジュール程度以上のスペースが必要です。

文字コード表

文字
(数字)
左側の文字右側の文字
奇数パリティ偶数パリティ偶数パリティ









0001101
0011001
0010011
0111101
0100011
0110001
0101111
0111011
0110111
0001011
0100111
0110011
0011011
0100001
0011101
0111001
0000101
0010001
0001001
0010111
1110010
1100110
1101100
1000010
1011100
1001110
1010000
1000100
1001000
1110100

 上記のパリティの意味ですが、

  奇数パリティとは、奇数(3or5)モジュールのバーを使っている。
  偶数パリティとは、偶数(2or4)モジュールのバーを使っている。

ということを表しているだけです。 そして、左側の文字の最初はスペースで終わりがバーになっており、右側の文字の最初はバーで終わりがスペースになっています。
 ここで重要なことは、左側の文字の組合せで先頭の1桁の数字を作り出しているということです。 だから、左側の文字は2種類あるのです。奇数と偶数の組合せで下記のように付加文字が作り出されます。

先頭の付加文字左側6文字の奇数・偶数の組合せ
1桁目2桁目3桁目4桁目5桁目6桁目
奇数奇数奇数奇数奇数奇数
奇数奇数偶数奇数偶数偶数
奇数奇数偶数偶数奇数偶数
奇数奇数偶数偶数偶数奇数
奇数偶数奇数奇数偶数偶数
奇数偶数偶数奇数奇数偶数
奇数偶数偶数偶数奇数奇数
奇数偶数奇数偶数奇数偶数
奇数偶数奇数偶数偶数奇数
奇数偶数偶数奇数偶数奇数

 例として、左側の6文字が「234567」で先頭の付加文字が「1」の場合は、以下の通り。

先頭の付加文字左側6文字のコード
奇数の2奇数の3偶数の4奇数の5偶数の6偶数の7
1001001101111010011101011000100001010010001

 話が少しそれますが、先頭の付加文字が「0」の場合は、左側の文字はすべて奇数パリティとなっています。 EANは、米国のUPCをベースに作られていますが、UPCは、12桁で付加文字がなく、左側の文字は奇数パリティのみです。 このことから、EANは、12桁のUPCを13桁に増やすために、左側の文字に偶数パリティの文字を追加して考え出されたのだなと推測できます。

 次に重要なことは、右側の最後の1文字がチェックデジットで以下のように規定されていることです。 よって、閉じたシステムで自由にコード体系を作る場合でも、チェックデジットだけは、規則どおりに作る必要があります。
 チェックデジットは、モジュラス10方式で下記のように計算して作り出されます。

 例)1234567890128 (最後の8がチェックデジット)

1.右端から左に向かって、偶数桁の値をすべてたします。

  2+0+8+6+4+2=22

2.この値に3をかけます。

  22×3=66

3.右端から左に向かって、奇数桁の値を、チェックデジットを除き、すべてたします。

  1+9+7+5+3+1=26

4.この値と2.で計算した値をたします。

  26+66=92

5.この結果の一の位の10の補数がチェックデジットとなります。

  10−2=8(92の一の位は2、または、92を10で割った余りは2)

  注記:結果が10の場合は、チェックデジットは0となります。

 補足として、バーコードの下に印刷されている数字は、OCR−Bフォントを使用するのが正式のようです。 このホームページで作成されるものは、作者の手作りフォントなので正式ではありません。作成ソフトを単純にするために、 手作りバー画像の下に文字を埋め込んであります。
SVG形式で作成されるバーコードは、正式なOCR−Bフォントを使用しています。(2015年8月22日追記)
文字コード表をバーとスペースで表すと下記の通りとなります。

数字



























スタート
コード
センター
コード
ストップ
コード

 左右のマージンを除いた左端から右端までのサイズは、標準で約31.0mmとなります。0.8倍〜2.0倍の縮小・拡大が許されていますので、 24.8mm〜62.0mmのサイズならば規格内ということになります。

3.8桁の短縮コード(JAN−8/EAN−8)の構成

   

 13桁の標準コードと違い付加文字などはありません。バーとスペースの基本構成は以下の通りです。

左側の
マージン
左側の
ガード
バー
左側の
4文字分の
コード
センター
バー
右側の
4文字分の
コード
右側の
ガード
バー
右側の
マージン

左側のマージン10モジュール程度以上のスペースが必要です。
左側のガードバースタートコードを表し、「101」と表現します。
左側の4文字分のコード文字コード表は下記参照。
センターバーセンターコードを表し、「01010」と表現します。
右側の4文字分のコード左側の文字定義と異なっています。文字コード表は下記参照。
右側のガードバーストップコードを表し、「101」と表現します。
右側のマージン10モジュール程度以上のスペースが必要です。

文字コード表

文字
(数字)
左側の文字右側の文字
奇数パリティ偶数パリティ









0001101
0011001
0010011
0111101
0100011
0110001
0101111
0111011
0110111
0001011
1110010
1100110
1101100
1000010
1011100
1001110
1010000
1000100
1001000
1110100

 上記のパリティの意味ですが、

  奇数パリティとは、奇数(3or5)モジュールのバーを使っている。
  偶数パリティとは、偶数(2or4)モジュールのバーを使っている。

ということを表しているだけです。 そして、左側の文字の最初はスペースで終わりがバーになっており、右側の文字の最初はバーで終わりがスペースになっています。

 右側の最後の1文字はチェックデジットで以下のように規定されています。 よって、閉じたシステムで自由にコード体系を作る場合でも、チェックデジットだけは、規則どおりに作る必要があります。
 チェックデジットは、モジュラス10方式で下記のように計算して作り出されます。

 例)12345670 (最後の0がチェックデジット)

1.右端から左に向かって、偶数桁の値をすべてたします。

  7+5+3+1=16

2.この値に3をかけます。

  16×3=48

3.右端から左に向かって、奇数桁の値を、チェックデジットを除き、すべてたします。

  6+4+2=12

4.この値と2.で計算した値をたします。

  48+12=60

5.この結果の一の位の10の補数がチェックデジットとなります。

  10−0=10(60の一の位は0、または、60を10で割った余りは0)
  10→0(結果が10の場合は、チェックデジットは0となる)

 補足として、バーコードの下に印刷されている数字は、OCR−Bフォントを使用するのが正式のようです。 このホームページで作成されるものは、作者の手作りフォントなので正式ではありません。作成ソフトを単純にするために、 手作りバー画像の下に文字を埋め込んであります。
SVG形式で作成されるバーコードは、正式なOCR−Bフォントを使用しています。(2015年8月22日追記)
文字コード表をバーとスペースで表すと下記の通りとなります。

数字






















スタート
コード
センター
コード
ストップ
コード

 左右のマージンを除いた左端から右端までのサイズは、標準で約22.0mmとなります。0.8倍〜2.0倍の縮小・拡大が許されていますので、 17.6mm〜44.0mmのサイズならば規格内ということになります。