yet another font update

Former-commit-id: 332bdbd2e55d148f42f3e3635dbc94a71f152f01
Former-commit-id: 27308c98fe0fe858bcbb42301dd714a49d92c81c
This commit is contained in:
Song Minjae
2017-02-20 23:27:00 +09:00
parent 6c867efd40
commit 1b079524f4
4 changed files with 37 additions and 64 deletions

View File

@@ -58,6 +58,7 @@ open class GameFontBase : Font {
private fun isAscii(c: Char) = c.toInt() >= 0x20 && c.toInt() <= 0xFF private fun isAscii(c: Char) = c.toInt() >= 0x20 && c.toInt() <= 0xFF
private fun isRunic(c: Char) = runicList.contains(c) private fun isRunic(c: Char) = runicList.contains(c)
private fun isExtA(c: Char) = c.toInt() >= 0x100 && c.toInt() < 0x180 private fun isExtA(c: Char) = c.toInt() >= 0x100 && c.toInt() < 0x180
private fun isExtB(c: Char) = c.toInt() >= 0x180 && c.toInt() < 0x250
private fun isKana(c: Char) = c.toInt() >= 0x3040 && c.toInt() < 0x3100 private fun isKana(c: Char) = c.toInt() >= 0x3040 && c.toInt() < 0x3100
private fun isCJKPunct(c: Char) = c.toInt() >= 0x3000 && c.toInt() < 0x3040 private fun isCJKPunct(c: Char) = c.toInt() >= 0x3000 && c.toInt() < 0x3040
private fun isUniHan(c: Char) = c.toInt() >= 0x3400 && c.toInt() < 0xA000 private fun isUniHan(c: Char) = c.toInt() >= 0x3400 && c.toInt() < 0xA000
@@ -67,8 +68,6 @@ open class GameFontBase : Font {
private fun isWenQuanYi1(c: Char) = c.toInt() >= 0x33F3 && c.toInt() <= 0x69FC private fun isWenQuanYi1(c: Char) = c.toInt() >= 0x33F3 && c.toInt() <= 0x69FC
private fun isWenQuanYi2(c: Char) = c.toInt() >= 0x69FD && c.toInt() <= 0x9FDC private fun isWenQuanYi2(c: Char) = c.toInt() >= 0x69FD && c.toInt() <= 0x9FDC
private fun isGreek(c: Char) = c.toInt() >= 0x370 && c.toInt() <= 0x3CE private fun isGreek(c: Char) = c.toInt() >= 0x370 && c.toInt() <= 0x3CE
private fun isRomanian(c: Char) = c.toInt() >= 0x218 && c.toInt() <= 0x21A
private fun isRomanianNarrow(c: Char) = c.toInt() == 0x21B
private fun isThai(c: Char) = c.toInt() >= 0xE00 && c.toInt() <= 0xE7F private fun isThai(c: Char) = c.toInt() >= 0xE00 && c.toInt() <= 0xE7F
private fun isThaiDiacritics(c: Char) = (c.toInt() >= 0xE34 && c.toInt() <= 0xE3A) private fun isThaiDiacritics(c: Char) = (c.toInt() >= 0xE34 && c.toInt() <= 0xE3A)
|| (c.toInt() >= 0xE47 && c.toInt() <= 0xE4E) || (c.toInt() >= 0xE47 && c.toInt() <= 0xE4E)
@@ -81,6 +80,9 @@ open class GameFontBase : Font {
private fun extAindexX(c: Char) = (c.toInt() - 0x100) % 16 private fun extAindexX(c: Char) = (c.toInt() - 0x100) % 16
private fun extAindexY(c: Char) = (c.toInt() - 0x100) / 16 private fun extAindexY(c: Char) = (c.toInt() - 0x100) / 16
private fun extBindexX(c: Char) = (c.toInt() - 0x180) % 16
private fun extBindexY(c: Char) = (c.toInt() - 0x180) / 16
private fun runicIndexX(c: Char) = runicList.indexOf(c) % 16 private fun runicIndexX(c: Char) = runicList.indexOf(c) % 16
private fun runicIndexY(c: Char) = runicList.indexOf(c) / 16 private fun runicIndexY(c: Char) = runicList.indexOf(c) / 16
@@ -110,9 +112,6 @@ open class GameFontBase : Font {
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
private fun romanianIndexX(c: Char) = c.toInt() - 0x218
private fun romanianIndexY(c: Char) = 0
private fun thaiIndexX(c: Char) = (c.toInt() - 0xE00) % 16 private fun thaiIndexX(c: Char) = (c.toInt() - 0xE00) % 16
private fun thaiIndexY(c: Char) = (c.toInt() - 0xE00) / 16 private fun thaiIndexY(c: Char) = (c.toInt() - 0xE00) / 16
@@ -122,9 +121,6 @@ open class GameFontBase : Font {
private fun keycapIndexX(c: Char) = (c.toInt() - 0xE000) % 16 private fun keycapIndexX(c: Char) = (c.toInt() - 0xE000) % 16
private fun keycapIndexY(c: Char) = (c.toInt() - 0xE000) / 16 private fun keycapIndexY(c: Char) = (c.toInt() - 0xE000) / 16
private val narrowWidthSheets = arrayOf(
SHEET_EXTB_ROMANIAN_NARROW
)
private val unihanWidthSheets = arrayOf( private val unihanWidthSheets = arrayOf(
SHEET_UNIHAN, SHEET_UNIHAN,
SHEET_FW_UNI, SHEET_FW_UNI,
@@ -138,7 +134,8 @@ open class GameFontBase : Font {
SHEET_ASCII_VARW, SHEET_ASCII_VARW,
SHEET_CYRILIC_VARW, SHEET_CYRILIC_VARW,
SHEET_EXTA_VARW, SHEET_EXTA_VARW,
SHEET_GREEK_VARW SHEET_GREEK_VARW,
SHEET_EXTB_VARW
) )
@@ -163,8 +160,6 @@ open class GameFontBase : Font {
} }
else if (zeroWidthSheets.contains(ctype)) else if (zeroWidthSheets.contains(ctype))
len += 0 len += 0
else if (narrowWidthSheets.contains(ctype))
len += W_LATIN_NARROW
else if (ctype == SHEET_CJK_PUNCT) else if (ctype == SHEET_CJK_PUNCT)
len += W_ASIAN_PUNCT len += W_ASIAN_PUNCT
else if (ctype == SHEET_HANGUL) else if (ctype == SHEET_HANGUL)
@@ -336,6 +331,10 @@ open class GameFontBase : Font {
sheetX = extAindexX(ch) sheetX = extAindexX(ch)
sheetY = extAindexY(ch) sheetY = extAindexY(ch)
} }
SHEET_EXTB_VARW -> {
sheetX = extBindexX(ch)
sheetY = extBindexY(ch)
}
SHEET_KANA -> { SHEET_KANA -> {
sheetX = kanaIndexX(ch) sheetX = kanaIndexX(ch)
sheetY = kanaIndexY(ch) sheetY = kanaIndexY(ch)
@@ -360,14 +359,6 @@ open class GameFontBase : Font {
sheetX = greekIndexX(ch) sheetX = greekIndexX(ch)
sheetY = greekIndexY(ch) sheetY = greekIndexY(ch)
} }
SHEET_EXTB_ROMANIAN_WIDE -> {
sheetX = romanianIndexX(ch)
sheetY = romanianIndexY(ch)
}
SHEET_EXTB_ROMANIAN_NARROW -> {
sheetX = 0
sheetY = 0
}
SHEET_THAI_WIDE -> { SHEET_THAI_WIDE -> {
sheetX = thaiIndexX(ch) sheetX = thaiIndexX(ch)
sheetY = thaiIndexY(ch) sheetY = thaiIndexY(ch)
@@ -414,10 +405,7 @@ open class GameFontBase : Font {
} }
private fun getSheetType(c: Char): Int { private fun getSheetType(c: Char): Int {
// EFs if (isThaiEF(c))
if (isRomanianNarrow(c))
return SHEET_EXTB_ROMANIAN_NARROW
else if (isThaiEF(c))
return SHEET_EXTA_VARW // will use fourth glyph in EXTA_EF return SHEET_EXTA_VARW // will use fourth glyph in EXTA_EF
else if (isRunic(c)) else if (isRunic(c))
return SHEET_RUNIC return SHEET_RUNIC
@@ -431,6 +419,8 @@ open class GameFontBase : Font {
return SHEET_ASCII_VARW return SHEET_ASCII_VARW
else if (isExtA(c)) else if (isExtA(c))
return SHEET_EXTA_VARW return SHEET_EXTA_VARW
else if (isExtB(c))
return SHEET_EXTB_VARW
else if (isCyrilic(c)) else if (isCyrilic(c))
return SHEET_CYRILIC_VARW return SHEET_CYRILIC_VARW
else if (isUniPunct(c)) else if (isUniPunct(c))
@@ -441,8 +431,6 @@ open class GameFontBase : Font {
return SHEET_FW_UNI return SHEET_FW_UNI
else if (isGreek(c)) else if (isGreek(c))
return SHEET_GREEK_VARW return SHEET_GREEK_VARW
else if (isRomanian(c))
return SHEET_EXTB_ROMANIAN_WIDE
else if (isThai(c)) else if (isThai(c))
return SHEET_THAI_WIDE return SHEET_THAI_WIDE
else if (c.isColourCode()) else if (c.isColourCode())
@@ -477,16 +465,6 @@ open class GameFontBase : Font {
drawString(x + xoff, y, printedBody, color) drawString(x + xoff, y, printedBody, color)
} }
private fun setBlendModeMul() {
GL11.glEnable(GL11.GL_BLEND)
GL11.glBlendFunc(GL11.GL_DST_COLOR, GL11.GL_ONE_MINUS_SRC_ALPHA)
}
private fun setBlendModeNormal() {
GL11.glDisable(GL11.GL_BLEND)
Terrarum.appgc.graphics.setDrawMode(Graphics.MODE_NORMAL)
}
fun Char.isColourCode() = colourKey.containsKey(this) fun Char.isColourCode() = colourKey.containsKey(this)
fun buildWidthTable(sheet: SpriteSheet, codeOffset: Int, codeRange: IntRange, rows: Int = 16) { fun buildWidthTable(sheet: SpriteSheet, codeOffset: Int, codeRange: IntRange, rows: Int = 16) {
@@ -524,6 +502,7 @@ open class GameFontBase : Font {
lateinit internal var runicSheet: SpriteSheet lateinit internal var runicSheet: SpriteSheet
lateinit internal var extASheet: SpriteSheet lateinit internal var extASheet: SpriteSheet
lateinit internal var extBSheet: SpriteSheet
lateinit internal var kanaSheet: SpriteSheet lateinit internal var kanaSheet: SpriteSheet
lateinit internal var cjkPunct: SpriteSheet lateinit internal var cjkPunct: SpriteSheet
// static SpriteSheet uniHan; // static SpriteSheet uniHan;
@@ -533,8 +512,6 @@ open class GameFontBase : Font {
lateinit internal var wenQuanYi_1: SpriteSheet lateinit internal var wenQuanYi_1: SpriteSheet
lateinit internal var wenQuanYi_2: SpriteSheet lateinit internal var wenQuanYi_2: SpriteSheet
lateinit internal var greekSheet: SpriteSheet lateinit internal var greekSheet: SpriteSheet
lateinit internal var romanianSheet: SpriteSheet
lateinit internal var romanianSheetNarrow: SpriteSheet
lateinit internal var thaiSheet: SpriteSheet lateinit internal var thaiSheet: SpriteSheet
lateinit internal var keycapSheet: SpriteSheet lateinit internal var keycapSheet: SpriteSheet
@@ -545,8 +522,7 @@ open class GameFontBase : Font {
internal val W_HANGUL = 11 internal val W_HANGUL = 11
internal val W_KANA = 12 internal val W_KANA = 12
internal val W_UNIHAN = 16 internal val W_UNIHAN = 16
internal val W_LATIN_WIDE = 9 // width of regular letters, including m internal val W_LATIN_WIDE = 9 // width of regular letters
internal val W_LATIN_NARROW = 5 // width of letter f, t, i, l
internal val H = 20 internal val H = 20
internal val H_HANGUL = 16 internal val H_HANGUL = 16
@@ -559,20 +535,19 @@ open class GameFontBase : Font {
internal val SHEET_HANGUL = 1 internal val SHEET_HANGUL = 1
internal val SHEET_RUNIC = 2 internal val SHEET_RUNIC = 2
internal val SHEET_EXTA_VARW = 3 internal val SHEET_EXTA_VARW = 3
internal val SHEET_KANA = 4 internal val SHEET_EXTB_VARW = 4
internal val SHEET_CJK_PUNCT = 5 internal val SHEET_KANA = 5
internal val SHEET_UNIHAN = 6 internal val SHEET_CJK_PUNCT = 6
internal val SHEET_CYRILIC_VARW = 7 internal val SHEET_UNIHAN = 7
internal val SHEET_FW_UNI = 8 internal val SHEET_CYRILIC_VARW = 8
internal val SHEET_UNI_PUNCT = 9 internal val SHEET_FW_UNI = 9
internal val SHEET_WENQUANYI_1 = 10 internal val SHEET_UNI_PUNCT = 10
internal val SHEET_WENQUANYI_2 = 11 internal val SHEET_WENQUANYI_1 = 11
internal val SHEET_GREEK_VARW = 12 internal val SHEET_WENQUANYI_2 = 12
internal val SHEET_EXTB_ROMANIAN_WIDE = 13 internal val SHEET_GREEK_VARW = 13
internal val SHEET_EXTB_ROMANIAN_NARROW = 14 internal val SHEET_THAI_WIDE = 14
internal val SHEET_THAI_WIDE = 15 internal val SHEET_THAI_NARROW = 15
internal val SHEET_THAI_NARROW = 16 internal val SHEET_KEYCAP = 16
internal val SHEET_KEYCAP = 17
internal val SHEET_UNKNOWN = 254 internal val SHEET_UNKNOWN = 254
internal val SHEET_COLOURCODE = 255 internal val SHEET_COLOURCODE = 255

View File

@@ -18,6 +18,8 @@ class GameFontImpl : GameFontBase() {
"./assets/graphics/fonts/futhark.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H) "./assets/graphics/fonts/futhark.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H)
GameFontBase.extASheet = SpriteSheet( GameFontBase.extASheet = SpriteSheet(
"./assets/graphics/fonts/LatinExtA_variable.tga", 15, 19, 1) "./assets/graphics/fonts/LatinExtA_variable.tga", 15, 19, 1)
GameFontBase.extBSheet = SpriteSheet(
"./assets/graphics/fonts/LatinExtB_variable.tga", 15, 19, 1)
GameFontBase.kanaSheet = SpriteSheet( GameFontBase.kanaSheet = SpriteSheet(
"./assets/graphics/fonts/kana.tga", GameFontBase.W_KANA, GameFontBase.H_KANA) "./assets/graphics/fonts/kana.tga", GameFontBase.W_KANA, GameFontBase.H_KANA)
GameFontBase.cjkPunct = SpriteSheet( GameFontBase.cjkPunct = SpriteSheet(
@@ -45,10 +47,6 @@ class GameFontImpl : GameFontBase() {
"./assets/graphics/fonts/wenquanyi_11pt_part2.tga", 16, 18, 2) "./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.romanianSheet = SpriteSheet(
"./assets/graphics/fonts/romana_wide.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H)
GameFontBase.romanianSheetNarrow = SpriteSheet(
"./assets/graphics/fonts/romana_narrow.tga", GameFontBase.W_LATIN_NARROW, GameFontBase.H)
GameFontBase.thaiSheet = SpriteSheet( GameFontBase.thaiSheet = SpriteSheet(
"./assets/graphics/fonts/thai_wide.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H) "./assets/graphics/fonts/thai_wide.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H)
GameFontBase.keycapSheet = SpriteSheet( GameFontBase.keycapSheet = SpriteSheet(
@@ -59,6 +57,7 @@ class GameFontImpl : GameFontBase() {
GameFontBase.hangulSheet, GameFontBase.hangulSheet,
GameFontBase.runicSheet, GameFontBase.runicSheet,
GameFontBase.extASheet, GameFontBase.extASheet,
GameFontBase.extBSheet,
GameFontBase.kanaSheet, GameFontBase.kanaSheet,
GameFontBase.cjkPunct, GameFontBase.cjkPunct,
null, // Full unihan, filler because we're using WenQuanYi null, // Full unihan, filler because we're using WenQuanYi
@@ -68,8 +67,6 @@ class GameFontImpl : GameFontBase() {
GameFontBase.wenQuanYi_1, GameFontBase.wenQuanYi_1,
GameFontBase.wenQuanYi_2, GameFontBase.wenQuanYi_2,
GameFontBase.greekSheet, GameFontBase.greekSheet,
GameFontBase.romanianSheet,
GameFontBase.romanianSheetNarrow,
GameFontBase.thaiSheet, GameFontBase.thaiSheet,
null, // Thai EF, filler because not being used right now null, // Thai EF, filler because not being used right now
GameFontBase.keycapSheet GameFontBase.keycapSheet
@@ -77,9 +74,10 @@ class GameFontImpl : GameFontBase() {
GameFontBase.sheetKey = shk GameFontBase.sheetKey = shk
buildWidthTable(asciiSheet, 0, 0..0xFF) buildWidthTable(asciiSheet, 0, 0..0xFF)
buildWidthTable(extASheet, 0x100, 0..0x7F) buildWidthTable(extASheet, 0x100, 0..0x7F)
buildWidthTable(cyrilic, 0x400, 0..0x5F) buildWidthTable(extBSheet, 0x180, 0..0xCF)
buildWidthTable(cyrilic, 0x400, 0..0x5F)
buildWidthTable(greekSheet, 0x370, 0..0x5F) buildWidthTable(greekSheet, 0x370, 0..0x5F)
} }

View File

@@ -109,7 +109,7 @@ nopqrstuvwxyz
"", "",
"Also supports:", "Also supports:",
"Unicode „quotation marks“—dashes…‼", "Unicode „quotation marks“—dashes…‼",
"으웽~. 얘! 위에 이 애 우유의 양 외워와! 아오~ 왜요? 어여! 예... 웬 초콜릿? 제가 원했던 건 뻥튀기 쬐끔과 의류예요. 얘야, 왜 또 불평? 퀡풿횂", "으웽~. 얘! 위에 이 애 우유의 양 외워와! 아오~ 왜요? 어여! 예... 웬 초콜릿? 제가 원했던 건 뻥튀기 쬐끔과 의류예요. 얘야, 왜 또 불평? 퀡풿횂",
"とりなくこゑす ゆめさませ みよあけわたる ひんかしを そらいろはえて おきつへに ほふねむれゐぬ もやのうち", "とりなくこゑす ゆめさませ みよあけわたる ひんかしを そらいろはえて おきつへに ほふねむれゐぬ もやのうち",
"鳥啼く声す 夢覚ませ 見よ明け渡る 東を 空色栄えて 沖つ辺に 帆船群れゐぬ 靄の中", "鳥啼く声す 夢覚ませ 見よ明け渡る 東を 空色栄えて 沖つ辺に 帆船群れゐぬ 靄の中",
"" ""

View File

@@ -134,7 +134,7 @@ constructor(gamename: String) : StateBasedGame(gamename) {
//addState(StateTestingLightning()) //addState(StateTestingLightning())
//addState(StateSplash()) //addState(StateSplash())
//addState(StateMonitorCheck()) //addState(StateMonitorCheck())
//addState(StateFontTester()) addState(StateFontTester())
//addState(StateNoiseTexGen()) //addState(StateNoiseTexGen())
//addState(StateBlurTest()) //addState(StateBlurTest())
//addState(StateShaderTest()) //addState(StateShaderTest())