How to use FNC4 on a Code 128 Barcode in ZPL II?

Hi all,

I am currently trying to print Code 128 barcodes with extended ASCII characters. When searching the internet I found someone claiming the following:

"Extended ASCII" characters with byte values from 128 to 255 can indeed be represented in Code 128 encodation by using the special FNC4 function character. For general use (in open applications) it is necessary that such characters belong to the ISO-8859-1 (Latin1) character set.


A single FNC4 character acts as a shift to the extended character set for the next character whereas two consecutive FNC4 characters act as a latch. The effect is to toggle the high bit (basically to add or subtract 128) of the 8-bit ASCII value of the affected characters.

In your example "QuiÑones" the character "Ñ" is represented by byte value 209 in the default ISO-8859-1 character set, so that's 128+81. ASCII 81 resolves to "Q", so you require the sequence FNC4 Q to represent "Ñ".

TL:DR;  Using the FNC 4 character it is possible to encode characters up to ASCII 256 (extended ASCII).

According to the Programming Guide for ZPL II - Page 77 one can use an invocation character within the field data (^FD) string associated with the barcode, as seen below:

fnc4.PNG

So let's assume I have the following ZPL (special character "ä" marked red):

^XA

^CI28
^FO0,0
^BY2,3,100
^BCN,100,N,N,N
^FD
Dänemark
^FS
^XZ

The Programming Guide states that if the start character is omitted for the field data, Subset B is being assumed. So according to the above Table 7, the invocation character ">6" should represent the FNC 4 character.

However, I couldn't find any way to use it as a shift to the extended ASCII character set as described above.

I would much appreciate if someone could shed some light onto how to correctly use it.

Best Regards