Fix y offset in BakeFontBitmap
Compute Y offset more accurately and the way it is required in renderer.c. Instead of returning y offset wrt the baseline position returns it wrt the top position (the baseline plus the font's ascent).
This commit is contained in:
parent
4c6e15b66c
commit
0389bd000a
|
@ -68,7 +68,7 @@ int FontRendererBakeFontBitmap(FontRenderer *fr_, int font_height,
|
||||||
glyph_info.x1 = x_next_i;
|
glyph_info.x1 = x_next_i;
|
||||||
glyph_info.y1 = pixels_height - (y_baseline + descender_px - pad_y);
|
glyph_info.y1 = pixels_height - (y_baseline + descender_px - pad_y);
|
||||||
glyph_info.xoff = 0;
|
glyph_info.xoff = 0;
|
||||||
glyph_info.yoff = -ascender * font_height;
|
glyph_info.yoff = -pad_y;
|
||||||
glyph_info.xadvance = x_next - x;
|
glyph_info.xadvance = x_next - x;
|
||||||
#if 0
|
#if 0
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
|
|
|
@ -129,14 +129,8 @@ retry:
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: consider if this is still needed.
|
/* adjust glyph's xadvance */
|
||||||
/* adjust glyph yoffsets and xadvance */
|
|
||||||
int ascent, descent, linegap;
|
|
||||||
stbtt_GetFontVMetrics(&font->stbfont, &ascent, &descent, &linegap);
|
|
||||||
float scale = stbtt_ScaleForMappingEmToPixels(&font->stbfont, font->size);
|
|
||||||
int scaled_ascent = ascent * scale + 0.5;
|
|
||||||
for (int i = 0; i < 256; i++) {
|
for (int i = 0; i < 256; i++) {
|
||||||
set->glyphs[i].yoff += scaled_ascent;
|
|
||||||
set->glyphs[i].xadvance = floor(set->glyphs[i].xadvance);
|
set->glyphs[i].xadvance = floor(set->glyphs[i].xadvance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue