mirror of
https://github.com/curioustorvald/Terrarum-sans-bitmap.git
synced 2026-03-13 06:26:05 +09:00
keming machine dot removal directive
This commit is contained in:
BIN
src/assets/ascii_variable.tga
LFS
BIN
src/assets/ascii_variable.tga
LFS
Binary file not shown.
@@ -1,5 +1,7 @@
|
||||
package net.torvald.terrarumsansbitmap
|
||||
|
||||
import net.torvald.terrarumsansbitmap.gdx.CodePoint
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2021-11-25.
|
||||
*/
|
||||
@@ -29,6 +31,8 @@ data class GlyphProps(
|
||||
val isKernYtype: Boolean = false,
|
||||
val kerningMask: Int = 255,
|
||||
|
||||
val dotRemoval: CodePoint? = null,
|
||||
|
||||
val directiveOpcode: Int = 0, // 8-bits wide
|
||||
val directiveArg1: Int = 0, // 8-bits wide
|
||||
val directiveArg2: Int = 0, // 8-bits wide
|
||||
|
||||
@@ -921,9 +921,9 @@ class TerrarumSansBitmap(
|
||||
val isLowHeight = (pixmap.getPixel(codeStartX, codeStartY + 5).and(255) != 0)
|
||||
|
||||
// Keming machine parameters
|
||||
val kerningBit1 = pixmap.getPixel(codeStartX, codeStartY + 6).tagify()
|
||||
val kerningBit2 = pixmap.getPixel(codeStartX, codeStartY + 7).tagify()
|
||||
val kerningBit3 = pixmap.getPixel(codeStartX, codeStartY + 8).tagify()
|
||||
val kerningBit1 = pixmap.getPixel(codeStartX, codeStartY + 6).tagify() // glyph shape
|
||||
val kerningBit2 = pixmap.getPixel(codeStartX, codeStartY + 7).tagify() // dot removal
|
||||
val kerningBit3 = pixmap.getPixel(codeStartX, codeStartY + 8).tagify() // unused
|
||||
var isKernYtype = ((kerningBit1 and 0x80000000.toInt()) != 0)
|
||||
var kerningMask = kerningBit1.ushr(8).and(0xFFFFFF)
|
||||
val hasKernData = kerningBit1 and 255 != 0//(kerningBit1 and 255 != 0 && kerningMask != 0xFFFF)
|
||||
@@ -971,7 +971,9 @@ class TerrarumSansBitmap(
|
||||
GlyphProps.STACK_DONT
|
||||
else (0..1).fold(0) { acc, y -> acc or ((pixmap.getPixel(codeStartX, codeStartY + y + 18).and(255) != 0).toInt() shl y) }
|
||||
|
||||
glyphProps[code] = GlyphProps(width, isLowHeight, nudgeX, nudgeY, diacriticsAnchors, alignWhere, writeOnTop, stackWhere, IntArray(15), hasKernData, isKernYtype, kerningMask, directiveOpcode, directiveArg1, directiveArg2)
|
||||
val dotRemoval = if (kerningBit2 == 0) null else kerningBit2.ushr(8)
|
||||
|
||||
glyphProps[code] = GlyphProps(width, isLowHeight, nudgeX, nudgeY, diacriticsAnchors, alignWhere, writeOnTop, stackWhere, IntArray(15), hasKernData, isKernYtype, kerningMask, dotRemoval, directiveOpcode, directiveArg1, directiveArg2)
|
||||
|
||||
// extra info
|
||||
val extCount = glyphProps[code]?.requiredExtInfoCount() ?: 0
|
||||
@@ -1533,8 +1535,8 @@ class TerrarumSansBitmap(
|
||||
|
||||
}
|
||||
// for lowercase i and j, if cNext is a diacritic that goes on top, remove the dots
|
||||
else if (diacriticDotRemoval.containsKey(c) && (glyphProps[cNext]?.writeOnTop ?: -1) >= 0 && glyphProps[cNext]?.stackWhere == GlyphProps.STACK_UP) {
|
||||
seq.add(diacriticDotRemoval[c]!!)
|
||||
else if (glyphProps[c]!!.dotRemoval != null && (glyphProps[cNext]?.writeOnTop ?: -1) >= 0 && glyphProps[cNext]?.stackWhere == GlyphProps.STACK_UP) {
|
||||
seq.add(glyphProps[c]!!.dotRemoval!!)
|
||||
}
|
||||
|
||||
// BEGIN of tamil subsystem implementation
|
||||
@@ -2747,11 +2749,6 @@ class TerrarumSansBitmap(
|
||||
0x20..0x7F,
|
||||
)
|
||||
|
||||
private val diacriticDotRemoval = hashMapOf(
|
||||
'i'.toInt() to 0x131,
|
||||
'j'.toInt() to 0x237
|
||||
)
|
||||
|
||||
internal fun Int.charInfo() = "U+${this.toString(16).padStart(4, '0').toUpperCase()}: ${Character.getName(this)}"
|
||||
|
||||
const val NQSP = 0x2000
|
||||
|
||||
Reference in New Issue
Block a user