From 4e20a499d4a123a4746801ad1f18b3ae0033dbe9 Mon Sep 17 00:00:00 2001 From: Nunuhara Cabbage Date: Thu, 13 Aug 2026 20:14:54 -0700 Subject: [PATCH] parts: use ceilf(ch->advance) for text layout Fixes an issue in English version of Rance 9 where item description text was overly compressed. Now ChipmunkSpriteEngine.SP_GetFontWidth returns the same values as the official engine. There are still text layout bugs with item descriptions in Rance 9 (affecting both JP and EN versions), but this at least makes the text readable. --- src/hll/ChipmunkSpriteEngine.c | 2 +- src/parts/render.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/hll/ChipmunkSpriteEngine.c b/src/hll/ChipmunkSpriteEngine.c index c656578..796a956 100644 --- a/src/hll/ChipmunkSpriteEngine.c +++ b/src/hll/ChipmunkSpriteEngine.c @@ -250,7 +250,7 @@ static bool ChipmunkSpriteEngine_SP_GetFontWidth(struct string *text, int *width return true; } - *width = gfx_size_text(&text_sprite_ts, text->text); + *width = ceilf(gfx_size_text(&text_sprite_ts, text->text)); return true; } diff --git a/src/parts/render.c b/src/parts/render.c index 82866e7..f700e8a 100644 --- a/src/parts/render.c +++ b/src/parts/render.c @@ -133,8 +133,9 @@ static void parts_render_text(struct parts *parts, struct parts_text *t) struct parts_text_char *ch = &line->chars[j]; mat4 mw_transform = WORLD_TRANSFORM(ch->t.w, ch->t.h, x, y); Rectangle r = { 0, 0, ch->t.w, ch->t.h }; - parts_render_texture(&ch->t, mw_transform, &r, blend_rate, add_color, multiply_color, 0, parts->alpha_clipper_parts_no); - x += ch->advance; + parts_render_texture(&ch->t, mw_transform, &r, blend_rate, add_color, + multiply_color, 0, parts->alpha_clipper_parts_no); + x += ceilf(ch->advance); } x = parts->global.pos.x + t->common.origin_offset.x; y += line->height + t->line_space;