The 88x31 pixel button is a classic relic of early web design, often used for small advertisements or navigational links. While most modern iterations of these buttons use simple animations to grab attention, a new project pushes this concept to its technical limit by encoding the entire text of Herman Melville's *Moby Dick* into a single, scrolling GIF. The project demonstrates that while the 88x31 resolution is extremely restrictive—limiting standard fonts like Arial to roughly eleven words at a time—it is entirely possible to render long-form literature if the right tools and typography are employed.
To achieve this, the author utilizes a specialized font called TomThumb, which is designed for legibility at extremely small sizes (as small as 3x3 pixels). Because ImageMagick, the primary tool used for image generation, is not optimized for complex text layout, the project relies on a pipeline of POSIX utilities to prepare the text. The process involves using `cat` to feed the text into `tr` to normalize newlines into spaces, and then using `fold` to wrap the text into lines of exactly 22 characters. This ensures that the text fits the 88x31 dimensions while avoiding the splitting of words in half. Additional cleanup using `sed` and `grep` is used to remove non-ASCII characters that might interfere with the formatting.
The final conversion into a GIF is handled by ImageMagick's `convert` command, which takes the formatted text and generates a frame-by-frame animation. To refine the output, the author applies a crop to remove unwanted margins and sets a 600-millisecond delay between frames to ensure readability. A Python script is also employed to calculate and inject leading spaces, centering the text within the button's boundaries. The resulting file is a 4.2 MB GIF that takes approximately 19 hours to play in its entirety, serving as a high-effort proof of concept for the limits of the 'Small Web' aesthetic.
One significant technical constraint noted in the process is the behavior of the `fold` command with multibyte characters, which can cause garbled text if not properly sanitized. Furthermore, while the GIF format supports a massive number of frames and high resolutions, the 88x31 constraint forces a trade-off in visual flair for the sake of functional legibility. The project highlights how a combination of simple command-line tools and specific typographic choices can turn a massive literary work into a functional, albeit extremely slow, piece of web art.
