From 80790c46370776fb65d9ce94b8f851d4d75133d1 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Fri, 16 Jun 2023 16:14:46 +0200 Subject: [PATCH] trim font This should reduce some call overhead, normally once include just contains one font type and not multiple --- .../minosoft/gui/rendering/font/manager/FontManager.kt | 2 +- .../gui/rendering/font/types/ReferenceFontType.kt | 2 +- .../minosoft/gui/rendering/font/types/font/Font.kt | 9 +++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/font/manager/FontManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/font/manager/FontManager.kt index c4e8175b0..63e80790d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/font/manager/FontManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/font/manager/FontManager.kt @@ -49,7 +49,7 @@ class FontManager( Log.log(LogMessageType.ASSETS, LogLevels.WARN) { "Font ${DefaultFontIndices.DEFAULT} seems to be empty!" } } - return FontManager(font ?: EmptyFont) + return FontManager(font?.trim() ?: EmptyFont) } } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/ReferenceFontType.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/ReferenceFontType.kt index c28bce8ee..45662103f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/ReferenceFontType.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/ReferenceFontType.kt @@ -25,6 +25,6 @@ object ReferenceFontType : FontTypeFactory { override fun build(context: RenderContext, data: JsonObject): FontType? { val index = data["id"]?.toResourceLocation()?.prefix("font/")?.suffix(".json") ?: throw IllegalArgumentException("id missing!") - return FontLoader.load(context, index, null) + return FontLoader.load(context, index, null)?.trim() } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/font/Font.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/font/Font.kt index c8887f974..848ad6752 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/font/Font.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/font/Font.kt @@ -71,6 +71,15 @@ class Font( } + fun trim(): FontType? { + return when (providers.size) { + 0 -> null + 1 -> providers.first() + else -> this + } + } + + companion object { private const val CACHE_START = ' '.code // all control chars (like ESC, CR, ...) are not used anyway (in a normal environment) private const val CACHE_SIZE = (1 shl 7) - CACHE_START // ascii