From 046d127f31bad089decc2e213dc8488c43aa6f04 Mon Sep 17 00:00:00 2001 From: Matt Borgerson Date: Thu, 6 Mar 2025 01:57:41 -0700 Subject: [PATCH] ui: Trim FontAwesome font to glyphs in use (save 940KiB) --- data/font_awesome_6_1_1_solid.min.otf | Bin 0 -> 15380 bytes data/meson.build | 2 +- scripts/gen-min-fa-font.sh | 7 +++++++ ui/xui/font-manager.cc | 6 +++--- 4 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 data/font_awesome_6_1_1_solid.min.otf create mode 100755 scripts/gen-min-fa-font.sh diff --git a/data/font_awesome_6_1_1_solid.min.otf b/data/font_awesome_6_1_1_solid.min.otf new file mode 100644 index 0000000000000000000000000000000000000000..0e46b7a47e5fb9039c715b2d8fdf4d58d6f1bbed GIT binary patch literal 15380 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 *)font_awesome_6_1_1_solid_data, - font_awesome_6_1_1_solid_size, + io.Fonts->AddFontFromMemoryTTF((void *)font_awesome_6_1_1_solid_min_data, + font_awesome_6_1_1_solid_min_size, 18.0f * g_viewport_mgr.m_scale * m_font_scale, &config, icon_ranges);