Code 128 Barcode Font User Manual
Code 128 Barcode Font Overview
Code 128 Barcode Fonts encode numbers, symbols, uppercase and lowercase text as well as
functions such as returns and tabs. All Code 128 barcode fonts require
a start character, checksum character, and a stop character to create
readable barcodes. Due to the required calculation of a checksum, implementation
of Code 128 as a barcode font may be difficult without IDAutomation's
Font Encoder Tools. If an easier-to-use barcode font
is preferred and Code 128 is not required, consider IDAutomation's
Code 39 Barcode
Font, which does not require checksums to be calculated. IDAutomation
also provides several
barcode components
that enable an easier implementation due to their ability to automatically
calculate checksums and completely format the barcode.
Three different start characters are used in Code 128 barcodes to
tell the barcode reader which character set is being used. The table
below illustrates the three character sets in columns with the location
of the characters. In the columns A, B and C, is the list of characters
or functions that the barcode scanner will read for the associated symbol.
The columns ASCII, Char and Unicode are unique to IDAutomation Code 128 Barcode
Fonts. These columns designate the location in either ASCII or Unicode
where the barcode symbol for the character resides in the font. The
Char column lists the character that resides at the ASCII location,
which can be used to print the corresponding symbol. The character set
provides easy methods of
encoding
functions in barcodes such as returns and tabs.
| Code A |
Code B |
Code C |
ASCII* |
Unicode* |
Char* |
Value |
Code A |
Code B |
Code C |
ASCII* |
Unicode* |
Char* |
Value |
| Space |
Space |
00 |
0194 |
00C2 |
 |
00 |
V |
V |
54 |
0086 |
0056 |
V |
54 |
| ! |
! |
01 |
0033 |
0021 |
! |
01 |
W |
W |
55 |
0087 |
0057 |
W |
55 |
| " |
" |
02 |
0034 |
0022 |
" |
02 |
X |
X |
56 |
0088 |
0058 |
X |
56 |
| # |
# |
03 |
0035 |
0023 |
# |
03 |
Y |
Y |
57 |
0089 |
0059 |
Y |
57 |
| $ |
$ |
04 |
0036 |
0024 |
$ |
04 |
Z |
Z |
58 |
0090 |
005A |
Z |
58 |
| % |
% |
05 |
0037 |
0025 |
% |
05 |
[ |
[ |
59 |
0091 |
005B |
[ |
59 |
| & |
& |
06 |
0038 |
0026 |
& |
06 |
\ |
\ |
60 |
0092 |
005C |
\ |
60 |
| ' |
' |
07 |
0039 |
0027 |
' |
07 |
] |
] |
61 |
0093 |
005D |
] |
61 |
| ( |
( |
08 |
0040 |
0028 |
( |
08 |
^ |
^ |
62 |
0094 |
005E |
^ |
62 |
| ) |
) |
09 |
0041 |
0029 |
) |
09 |
_ |
_ |
63 |
0095 |
005F |
_ |
63 |
| * |
* |
10 |
0042 |
002A |
* |
10 |
nul |
` |
64 |
0096 |
0060 |
` |
64 |
| + |
+ |
11 |
0043 |
002B |
+ |
11 |
soh |
a |
65 |
0097 |
0061 |
a |
65 |
| , |
, |
12 |
0044 |
002C |
, |
12 |
stx |
b |
66 |
0098 |
0062 |
b |
66 |
| - |
- |
13 |
0045 |
002D |
- |
13 |
etx |
c |
67 |
0099 |
0063 |
c |
67 |
| . |
. |
14 |
0046 |
002E |
. |
14 |
eot |
d |
68 |
0100 |
0064 |
d |
68 |
| / |
/ |
15 |
0047 |
002F |
/ |
15 |
eno |
e |
69 |
0101 |
0065 |
e |
69 |
| 0 |
0 |
16 |
0048 |
0030 |
0 |
16 |
ack |
f |
70 |
0102 |
0066 |
f |
70 |
| 1 |
1 |
17 |
0049 |
0031 |
1 |
17 |
bel |
g |
71 |
0103 |
0067 |
g |
71 |
| 2 |
2 |
18 |
0050 |
0032 |
2 |
18 |
bs |
h |
72 |
0104 |
0068 |
h |
72 |
| 3 |
3 |
19 |
0051 |
0033 |
3 |
19 |
ht |
i |
73 |
0105 |
0069 |
i |
73 |
| 4 |
4 |
20 |
0052 |
0034 |
4 |
20 |
lf |
j |
74 |
0106 |
006A |
j |
74 |
| 5 |
5 |
21 |
0053 |
0035 |
5 |
21 |
vt |
k |
75 |
0107 |
006B |
k |
75 |
| 6 |
6 |
22 |
0054 |
0036 |
6 |
22 |
ff |
l |
76 |
0108 |
006C |
l |
76 |
| 7 |
7 |
23 |
0055 |
0037 |
7 |
23 |
cr |
m |
77 |
0109 |
006D |
m |
77 |
| 8 |
8 |
24 |
0056 |
0038 |
8 |
24 |
s0 |
n |
78 |
0110 |
006E |
n |
78 |
| 9 |
9 |
25 |
0057 |
0039 |
9 |
25 |
s1 |
o |
79 |
0111 |
006F |
o |
79 |
| : |
: |
26 |
0058 |
003A |
: |
26 |
dle |
p |
80 |
0112 |
0070 |
p |
80 |
| ; |
; |
27 |
0059 |
003B |
; |
27 |
dc1 |
q |
81 |
0113 |
0071 |
q |
81 |
| < |
< |
28 |
0060 |
003C |
< |
28 |
dc2 |
r |
82 |
0114 |
0072 |
r |
82 |
| = |
= |
29 |
0061 |
003D |
= |
29 |
dc3 |
s |
83 |
0115 |
0073 |
s |
83 |
| > |
> |
30 |
0062 |
003E |
> |
30 |
dc4 |
t |
84 |
0116 |
0074 |
t |
84 |
| ? |
? |
31 |
0063 |
003F |
? |
31 |
nak |
u |
85 |
0117 |
0075 |
u |
85 |
| @ |
@ |
32 |
0064 |
0040 |
@ |
32 |
syn |
v |
86 |
0118 |
0076 |
v |
86 |
| A |
A |
33 |
0065 |
0041 |
A |
33 |
etb |
w |
87 |
0119 |
0077 |
w |
87 |
| B |
B |
34 |
0066 |
0042 |
B |
34 |
can |
x |
88 |
0120 |
0078 |
x |
88 |
| C |
C |
35 |
0067 |
0043 |
C |
35 |
em |
y |
89 |
0121 |
0079 |
y |
89 |
| D |
D |
36 |
0068 |
0044 |
D |
36 |
sub |
z |
90 |
0122 |
007A |
z |
90 |
| E |
E |
37 |
0069 |
0045 |
E |
37 |
esc |
{ |
91 |
0123 |
007B |
{ |
91 |
| F |
F |
38 |
0070 |
0046 |
F |
38 |
fs |
| |
92 |
0124 |
007C |
| |
92 |
| G |
G |
39 |
0071 |
0047 |
G |
39 |
gs |
} |
93 |
0125 |
007D |
} |
93 |
| H |
H |
40 |
0072 |
0048 |
H |
40 |
rs |
~ |
94 |
0126 |
007E |
~ |
94 |
| I |
I |
41 |
0073 |
0049 |
I |
41 |
us |
del |
95 |
0195 |
00C3 |
à |
95 |
| J |
J |
42 |
0074 |
004A |
J |
42 |
fnc 3 |
fnc 3 |
96 |
0196 |
00C4 |
Ä |
96 |
| K |
K |
43 |
0075 |
004B |
K |
43 |
fnc 2 |
fnc2 |
97 |
0197 |
00C5 |
Å |
97 |
| L |
L |
44 |
0076 |
004C |
L |
44 |
Shift |
Shift |
98 |
0198 |
00C6 |
Æ |
98 |
| M |
M |
45 |
0077 |
004D |
M |
45 |
code C |
code C |
99 |
0199 |
00C7 |
Ç |
99 |
| N |
N |
46 |
0078 |
004E |
N |
46 |
code B |
fnc 4 |
code B |
0200 |
00C8 |
È |
100 |
| O |
O |
47 |
0079 |
004F |
O |
47 |
fnc 4 |
code A |
code A |
0201 |
00C9 |
É |
101 |
| P |
P |
48 |
0080 |
0050 |
P |
48 |
fnc 1 |
fnc 1 |
fnc 1 |
0202 |
00CA |
Ê |
102 |
| Q |
Q |
49 |
0081 |
0051 |
Q |
49 |
Start A |
Start A |
Start A |
0203 |
00CB |
Ë |
103 |
| R |
R |
50 |
0082 |
0052 |
R |
50 |
Start B |
Start B |
Start B |
0204 |
00CC |
Ì |
104 |
| S |
S |
51 |
0083 |
0053 |
S |
51 |
Start C |
Start C |
Start C |
0205 |
00CD |
Í |
105 |
| T |
T |
52 |
0084 |
0054 |
T |
52 |
Stop |
Stop |
Stop |
0206 |
00CE |
Î |
|
| U |
U |
53 |
0085 |
0055 |
U |
53 |
|
|
|
|
|
|
|
* It is necessary to print the Code 128 barcode space character from
ASCII 194 instead of ASCII 32 because Windows cannot print a symbol
instead of a space character from Visual Basic and most other development
environments. Macintosh systems should print the Code128 barcode font
from Unicode locations if possible because the extended characters map to
different characters than what is displayed on the "Char" column in MAC Roman
encoding.
* If the system regional setting is not set to "English"
or the 1252 Latin-1 code page, the Code 128 fonts support the following
additional code pages in Windows: 1250 European, 1251 Cyrillic, 1253
Greek, 1254 Turkish, 1255 Hebrew and 1256 Arabic. For a font that
works in any operating system, code page and locale, IDAutomation offers
the Universal
Barcode Font Package which creates Code 128 and many other barcode types
from a single font.
* The columns ASCII, Char and Unicode are unique to IDAutomation's Code
128 Barcode Fonts.
IDAutomation provides font
encoder tools and source
code samples that are free to use with IDAutomation fonts, which
will automatically format the start, stop and check characters to the
barcode fonts. Therefore, manual check digit calculations are usually
not necessary.
The check character is positioned after the data characters and just
before the stop character. To determine the value of the check character:
- Reference the table above to obtain the value of the start character
and all data characters.
- Assign a weighting to each data character (not the start character,
just the data characters.) The weighting starts at 1 and increases
by one for each data character.
- Multiply the character values by their weights for the data
characters.
- Add these all together including the start character, divide
by 103 and obtain the remainder.
- Use the table above to locate the character that has the value
of the remainder; use this as the check character.
Calculating Code 128 Character Set A or B
The following table is an example of how to obtain the check character
for the data "biz" using Code 128 character set B.
| |
Start B |
b |
i |
z |
STOP |
| weighting |
|
1 |
2 |
3 |
|
| values |
104 |
66 |
73 |
90 |
|
| totals |
104 |
66 |
146 |
270 |
|
- Calculate Total: 104 + (66*1) + (73*2) + (90*3) = 586
- Calculate Checksum: 586 divided by 103 = 5 remainder
of 71. Check digit = value of 71. The character to print for the
value of 71 is "g" or ASCII 103.
To print extended ASCII characters from a keyboard that does not
the have keys defined, use the ALT+<xxxx> key combination where
xxxx equals the character's ASCII location in 4 digits. For example,
to type ASCII character 104 into Microsoft Word, select the font in
Word, press the ALT key and while holding it down type 0104 on
the keypad of the keyboard. Four digits must be entered with the keypad
only.
Therefore to print the data "biz" as a barcode, type: ALT
0204, b, i, z, g, ALT 0206 or ÌbizgÎ.
Calculating Code 128 Character Set C
The following table is an example of how to obtain the check character
for "667390" using Code 128 character set C:
First, interleave the numbers into pairs and then choose the appropriate
character that represents the number pair from the
Code 128 Character Set.
| |
Start C |
66 |
73 |
90 |
STOP |
| weighting |
|
1 |
2 |
3 |
|
| values |
105 |
66 |
73 |
90 |
|
| totals |
105 |
66 |
146 |
270 |
|
- Calculate the Total:
105 + (66*1) + (73*2) + (90*3) = 587
- Calculate the Checksum:
587 divided by 103 = 5 remainder of 72. Check digit = value of 72.
The character to print for the value of 72 is ASCII 104.
Therefore to print the data "667390" as a barcode, you would
need to type: ALT 0205, b, i, z, h, ALT 0206 or ÍbizhÎ.
Switching Between Code 128 Character Sets
It is possible to switch between character sets in a single Code
128 barcode. Although character set B can encode text and numbers,
it may be necessary to switch to set A to encode a function such as
a tab or carriage return.
The following table is an example of how to encode the data "biz"
using Code 128 character set B with a switch to character set A for
a carriage return function:
| |
Start B |
b |
i |
z |
É |
m |
STOP |
| weighting |
|
1 |
2 |
3 |
4 |
5 |
|
| values |
104 |
66 |
73 |
90 |
101 |
77 |
|
| totals |
104 |
66 |
146 |
270 |
404 |
385 |
|
- Calculate Total: 104 + (66*1) + (73*2) + (90*3) + (101*4)
+ (77*5) = 1375
- Calculate Checksum: 1375 divided by 103 = 13 remainder
of 36. Check digit = value of 36. The character to print for the
value of 36 is "D" or ASCII 68.
This type of switching between character sets is also compatible
with IDAutomation's
free font encoder tools.
For example, specify the data bizÉm ( É is the switch
to set A and m is the function according to the chart) as the
input for the Code 128 B function, the data ÌbizÉmDÎ would be
returned which would perform the switch to set A and the function of
a return when printed with IDAutomation's font and scanned by a barcode
scanner.
Calculating
Check Digits For
GS1-128 (formerly UCC128 and EAN128)
The FNC1 in the GS1-128 barcode is treated as any another character.
This example demonstrates how to calculate (00)1234(15)12 which would
be encoded as Ê001234Ê1512 in IDAutomation's font encoder tools.
More information about creating GS1-128, UCC-128 and EAN-128 barcodes
is provided in the
Code 128 Barcode FAQ and Tutorial.
| |
Start C |
FNC1 |
00 |
12 |
34 |
FNC1 |
15 |
12 |
STOP |
| weighting |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
| values |
105 |
102 |
00 |
12 |
34 |
102 |
15 |
12 |
|
| totals |
105 |
102 |
00 |
36 |
136 |
510 |
90 |
84 |
|
- Add up totals: = 1063
- Calculate Checksum: 1063 divided by 103 = 10 remainder
of 33. Check digit = value of 33.
Therefore, the following text is needed to create the barcode from
the font: ÍÊÂ,BÊ/,AÎ
The X dimension (X is the width of the narrow bar) is listed below
for various point sizes in millimeters and mils. 1 mil is equal to 1/1000
of an inch. IDAutomation's Code 128 barcode fonts have been specially
designed to be able to produce dependable barcodes when printed at large
and small point sizes. The Code 128 font may be printed as small as
4 points if the scanner is capable reading it. IDAutomation's Code 128
fonts are reliably read with the
IDAutomation
USB Barcode Scanner at point sizes of 6 to 48 points.
| Point Size |
Approximate X dimension (1 mil = .001")
|
| 48 |
.102 cm |
40 mil |
| 36 |
.076 cm |
30 mil |
| 32 |
.069 cm |
27 mil |
| 30 |
.064 cm |
25 mil |
| 28 |
.058 cm |
23 mil |
| 24 |
.051 cm |
20 mil |
| 20 |
.043 cm |
17 mil |
| 18 |
.038 cm |
15 mil |
| 16 |
.033 cm |
13 mil |
| 12 |
.025 cm |
10 mil |
| 8 |
.018 cm |
7 mil |
| 6 |
.013 cm |
5 mil |
|
* To print at a different X dimension, find
the point size that has the X dimension closest to what
is needed and use the formula below to find the point size
needed:
12 * (X dimension needed) / (X dimension
at 12 points) = (point size) For example, to obtain
an X dimension of 12 mils, the point size should be 14:
12 * 12 / 10 = 14
|
When using a printer with less than 600 DPI, print at the following
point sizes to create accurate barcodes:
| 203 DPI
Printer (thermal printer) |
300 DPI
Printer |
| 6, 12, 18, 24, 30, 36 |
4, 8, 12, 16, 20, 24, 28, 32, 36 |
Eighteen different versions of the Code 128 barcode
fonts are provided to support human readable versions and different
width and height requirements. Fonts with the letter "H" in the font
name are human-readable versions. The last
characters in the Code 128 barcode font name determine the height of
the barcode with the shortest being "XS" and the tallest being
"XXL". Because each single font may be printed at various point
sizes, there are several combinations of heights and widths that may
be produced.
| Purchased Font Name |
Evaluation Font Name* |
Font Height at 12pts* |
|
Code 128 Fonts (no text below
barcode) |
| IDAutomationC128XXS |
IDAutomationSC128XXS |
.10" or .254 CM |
| IDAutomationC128XS |
IDAutomationSC128XS |
.20" or .508 CM |
| IDAutomationC128S |
IDAutomationSC128S |
.35" or .889 CM |
| IDAutomationC128M |
IDAutomationSC128M |
.50" or 1.27 CM |
| IDAutomationC128L |
IDAutomationSC128L |
.60" or 1.46 CM |
| IDAutomationC128XL |
IDAutomationSC128XL |
.75" or 1.90 CM |
| IDAutomationC128XXL |
IDAutomationSC128XXL |
1" or 2.54 CM |
| Code 128 Fonts "Character set B" (text below barcode:**) |
| IDAutomationHbC128XS |
NA |
.20" or .508 CM |
| IDAutomationHbC128S |
NA |
.35" or .889 CM |
| IDAutomationHbC128M |
IDAutomationSHbC128M |
.50" or 1.27 CM |
| IDAutomationHbC128L |
NA |
.60" or 1.46 CM |
| IDAutomationHbC128XL |
NA |
.75" or 1.90 CM |
| IDAutomationHbC128XXL |
NA |
1" or 2.54 CM |
| Code 128 Fonts "Character set C" (text below barcode:**) |
| IDAutomationHcC128XS |
NA |
.20" or .508 CM |
| IDAutomationHcC128S |
NA |
.35" or .889 CM |
| IDAutomationHcC128M |
IDAutomationSHcC128M |
.50" or 1.27 CM |
| IDAutomationHcC128L |
NA |
.60" or 1.46 CM |
| IDAutomationHcC128XL |
NA |
.75" or 1.90 CM |
| IDAutomationHcC128XXL |
NA |
1" or 2.54 CM |
| * Measurements are approximate and
were measured when printed at 12 points, which should work for
most scanners. Measurements for Human Readable fonts do not
include the text below.
To print at a different height, find the font that has the
height closest to what is needed and use the following formula
to find the point size that is needed:
12 * (height you want) / (height at 12
points) = (point size converted to integer)
For example, if using IDAutomationC128M and the height is to
be .75", it should be printed at 18 points:
12 * .75 / .5 = 18
** The human-readable versions
also work with IDAutomation's font encoder tools. However, they are
not normally used because the Code 128 symbology MOD103 check
digit is usually displayed in the result. Human readable versions
are often used for testing purposes or when it is not a problem
to have the symbology check digit displayed. To print the human-readable
data without the check digit, use the fonts beginning in IDAutomationC128
and print the data encoded as text below or above the barcode.
The XXS size is not available in the human readable versions
because of size limitations.
|
| Purchased Font Name |
Evaluation Font
Name* |
Font
Height at 12pts* |
| Code
128 Fonts (no text below barcode) |
| AdvC128a |
sAdC128a |
1/16" (.078") or .2 cm |
| AdvC128b |
sAdC128b |
1/8" (.125") or .4 cm |
| AdvC128c |
sAdC128c |
1/4" (.25") or .6 cm |
| AdvC128d |
sAdC128d |
1/2" (.5") or 1.1 cm |
| AdvC128e |
sAdC128e |
5/8" (.625") or 1.6 cm |
| AdvC128f |
sAdC128f |
1" or 2.5 cm |
| Code
128 Fonts "Character set B" (text below the barcode:**) |
| C128bHa |
NA |
1/16" (.078") or .2 cm |
| C128bHb |
NA |
1/8" (.125") or .4 cm |
| C128bHc |
sC128bHc |
1/4" (.25") or .6 cm |
| C128bHd |
NA |
1/2" (.5") or 1.1 cm |
| C128bHe |
NA |
5/8" (.625") or 1.6 cm |
| C128bHf |
NA |
1" or 2.5 cm |
| Code
128 Fonts "Character set C" (text below barcode:**) |
| C128cHa |
NA |
1/16" (.078") or .2 cm |
| C128cHb |
NA |
1/8" (.125") or .4 cm |
| C128cHc |
sC128cHc |
1/4" (.25") or .6 cm |
| C128cHd |
NA |
1/2" (.5") or 1.1 cm |
| C128cHe |
NA |
5/8" (.625") or 1.6 cm |
| C128cHf |
NA |
1" or 2.5 cm |
If assistance is needed, please
contact IDAutomation.
Back to Top
|