From ac852179985a3c936d09c86dc041666994d3d75a Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 22 Mar 2022 15:47:24 +0900 Subject: [PATCH] fixed a bug where diacritics with align right would not get positioned correctly --- CONTRIBUTING.md | 4 +- PUA_allocation_chart.xlsx | Bin 15860 -> 15991 bytes assets/sundanese_variable.tga | 4 +- .../gdx/TerrarumSansBitmap.kt | 57 +++++++++++------- work_files/sundanese_variable.psd | 4 +- 5 files changed, 41 insertions(+), 28 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1e1bf66..18f8e48 100755 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -57,11 +57,13 @@ Rightmost vertical column (should be 20 px tall) contains the tags. Tags are def Y |= Diacritics Anchor Points (see below) X -' A -,_ 0 Align 1 Align 0 Align 1 Align before - A -' 0 left 0 right 1 centre 1 the glyph + A -' 0 Left 0 Right 1 Centre* 1 the glyph D --Diacritics Type Bit (see below; not all diacritics are actually marked as a diacritics on the spritesheet) S -,_ 0 Stack 1 Stack 0 Before 1 Up & (MSB) S -' 0 up 0 down 1 &After 1 Down* (e.g. U+0C48) +Align Centre is actually "align to where the anchor point is". Said anchor point default to the X-centre of the glyph. + Up&Down: 1. when two pixels are both #00FF00 it's "don't stack" 2. otherwise, it's actually up&down diff --git a/PUA_allocation_chart.xlsx b/PUA_allocation_chart.xlsx index db6d3c0363d4112eb9286cbcf4f288c1d5a3475d..1a3b8508696731fc2b1a4ecb25d04aac460377e8 100755 GIT binary patch delta 12549 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

