OCR and 3 of 9 Bar code fonts

Bar Code and OCR Readability Considerations

There are many factors that can affect the readability of bar codes and OCR characters, including printer settings such as Print Resolution, Print Darkness, Toner Saver and Toner Darkness. In addition, choice of print materials can significantly affect the readability. Refer to your printer documentation for information on printer settings and print material considerations that can help optimize the readability of printed bar codes and OCR characters.

Before investing in and implementing any specific solutions, print a sample of the bar codes on the materials you intend to use and verify readability with the actual devices you will use to read them. Lexmark does not warrant that a specific bar code reader will be able to read the bar code images as printed, or that a specific OCR reader will be able to read the OCR characters as printed.

The print quality and feed reliability you get with the printer and the Bar Code option can vary with the type and size of print material you use. Guidelines for each type of print material are provided in the printer's User's Guide. For information about card stock and labels, refer to the Card Stock & Labels Guide available from the Lexmark Web site.

OCR

OCR (Optical Character Recognition) fonts are used for several purposes where automated systems need a standard character shape defined to properly scan numbers and text without the use of bar codes. The OCR A and OCR B fonts have character shapes that can be accurately read by OCR scanning equipment. Some examples of OCR implementations include bank checks, passports, serial labels and postal mail.

The OCR A font prints the industry standard character set. The OCR B font has been extended beyond the industry standard character set to include full Latin 1 and Latin 2 support. This allows documents to be printed in the US as well as Eastern and Western European countries.

Both OCR typefaces are scalable monospaced fonts. When the font size is changed, the pitch is changed but not the point size

OCR-A

Character Designs

ANSI X3.17-1981 standard

Size

at 10 pitch approximately ANSI size I.

NOT scalable to exactly ANSI size III (requires non-uniform scale factors)

NOT scalable to exactly ANSI size IV (requires non-uniform scale factors)

Character Set

ANSI X3.17-1981 standard (no extra characters)

PCL font selection

<<Esc>>(<<0O>><<Esc>>(s0p<<pitch>>h0sb23584T


OCR-B

Character Designs

ANSI X3.49-1982 standard (plus non-standardized extensions)

Size

At 10 pitch approximately ANSI size I (actually 0.007" taller)

At 6.67 pitch approximately ANSI size IV.

NOT scalable exactly to ANSI size III (requires non-uniform scale factors)

Character Set

ANSI X3.49-1982 standard plus some extra characters:

Latin 1 and 2 accented characters

Additional symbol characters for Windows Latin 1, 2, and IBM Latin 1, 2, are supported

Symbol characters needed by IBM Latin 1 and 2 code pages

PCL font selection

<<Esc>>(<<1O>><<Esc>>(s0p<<pitch>>h0s0b23590T


3 of 9 Bar code

Bar codes are a popular method of printing information that is automatically read by machines. By printing patterns of bars and spaces with various widths, the accuracy of reading the information can be very high. The specific pattern of bars and spaces used to represent characters is called a bar code symbology. The 3 of 9 bar code symbology was the first alphanumeric symbology to be developed and is the most popular type of bar code used today. It is a simple bar code with 44 different alphabetic, numeric and special characters. It encodes the numbers (0-9), upper case letters (A-Z), and eight other characters (space, *$%+-./). It is often referred to as Code 39.

The asterisk (*) character is reserved for use as the start/stop code. You must start and end the bar code data with an asterisk and not use the asterisk within the data being coded.

Some space preceding and following the bar code (known as a "quiet zone") is required when using these bar code fonts. For these bar code fonts, the space character on your keyboard is reserved as a spacing character to insert or increase the quiet zone. The "bar code space character" is printed by placing an underscore (_) in the data.

The Code 39 fonts are selected with standard PCL font selection commands (refer to your printer's Technical Reference). They each work with three different PCL symbol sets. The most common symbol set, 9Y, encodes the standard 44 characters.

The standard definition for Code 39 only includes the upper case letters (A-Z). However when a user enters the bar code data, they sometimes enter the text using lowercase instead of uppercase. To address this common situation, additional symbol sets 109Y and 209Y have been included that duplicate the uppercase bar code characters at the lower case character positions.

Symbol set 209Y also includes human readable characters under the bars of the bar code and it is recommended that this symbol set be used to select the 3 of 9 Bar code fonts.

Symbol set 9Y

prints bar code using lower case letters

Symbol set 109Y

prints bar code using lower or upper case letters

Symbol set 209Y

prints bar code using lower or upper case letters with man readable character under the bar code.


The three 3 of 9 Bar code fonts are scalable fonts with different aspect ratios (height to width). Each font will print bar codes one inch high when selected at 72 point. The height of the bars will be scaled linearly so that selecting 36 point will print bar codes at ½ inch high. Fonts with three different aspect ratios (Narrow, Regular and Wide) are provided so once the desired height of the bar codes is selected you can chose from one of the three available widths.

Typical uses for the three bar code fonts are:

     C39 Narrow—Used when printing bar codes that are very tall (such as for box labeling).

     C39 Regular—Average use.

     C39 Wide—Used when printing bar codes that are very short. This keeps the bar codes wider so they are easier to read.

PCL Font Selection:

C39 Narrow

<<Esc>>(<<symset>><<Esc>>(s1p<<point>>v0s0b32774T

C39 Regular

<<Esc>>(<<symset>><<Esc>>(s1p<<point>>v0s0b32772T

C39 Wide

<<Esc>>(<<symset>><<Esc>>(s1p<<point>>v0s0b32777T


In all cases, bar codes can be printed that cannot be read for a variety of reasons (see "Bar Code and OCR Readability Considerations"). In general, if you have a problem reading any bar code print it at a larger point size and try it again. Additional troubleshooting tips are:

1.   Make the point size significantly larger until the bar code reads, then decrease it to find the minimum size that will read reliably.

2.   Verify the data starts and ends with an asterisk.

3.   Verify that no asterisk is included within the data.

4.   Verify that only valid bar code characters are used within the data. Having an invalid character will result in the bar code having a large gap between some of the bars. Remember, if you want to include a space character within the bar code data, type the underscore character and not just the space key.

5.   Try printing the barcode with human readable characters (using symbol set 209Y) to see if you are printing the correct characters.

6.   Increase the "quiet zone" space before and after the bar code.

7.   Make sure that the material you are printing on has enough contrast between the bar code and the color of the material.

8.   Verify your bar code reader is not expecting a checksum if you did not add a check digit. If you added a check digit make sure you calculated it correctly.

Code 39 does not require a checksum because of self-checking features incorporated into the design of the bar codes. Although it is normally not used with a checksum character, an optional modulo 43 check character is defined for applications that require extra data security. It is beyond the scope of this note to describe how to calculate checksums.

For customers whose applications require checksums, we recommend using the Lexmark Bar Code Option. The Bar Code Option extends the capability of these bar code fonts with algorithmic bar codes that can print practically unlimited aspect ratios of many different bar code symbologies. It will automatically insert the start/stop digits, and can automatically calculate and insert a checksum digit if desired.