From a2a73128e0202a41b101f441240ec98129976452 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 26 Feb 2026 05:25:32 +0900 Subject: [PATCH] nudge-y fixed --- OTFbuild/calligra_font_tests.odt | Bin 13834 -> 13931 bytes OTFbuild/font_builder.py | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/OTFbuild/calligra_font_tests.odt b/OTFbuild/calligra_font_tests.odt index 354decd63ad5c7a7a5e90e000393848700eb452b..c34cf4a5abba54a80248fcad1ece32af343fdd78 100644 GIT binary patch delta 12590 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 diff --git a/OTFbuild/font_builder.py b/OTFbuild/font_builder.py index 327ac43..db8c411 100644 --- a/OTFbuild/font_builder.py +++ b/OTFbuild/font_builder.py @@ -281,11 +281,13 @@ def build_font(assets_dir, output_path, no_bitmap=False, no_features=False): if advance == 0: x_offset -= g.props.nudge_x * SCALE + y_offset = -g.props.nudge_y * SCALE + contours = trace_bitmap(g.bitmap, g.props.width) pen = T2CharStringPen(advance, None) if contours: - draw_glyph_to_pen(contours, pen, x_offset=x_offset) + draw_glyph_to_pen(contours, pen, x_offset=x_offset, y_offset=y_offset) traced_count += 1 charstrings[name] = pen.getCharString()