The ID header must be the first packet in a Kate stream. It carries information about the stream.
Here is a table description of the format of the ID header:
* Kate bitstream version 0.3 * * Default field type: LITTLE ENDIAN unsigned integer 0 1 2 3 | 0 1 2 3 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | packtype | Identifier char[7]: 'kate\0\0\0' | 0-3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | kate magic continued | 4-7 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | reserved - 0 | version major | version minor | num headers | 8-11 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | text encoding | directionality| reserved - 0 | granule shift | 12-15 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | cw sh | canvas width | ch sh | canvas height | 16-19 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | reserved - 0 | 20-23 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | granule rate numerator | 24-27 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | granule rate denominator | 28-31 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | language (NUL terminated) | 32-35 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | language (continued) | 36-39 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | language (continued) | 40-43 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | language (continued) | 44-47 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | category (NUL terminated) | 48-51 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | category (continued) | 52-55 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | category (continued) | 56-59 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | category (continued) | 60-63 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
and for a description of those fields:
packtype
the packet type for this header - always 0x80kate
magic
the 7 byte string "kate\0\0\0", as all other Kate headersversion
major
the major version number of the bitstreamversion
minor
the minor version number of the bitstreamnum
headers
the number of header packets present in this streamtext
encoding
the default encoding used by text (usually 0, UTF-8)directionality
the default directionality of the textgranule
shift
the number of bits in the granule positions reserved for storing the offset partcw
sh
(from bitstream 0.2) the number of bits to left shift the canvas
width
field to compute the original canvas width canvas
width (from bitstream 0.2) the number to shift left by cw
sh
to compute the original canvas widthzero is a valid width, and represents an unset width
ch
sh
(from bitstream 0.2) the number of bits to left shift the canvas
height
field to compute the original canvas height canvas
height (from bitstream 0.2) the number to shift left by ch
sh
to compute the original canvas heightzero is a valid height, and represents an unset height
granule
rate
numerator
the numerator of the fraction representing how many granule units represent a second (from bitstream 0.2)granule
rate
denominator
the denominator of the fraction representing how many granule units represent a secondlanguage
the default language of the text in this stream (will be NUL terminated)an empty string is a valid language, and represents an unset language
category
the category of the text in this stream (will be NUL terminated)an empty string is a valid category, and represents an unset category
All fields marked as "reserved - 0" should be set to zero when encoding a stream with this version of the bitstream format. However, if decoding a stream encoded with a version of the bitstream format with the same bitstream major version but a higher bitstream minor version, those fields may be non zero, if they were subsequently allocated to carry additional information.