Printing barcodes is a very tricky task. Even on high resolution devices, rounding errors can heavily decrease the legibility of barcodes. A typical bar width for a barcode is in the range of 0.5 mm. On a 600 dpi device (actual pixel density 609,6), this corresponds to just 11-12 pixels. If you're working in absolute coordinates you'll end up with a bar code that has bars between 0.45 and 0.55 mm (approximately +-1 pixel error). While this barcode may still be legible, its usability under heavy load in high performance environments will be quite restricted.
To get a reliable grade for barcode quality, barcodes are verified according to ISO/IEC 15416 (see http://en.wikipedia.org/wiki/Barcode#Quality_control_and_verification), receiving a grade between F (worst) and A (best). Often, a grading result of at least B is required by barcode consumers. The verification process includes the recording of a "Scan Reflectance Profile" and the thorough analysis of this scan, including a number of parameters such as Decodeability, Modulation etc.
Through a cooperation with REA, a renown vendor of barcode verifiers, we were able to grade and improve our barcodes. So what we did was
- Analyzing the current grading results
- Changing the rendering algorithm
- Intoducing a factor to account for device specific "overprinting"
- Verifing the effects of these changes through a second analysis
During the process we changed the rendering algorithm to optionally match the bars exactly to the device pixels, eliminating all rounding effects this way. Each step of this change was closely monitored and verified using the equipment REA provided us with.
This leads to a great improvement in the decodability of the barcodes and improves the typical grading result from a "C" in LL19 to an "A" or at least "B" in LL20 where the limiting factor is basically depending on the paper and printer quality for most barcodes. When printing with high quality equipment, a Grade "A" is usually achievable. The following shot shows part of the calibration sheet for the 2/5 interleaved symbology before and after the optimization. The parameters are – from top to bottom: Decoding, Symbol Contrast, Edge Contrast, Modulation, Rmin/Rmax, Defects and Decodeabilicy. The Grading result improved from "C" before to "A" after.
Another improvement is the introduction of a pixel reduction parameter. Especially ink jet printers (albeit some laser printers, too) "overprint" their dots slightly depending on paper quality and other physical parameters. This new parameter allows to take this effect into account and reduces bar widths by the given amount of pixels. This way, the printing result can be optimized exactly for the used hardware.
Both new features are combined in a new property that's available for barcodes in List & Label 20: