There are three formats of character-translation tables available for use. The first is a single byte-to-byte translation used for simple remappings. The second is a single byte-to-two bytes translation, where the second character is used to overstrike the first. The DI_BKSP_OK flag determines how the cursor should be repositioned to overstrike the second character. The third allows a single byte-to-variable length string that may contain commands to change symbol sets, or whatever else is necessary, to create the desired character. This difference between these formats is transparent to the user, but UniTool creates the character-translation table in the format resulting in the smallest file size depending upon the actual translations specified by the user. Any printer commands sent from the CTT cannot change the permanent state of the printer.
typedef struct {
WORD wType; // indicates type of translation table.
BYTE chFirstChar;
BYTE chLastChar;
union
{
short psCode[1];
BYTE bCode[1];
BYTE bPairs[2][1];
} uCode;
} TRANSTAB;
Member | Description |
wType | Specifies the type of translation table. | ||
Value | Meaning |
CTT_WTYPE_COMPOSE | uCode is an array of 16-bit offsets from the beginning of the file pointing to the strings to use for translation. The length of the translated string is the difference between the next offset and the current offset. Please note that an additional offset is needed (dfLastChar + 1) to provide a means to read the length of the string for the translation of the last character. |
CTT_WTYPE_DIRECT | uCode is a byte array of one-to-one translation table from chFirstChar to chLastChar. |
CTT_WTYPE_PAIRED | uCode contains an array of paired, unsigned bytes. If only one character is needed to do the translation, then the second byte is zero, otherwise the second byte is struck over the first byte. |
chFirstChar | First character in character-translation table. |
chLastChar | Last character in character-translation table. |