If I use the GetTextMetrics and GetTextExtentPoint32W then all the characters will have the same size.cy (and equal to textMetric.tmHeight). But when I use the TextOut method after that, all the generated bitmaps have different heights, for some reason? Also, CreateFont makes you pass in a height argument (which I pass in zero, the same for the width argument), is it related to that? When I said "glyphs start at the...", I mean does the generated bitmap clamp to the actual size that a glyph needs, are there any empty pixel rows or columns? Does the first column of the bitmap have a valid pixel in it or does it empty?