mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-06 08:38:30 +09:00
wenquanyi: fixed bad code point allocation
This commit is contained in:
BIN
assets/graphics/fonts/wenquanyi.tga.gz
LFS
Normal file
BIN
assets/graphics/fonts/wenquanyi.tga.gz
LFS
Normal file
Binary file not shown.
@@ -148,7 +148,7 @@
|
|||||||
"NAMESET_SCAN_F_143";"Stina";"스티나";
|
"NAMESET_SCAN_F_143";"Stina";"스티나";
|
||||||
"NAMESET_SCAN_F_144";"Stine";"스티네";
|
"NAMESET_SCAN_F_144";"Stine";"스티네";
|
||||||
"NAMESET_SCAN_F_145";"Sunniva";"순니바";
|
"NAMESET_SCAN_F_145";"Sunniva";"순니바";
|
||||||
"NAMESET_SCAN_F_146";"Susanne";"수잔네";
|
"NAMESET_SCAN_F_146";"Susanne";"수산네";
|
||||||
"NAMESET_SCAN_F_147";"Svea";"스베아";
|
"NAMESET_SCAN_F_147";"Svea";"스베아";
|
||||||
"NAMESET_SCAN_F_148";"Thea";"테아";
|
"NAMESET_SCAN_F_148";"Thea";"테아";
|
||||||
"NAMESET_SCAN_F_149";"Therese";"테레세";
|
"NAMESET_SCAN_F_149";"Therese";"테레세";
|
||||||
|
|||||||
|
@@ -9,7 +9,7 @@ import java.util.*
|
|||||||
/**
|
/**
|
||||||
* Created by minjaesong on 16-01-27.
|
* Created by minjaesong on 16-01-27.
|
||||||
*/
|
*/
|
||||||
open class GameFontBase : Font {
|
open class GameFontBase(val noShadow: Boolean) : Font {
|
||||||
|
|
||||||
private fun getHan(hanIndex: Int): IntArray {
|
private fun getHan(hanIndex: Int): IntArray {
|
||||||
val han_x = hanIndex % JONG_COUNT
|
val han_x = hanIndex % JONG_COUNT
|
||||||
@@ -65,8 +65,7 @@ open class GameFontBase : Font {
|
|||||||
private fun isCyrilic(c: Char) = c.toInt() in 0x400..0x45F
|
private fun isCyrilic(c: Char) = c.toInt() in 0x400..0x45F
|
||||||
private fun isFullwidthUni(c: Char) = c.toInt() in 0xFF00..0xFF1F
|
private fun isFullwidthUni(c: Char) = c.toInt() in 0xFF00..0xFF1F
|
||||||
private fun isUniPunct(c: Char) = c.toInt() in 0x2000..0x206F
|
private fun isUniPunct(c: Char) = c.toInt() in 0x2000..0x206F
|
||||||
private fun isWenQuanYi1(c: Char) = c.toInt() in 0x33F3..0x69FC
|
private fun isWenQuanYi(c: Char) = c.toInt() in 0x3400..0x9FFF
|
||||||
private fun isWenQuanYi2(c: Char) = c.toInt() in 0x69FD..0x9FDC
|
|
||||||
private fun isGreek(c: Char) = c.toInt() in 0x370..0x3CE
|
private fun isGreek(c: Char) = c.toInt() in 0x370..0x3CE
|
||||||
private fun isThai(c: Char) = c.toInt() in 0xE00..0xE7F
|
private fun isThai(c: Char) = c.toInt() in 0xE00..0xE7F
|
||||||
private fun isThaiDiacritics(c: Char) = c.toInt() in 0xE34..0xE3A
|
private fun isThaiDiacritics(c: Char) = c.toInt() in 0xE34..0xE3A
|
||||||
@@ -104,10 +103,8 @@ open class GameFontBase : Font {
|
|||||||
private fun uniPunctIndexX(c: Char) = (c.toInt() - 0x2000) % 16
|
private fun uniPunctIndexX(c: Char) = (c.toInt() - 0x2000) % 16
|
||||||
private fun uniPunctIndexY(c: Char) = (c.toInt() - 0x2000) / 16
|
private fun uniPunctIndexY(c: Char) = (c.toInt() - 0x2000) / 16
|
||||||
|
|
||||||
private fun wenQuanYiIndexX(c: Char) =
|
private fun wenQuanYiIndexX(c: Char) = (c.toInt() - 0x3400) % 256
|
||||||
(c.toInt() - if (c.toInt() <= 0x4DB5) 0x33F3 else 0x33F3 + 0x4A) % 32
|
private fun wenQuanYiIndexY(c: Char) = (c.toInt() - 0x3400) / 256
|
||||||
private fun wenQuanYi1IndexY(c: Char) = (c.toInt() - (0x33F3 + 0x4A)) / 32
|
|
||||||
private fun wenQuanYi2IndexY(c: Char) = (c.toInt() - 0x69FD) / 32
|
|
||||||
|
|
||||||
private fun greekIndexX(c: Char) = (c.toInt() - 0x370) % 16
|
private fun greekIndexX(c: Char) = (c.toInt() - 0x370) % 16
|
||||||
private fun greekIndexY(c: Char) = (c.toInt() - 0x370) / 16
|
private fun greekIndexY(c: Char) = (c.toInt() - 0x370) / 16
|
||||||
@@ -124,8 +121,7 @@ open class GameFontBase : Font {
|
|||||||
private val unihanWidthSheets = arrayOf(
|
private val unihanWidthSheets = arrayOf(
|
||||||
SHEET_UNIHAN,
|
SHEET_UNIHAN,
|
||||||
SHEET_FW_UNI,
|
SHEET_FW_UNI,
|
||||||
SHEET_WENQUANYI_1,
|
SHEET_WENQUANYI
|
||||||
SHEET_WENQUANYI_2
|
|
||||||
)
|
)
|
||||||
private val zeroWidthSheets = arrayOf(
|
private val zeroWidthSheets = arrayOf(
|
||||||
SHEET_COLOURCODE
|
SHEET_COLOURCODE
|
||||||
@@ -219,17 +215,17 @@ open class GameFontBase : Font {
|
|||||||
hangulSheet.getSubImage(indexCho, choRow).drawWithShadow(
|
hangulSheet.getSubImage(indexCho, choRow).drawWithShadow(
|
||||||
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
||||||
Math.round(y).toFloat(),
|
Math.round(y).toFloat(),
|
||||||
scale.toFloat(), thisCol
|
scale.toFloat(), thisCol, noShadow
|
||||||
)
|
)
|
||||||
hangulSheet.getSubImage(indexJung, jungRow).drawWithShadow(
|
hangulSheet.getSubImage(indexJung, jungRow).drawWithShadow(
|
||||||
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
||||||
Math.round(y).toFloat(),
|
Math.round(y).toFloat(),
|
||||||
scale.toFloat(), thisCol
|
scale.toFloat(), thisCol, noShadow
|
||||||
)
|
)
|
||||||
hangulSheet.getSubImage(indexJong, jongRow).drawWithShadow(
|
hangulSheet.getSubImage(indexJong, jongRow).drawWithShadow(
|
||||||
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
||||||
Math.round(y).toFloat(),
|
Math.round(y).toFloat(),
|
||||||
scale.toFloat(), thisCol
|
scale.toFloat(), thisCol, noShadow
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -266,39 +262,17 @@ open class GameFontBase : Font {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isWenQuanYi1(ch)) {
|
if (isWenQuanYi(ch)) {
|
||||||
val glyphW = getWidth("" + ch)
|
val glyphW = getWidth("" + ch)
|
||||||
wenQuanYi_1.getSubImage(wenQuanYiIndexX(ch), wenQuanYi1IndexY(ch)).drawWithShadow(
|
wenQuanYi.getSubImage(wenQuanYiIndexX(ch), wenQuanYiIndexY(ch)).drawWithShadow(
|
||||||
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
||||||
Math.round((H - H_UNIHAN) / 2 + y).toFloat(),
|
Math.round((H - H_UNIHAN) / 2 + y).toFloat(),
|
||||||
scale.toFloat(), thisCol
|
scale.toFloat(), thisCol, noShadow
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//wenQuanYi_1.endUse()
|
//wenQuanYi_1.endUse()
|
||||||
// WenQuanYi 2
|
|
||||||
//wenQuanYi_2.startUse()
|
|
||||||
|
|
||||||
for (i in 0..s.length - 1) {
|
|
||||||
val ch = s[i]
|
|
||||||
|
|
||||||
if (ch.isColourCode()) {
|
|
||||||
thisCol = colourKey[ch]!!
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isWenQuanYi2(ch)) {
|
|
||||||
val glyphW = getWidth("" + ch)
|
|
||||||
wenQuanYi_2.getSubImage(wenQuanYiIndexX(ch), wenQuanYi2IndexY(ch)).drawWithShadow(
|
|
||||||
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
|
||||||
Math.round((H - H_UNIHAN) / 2 + y).toFloat(),
|
|
||||||
scale.toFloat(), thisCol
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//wenQuanYi_2.endUse()
|
|
||||||
|
|
||||||
// regular fonts
|
// regular fonts
|
||||||
var prevInstance = -1
|
var prevInstance = -1
|
||||||
@@ -382,7 +356,7 @@ open class GameFontBase : Font {
|
|||||||
(if (prevInstance == SHEET_KEYCAP) (H - SIZE_KEYCAP) / 2 // completely legit height adjustment
|
(if (prevInstance == SHEET_KEYCAP) (H - SIZE_KEYCAP) / 2 // completely legit height adjustment
|
||||||
else 0).toFloat(),
|
else 0).toFloat(),
|
||||||
|
|
||||||
scale.toFloat(), thisCol
|
scale.toFloat(), thisCol, noShadow
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
catch (e: ArrayIndexOutOfBoundsException) {
|
catch (e: ArrayIndexOutOfBoundsException) {
|
||||||
@@ -431,6 +405,8 @@ open class GameFontBase : Font {
|
|||||||
return SHEET_GREEK_VARW
|
return SHEET_GREEK_VARW
|
||||||
else if (isThai(c))
|
else if (isThai(c))
|
||||||
return SHEET_THAI_WIDE
|
return SHEET_THAI_WIDE
|
||||||
|
else if (isWenQuanYi(c))
|
||||||
|
return SHEET_WENQUANYI
|
||||||
else if (c.isColourCode())
|
else if (c.isColourCode())
|
||||||
return SHEET_COLOURCODE
|
return SHEET_COLOURCODE
|
||||||
else if (isKeycap(c))
|
else if (isKeycap(c))
|
||||||
@@ -507,8 +483,7 @@ open class GameFontBase : Font {
|
|||||||
lateinit internal var cyrilic: SpriteSheet
|
lateinit internal var cyrilic: SpriteSheet
|
||||||
lateinit internal var fullwidthForms: SpriteSheet
|
lateinit internal var fullwidthForms: SpriteSheet
|
||||||
lateinit internal var uniPunct: SpriteSheet
|
lateinit internal var uniPunct: SpriteSheet
|
||||||
lateinit internal var wenQuanYi_1: SpriteSheet
|
lateinit internal var wenQuanYi: SpriteSheet
|
||||||
lateinit internal var wenQuanYi_2: SpriteSheet
|
|
||||||
lateinit internal var greekSheet: SpriteSheet
|
lateinit internal var greekSheet: SpriteSheet
|
||||||
lateinit internal var thaiSheet: SpriteSheet
|
lateinit internal var thaiSheet: SpriteSheet
|
||||||
lateinit internal var keycapSheet: SpriteSheet
|
lateinit internal var keycapSheet: SpriteSheet
|
||||||
@@ -538,12 +513,11 @@ open class GameFontBase : Font {
|
|||||||
internal val SHEET_CYRILIC_VARW = 8
|
internal val SHEET_CYRILIC_VARW = 8
|
||||||
internal val SHEET_FW_UNI = 9
|
internal val SHEET_FW_UNI = 9
|
||||||
internal val SHEET_UNI_PUNCT = 10
|
internal val SHEET_UNI_PUNCT = 10
|
||||||
internal val SHEET_WENQUANYI_1 = 11
|
internal val SHEET_WENQUANYI = 11
|
||||||
internal val SHEET_WENQUANYI_2 = 12
|
internal val SHEET_GREEK_VARW = 12
|
||||||
internal val SHEET_GREEK_VARW = 13
|
internal val SHEET_THAI_WIDE = 13
|
||||||
internal val SHEET_THAI_WIDE = 14
|
internal val SHEET_THAI_NARROW = 14
|
||||||
internal val SHEET_THAI_NARROW = 15
|
internal val SHEET_KEYCAP = 15
|
||||||
internal val SHEET_KEYCAP = 16
|
|
||||||
|
|
||||||
internal val SHEET_UNKNOWN = 254
|
internal val SHEET_UNKNOWN = 254
|
||||||
internal val SHEET_COLOURCODE = 255
|
internal val SHEET_COLOURCODE = 255
|
||||||
@@ -621,13 +595,15 @@ open class GameFontBase : Font {
|
|||||||
}// end of companion object
|
}// end of companion object
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Image.drawWithShadow(x: Float, y: Float, color: Color) =
|
fun Image.drawWithShadow(x: Float, y: Float, color: Color, noShadow: Boolean) =
|
||||||
this.drawWithShadow(x, y, 1f, color)
|
this.drawWithShadow(x, y, 1f, color, noShadow)
|
||||||
|
|
||||||
fun Image.drawWithShadow(x: Float, y: Float, scale: Float, color: Color) {
|
fun Image.drawWithShadow(x: Float, y: Float, scale: Float, color: Color, noShadow: Boolean) {
|
||||||
this.draw(x + 1, y + 1, scale, color.darker(0.5f))
|
if (!noShadow) {
|
||||||
this.draw(x , y + 1, scale, color.darker(0.5f))
|
this.draw(x + 1, y + 1, scale, color.darker(0.5f))
|
||||||
this.draw(x + 1, y , scale, color.darker(0.5f))
|
this.draw(x, y + 1, scale, color.darker(0.5f))
|
||||||
|
this.draw(x + 1, y, scale, color.darker(0.5f))
|
||||||
|
}
|
||||||
|
|
||||||
this.draw(x, y, scale, color)
|
this.draw(x, y, scale, color)
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@ import org.newdawn.slick.*
|
|||||||
/**
|
/**
|
||||||
* Created by minjaesong on 16-01-20.
|
* Created by minjaesong on 16-01-20.
|
||||||
*/
|
*/
|
||||||
class GameFontImpl : GameFontBase() {
|
class GameFontImpl(noShadow: Boolean = false) : GameFontBase(noShadow = noShadow) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
||||||
@@ -41,10 +41,8 @@ class GameFontImpl : GameFontBase() {
|
|||||||
"./assets/graphics/fonts/fullwidth_forms.tga", GameFontBase.W_UNIHAN, GameFontBase.H_UNIHAN)
|
"./assets/graphics/fonts/fullwidth_forms.tga", GameFontBase.W_UNIHAN, GameFontBase.H_UNIHAN)
|
||||||
GameFontBase.uniPunct = SpriteSheet(
|
GameFontBase.uniPunct = SpriteSheet(
|
||||||
"./assets/graphics/fonts/unipunct.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H)
|
"./assets/graphics/fonts/unipunct.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H)
|
||||||
GameFontBase.wenQuanYi_1 = SpriteSheet(
|
GameFontBase.wenQuanYi = SpriteSheet(
|
||||||
"./assets/graphics/fonts/wenquanyi_11pt_part1.tga", 16, 18, 2)
|
"./assets/graphics/fonts/wenquanyi.tga.gz", 16, 16)
|
||||||
GameFontBase.wenQuanYi_2 = SpriteSheet(
|
|
||||||
"./assets/graphics/fonts/wenquanyi_11pt_part2.tga", 16, 18, 2)
|
|
||||||
GameFontBase.greekSheet = SpriteSheet(
|
GameFontBase.greekSheet = SpriteSheet(
|
||||||
"./assets/graphics/fonts/greek_variable.tga", 15, 19, 1)
|
"./assets/graphics/fonts/greek_variable.tga", 15, 19, 1)
|
||||||
GameFontBase.thaiSheet = SpriteSheet(
|
GameFontBase.thaiSheet = SpriteSheet(
|
||||||
@@ -64,8 +62,7 @@ class GameFontImpl : GameFontBase() {
|
|||||||
GameFontBase.cyrilic,
|
GameFontBase.cyrilic,
|
||||||
GameFontBase.fullwidthForms,
|
GameFontBase.fullwidthForms,
|
||||||
GameFontBase.uniPunct,
|
GameFontBase.uniPunct,
|
||||||
GameFontBase.wenQuanYi_1,
|
GameFontBase.wenQuanYi,
|
||||||
GameFontBase.wenQuanYi_2,
|
|
||||||
GameFontBase.greekSheet,
|
GameFontBase.greekSheet,
|
||||||
GameFontBase.thaiSheet,
|
GameFontBase.thaiSheet,
|
||||||
null, // Thai EF, filler because not being used right now
|
null, // Thai EF, filler because not being used right now
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ class TinyAlphNum : Font {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fontSheet.getSubImage(index % 16, index / 16).drawWithShadow(
|
fontSheet.getSubImage(index % 16, index / 16).drawWithShadow(
|
||||||
x + textPosOffset, y, thisCol
|
x + textPosOffset, y, thisCol, false
|
||||||
)
|
)
|
||||||
|
|
||||||
textPosOffset += W
|
textPosOffset += W
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ internal object ExportMap : ConsoleCommand {
|
|||||||
|
|
||||||
}
|
}
|
||||||
catch (e: IOException) {
|
catch (e: IOException) {
|
||||||
Echo("ExportMap: IOException raised.")
|
EchoError("ExportMap: IOException raised.")
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user