Grammar for the Kodak Inkjet Printer Data Stream Defines the default values. The BOX record defines the size of an area that is to be filled with a black or white fill pattern. The fill pattern is placed in the page bitmap using the current logical function as defined by a previous SLF record or by the default function (OR). After this record, the cursor position is at the current X position and the current Y position plus the height of the box. The height and width of the box are in the upright orientation. Some KODAK VERSAMARK printers support clipping of the image created by a BOX record. Clipping means that if part of the box falls outside the buffer, the part that is in the buffer is printed and the cursor is moved. The cursor is moved as if the entire image was printed, even though it may fall outside the buffer. See Appendix C to determine if your printer supports clipping for the BOX record. If clipping is not supported and part of the box falls outside the buffer, none of the box is printed and the cursor is not moved. In both cases (clipping supported and clipping not supported), a message is generated only if the image falls outside the limits set by the RCR record (or the default range if no RCR). Refer to the RCR record description. An unsigned binary value representing the height of the box in dots. The range depends on the printer and the PLR record. The height is measured down the length of the page in the Y direction when looking at the substrate in the direction it is moving. For example, hex 00 37 specifies a box height of 55 dots. An unsigned binary value representing the width of the box in dots. The range is printer and printhead dependent. For example, the range is 1-4096 for systems using four stitched 4-inch printheads and 1-1024 for systems with one 4-inch printhead. The width is measured across the width of the page in the X direction when looking at the substrate in the direction it is moving. For example, hex 06 A1 specifies a width of 1697 dots. A binary value that specifies the fill pattern. Hex 00 = white and hex 01 = black. The CBM record, which is interchangeable with the Image Bitmap (IBM) record, contains a compressed bitmap that is to be printed at the current cursor position according to the current logical function set by the last SLF record. The bitmap is placed on the page in the upright orientation. After this record, the cursor position is at the current X position and the current Y position plus the height of the bitmap. An unsigned binary value representing the height of the bitmap in dots. The range is printer dependent and also dependent upon the blocking of input data. The height is measured down the length of the page in the Y direction when looking at the substrate in the direction it is moving. For example, hex 00 37 specifies a bitmap height of 55 dots. An unsigned binary value representing the width of the bitmap in dots. The range is printer dependent. For example, the range is 1-4096 for systems using four stitched 4-inch printheads and 1-1024 for systems with one 4-inch printhead. The width is measured across the width of the page in the X direction when looking at the substrate in the direction it is moving. For example, hex 06 A1 specifies a width of 1697 dots. This field is not used and must contain all binary zeroes. Specifies the compression algorithm used to compress the bitmapped character data. Undefined or unsupported compression types will cause the imager to display an error message and stop printing. Reserved 32-bit Vertical Run Length Encoding (RLEV32) The meaning of these bytes depends on the compression type specified in bytes 10-11. The bitmap is always imaged upright into the frame buffer at the current position and according to the current logical function. The cursor position following this command will be left at the current X position and at the current Y position plus the height of the bitmap. Should the compressed bitmap contain more or less uncompressed data than what is specified by the Height and Width fields, the imager will display an error message and imaging will stop. The compressed bitmap begins at byte position 17 and is arranged in horizontal raster format compressed using the compression method specified in byte positions 11 and 12. Each row of the raster must be padded to the right with binary zeroes (before compression) to make an integral number of 32-bit segments. The width of the bitmap (byte positions 7 and 8) does not have to be a multiple of 32 bits but the bitmap raster row length does. A binary code that identifies the character defined in this record. This is the code that must be used in the input data to access this character for printing. The range is 0 to 255 for single byte fonts or 0 to 65535 for double-byte fonts. The bits in position 6 define options available for this character. Defines if this character is the font's default character. This character is not defined as this font's default character. This character is defined as this font's default character. If a default character is defined, it must be the first character defined in the font, or unexpected results may occur. The default character becomes the character used for all undefined characters, including character 00. Defines if the pattern for this character is continued in the next CCD record. The pattern for this character is not continued in the next CCD record. The pattern for this character is continued in the next CCD record. The continuation record looks identical to the previous record except that the pattern is different and the continuation bit is off unless the pattern is continued to the next CCD record. This field is unused and must contain all binary zeros. A binary number representing the width of the uncompressed character data to be combined into the RIP frame buffer. The range is 0 to 65535, although the practical size is limited by the page size and font memory limitations of the data station. A binary number representing the height of the uncompressed character data to be combined into the RIP frame buffer. The range is 0 to 65535, although the practical size is limited by the page size and font memory limitations of the data station. Each character may have a different height and width, eliminating the need to supply data to position the character inside the character cell. If the CCD has a width or height of zero, a blank character is defined. No data is combined into the frame buffer of the RIP for characters with a width and/or height of zero. A signed binary number that defines the number of dots to the left side of the bounding box of the character from the X position of the current cursor. The X offset moves relative to the font’s orientation. The range is -2,147,483,647 to 2,147,483,647, although useful values are limited by the page size of the RIP or Super RIP. A signed binary number that defines the number of dots to the top side of the bounding box of the character from the Y position of the current cursor. The Y offset moves relative to the font’s orientation. The range is -2,147,483,647 to 2,147,483,647, although useful values are limited by the page size of the RIP or Super RIP. A signed binary number that defines the direction and distance to the left side of the next character cell from the X position of the current character. The X escapement moves relative to the font’s orientation. The range is -2,147,483,647 to 2,147,483,647, although useful values are limited by the page size of the RIP or Super RIP. A signed binary number that defines the direction and distance to the starting position of the next character cell from the Y position of the current character. The Y escapement moves relative to the font’s orientation. The range is -2,147,483,647 to 2,147,483,647, although useful values are limited by the page size of the RIP or Super RIP. CCD records, which are interchangeable with Character Definition with Metrics (CDM) records, follow an SFM or FDM record and define each character in the font. The CCDs contain the bitmap patterns for the characters. Up to 256 characters can be defined for each FDM and up to 65,536 characters for an SFM. Usually, there is one CCD for each character. However, in some fonts, a continuation CCD is used to divide a character bitmap into two or more records if it is necessary to limit the size of the records (because of block length restrictions or other reasons). The character bitmap can be broken only at the end of a row. When continuation CCDs are used, all fields up to the bitmap pattern field must be the same in each CCD for the character except for the continuation bit in the last CCD. When an SFM or FDM is received, the printer defines null and default characters in the following manner. When an SFM or FDM is first processed by the printer, all characters in the font are set as null characters. If the first CCD received has the default bit set, then the character in this record is used as the default character. The default character is used for all undefined characters in the font, including character 00. Subsequent CCDs then redefine the characters for their respective character identifiers. If the first CCD does not have the default character bit set, then all characters remain null until redefined by subsequent CCDs. A null character has zero width and height, zero X and Y escapement, and takes no space when printed. Characters that cannot be compressed into a single CCD record must be continued in one or more additional consecutive CCD records. The compressed data must be divided among the continued records so that the smallest unit of data is not divided between two CCD records. For example, a CCD record compressed with RLEV32 must contain an integral number of 32-bit words in the data pattern and a “run” cannot be divided between multiple CCDs. Should the character definition (including any continuation) contain more or less uncompressed data than what is specified by the Height and Width fields, the imager will display an error message and the font download will stop. A character definition must be completed for a given logical input RIP before any other character definitions are started. This field is unused and must contain all binary zeros. Specifies the compression algorithm used to compress the bitmapped character data. Undefined or unsupported compression types will cause an error message to be displayed and the font download will stop. Reserved 32-bit Vertical Run Length Encoding (RLEV32) The meaning of these bytes depends on the compression type specified in bytes 30-31. Only the upright orientation is supported. Use of rotated characters in this record will produce incorrect results. The character pattern data for upright characters is stored compressed and then decompressed when imaged. During imaging, the high order bit of the first decompressed byte/word controls the dot in the top left corner of the character bounding box, and subsequent bits in the same decompressed byte/word control adjacent dots in left to right order. The compressed character pattern begins at byte position 37 and is arranged in horizontal raster format compressed using the compression method specified in byte positions 31 and 32. Each row of the raster must be padded to the right with binary zeroes (before compression) to make an integral number of 32-bit segments. The width of the uncompressed character data (byte positions 9 and 10) does not have to be a multiple of 32 bits but the raster row length does. CDM records, which are interchangeable with CCD records, follow an SFM or FDM record and define each character in the font. The CDMs contain the bitmap patterns for the characters. Up to 256 characters can be defined for each FDM and up to 65,536 characters for an SFM. Usually, there is one CDM for each character. However, in some fonts, a continuation CDM is used to divide a character bitmap into two or more records if it is necessary to limit the size of the records (because of block length restrictions or other reasons). The character bitmap can be broken only at the end of a row. When continuation CDMs are used, all fields up to the bitmap pattern field must be the same in each CDM for the character except for the continuation bit in the last CDM. When an SFM or FDM is received, the printer defines null and default characters in the following manner. When an SFM or FDM is first processed by the printer, all characters in the font are set as null characters. If the first CDM received has the default bit set, then the character in this record is used as the default character. The default character is used for all undefined characters in the font, including character 00. Subsequent CDMs then redefine the characters for their respective character identifiers. If the first CDM does not have the default character bit set, then all characters remain null until redefined by subsequent CDMs. A null character has zero width and height, zero X and Y escapement, and takes no space when printed. A signed binary number that defines the direction and distance to the left side of the next character cell from the X position of the current character. The X escapement moves relative to the font’s orientation. The range is -2,147,483,647 to 2,147,483,647, although useful values are limited by the page size of the RIP or Super RIP. A signed binary number that defines the direction and distance to the starting position of the next character cell from the Y position of the current character. The Y escapement moves relative to the font’s orientation. The range is -2,147,483,647 to 2,147,483,647, although useful values are limited by the page size of the RIP or Super RIP. This field contains the bitmap pattern for the character defined by this CDM. Each row of the pattern contains an integral number of 16-bit segments. The number of rows is determined by the height field (bytes 11-12). The number of 16-bit segments per row is determined by the width field (bytes 9-10). For example, if the height is 21 and the width is 28, this field must contain 21 rows consisting of two 16-bit segments each (42 16-bit segments or 84 bytes). The high-order bit in this field (bit hex 80 in byte position 29) controls the dot in the top left corner of the character bounding box. Subsequent bits in the same segment control dots in a left-to- right order in the first row of the character. The first dot in the second row of the character is controlled by the high-order bit of the nth 16-bit segment, where n is the number of segments per row plus one. Each row must be padded to the right with binary zeroes. If the character pattern will not fit in a block, a continuation CDM must be used. An integral number of rows must be used in each CDM record. CDR records follow the FDR record and define each character in the font. The CDRs contain the bitmap patterns for the characters. Up to 256 characters can be defined for each FDR. Usually, there is one CDR for each character. However, in some fonts, a continuation CDR is used to divide a character bitmap into two or more records if it is necessary to limit the size of the records (because of block length restrictions or other reasons). The character bitmap can be broken only at the end of a row. When continuation CDRs are used, all fields up to the bitmap pattern field must be the same in each CDR for the character except for the continuation bit in the last CDR. As an option, a single CDR may immediately follow an SFD to define the default character for any undefined character in the super font. When an FDR is received, the printer defines null and default characters in the following manner. When an FDR is first processed by the printer, all 256 characters in the font are set as null characters. If the first CDR received has a hex 00 in the Character Identifier field, then the character in this record is used as the default character for character identifiers hex 01 through FF (character 00 remains a null character). Subsequent CDRs then redefine the characters for their respective character identifiers. Character 00 can be redefined from the null character in this manner. If the first CDR does not have a hex 00 in the Character Identifier field, then all characters remain null until redefined by subsequent CDRs. A null character has zero width, and takes no space when printed. A binary code that identifies the character defined in this record. This is the code that must be used in the input data to access this character for printing. The range is 0 - 255. A binary code that identifies a character in the font that has a bitmap pattern identical to this character. If 2 characters are the same, it is not necessary to repeat the bitmap pattern. The "Equivalent" bit in byte position 8 must be set for this field to be in effect. If the equivalent bit is set, the character defined in this field is part of the font currently being defined unless another font is identified in byte 9 or in bytes 9 and 10. If byte 9 identifies a regular font, then byte 10 (if present) is ignored. If byte 9 identifies a super font, then byte 10 must be present and identifies the subfont. In any case, the character must have been previously loaded in the same RIP. A binary number that specifies the number of 16-bit segments required to define one horizontal row of the character bitmap. The final segment does not have to be completely used. The "Final segment width" bits in position 8 define how many bits in the final segment are used. All binary zeroes (hex 00) in position 7 indicate a null character with zero width. The bits in position 8 define options available for this character. Bit 0 is the high order bit (hex 80) and bit 7 is the low order bit (hex 01). Bit assignments are as follows. The bitmap pattern for the character defined by this CDR. The pattern data consists of m rows, each containing s 16-bit segments, where m is the font height (row count) defined in bytes 5-6 of the FDR, and s is the segment count defined in byte 7 of the CDR. Each row must be padded to the right with binary zeroes. If the equivalent bit in byte position 8 is set, this field can contain font or super font identifiers. Refer to the description for the Equivalent Character Identifier field (byte position 6). If the character pattern will not fit in a block, a continuation CDR must be used. An integral number of rows must be used in each CDR record. The CSR record restores the cursor position to the last position stored by a CSS record for the specified number. The restore number in this record references the save number in the CSS record. If a cursor position was not stored for the number specified in the CSR record, the cursor is set to the default position (0,0). The CSR record does not reset the saved cursor position it restores. Successive CSR records for the same position number, without an intermediate CSS record, set the cursor to the same saved position. A binary number that identifies the saved cursor position. The range is 0-15, allowing 15 cursor positions to be restored. Restore number 0 always sets the cursor position to 0,0. SDC record without security Security version of the SDC record SOD record without security Security version of the SOD record The whole file.