aboutsummaryrefslogtreecommitdiff
path: root/font.c
diff options
context:
space:
mode:
authorRiley Beckett <rbeckettvt@gmail.com>2025-10-17 18:53:09 -0400
committerRiley Beckett <rbeckettvt@gmail.com>2025-10-17 18:53:09 -0400
commit2d8507c060a7b7de6f0a714ad98d99b37856d8af (patch)
tree8e81e48c69539489ba22cea5a6abdbf675eb9eb1 /font.c
parentec8c94dc43db11c79ef58b212cacfadec09bb59c (diff)
shift text up
Diffstat (limited to 'font.c')
-rw-r--r--font.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/font.c b/font.c
index dd65a6a..dc8f03c 100644
--- a/font.c
+++ b/font.c
@@ -70,6 +70,7 @@ void atlas_init(client_state* state) {
if (FT_Load_Char(state->ft_face, i, state->load_flags)) {
fprintf(stderr, "Failed to render character %c\n", (char)i);
}
+
state->atlas.width += state->ft_face->glyph->bitmap.width;
state->atlas.height = MAX(state->atlas.height, state->ft_face->glyph->bitmap.rows);
@@ -80,6 +81,11 @@ void atlas_init(client_state* state) {
metric->bitmap_height = state->ft_face->glyph->bitmap.rows;
metric->bearing_x = state->ft_face->glyph->bitmap_left;
metric->bearing_y = state->ft_face->glyph->bitmap_top;
+
+ state->atlas.vert_shift = MAX(state->atlas.vert_shift, metric->bearing_y - metric->bitmap_height);
+
+ // printf("%c: advance: (%f, %f), bitmap: (%u, %u), bearing: (%d, %d)\n",
+ // (char)i, metric->advance_x, metric->advance_y, metric->bitmap_width, metric->bitmap_height, metric->bearing_x, metric->bearing_y);
}
}
@@ -120,12 +126,12 @@ void atlas_create_texture(client_state* state) {
0,
x,
0,
- state->ft_face->glyph->bitmap.width,
- state->ft_face->glyph->bitmap.rows,
+ metric->bitmap_width,
+ metric->bitmap_height,
GL_RED,
GL_UNSIGNED_BYTE,
state->ft_face->glyph->bitmap.buffer);
- x += state->ft_face->glyph->bitmap.width;
+ x += metric->bitmap_width;
metric->texture_x_end = (float)x / state->atlas.width;
}
}