IDAutomation.com, Inc., Computers Hardware, Software & Services, Tampa, FL Contact IDAutomationView your cart in the IDAutomation Store  
Loading
Home > Barcode Fonts > Code 128 Fonts > Code 128 Barcode Font Specifications

Code 128 Barcode Font User Manual

Related Products:

Order the Code 128 Barcode Font Advantage Package Download Demo of Code 128


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.

Code 128 Barcode Font Character Set

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 character 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 on 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.

Manual Check Character Calculation

The data must be encoded prior to applying the font.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:

  1. Reference the table above to obtain the value of the start character and all data characters.
  2. 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.
  3. Multiply the character values by their weights for the data characters.
  4. Add these all together, including the start character, divide by 103 and obtain the remainder.
  5. 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  
  1. Calculate Total: 104 + (66*1) + (73*2) + (90*3) = 586
  2. 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 have the 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  
  1. Calculate the Total:
    105 + (66*1) + (73*2) + (90*3) = 587
  2. 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  
  1. Calculate Total: 104 + (66*1) + (73*2) + (90*3) + (101*4) + (77*5) = 1375
  2. 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 bizm ( 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 bizmD 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 other character. This example demonstrates how to calculate (00)1234(15)12 which would be encoded as 0012341512 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  
  1. Add up totals: = 1063
  2. 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

Code 128 Barcode Font Specifications

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. The 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. Nevertheless, they are not usually used because the Code 128 symbology MOD103 check digit is commonly 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.

Code 128 Barcode Font Names Prior to July, 2003
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

 © Copyright 2014 IDAutomation.com, Inc., All Rights Reserved. Legal Notices.

 Barcode Fonts | Components | Scanners | Support | Contact Us
Training Videos on YouTube Join us on Google Plus Join us on LinkedIn Follow us on Twitter Like us on Facebook
Over 70% of Fortune 100 companies use IDAutomation's products to automate their businesses.