
Default Font for Everything, v0.0 for Minecraft 1.8.4
by Kaposvári Tamás

-= Installation instructions =-

[DISABLED. Only the assets remain for archival purposes.]
- Unzip archive anywhere
- Run install.bat (Windows) or install.sh (Linux et al.); follow instructions on screen
- Run Minecraft launcher; make a new profile (optional)
- Edit the profile to use the version named 1.8.4_DF4E (or whatever you named it in step 2)
- Launch game

-= Resource packs =-

For rendering, the mod uses the .png files in the /assets/minecraft/textures/font/default
folder. They hold up to 16×16=256 glyphs, in Unicode order. They may be any size, but since
they are internally divided up into 16×16 cells, each being 8×8 units, it's practical that
their dimensions be multiples of 128 pixels. For SD fonts, 1 unit is 1 pixel, vertically as
well as horizontally.

Cells are ordered filename first, row second and column last; one cell contains up to one
glyph, pertaining to the appropriate Unicode codepoint.

The binary file def_sizes.bin in /assets/minecraft/font stores glyph width information.
Each byte of it corresponds to one cell of the font; the first bit is set if the character
should be rendered using the (new) default font rather than Unifont (the original fallback
font with high resolution and thin strokes). The next three bits define the position of the
glyph's insertion point - that is, any part of the glyph before this point will overlap the
previous glyph in a text. Most of the default glyphs' insertion points are at position 0.

The remaining half of the byte marks the glyph's right side, as measured from the left edge
of the cell that contains the glyph. This includes the desired spacing between this glyph
and the next; thus, a glyph that has its insertion point is right at the left edge of the
cell, has a width of 5 units and a 1-unit space after it (as have most Latin letters), will
have its metrics written as 1000 0110 in binary, or 86 in hex.

The mod is able to handle glyph widths exceeding the previous maximum, 8 units, if the cell
that the glyph overflows into is otherwise empty; if it's not, the other glyph will include
the wide glyph's second half. If the glyph's right side is defined as 15 (1111 or F), and
the first bit of the next cell's metrics isn't set (meaning that it's "unoccupied"), then
the rendering method will take the non-existent next glyph's right side into account. This
way, up to 128 units wide (or rather, long) glyphs may be defined.
