Appendix F - Deviations

Code 93 uppercase vs. lowercase

The Forms and Bar Code Card firmware converts any Code 93 lowercase input to uppercase before submission to the BCE. This firmware generates the proper uppercase characters within the bar code.

Notes:

Codabar uppercase vs. lowercase

The Forms and Bar Code Card firmware converts any Codabar lowercase start and stop input to uppercase before submission to the BCE. This firmware generates the proper uppercase start and stop bar code characters.

Notes:

Maximum encodable character length

The BCE allocates memory for a requested bar code on a per-symbology basis. It does not allocate memory on a symbol-by-symbol basis as it builds the bar code. Rather, it allocates the entire memory block needed at once for each bar code it generates. It uses this technique to reduce the overhead of memory allocation and ensure good performance.

Because the BCE allocates a finite amount of memory per bar code, input data with a large amount of encodable data generates a garbled bar code image. The image does not have well-formed bars and spaces, or sometimes, the data generates a code 19 NotEnoughMemory error.

The commercially viable limit for a typical one-dimensional bar code is 20–25 characters. Large bar codes may not fit on the page, or the reliability of the scan may decline with a large amount of encoding data. However, the BCE still attempts to encode this data until the image fails. There is no warning or error associated with garbled images generated by a large amount of data.

The maximum amount of input data is shown in the table. This table is just a guide and changes depending on the following assumptions:

Symbology

Typeface

Maximum characters

Industrial 2 of 5

24650T

388

Code 3 of 9

24670T

339

Code 3 of 9 extended

24680T

339

MSI

24760T

454

MSI with mod10 check digit

24761T

453

MSI with mod10 and mod10 check digit

24762T

452

MSI with mod11 and mod10 check digit

24763T

452


Note:  If bar code image corruption occurs when a large amount of data is encoded, then reduce the amount of encoded data. The user must also change to a more capable bar code symbology.

4-State postal widths

The BCE creates 4-State postal images that are slightly different from HP BarDIMM Pro and Forms and Bar Code Card images. However, a change in the BCE to address this difference may be implemented in a later version.

Note:  Exact size compatibility of certain 4-State bar code images with previous Lexmark bar code options is not guaranteed. However, the proper order and placement of the bars and spaces is the same, and the bar code also scans correctly. If the bar code image does not fit within the available space, then resize it to allow the placement of current and previous bar code images. You can also specify the number of rows and columns using the available PCL or PostScript emulation controls. If the data stream controls are adjusted, then the corresponding image is the same on both current and previous bar code products. The image also fits within the available space.

HRT widths and heights

The BCE uses the FreeType font renderer with custom SuchyMIPS-generated fonts to produce the HRT on bar codes. Sometimes, the HRT may differ in size or may not be positioned exactly as on HP BarDIMM Pro or Forms and Bar Code Card. However, the HRT should be readable, legible, and approximately the same as the target platforms.

PDF417 image widths and heights

The BCE generates PDF417 images based on the algorithms found in the AIM PDF417 specification. The implementation of a PDF417 image can differ between manufacturers, depending on the interpretation of the specification.

Because of this specification, some character length and ECC level combinations can produce images that differ from HP BarDIMM Pro or Forms and Bar Code Card. These images differ slightly in the number of rows and columns.

A typical example is a PDF417 image with the following characteristics:

The results are the following:

This deviation is rare. When it does occur, it should not result in the loss of data that can be scanned.

Note:  Exact size compatibility of certain PDF417 bar code images with previous Lexmark bar code options is not guaranteed. However, the bar code still scans correctly. If the bar code image does not fit within the available space, then resize it to allow the placement of current and previous bar code images. You can also specify the number of rows and columns using the available PCL or PostScript controls. If the data stream controls are adjusted, then the corresponding image is the same on both current and previous bar code products. The image also fits within the available space.

MaxiCode capacity

The AIM MaxiCode specification defines the codewords that can be encoded. For more information, see Mode: (Default = 02x) .

The original Forms and Bar Code Card encodes more than the maximum amount allowed by the AIM specification, but users must never exceed these values. Also, not all bar code readers can decode data more than the maximum allowed in the AIM MaxiCode specification.

Bar code horizontal alignment

Some UPC and EAN bar codes do not start at the existing PCL emulation cursor position. These bar codes are shifted up to 3–4 mm on the left side and up to 2 mm on the right side. These instances are due to the presence of start characters, which may or may not shift the bar code (and HRT) to the right.

If you allocate space for these particular bar codes, and they do not fit on the right side, then there are two options:

PDF417 capacity

