build_ascii_atlas() used to scale every glyph to fill its cw x ch cell, so uppercase and lowercase had the same height and narrow shapes such as i/l/o became solid blobs. Use one uniform scale ((ch - 2) / units_per_em) for the whole font, keep the real cap/x-height/descender ratios, and only squeeze glyphs whose ink is wider than cw - 1. Center by ink width and place the baseline at ch - 4.