^lLSBP7J}|G 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 D&$3tk diff --git a/assets/sundanese_variable.tga b/assets/sundanese_variable.tga index 593a4c5..b30b756 100644 --- a/assets/sundanese_variable.tga +++ b/assets/sundanese_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:841367dea57f764384e8b6a4f8e11fd64bdd3f54ca611aef2af252e44488f649 -size 102418 +oid sha256:7c6dd7d71404c8d528038fcdefd254b08097f5e50db9d863f2eab8aa52ffdbd3 +size 122898 diff --git a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt index c01dc78..c275e6a 100755 --- a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt +++ b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt @@ -657,6 +657,7 @@ class TerrarumSansBitmap( // if (directiveOpcode != 0) dbgprn("Directive opcode ${directiveOpcode.toString(2)}: ${code.charInfo()}") // if (glyphProps[code]?.isPragma("replacewith") == true) dbgprn("Replacer: ${code.charInfo()} into ${glyphProps[code]!!.extInfo.map { it.toString(16) }.joinToString()}") // if (stackWhere == GlyphProps.STACK_DONT) dbgprn("Diacritics Don't stack: ${code.charInfo()}") + if (stackWhere == GlyphProps.STACK_DOWN) dbgprn("Diacritics stack down: ${code.charInfo()}") } } @@ -790,7 +791,7 @@ class TerrarumSansBitmap( stackUpwardCounter = 0 stackDownwardCounter = 0 - extraWidth = thisProp.nudgeX // NOTE: sign is flipped! + extraWidth = thisProp.nudgeX // This resets extraWidth. NOTE: sign is flipped! } // FIXME HACK: using 0th diacritics' X-anchor pos as a type selector /*else if (thisProp.writeOnTop && thisProp.diacriticsAnchors[0].x == GlyphProps.DIA_JOINER) { @@ -808,36 +809,37 @@ class TerrarumSansBitmap( else { val diacriticsType = thisProp.writeOnTop // set X pos according to alignment information - posXbuffer[charIndex] = when (thisProp.alignWhere) { - GlyphProps.ALIGN_LEFT, GlyphProps.ALIGN_BEFORE -> posXbuffer[nonDiacriticCounter] - GlyphProps.ALIGN_RIGHT -> { - val alignXPos = if (!itsProp.diacriticsAnchors[diacriticsType].xUsed) itsProp.width else itsProp.diacriticsAnchors[diacriticsType].x + posXbuffer[charIndex] = -thisProp.nudgeX + + when (thisProp.alignWhere) { + GlyphProps.ALIGN_LEFT, GlyphProps.ALIGN_BEFORE -> posXbuffer[nonDiacriticCounter] + GlyphProps.ALIGN_RIGHT -> { + println("thisprop alignright $kerning, $extraWidth") - posXbuffer[nonDiacriticCounter] - W_VAR_INIT + alignXPos - } - GlyphProps.ALIGN_CENTRE -> { - val alignXPos = if (!itsProp.diacriticsAnchors[diacriticsType].xUsed) itsProp.width.div(2) else itsProp.diacriticsAnchors[diacriticsType].x + extraWidth += thisProp.width + posXbuffer[nonDiacriticCounter]+ kerning + extraWidth - thisProp.width + } + GlyphProps.ALIGN_CENTRE -> { + val anchorPoint = + if (!itsProp.diacriticsAnchors[diacriticsType].xUsed) itsProp.width.div(2) else itsProp.diacriticsAnchors[diacriticsType].x - if (itsProp.alignWhere == GlyphProps.ALIGN_RIGHT) { - posXbuffer[nonDiacriticCounter] + alignXPos + (itsProp.width + 1).div(2) + if (itsProp.alignWhere == GlyphProps.ALIGN_RIGHT) { + posXbuffer[nonDiacriticCounter] + anchorPoint + (itsProp.width + 1).div(2) + } else { + posXbuffer[nonDiacriticCounter] + anchorPoint - HALF_VAR_INIT + } + } + else -> throw InternalError("Unsupported alignment: ${thisProp.alignWhere}") } - else { - posXbuffer[nonDiacriticCounter] + alignXPos - HALF_VAR_INIT - } - } - else -> throw InternalError("Unsupported alignment: ${thisProp.alignWhere}") - } // set Y pos according to diacritics position -// if (thisProp.alignWhere == GlyphProps.ALIGN_CENTRE) { when (thisProp.stackWhere) { GlyphProps.STACK_DOWN -> { - posYbuffer[charIndex] = (H_DIACRITICS * stackDownwardCounter + -thisProp.nudgeY) * flipY.toSign() + posYbuffer[charIndex] = -thisProp.nudgeY + (H_DIACRITICS * stackDownwardCounter + -thisProp.nudgeY) * flipY.toSign() stackDownwardCounter++ } GlyphProps.STACK_UP -> { - posYbuffer[charIndex] = (-H_DIACRITICS * stackUpwardCounter + -thisProp.nudgeY) * flipY.toSign() + posYbuffer[charIndex] = -thisProp.nudgeY + (-H_DIACRITICS * stackUpwardCounter + -thisProp.nudgeY) * flipY.toSign() // shift down on lowercase if applicable if (getSheetType(thisChar) in autoShiftDownOnLowercase && lastNonDiacriticChar.isLowHeight()) { @@ -855,11 +857,11 @@ class TerrarumSansBitmap( // dbgprn("lastNonDiacriticChar: ${lastNonDiacriticChar.charInfo()}; stack counter: $stackUpwardCounter") } GlyphProps.STACK_UP_N_DOWN -> { - posYbuffer[charIndex] = (H_DIACRITICS * stackDownwardCounter + -thisProp.nudgeY) * flipY.toSign() + posYbuffer[charIndex] = -thisProp.nudgeY + (H_DIACRITICS * stackDownwardCounter + -thisProp.nudgeY) * flipY.toSign() stackDownwardCounter++ - posYbuffer[charIndex] = (-H_DIACRITICS * stackUpwardCounter + -thisProp.nudgeY) * flipY.toSign() + posYbuffer[charIndex] = -thisProp.nudgeY + (-H_DIACRITICS * stackUpwardCounter + -thisProp.nudgeY) * flipY.toSign() // shift down on lowercase if applicable if (getSheetType(thisChar) in autoShiftDownOnLowercase && lastNonDiacriticChar.isLowHeight()) { @@ -873,7 +875,8 @@ class TerrarumSansBitmap( } // for BEFORE_N_AFTER, do nothing in here } -// } + + // Don't reset extraWidth here! } } } @@ -2163,6 +2166,14 @@ class TerrarumSansBitmap( private const val MARWARI_HALFLIG_DD_Y = 0xF016F private const val MARWARI_LIG_DD_R = 0xF010E + private const val SUNDANESE_ING = 0xF0500 + private const val SUNDANESE_ENG = 0xF0501 + private const val SUNDANESE_EUNG = 0xF0502 + private const val SUNDANESE_IR = 0xF0503 + private const val SUNDANESE_ER = 0xF0504 + private const val SUNDANESE_EUR = 0xF0505 + private const val SUNDANESE_LU = 0xF0506 + private val devanagariConsonants = ((0x0915..0x0939) + (0x0958..0x095F) + (0x0978..0x097F) + (0xF0140..0xF04FF) + (0xF0106..0xF0109)).toHashSet() diff --git a/work_files/sundanese_variable.psd b/work_files/sundanese_variable.psd index 7d6725a..6306acd 100644 --- a/work_files/sundanese_variable.psd +++ b/work_files/sundanese_variable.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0bf46128d45064b295971007c72440636209393af1018ef850f7d0d7d81025ca -size 142846 +oid sha256:89cf949203a094fdae7391efbd0fd01f8599e9b88df3f80aeaea486a75a0ffb3 +size 166291