The introduction of the AIM PDF417 specification defines the maximum data characters per symbol (at ECC0) for PDF417:

The total number of codewords in the data region of a single PDF417 symbol cannot exceed 928.

All input data must conform to the AIM PDF417 specification, and any input data over the maximum length must be truncated and discarded. The firmware allows and truncates a maximum of 2710 digits or 1850 text characters. The remaining maximum data is submitted to the BCE to be rendered.

However, extra checking code is required to truncate excess data while encoding codes that are within the limit.

The original Forms and Bar Code Card encodes more than the maximum amount allowed by the AIM specification, but users must never exceed these values. Also, not all bar code readers can decode data more than the maximum allowed in the AIM PDF417 specification.

MaxiCode separators and structured appends

Note:  For more information, see the AIM MaxiCode specification.

A valid MaxiCode data separator for MaxiCode data blocks is either of the following:

MaxiCode typeface call method

A structured append is covered in the AIM MaxiCode specification, which allows up to eight MaxiCode symbols to be chained together as one. However, there are no bar code readers that can decode combined bar code series.

SuchyMIPS and HP BarDIMM Pro support structured appends so they can parse the structured append, but they do not fully implement it.

A structured append consists of four bytes:

For example, the only valid MaxiCode that is supported is a single symbol, specified as the following:

1,1,01234567...... where 1,1, represents the structured append and 01234567.... represents the rest of the MaxiCode data structure.

The HP BarDIMM Pro specification version 3.0 and later is consistent with this PCL emulation data stream calling sequence:

<Esc>(s24800T1,1, x ,01234567..... where x is either a 2 or 3, corresponding to MaxiCode Mode 2 or Mode 3.

Mode 2 encodes numeric-only data, and Mode 3 allows a reduced amount of alphanumeric data.

The mode of the MaxiCode is specified within the input data after the typeface command 24800T . If the two extra bytes (Mode 2 or 3 plus a separator) are included in the input data, then the BCE shows an error.

Users must add more parsing that examines input data:

If the extra bytes are found, then remove them, and pass the four structured append bytes and the rest of the input data to the BCE. This method still allows existing HP-coded data streams to work on HP BarDIMM Pro, while allowing Forms and Bar Code Card to work correctly.

MaxiCode block call method

The minimum amount of input data to invoke a MaxiCode starts with this command:

1B 26 78 33 57

00 02

This command includes the following:

MaxiCode separator change

A valid MaxiCode with any encodable data requires a second separator for the PCL emulation block call, and is placed after the number-of-labels field.

If the four-byte structured append is specified alone, then Forms and Bar Code Card prints a valid MaxiCode symbol that is empty. Depending on the scanner used, Forms and Bar Code Card may not produce a valid scan.

If an outdated three-byte structured append is specified alone, then Forms and Bar Code Card shows an error.

Encoding limits for bar codes

This deviation concerns firmware-imposed limits on certain bar codes. These limits are less than the original Forms and Bar Code Card, but are needed to prevent corruption of bar code images.

This table details the new limits:

Symbology

Parameter

New limit

ISBN

Bar widths

0x0100

Swiss Post

Bar heights

0x1000

ISBN

Bar heights

0x2000

ISSN

Bar heights

0x2000

ISBN

Space widths

0x0100

ISSN

Bar widths

0x0100

ISSN

Space widths

0x0100


Encoding limits for Codabar bar codes

In the absence of start and stop characters, if users encode a Codabar bar code with non-numeric characters, then !Err: 12 Invalid Character appears.

When using the optional start and stop characters, characters between the start and stop characters must be numeric, or any of the following non-numeric characters: - $ : / +

Otherwise, !Err: 12 Invalid Character appears.

If a user encodes a Codabar bar code with only one numeric character, then a Codabar bar code is generated. However, if a user encodes a Codabar bar code with no characters, then !Err: 15 String too Short appears.

PostScript emulation barcodepath operator

The barcodepath operator is used to obtain the outline of the bar code that results from doing a barcodeshow with the same arguments. Because all bar codes are now generated as images, the barcodepath operator does not return any useful information.

Any further use of the barcodepath operator must be discontinued.

Uploading formsets when the OFIS data filter is disabled

When the OFIS data filter is disabled, uploading formsets that contain OFIS tags to Forms Manager results in either of the following:

French Postal 3 of 9 dimensions

This bar code is based on Code 3 of 9 with a checksum digit, and is used on registered letters.

The BCE and HP BarDIMM Pro generate a default 3 of 9 bar code that is 79 mm wide. Forms and Bar Code Card generates a smaller bar code that is about 63 mm wide.