Reads the header and directory (Sections 5-6), which per the spec are
"small and expected to be read once and kept in memory". Since the
directory's size depends on the header (W x H entries) and the header's
size depends on the attribution string length, this starts with a small
probe read and grows it until both parse cleanly -- never reading more of
the file than these two small, fixed-at-load-time sections actually need.
Reads the header and directory (Sections 5-6), which per the spec are "small and expected to be read once and kept in memory". Since the directory's size depends on the header (W x H entries) and the header's size depends on the attribution string length, this starts with a small probe read and grows it until both parse cleanly -- never reading more of the file than these two small, fixed-at-load-time sections actually need.