From 2a15785f578a8e3ec0618e0e1413589c1ca8a0ea Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 23 May 2024 14:26:22 +0900 Subject: [PATCH] better interchar handling for MovableType --- src/net/torvald/terrarumsansbitmap/MovableType.kt | 8 +++++--- .../torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/net/torvald/terrarumsansbitmap/MovableType.kt b/src/net/torvald/terrarumsansbitmap/MovableType.kt index 552a6fa..bf69425 100644 --- a/src/net/torvald/terrarumsansbitmap/MovableType.kt +++ b/src/net/torvald/terrarumsansbitmap/MovableType.kt @@ -89,7 +89,7 @@ class MovableType( // println("Paper width: $paperWidth") - val lines = inputText.tokenise() + val lines = inputText.tokenise(font) // lines.debugprint() lines.forEachIndexed { linenum, it -> @@ -592,7 +592,7 @@ class MovableType( * * Inner list (ArrayList) contains the boxes for the single line. */ - private fun CodepointSequence.tokenise(): List> { + private fun CodepointSequence.tokenise(font: TerrarumSansBitmap): List> { val lines = ArrayList>() var tokens = ArrayList() var boxBuffer = ArrayList() @@ -657,7 +657,9 @@ class MovableType( } fun appendGlue(char: CodePoint) { - glue += whitespaceGlues[char] ?: throw NullPointerException("${char.toHex()} is not a whitespace") + glue += (whitespaceGlues[char] ?: throw NullPointerException("${char.toHex()} is not a whitespace")).let { + if (it == 0) it else it + font.interchar + } } fun appendZeroGlue() { diff --git a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt index 68024e4..68c3a58 100755 --- a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt +++ b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt @@ -1182,7 +1182,7 @@ class TerrarumSansBitmap( // is this glyph NOT a diacritic? else if (thisProp.writeOnTop < 0) { // apply interchar only if this character is NOT a control char - val thisInterchar = if (thisChar.isLetter() || Character.isWhitespace(thisChar)) interchar else 0 + val thisInterchar = if (thisChar.isLetter()) interchar else 0 posXbuffer[charIndex] = -thisProp.nudgeX + when (itsProp.alignWhere) {