diff --git a/FontTestGDX/lib/TerrarumSansBitmap.jar b/FontTestGDX/lib/TerrarumSansBitmap.jar index 1e2debb..bcf2f49 100644 Binary files a/FontTestGDX/lib/TerrarumSansBitmap.jar and b/FontTestGDX/lib/TerrarumSansBitmap.jar differ diff --git a/assets/LatinExtA_variable.tga b/assets/LatinExtA_variable.tga index 9177154..16f2df0 100644 Binary files a/assets/LatinExtA_variable.tga and b/assets/LatinExtA_variable.tga differ diff --git a/assets/LatinExtB_variable.tga b/assets/LatinExtB_variable.tga index 06c048c..ee08b50 100644 Binary files a/assets/LatinExtB_variable.tga and b/assets/LatinExtB_variable.tga differ diff --git a/assets/LatinExtC_variable.tga b/assets/LatinExtC_variable.tga new file mode 100644 index 0000000..b9b5de0 Binary files /dev/null and b/assets/LatinExtC_variable.tga differ diff --git a/assets/ascii_variable.tga b/assets/ascii_variable.tga index 312a0bd..3111066 100644 Binary files a/assets/ascii_variable.tga and b/assets/ascii_variable.tga differ diff --git a/assets/cyrilic_bulgarian_variable.tga b/assets/cyrilic_bulgarian_variable.tga index c40e5ec..6e4d790 100644 Binary files a/assets/cyrilic_bulgarian_variable.tga and b/assets/cyrilic_bulgarian_variable.tga differ diff --git a/assets/cyrilic_serbian_variable.tga b/assets/cyrilic_serbian_variable.tga index 12ee6cf..818b86a 100644 Binary files a/assets/cyrilic_serbian_variable.tga and b/assets/cyrilic_serbian_variable.tga differ diff --git a/assets/cyrilic_variable.tga b/assets/cyrilic_variable.tga index 42f8ca1..ff37a08 100644 Binary files a/assets/cyrilic_variable.tga and b/assets/cyrilic_variable.tga differ diff --git a/assets/greek_variable.tga b/assets/greek_variable.tga index f114221..e9c65ee 100644 Binary files a/assets/greek_variable.tga and b/assets/greek_variable.tga differ diff --git a/assets/latinExt_additional_variable.tga b/assets/latinExt_additional_variable.tga index 2e4cced..bb97112 100644 Binary files a/assets/latinExt_additional_variable.tga and b/assets/latinExt_additional_variable.tga differ diff --git a/demo.PNG b/demo.PNG index 9996c92..a58b490 100644 Binary files a/demo.PNG and b/demo.PNG differ diff --git a/demotext.txt b/demotext.txt index 4d460c1..e232023 100644 --- a/demotext.txt +++ b/demotext.txt @@ -105,11 +105,11 @@ How multilingual? Real multilingual! 􏃯Unicode References:􀀀 - Basic Latin Latin-1 Latin Extension A Latin Extionsion B IPA Extension Greek Cyrillic + Basic Latin Latin-1 Supplement Latin Extended-A Latin Extended-B IPA Extension Greek Cyrillic Cyrillic Supplement Armenian Devanagari Bengali Thai Georgian Hangul Jamo Cherokee Runic - Georgian Extended Greek Extended General Punctuations Superscripts and Subscripts CJK Symbols Kana - Kana Phonetic Extension CJK Unihan Extension A CJK Unihan Hangul Jamo Extended-A Hangul Syllables - Hangul Jamo Extended-B Fullwidth Forms Kana Supplement + Georgian Extended Greek Extended General Punctuations Superscripts and Subscripts CJK Symbols + Latin Extended-C Kana Kana Phonetic Extension CJK Unihan Extension A CJK Unihan + Hangul Jamo Extended-A Hangul Syllables Hangul Jamo Extended-B Fullwidth Forms Kana Supplement GitHub’s issue page is open! You can report any 􏽕errors􀀀, or leave 􏽕suggestions􀀀. You can help this font to be more versatile. (for more languages, more frameworks) 􏽕Clone􀀀 this repo, make diff --git a/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt b/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt index bd11a5d..69d9b29 100644 --- a/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt +++ b/src/net/torvald/terrarumsansbitmap/gdx/GameFontBase.kt @@ -194,6 +194,7 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo private fun isKartvelianCaps(c: Int) = c in codeRange[SHEET_KARTULI_CAPS_VARW] private fun isDiacriticalMarks(c: Int) = c in codeRange[SHEET_DIACRITICAL_MARKS_VARW] private fun isPolytonicGreek(c: Int) = c in codeRange[SHEET_GREEK_POLY_VARW] + private fun isExtC(c: Int) = c in codeRange[SHEET_EXTC_VARW] private fun isCaps(c: Int) = Character.isUpperCase(c) || isKartvelianCaps(c) @@ -269,7 +270,10 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo private fun polytonicGreekIndexX(c: Int) = (c - 0x1F00) % 16 private fun polytonicGreekIndexY(c: Int) = (c - 0x1F00) / 16 - private val lowHeightLetters = "acegijmnopqrsuvwxyzɱɳʙɾɽʒʂʐʋɹɻɥɟɡɢʛȵɲŋɴʀɕʑçʝxɣχʁʜʍɰʟɨʉɯuʊøɘɵɤəɛœɜɞʌɔæɐɶɑɒɚɝɩɪʅʈʏʞ".toSortedSet() + private fun extCIndexX(c: Int) = (c - 0x2C60) % 16 + private fun extCIndexY(c: Int) = (c - 0x2C60) / 16 + + private val lowHeightLetters = "acegijmnopqrsuvwxyzɱɳʙɾɽʒʂʐʋɹɻɥɟɡɢʛȵɲŋɴʀɕʑçʝxɣχʁʜʍɰʟɨʉɯuʊøɘɵɤəɛœɜɞʌɔæɐɶɑɒɚɝɩɪʅʈʏʞⱥⱦⱱⱳⱴⱶⱷⱸⱺⱻ".toSortedSet() /** * lowercase AND the height is equal to x-height (e.g. lowercase B, D, F, H, K, L, ... does not count */ @@ -317,7 +321,8 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo SHEET_NAGARI_BENGALI_VARW, SHEET_KARTULI_CAPS_VARW, SHEET_DIACRITICAL_MARKS_VARW, - SHEET_GREEK_POLY_VARW + SHEET_GREEK_POLY_VARW, + SHEET_EXTC_VARW ) private val autoShiftDownOnLowercase = arrayOf( SHEET_DIACRITICAL_MARKS_VARW @@ -350,7 +355,8 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo "devanagari_bengali_variable.tga", "kartuli_allcaps_variable.tga", "diacritical_marks_variable.tga", - "greek_polytonic_xyswap_variable.tga" + "greek_polytonic_xyswap_variable.tga", + "latinExtC_variable.tga" ) private val codeRange = arrayOf( // MUST BE MATCHING WITH SHEET INDICES!! 0..0xFF, @@ -378,7 +384,8 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo 0x900..0x9FF, 0x1C90..0x1CBF, 0x300..0x36F, - 0x1F00..0x1FFF + 0x1F00..0x1FFF, + 0x2C60..0x2C7F ) private val glyphProps: HashMap = HashMap() private val sheets: Array @@ -822,6 +829,8 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo return SHEET_DIACRITICAL_MARKS_VARW else if (isPolytonicGreek(c)) return SHEET_GREEK_POLY_VARW + else if (isExtC(c)) + return SHEET_EXTC_VARW else return SHEET_UNKNOWN // fixed width @@ -923,6 +932,10 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo sheetX = polytonicGreekIndexX(ch) sheetY = polytonicGreekIndexY(ch) } + SHEET_EXTC_VARW -> { + sheetX = extCIndexX(ch) + sheetY = extCIndexY(ch) + } else -> { sheetX = ch % 16 sheetY = ch / 16 @@ -1332,6 +1345,7 @@ class GameFontBase(fontDir: String, val noShadow: Boolean = false, val flipY: Bo internal val SHEET_KARTULI_CAPS_VARW = 23 internal val SHEET_DIACRITICAL_MARKS_VARW = 24 internal val SHEET_GREEK_POLY_VARW = 25 + internal val SHEET_EXTC_VARW = 26 internal val SHEET_UNKNOWN = 254 diff --git a/testing.PNG b/testing.PNG index 97724ff..31f57ea 100644 Binary files a/testing.PNG and b/testing.PNG differ diff --git a/testtext.txt b/testtext.txt index 36352f9..46305a4 100644 --- a/testtext.txt +++ b/testtext.txt @@ -1 +1,10 @@ -ᄋힳᆫ ꥼᆢᇹ \ No newline at end of file +re ʘ, ʇ, ʗ, and ʖ, al +ɓ ɗ ɠ + ɐ ɔ ə ɟ ɥ ɯ ɹ ʇ ʌ ʍ ʎ + Vʷ[kʰuˣt̪s̟] and Vʷ[kʰʉˣt͜ʃ]. + +ʡ̆ + +Labiodental flap [ⱱ] U+2C71 + +acegijmnopqrsuvwxyzɱɳʙɾɽʒʂʐʋɹɻɥɟɡɢʛȵɲŋɴʀɕʑçʝxɣχʁʜʍɰʟɨʉɯuʊøɘɵɤəɛœɜɞʌɔæɐɶɑɒɚɝɩɪʅʈʏʞⱥⱦⱱⱳⱴⱶⱷⱸⱺⱻ \ No newline at end of file