JAN(Japanese Article Number)コードは日本での名称で、国際的には、EAN(European Article Number)と呼ばれます。
よって、バーコードの作成の立場から見ればこれらはまったく同じものと思ってよいのです。
コード体系に規定があり、国区分コード+メーカコード+商品コード+チェックデジット等の仕様が決められていますが、
まったく別のシステムで閉じて使用するのであれば、規定されたコード体系にとらわれずに、自由なコード体系を作ってよいのです。
種類としては、13桁の標準コードと8桁の短縮コードがあります。
一番幅の狭いバーとスペースが基本要素で、これを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日追記)
13桁の最初の1桁は、シンボルとしては存在していません。バーとスペースのみを見ると12文字分しかないのです。 文字の組合せで最初の付加文字を作り出していますが、この説明は後で出てきます。バーとスペースの基本構成は以下の通りです。
左側の マージン | + | 左側の ガード バー | + | 左側の 6文字分の コード | + | センター バー | + | 右側の 6文字分の コード | + | 右側の ガード バー | + | 右側の マージン |
---|
左側のマージン | : | 10モジュール程度以上のスペースが必要です。 |
左側のガードバー | : | スタートコードを表し、「101」と表現します。 |
左側の6文字分のコード | : | この文字の組合せで先頭1桁を作り出します。文字コード表は下記参照。 |
センターバー | : | センターコードを表し、「01010」と表現します。 |
右側の6文字分のコード | : | 左側の文字定義と異なっています。文字コード表は下記参照。 |
右側のガードバー | : | ストップコードを表し、「101」と表現します。 |
右側のマージン | : | 10モジュール程度以上のスペースが必要です。 |
文字 (数字) | 左側の文字 | 右側の文字 | |
---|---|---|---|
奇数パリティ | 偶数パリティ | 偶数パリティ | |
0 1 2 3 4 5 6 7 8 9 |
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桁目 | |
0 | 奇数 | 奇数 | 奇数 | 奇数 | 奇数 | 奇数 |
1 | 奇数 | 奇数 | 偶数 | 奇数 | 偶数 | 偶数 |
2 | 奇数 | 奇数 | 偶数 | 偶数 | 奇数 | 偶数 |
3 | 奇数 | 奇数 | 偶数 | 偶数 | 偶数 | 奇数 |
4 | 奇数 | 偶数 | 奇数 | 奇数 | 偶数 | 偶数 |
5 | 奇数 | 偶数 | 偶数 | 奇数 | 奇数 | 偶数 |
6 | 奇数 | 偶数 | 偶数 | 偶数 | 奇数 | 奇数 |
7 | 奇数 | 偶数 | 奇数 | 偶数 | 奇数 | 偶数 |
8 | 奇数 | 偶数 | 奇数 | 偶数 | 偶数 | 奇数 |
9 | 奇数 | 偶数 | 偶数 | 奇数 | 偶数 | 奇数 |
例として、左側の6文字が「234567」で先頭の付加文字が「1」の場合は、以下の通り。
先頭の付加文字 | 左側6文字のコード | |||||
---|---|---|---|---|---|---|
奇数の2 | 奇数の3 | 偶数の4 | 奇数の5 | 偶数の6 | 偶数の7 | |
1 | 0010011 | 0111101 | 0011101 | 0110001 | 0000101 | 0010001 |
話が少しそれますが、先頭の付加文字が「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日追記)
文字コード表をバーとスペースで表すと下記の通りとなります。
数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|---|
左 側 の 文 字 | 奇 数 パ リ テ ィ | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
偶 数 パ リ テ ィ | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
|
右 側 の 文 字 | 偶 数 パ リ テ ィ | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
特 殊 文 字 | スタート コード | センター コード | ストップ コード |
---|---|---|---|
![]() | ![]() | ![]() |
左右のマージンを除いた左端から右端までのサイズは、標準で約31.0mmとなります。0.8倍~2.0倍の縮小・拡大が許されていますので、 24.8mm~62.0mmのサイズならば規格内ということになります。
13桁の標準コードと違い付加文字などはありません。バーとスペースの基本構成は以下の通りです。
左側の マージン | + | 左側の ガード バー | + | 左側の 4文字分の コード | + | センター バー | + | 右側の 4文字分の コード | + | 右側の ガード バー | + | 右側の マージン |
---|
左側のマージン | : | 10モジュール程度以上のスペースが必要です。 |
左側のガードバー | : | スタートコードを表し、「101」と表現します。 |
左側の4文字分のコード | : | 文字コード表は下記参照。 |
センターバー | : | センターコードを表し、「01010」と表現します。 |
右側の4文字分のコード | : | 左側の文字定義と異なっています。文字コード表は下記参照。 |
右側のガードバー | : | ストップコードを表し、「101」と表現します。 |
右側のマージン | : | 10モジュール程度以上のスペースが必要です。 |
文字 (数字) | 左側の文字 | 右側の文字 |
---|---|---|
奇数パリティ | 偶数パリティ | |
0 1 2 3 4 5 6 7 8 9 |
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日追記)
文字コード表をバーとスペースで表すと下記の通りとなります。
数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|---|
左 側 の 文 字 | 奇 数 パ リ テ ィ | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
右 側 の 文 字 | 偶 数 パ リ テ ィ | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
特 殊 文 字 | スタート コード | センター コード | ストップ コード |
---|---|---|---|
![]() | ![]() | ![]() |
左右のマージンを除いた左端から右端までのサイズは、標準で約22.0mmとなります。0.8倍~2.0倍の縮小・拡大が許されていますので、 17.6mm~44.0mmのサイズならば規格内ということになります。