From d7c48b1f88ae92d9a909485dc7d5820c1a040d92 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Wed, 26 Jan 2022 17:49:39 +0900 Subject: [PATCH] tamil wip --- assets/tamil_extrawide_variable.tga | 3 + assets/tamil_variable.tga | 3 - .../gdx/TerrarumSansBitmap.kt | 136 +++--------------- testing.PNG | Bin 29926 -> 31929 bytes testtext.txt | 3 +- work_files/bengali_variable.psd | 3 + work_files/devanagari_bengali_variable.psd | 3 - work_files/tamil_extrawide_variable.psd | 3 + work_files/tamil_variable.psd | 3 - 9 files changed, 33 insertions(+), 124 deletions(-) create mode 100644 assets/tamil_extrawide_variable.tga delete mode 100644 assets/tamil_variable.tga create mode 100644 work_files/bengali_variable.psd delete mode 100644 work_files/devanagari_bengali_variable.psd create mode 100644 work_files/tamil_extrawide_variable.psd delete mode 100644 work_files/tamil_variable.psd diff --git a/assets/tamil_extrawide_variable.tga b/assets/tamil_extrawide_variable.tga new file mode 100644 index 0000000..ece256c --- /dev/null +++ b/assets/tamil_extrawide_variable.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d73aaed6a843ae2c9d427e39e3bbf7bd4287f5e818f7157475eeb94daa0a4485 +size 491538 diff --git a/assets/tamil_variable.tga b/assets/tamil_variable.tga deleted file mode 100644 index 9b95787..0000000 --- a/assets/tamil_variable.tga +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a13ae6706476fd191e181c1a9a5ce99915872ff82c9c3019bf791a7f0d6cd3c -size 225298 diff --git a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt index 5a7b982..32ac8f3 100755 --- a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt +++ b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt @@ -186,27 +186,19 @@ class TerrarumSansBitmap( fileList.forEachIndexed { index, it -> val isVariable = it.endsWith("_variable.tga") val isXYSwapped = it.contains("xyswap", true) - + val isExtraWide = it.contains("extrawide", true) var pixmap: Pixmap + val status = ArrayList() + if (isVariable) status.add("VARIABLE") + if (isXYSwapped) status.add("XYSWAP") + if (isExtraWide) status.add("EXTRAWIDE") - if (isVariable) { - if (isXYSwapped) { - dbgprn("loading texture $it [VARIABLE, XYSWAP]") - } - else { - dbgprn("loading texture $it [VARIABLE]") - } - } - else { - if (isXYSwapped) { - dbgprn("loading texture $it [XYSWAP]") - } - else { - dbgprn("loading texture $it") - } - } + if (status.size > 0) + dbgprn("loading texture [${status.joinToString()}] $it") + else + dbgprn("loading texture [STATIC] $it") // unpack gz if applicable @@ -250,7 +242,7 @@ class TerrarumSansBitmap( } } - if (isVariable) buildWidthTable(pixmap, codeRange[index], 16) + if (isVariable) buildWidthTable(pixmap, codeRange[index], if (isExtraWide) 32 else 16) buildWidthTableFixed() @@ -260,7 +252,9 @@ class TerrarumSansBitmap( //val texture = Texture(pixmap) - val texRegPack = if (isVariable) + val texRegPack = if (isExtraWide) + PixmapRegionPack(pixmap, W_WIDEVAR_INIT, H, HGAP_VAR, 0, xySwapped = isXYSwapped) + else if (isVariable) PixmapRegionPack(pixmap, W_VAR_INIT, H, HGAP_VAR, 0, xySwapped = isXYSwapped) else if (index == SHEET_UNIHAN) PixmapRegionPack(pixmap, W_UNIHAN, H_UNIHAN) // the only exception that is height is 16 @@ -514,134 +508,104 @@ class TerrarumSansBitmap( } private fun getSheetwisePosition(cPrev: Int, ch: Int): IntArray { - val sheetX: Int; val sheetY: Int + var sheetX: Int; val sheetY: Int + sheetX = indexX(ch) when (getSheetType(ch)) { SHEET_UNIHAN -> { sheetX = unihanIndexX(ch) sheetY = unihanIndexY(ch) } SHEET_EXTA_VARW -> { - sheetX = extAindexX(ch) sheetY = extAindexY(ch) } SHEET_EXTB_VARW -> { - sheetX = extBindexX(ch) sheetY = extBindexY(ch) } SHEET_KANA -> { - sheetX = kanaIndexX(ch) sheetY = kanaIndexY(ch) } SHEET_CJK_PUNCT -> { - sheetX = cjkPunctIndexX(ch) sheetY = cjkPunctIndexY(ch) } SHEET_CYRILIC_VARW -> { - sheetX = cyrilicIndexX(ch) sheetY = cyrilicIndexY(ch) } SHEET_HALFWIDTH_FULLWIDTH_VARW -> { - sheetX = fullwidthUniIndexX(ch) sheetY = fullwidthUniIndexY(ch) } SHEET_UNI_PUNCT_VARW -> { - sheetX = uniPunctIndexX(ch) sheetY = uniPunctIndexY(ch) } SHEET_GREEK_VARW -> { - sheetX = greekIndexX(ch) sheetY = greekIndexY(ch) } SHEET_THAI_VARW -> { - sheetX = thaiIndexX(ch) sheetY = thaiIndexY(ch) } SHEET_CUSTOM_SYM -> { - sheetX = symbolIndexX(ch) sheetY = symbolIndexY(ch) } SHEET_HAYEREN_VARW -> { - sheetX = armenianIndexX(ch) sheetY = armenianIndexY(ch) } SHEET_KARTULI_VARW -> { - sheetX = kartvelianIndexX(ch) sheetY = kartvelianIndexY(ch) } SHEET_IPA_VARW -> { - sheetX = ipaIndexX(ch) sheetY = ipaIndexY(ch) } SHEET_RUNIC -> { - sheetX = runicIndexX(ch) sheetY = runicIndexY(ch) } SHEET_LATIN_EXT_ADD_VARW -> { - sheetX = latinExtAddX(ch) sheetY = latinExtAddY(ch) } SHEET_BULGARIAN_VARW, SHEET_SERBIAN_VARW -> { // expects Unicode charpoint, NOT an internal one - sheetX = cyrilicIndexX(ch) sheetY = cyrilicIndexY(ch) } SHEET_TSALAGI_VARW -> { - sheetX = cherokeeIndexX(ch) sheetY = cherokeeIndexY(ch) } SHEET_PHONETIC_EXT_VARW -> { - sheetX = phoneticExtIndexX(ch) sheetY = phoneticExtIndexY(ch) } SHEET_DEVANAGARI_VARW -> { - sheetX = devanagariIndexX(ch) sheetY = devanagariIndexY(ch) } SHEET_KARTULI_CAPS_VARW -> { - sheetX = kartvelianCapsIndexX(ch) sheetY = kartvelianCapsIndexY(ch) } SHEET_DIACRITICAL_MARKS_VARW -> { - sheetX = diacriticalMarksIndexX(ch) sheetY = diacriticalMarksIndexY(ch) } SHEET_GREEK_POLY_VARW -> { - sheetX = polytonicGreekIndexX(ch) sheetY = polytonicGreekIndexY(ch) } SHEET_EXTC_VARW -> { - sheetX = extCIndexX(ch) sheetY = extCIndexY(ch) } SHEET_EXTD_VARW -> { - sheetX = extDIndexX(ch) sheetY = extDIndexY(ch) } SHEET_CURRENCIES_VARW -> { - sheetX = currenciesIndexX(ch) sheetY = currenciesIndexY(ch) } SHEET_INTERNAL_VARW -> { - sheetX = internalIndexX(ch) sheetY = internalIndexY(ch) } SHEET_LETTERLIKE_MATHS_VARW -> { - sheetX = letterlikeIndexX(ch) sheetY = letterlikeIndexY(ch) } SHEET_ENCLOSED_ALPHNUM_SUPL_VARW -> { - sheetX = enclosedAlphnumSuplX(ch) sheetY = enclosedAlphnumSuplY(ch) } SHEET_TAMIL_VARW -> { - sheetX = tamilIndexX(ch) sheetY = tamilIndexY(ch) } SHEET_BENGALI_VARW -> { - sheetX = bengaliIndexX(ch) sheetY = bengaliIndexY(ch) } else -> { - sheetX = ch % 16 sheetY = ch / 16 } } @@ -653,10 +617,9 @@ class TerrarumSansBitmap( /** @return THIRTY-TWO bit number: this includes alpha channel value; or 0 if alpha is zero */ private fun Int.tagify() = if (this and 255 == 0) 0 else this - private fun buildWidthTable(pixmap: Pixmap, codeRange: Iterable, cols: Int = 16) { - val binaryCodeOffset = W_VAR_INIT + private fun buildWidthTable(pixmap: Pixmap, codeRange: Iterable, cellW: Int = 16, cols: Int = 16) { + val binaryCodeOffset = cellW - 1 - val cellW = W_VAR_INIT + 1 val cellH = H codeRange.forEachIndexed { index, code -> @@ -1669,6 +1632,7 @@ class TerrarumSansBitmap( internal val W_UNIHAN = 16 internal val W_LATIN_WIDE = 9 // width of regular letters internal val W_VAR_INIT = 15 // it assumes width of 15 regardless of the tagged width + internal val W_WIDEVAR_INIT = 31 // it assumes width of 31 regardless of the tagged width internal val HGAP_VAR = 1 @@ -1769,7 +1733,7 @@ class TerrarumSansBitmap( "internal_variable.tga", "letterlike_symbols_variable.tga", "enclosed_alphanumeric_supplement_variable.tga", - "tamil_variable.tga", + "tamil_extrawide_variable.tga", "bengali_variable.tga", ) private val codeRange = arrayOf( // MUST BE MATCHING WITH SHEET INDICES!! @@ -2228,97 +2192,41 @@ class TerrarumSansBitmap( private fun isBengali(c: CodePoint) = c in codeRange[SHEET_BENGALI_VARW] - private fun extAindexX(c: CodePoint) = c % 16 + private fun indexX(c: CodePoint) = c % 16 + private fun unihanIndexX(c: CodePoint) = (c - 0x3400) % 256 + private fun extAindexY(c: CodePoint) = (c - 0x100) / 16 - - private fun extBindexX(c: CodePoint) = c % 16 private fun extBindexY(c: CodePoint) = (c - 0x180) / 16 - - private fun runicIndexX(c: CodePoint) = c % 16 private fun runicIndexY(c: CodePoint) = (c - 0x16A0) / 16 - - private fun kanaIndexX(c: CodePoint) = c % 16 private fun kanaIndexY(c: CodePoint) = if (c in 0x31F0..0x31FF) 12 else if (c in 0x1B000..0x1B00F) 13 else (c - 0x3040) / 16 - - private fun cjkPunctIndexX(c: CodePoint) = c % 16 private fun cjkPunctIndexY(c: CodePoint) = (c - 0x3000) / 16 - - private fun cyrilicIndexX(c: CodePoint) = c % 16 private fun cyrilicIndexY(c: CodePoint) = (c - 0x400) / 16 - - private fun fullwidthUniIndexX(c: CodePoint) = c % 16 private fun fullwidthUniIndexY(c: CodePoint) = (c - 0xFF00) / 16 - - private fun uniPunctIndexX(c: CodePoint) = c % 16 private fun uniPunctIndexY(c: CodePoint) = (c - 0x2000) / 16 - - private fun unihanIndexX(c: CodePoint) = (c - 0x3400) % 256 private fun unihanIndexY(c: CodePoint) = (c - 0x3400) / 256 - - private fun greekIndexX(c: CodePoint) = c % 16 private fun greekIndexY(c: CodePoint) = (c - 0x370) / 16 - - private fun thaiIndexX(c: CodePoint) = c % 16 private fun thaiIndexY(c: CodePoint) = (c - 0xE00) / 16 - - private fun symbolIndexX(c: CodePoint) = c % 16 private fun symbolIndexY(c: CodePoint) = (c - 0xE000) / 16 - - private fun armenianIndexX(c: CodePoint) = c % 16 private fun armenianIndexY(c: CodePoint) = (c - 0x530) / 16 - - private fun kartvelianIndexX(c: CodePoint) = c % 16 private fun kartvelianIndexY(c: CodePoint) = (c - 0x10D0) / 16 - - private fun ipaIndexX(c: CodePoint) = c % 16 private fun ipaIndexY(c: CodePoint) = (c - 0x250) / 16 - - private fun latinExtAddX(c: CodePoint) = c % 16 private fun latinExtAddY(c: CodePoint) = (c - 0x1E00) / 16 - - private fun cherokeeIndexX(c: CodePoint) = c % 16 private fun cherokeeIndexY(c: CodePoint) = (c - 0x13A0) / 16 - - private fun phoneticExtIndexX(c: CodePoint) = c % 16 private fun phoneticExtIndexY(c: CodePoint) = (c - 0x1D00) / 16 - - private fun devanagariIndexX(c: CodePoint) = c % 16 private fun devanagariIndexY(c: CodePoint) = (if (c < 0xF0000) (c - 0x0900) else (c - 0xF0080)) / 16 - - private fun bengaliIndexX(c: CodePoint) = c % 16 private fun bengaliIndexY(c: CodePoint) = (c - 0x980) / 16 - - private fun kartvelianCapsIndexX(c: CodePoint) = c % 16 private fun kartvelianCapsIndexY(c: CodePoint) = (c - 0x1C90) / 16 - - private fun diacriticalMarksIndexX(c: CodePoint) = c % 16 private fun diacriticalMarksIndexY(c: CodePoint) = (c - 0x300) / 16 - - private fun polytonicGreekIndexX(c: CodePoint) = c % 16 private fun polytonicGreekIndexY(c: CodePoint) = (c - 0x1F00) / 16 - - private fun extCIndexX(c: CodePoint) = c % 16 private fun extCIndexY(c: CodePoint) = (c - 0x2C60) / 16 - - private fun extDIndexX(c: CodePoint) = c % 16 private fun extDIndexY(c: CodePoint) = (c - 0xA720) / 16 - - private fun currenciesIndexX(c: CodePoint) = c % 16 private fun currenciesIndexY(c: CodePoint) = (c - 0x20A0) / 16 - - private fun internalIndexX(c: CodePoint) = c % 16 private fun internalIndexY(c: CodePoint) = (c - 0xFFE00) / 16 - - private fun letterlikeIndexX(c: CodePoint) = c % 16 private fun letterlikeIndexY(c: CodePoint) = (c - 0x2100) / 16 - - private fun enclosedAlphnumSuplX(c: CodePoint) = c % 16 private fun enclosedAlphnumSuplY(c: CodePoint) = (c - 0x1F100) / 16 - - private fun tamilIndexX(c: CodePoint) = c % 16 private fun tamilIndexY(c: CodePoint) = (if (c < 0xF0000) (c - 0x0B80) else (c - 0xF0040)) / 16 val charsetOverrideDefault = Character.toChars(CHARSET_OVERRIDE_DEFAULT).toSurrogatedString() diff --git a/testing.PNG b/testing.PNG index 6ed812c01d9a57646aa2ce28dcb64a9c5daacc13..1aa9d746a7d464afe843e62628c3c45558437505 100755 GIT binary patch literal 31929 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 literal 29926 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 diff --git a/testtext.txt b/testtext.txt index b7b9d5a..e895705 100755 --- a/testtext.txt +++ b/testtext.txt @@ -18,4 +18,5 @@ ऄअआऑऒओऔ ॲॳॴॵॶॷ ˩˥˦˧˨˩˥˧˦˨˨˩˧˩˦˥˦˩˧˩˨˩ -˩ \ No newline at end of file +˩ +எழுத்து வடிவங்களுக்கு வார்த்தைகள் மற்றும் வாக்கியங்கள் போலவே தொனி, ஒலி பண்பு, தன்மை உண்டு \ No newline at end of file diff --git a/work_files/bengali_variable.psd b/work_files/bengali_variable.psd new file mode 100644 index 0000000..6a503aa --- /dev/null +++ b/work_files/bengali_variable.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61806bbcb6cd0d29dd552860b33c183862087a0d42317f9dcfd1ce3e3540f523 +size 251878 diff --git a/work_files/devanagari_bengali_variable.psd b/work_files/devanagari_bengali_variable.psd deleted file mode 100644 index 95ab775..0000000 --- a/work_files/devanagari_bengali_variable.psd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cd6be92bc1baad2e39aae6d17fa0454c4bdc696cb1de6a8b3d125ffe1e37f6d2 -size 324036 diff --git a/work_files/tamil_extrawide_variable.psd b/work_files/tamil_extrawide_variable.psd new file mode 100644 index 0000000..d73b585 --- /dev/null +++ b/work_files/tamil_extrawide_variable.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e435ff37a211d5c0c3b0174875df78de4b711bd9d60b7b8ad77e134b83ca7ac0 +size 449082 diff --git a/work_files/tamil_variable.psd b/work_files/tamil_variable.psd deleted file mode 100644 index e1752d7..0000000 --- a/work_files/tamil_variable.psd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6d80503e670eccedf0ff69b852ad282e6845c2b01f6f551fffe9ee6a66ffd8d9 -size 281374