SECTION F.3
1039
Hint Tables
F.3 Hint Tables
The core of the linearization information is stored in two or more hint tables, as
indicated by the attributes of the primary hint stream (see Section F.2.5, “Hint
this section.
There can be additional hint tables for application-specific data that is accessed
by plug-in extensions. A generic format for such hint tables is defined; see Section
to the application; see Appendix E for further information.
Each hint table consists of a portion of the stream, beginning at the position in
the stream indicated by the corresponding stream attribute. Additionally, there is
a required page offset hint table, which must be the first table in the stream and
must start at offset 0. (If there is an overflow hint stream, its contents are to be ap-
pended seamlessly to the primary hint stream; hint table positions are relative to
the beginning of this combined stream.) In general, this byte stream is treated as a
bit stream, high-order bit first, which is then subdivided into fields of arbitrary
width without regard to byte boundaries. However, each hint table begins at a
byte boundary.
The hint tables are designed to encode the required information as compactly as
possible. Interpreting the hint tables requires reading them sequentially; they are
not designed for random access. The client is expected to read and decode the
tables once and retain the information for as long as the document remains open.
A hint table encodes the positions of various objects in the file. The representa-
tion is either explicit (an offset from the beginning of the file) or implicit (accu-
mulated lengths of preceding objects). Regardless of the representation, the
resulting positions must be interpreted as if the primary hint stream itself were
not present. That is, a position greater than the
hint stream offset
must have the
hint stream length
added to it to determine the actual offset relative to the begin-
ning of the file. (The hint stream offset and hint stream length are the values
offset
1
and
length
1
in the
H
array in the linearization parameter dictionary at the
beginning of the file.)
The reason for this rule is that the length of the primary hint stream depends on
the information contained within the hint tables, which is not known until after