From 01a81b926ec38c83b719071b2d7327e33540562d Mon Sep 17 00:00:00 2001 From: Paula Date: Sat, 26 Sep 2026 17:49:01 -0300 Subject: [PATCH] Fix padding on fnt file --- client/renderer/text.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/client/renderer/text.ts b/client/renderer/text.ts index a16255a..f902aa3 100644 --- a/client/renderer/text.ts +++ b/client/renderer/text.ts @@ -11,8 +11,12 @@ export function init_font() { font_fnt = parse_fnt(AssetManager.instance.get("bworld:m6x11_fnt")); } +// bmfont's text format. glyphs in the image have transparent padding around them, which their offsets don't count, so +// it's taken off here or text is drawn padding * scale pixels right of and below where it's measured function parse_fnt(text: string): FntFont { const lines = text.split(/\r?\n/); + // up, right, down, left + let padding = [0, 0, 0, 0]; const font: FntFont = { line_height: 0, @@ -34,6 +38,10 @@ function parse_fnt(text: string): FntFont { data[k] = v?.replace(/"/g, ""); } + if (type === "info" && data.padding) { + padding = data.padding.split(",").map(Number); + } + if (type === "common") { font.line_height = Number(data.lineHeight); } @@ -49,8 +57,8 @@ function parse_fnt(text: string): FntFont { y: Number(data.y), width: Number(data.width), height: Number(data.height), - xoffset: Number(data.xoffset), - yoffset: Number(data.yoffset), + xoffset: Number(data.xoffset) - padding[3], + yoffset: Number(data.yoffset) - padding[0], xadvance: Number(data.xadvance), page: Number(data.page), };