From 7ad39a72d77e374b07ab7f1a1de598a3bf3fa3be Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sat, 17 Jun 2023 14:28:30 +0200 Subject: [PATCH] unihex font type: read buffered from zip --- .../rendering/font/types/unicode/unihex/UnifontTexture.kt | 5 +---- .../rendering/font/types/unicode/unihex/UnihexFontType.kt | 6 +++++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/unihex/UnifontTexture.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/unihex/UnifontTexture.kt index 712ef04b7..0c090d0da 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/unihex/UnifontTexture.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/unihex/UnifontTexture.kt @@ -60,10 +60,7 @@ class UnifontTexture( private fun TextureData.set(row: Int, offset: Int, x: Int, y: Int) { val index = ((row * UnifontRasterizer.HEIGHT + y) * size.x + offset + x) * 4 - buffer.put(index + 0, 0xFF.toByte()) - buffer.put(index + 1, 0xFF.toByte()) - buffer.put(index + 2, 0xFF.toByte()) - buffer.put(index + 3, 0xFF.toByte()) + buffer.putInt(index, 0xFFFFFFFF.toInt()) } private fun rasterize(row: Int, offset: Int, width: Int, data: ByteArray): CodePointRenderer { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/unihex/UnihexFontType.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/unihex/UnihexFontType.kt index b76412a43..c8d98b975 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/unihex/UnihexFontType.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/unicode/unihex/UnihexFontType.kt @@ -23,6 +23,7 @@ import de.bixilon.minosoft.gui.rendering.font.types.factory.FontTypeFactory import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap +import java.io.BufferedInputStream import java.io.InputStream import java.util.zip.ZipInputStream @@ -48,6 +49,7 @@ class UnihexFontType( fun load(context: RenderContext, hexFile: ResourceLocation, sizes: List): UnihexFontType? { val stream = ZipInputStream(context.connection.assetsManager[hexFile]) + val buffered = BufferedInputStream(stream) val chars = Int2ObjectOpenHashMap() var totalWidth = 0 @@ -55,7 +57,7 @@ class UnihexFontType( val entry = stream.nextEntry ?: break if (!entry.name.endsWith(".hex")) continue - totalWidth += stream.readUnihex(chars) + totalWidth += buffered.readUnihex(chars) } if (chars.isEmpty()) return null @@ -72,6 +74,8 @@ class UnihexFontType( rasterized[entry.intKey] = rasterizer.add(entry.value) } + rasterized.trim() + return UnihexFontType(rasterized) }