Fix padding on fnt file
This commit is contained in:
+10
-2
@@ -11,8 +11,12 @@ export function init_font() {
|
|||||||
font_fnt = parse_fnt(AssetManager.instance.get("bworld:m6x11_fnt"));
|
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 {
|
function parse_fnt(text: string): FntFont {
|
||||||
const lines = text.split(/\r?\n/);
|
const lines = text.split(/\r?\n/);
|
||||||
|
// up, right, down, left
|
||||||
|
let padding = [0, 0, 0, 0];
|
||||||
|
|
||||||
const font: FntFont = {
|
const font: FntFont = {
|
||||||
line_height: 0,
|
line_height: 0,
|
||||||
@@ -34,6 +38,10 @@ function parse_fnt(text: string): FntFont {
|
|||||||
data[k] = v?.replace(/"/g, "");
|
data[k] = v?.replace(/"/g, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type === "info" && data.padding) {
|
||||||
|
padding = data.padding.split(",").map(Number);
|
||||||
|
}
|
||||||
|
|
||||||
if (type === "common") {
|
if (type === "common") {
|
||||||
font.line_height = Number(data.lineHeight);
|
font.line_height = Number(data.lineHeight);
|
||||||
}
|
}
|
||||||
@@ -49,8 +57,8 @@ function parse_fnt(text: string): FntFont {
|
|||||||
y: Number(data.y),
|
y: Number(data.y),
|
||||||
width: Number(data.width),
|
width: Number(data.width),
|
||||||
height: Number(data.height),
|
height: Number(data.height),
|
||||||
xoffset: Number(data.xoffset),
|
xoffset: Number(data.xoffset) - padding[3],
|
||||||
yoffset: Number(data.yoffset),
|
yoffset: Number(data.yoffset) - padding[0],
|
||||||
xadvance: Number(data.xadvance),
|
xadvance: Number(data.xadvance),
|
||||||
page: Number(data.page),
|
page: Number(data.page),
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user