From fd8bdbdc9037ac4ae825b40f3c059e98f5c18aa8 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Thu, 31 Jul 2025 20:32:59 +0200 Subject: [PATCH] fix: Icons being too big for regular text --- lib/libimhex/include/hex/api/imhex_api.hpp | 6 +++--- lib/libimhex/source/api/imhex_api.cpp | 8 ++++---- plugins/fonts/source/font_loader.cpp | 3 ++- plugins/fonts/source/fonts.cpp | 6 +++--- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/libimhex/include/hex/api/imhex_api.hpp b/lib/libimhex/include/hex/api/imhex_api.hpp index e3ce13ec4..c9bf81f8a 100644 --- a/lib/libimhex/include/hex/api/imhex_api.hpp +++ b/lib/libimhex/include/hex/api/imhex_api.hpp @@ -758,7 +758,7 @@ EXPORT_MODULE namespace hex { std::string name; std::vector fontData; Offset offset; - std::optional defaultSize; + std::optional fontSizeMultiplier; }; class Font { @@ -794,8 +794,8 @@ EXPORT_MODULE namespace hex { } - void registerMergeFont(const std::fs::path &path, Offset offset = {}, std::optional defaultSize = std::nullopt); - void registerMergeFont(const std::string &name, const std::span &data, Offset offset = {}, std::optional defaultSize = std::nullopt); + void registerMergeFont(const std::fs::path &path, Offset offset = {}, std::optional fontSizeMultiplier = std::nullopt); + void registerMergeFont(const std::string &name, const std::span &data, Offset offset = {}, std::optional fontSizeMultiplier = std::nullopt); void registerFont(const Font& font); FontDefinition getFont(const UnlocalizedString &fontName); diff --git a/lib/libimhex/source/api/imhex_api.cpp b/lib/libimhex/source/api/imhex_api.cpp index 4aa2030d5..fdf9719ef 100644 --- a/lib/libimhex/source/api/imhex_api.cpp +++ b/lib/libimhex/source/api/imhex_api.cpp @@ -1079,7 +1079,7 @@ namespace hex { return getFont(m_fontName).regular; } - void registerMergeFont(const std::fs::path &path, Offset offset, std::optional defaultSize) { + void registerMergeFont(const std::fs::path &path, Offset offset, std::optional fontSizeMultiplier) { wolv::io::File fontFile(path, wolv::io::File::Mode::Read); if (!fontFile.isValid()) { log::error("Failed to load font from file '{}'", wolv::util::toUTF8String(path)); @@ -1090,16 +1090,16 @@ namespace hex { wolv::util::toUTF8String(path.filename()), fontFile.readVector(), offset, - defaultSize + fontSizeMultiplier }); } - void registerMergeFont(const std::string &name, const std::span &data, Offset offset, std::optional defaultSize) { + void registerMergeFont(const std::string &name, const std::span &data, Offset offset, std::optional fontSizeMultiplier) { impl::s_fonts->emplace_back(MergeFont { name, { data.begin(), data.end() }, offset, - defaultSize + fontSizeMultiplier }); } diff --git a/plugins/fonts/source/font_loader.cpp b/plugins/fonts/source/font_loader.cpp index 7c61faa9a..a18be76e9 100644 --- a/plugins/fonts/source/font_loader.cpp +++ b/plugins/fonts/source/font_loader.cpp @@ -83,7 +83,8 @@ namespace hex::fonts::loader { for (auto &extraFont : ImHexApi::Fonts::impl::getMergeFonts()) { config.GlyphOffset = { extraFont.offset.x, -extraFont.offset.y }; config.GlyphOffset *= ImHexApi::System::getGlobalScale(); - atlas->AddFontFromMemoryTTF(const_cast(extraFont.fontData.data()), extraFont.fontData.size(), extraFont.defaultSize.value_or(0), &config); + config.SizePixels = settings.getFontSize() * extraFont.fontSizeMultiplier.value_or(1); + atlas->AddFontFromMemoryTTF(const_cast(extraFont.fontData.data()), extraFont.fontData.size(), 0.0F, &config); } } diff --git a/plugins/fonts/source/fonts.cpp b/plugins/fonts/source/fonts.cpp index ab65fc157..209258a1e 100644 --- a/plugins/fonts/source/fonts.cpp +++ b/plugins/fonts/source/fonts.cpp @@ -25,9 +25,9 @@ namespace hex::fonts { } void registerMergeFonts() { - ImHexApi::Fonts::registerMergeFont("Blender Icons", romfs::get("fonts/blendericons.ttf").span(), { -1, -1 }); - ImHexApi::Fonts::registerMergeFont("VS Codicons", romfs::get("fonts/codicons.ttf").span(), { 0, -2 }); - ImHexApi::Fonts::registerMergeFont("Unifont", romfs::get("fonts/unifont.otf").span(), { 0, 0 }, 10); + ImHexApi::Fonts::registerMergeFont("Blender Icons", romfs::get("fonts/blendericons.ttf").span(), { -1, -1 }, 0.95); + ImHexApi::Fonts::registerMergeFont("VS Codicons", romfs::get("fonts/codicons.ttf").span(), { 0, -2 }, 0.95); + ImHexApi::Fonts::registerMergeFont("Unifont", romfs::get("fonts/unifont.otf").span(), { 0, 0 }, 0.75); } } \ No newline at end of file