new armenian (#10)

- Redesigned glyphs
- Update to Unicode 11 (2 chrs added)
This commit is contained in:
minjaesong
2018-09-09 19:51:43 +09:00
parent b8963cd3a9
commit cefc7860b3
4 changed files with 41 additions and 24 deletions

View File

@@ -27,7 +27,7 @@ class FontTestGDX : Game() {
private val outimageName = "demo.png"
override fun create() {
font = GameFontBase("./assets", flipY = false, errorOnUnknownChar = false) // must test for two flipY cases
font = GameFontBase("./assets", flipY = false, errorOnUnknownChar = true) // must test for two flipY cases
val inTextFile = Gdx.files.internal("./$demotextName")
val reader = inTextFile.reader("UTF-8")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

View File

@@ -386,6 +386,7 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo
val isVariable1 = it.endsWith("_variable.tga")
val isVariable2 = variableWidthSheets.contains(index)
val isVariable = isVariable1 && isVariable2
val isXYSwapped = it.contains("xyswap", true)
// idiocity check
if (isVariable1 && !isVariable2)
@@ -442,7 +443,7 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo
val texture = Texture(pixmap)
val texRegPack = if (isVariable) {
TextureRegionPack(texture, W_VAR_INIT, H, HGAP_VAR, 0)
TextureRegionPack(texture, W_VAR_INIT, H, HGAP_VAR, 0, xySwapped = isXYSwapped)
}
else if (index == SHEET_UNIHAN) {
TextureRegionPack(texture, W_UNIHAN, H_UNIHAN) // the only exception that is height is 16
@@ -592,8 +593,7 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo
charsetOverride = c - CHARSET_OVERRIDE_DEFAULT
}
else if (sheetID == SHEET_HANGUL) {
// FIXME input text is normalised as Initial-Peak-Final
// requires lookahead for {I, P, F}
// Flookahead for {I, P, F}
val cNext = if (index + 1 <= textBuffer.size) textBuffer[index + 1] else 0
val cNextNext = if (index + 2 <= textBuffer.size) textBuffer[index + 2] else 0
@@ -607,12 +607,12 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo
val hangulSheet = sheets[SHEET_HANGUL]
println("${c.toHex()} ${cNext.toHex()} ${cNextNext.toHex()}")
println("I: $indexCho,\t$choRow")
println("P: $indexJung,\t$jungRow")
println("F: $indexJong,\t$jongRow")
println("skip: $hangulLength")
println("====")
//println("${c.toHex()} ${cNext.toHex()} ${cNextNext.toHex()}")
//println("I: $indexCho,\t$choRow")
//println("P: $indexJung,\t$jungRow")
//println("F: $indexJong,\t$jongRow")
//println("skip: $hangulLength")
//println("====")
when (run) {

View File

@@ -38,13 +38,14 @@ class TextureRegionPack(
val hGap: Int = 0,
val vGap: Int = 0,
val hFrame: Int = 0,
val vFrame: Int = 0
val vFrame: Int = 0,
val xySwapped: Boolean = false // because Unicode chart does, duh
) {
constructor(ref: String, tileW: Int, tileH: Int, hGap: Int = 0, vGap: Int = 0, hFrame: Int = 0, vFrame: Int = 0) :
this(Texture(ref), tileW, tileH, hGap, vGap, hFrame, vFrame)
constructor(fileHandle: FileHandle, tileW: Int, tileH: Int, hGap: Int = 0, vGap: Int = 0, hFrame: Int = 0, vFrame: Int = 0) :
this(Texture(fileHandle), tileW, tileH, hGap, vGap, hFrame, vFrame)
constructor(ref: String, tileW: Int, tileH: Int, hGap: Int = 0, vGap: Int = 0, hFrame: Int = 0, vFrame: Int = 0, xySwapped: Boolean = false) :
this(Texture(ref), tileW, tileH, hGap, vGap, hFrame, vFrame, xySwapped)
constructor(fileHandle: FileHandle, tileW: Int, tileH: Int, hGap: Int = 0, vGap: Int = 0, hFrame: Int = 0, vFrame: Int = 0, xySwapped: Boolean = false) :
this(Texture(fileHandle), tileW, tileH, hGap, vGap, hFrame, vFrame, xySwapped)
companion object {
/** Intented for Y-down coord system, typically fon Non-GDX codebase */
@@ -59,18 +60,34 @@ class TextureRegionPack(
init {
//println("texture: $texture, dim: ${texture.width} x ${texture.height}, grid: $horizontalCount x $verticalCount, cellDim: $tileW x $tileH")
regions = Array<TextureRegion>(horizontalCount * verticalCount, {
val region = TextureRegion()
val rx = (it % horizontalCount * (tileW + hGap)) + hFrame
val ry = (it / horizontalCount * (tileH + vGap)) + vFrame
if (!xySwapped) {
regions = Array<TextureRegion>(horizontalCount * verticalCount, {
val region = TextureRegion()
val rx = (it % horizontalCount * (tileW + hGap)) + hFrame
val ry = (it / horizontalCount * (tileH + vGap)) + vFrame
region.setRegion(texture)
region.setRegion(rx, ry, tileW, tileH)
region.setRegion(texture)
region.setRegion(rx, ry, tileW, tileH)
region.flip(false, globalFlipY)
region.flip(false, globalFlipY)
/*return*/region
})
/*return*/region
})
}
else {
regions = Array<TextureRegion>(horizontalCount * verticalCount, {
val region = TextureRegion()
val rx = (it % verticalCount * (tileW + hGap)) + hFrame
val ry = (it / verticalCount * (tileH + vGap)) + vFrame
region.setRegion(texture)
region.setRegion(ry, rx, tileW, tileH)
region.flip(false, globalFlipY)
/*return*/region
})
}
}
fun get(x: Int, y: Int) = regions[y * horizontalCount + x]