Code 128 Barcode Font User Manual

Buy License Support Download Demo Release Log

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, a 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 Encoders.

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's 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. Mac 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. If compatibility is necessary with 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 encoders 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 remainders 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 a carriage return.

The following table is an example of how to encode the data "biz" using Code 128 character set B with a character switch 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 remainders 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 the 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

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 Ê001234Ê1512 in IDAutomation's font encoders. More information about creating GS1-128, UCC-128, and EAN-128 barcodes is provided in the GS1-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 of 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 "XXS" and the tallest being "XXL". Because every single font may be printed at various point sizes, several combinations of heights and widths may be produced. TrueType fonts with symbol encoding are also provided, which allow the font name to be more visible in font drop-down lists of end-user Windows applications and are signified with the letter “Y” or the word "Symbol" in the font name. The N Dimension column in the chart below is the narrow bar width-to-height ratio.

Purchased Font Name Evaluation Font Name* Font Height at 12pts* N Dimension
Code 128 Fonts (no text below the barcode)
IDAutomationC128XXS IDAutomationSC128XXS  .10" or .254 CM 10
IDAutomationC128XS IDAutomationSC128XS  .20" or .508 CM 20
IDAutomationC128S IDAutomationSC128S  .35" or .889 CM 35
IDAutomationC128M IDAutomationSC128M  .50" or 1.27 CM 50
IDAutomationC128L IDAutomationSC128L  .60" or 1.46 CM 58
IDAutomationC128XL IDAutomationSC128XL  .75" or 1.90 CM 75
IDAutomationC128XXL IDAutomationSC128XXL  1" or 2.54 CM 100
Code 128 Fonts "Character set B" (text below barcode:**)
IDAutomationHbC128XS NA  .20" or .508 CM 20
IDAutomationHbC128S NA  .35" or .889 CM 35
IDAutomationHbC128M IDAutomationSHbC128M  .50" or 1.27 CM 50
IDAutomationHbC128L NA  .60" or 1.46 CM 58
IDAutomationHbC128XL NA  .75" or 1.90 CM 75
IDAutomationHbC128XXL NA  1" or 2.54 CM 100
Code 128 Fonts "Character set C" (text below barcode:**)
IDAutomationHcC128XS NA  .20" or .508 CM 20
IDAutomationHcC128S NA  .35" or .889 CM 35
IDAutomationHcC128M IDAutomationSHcC128M  .50" or 1.27 CM 50
IDAutomationHcC128L NA  .60" or 1.46 CM 58
IDAutomationHcC128XL NA  .75" or 1.90 CM 75
IDAutomationHcC128XXL NA  1" or 2.54 CM 100
* 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 Before July 2003
Purchased Font Name Evaluation Font Name* Font Height at 12pts*
Code 128 Fonts (no text below the 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

Technical Support

Free lifetime Level 1 support may be obtained by reviewing the knowledgebase articles that are documented and by searching resolved public forum threads or the Code-128 tag. One incident of Level 2 support for a period of 60 days is included with the purchase of any license. Level 2 support and upgrades may be provided beyond 60 days if the Level 2 Support and Upgrade Subscription is purchased when making the or