diff --git a/OTFbuild/hangul.py b/OTFbuild/hangul.py index 858bd01..b88c94d 100644 --- a/OTFbuild/hangul.py +++ b/OTFbuild/hangul.py @@ -16,7 +16,7 @@ import sheet_config as SC # PUA range for Hangul jamo variant storage. # We need space for: max_col * max_row variants. -# Using 0xF0600-0xF0FFF (2560 slots, more than enough). +# Using 0xF0600-0xF1E7F HANGUL_PUA_BASE = 0xF0600 diff --git a/OTFbuild/sheet_config.py b/OTFbuild/sheet_config.py index bf4b3b1..8bc648e 100644 --- a/OTFbuild/sheet_config.py +++ b/OTFbuild/sheet_config.py @@ -70,6 +70,7 @@ SHEET_DEVANAGARI2_INTERNAL_VARW = 36 SHEET_CODESTYLE_ASCII_VARW = 37 SHEET_ALPHABETIC_PRESENTATION_FORMS = 38 SHEET_HENTAIGANA_VARW = 39 +SHEET_CONTROL_PICTURES_VARW = 40 SHEET_UNKNOWN = 254 @@ -114,6 +115,7 @@ FILE_LIST = [ "pua_codestyle_ascii_variable.tga", "alphabetic_presentation_forms_extrawide_variable.tga", "hentaigana_variable.tga", + "control_pictures_variable.tga", ] CODE_RANGE = [ @@ -157,6 +159,7 @@ CODE_RANGE = [ list(range(0xF0520, 0xF0580)), # 37: Codestyle ASCII list(range(0xFB00, 0xFB18)), # 38: Alphabetic Presentation list(range(0x1B000, 0x1B170)), # 39: Hentaigana + list(range(0x2400, 0x2440)), # 40: Control Pictures ] CODE_RANGE_HANGUL_COMPAT = range(0x3130, 0x3190) @@ -531,5 +534,6 @@ def index_y(sheet_index, c): SHEET_CODESTYLE_ASCII_VARW: lambda: (c - 0xF0520) // 16, SHEET_ALPHABETIC_PRESENTATION_FORMS: lambda: (c - 0xFB00) // 16, SHEET_HENTAIGANA_VARW: lambda: (c - 0x1B000) // 16, + SHEET_CONTROL_PICTURES_VARW: lambda: (c - 0x2400) // 16, SHEET_HANGUL: lambda: 0, }.get(sheet_index, lambda: c // 16)() diff --git a/PUA_allocation_chart.xlsx b/PUA_allocation_chart.xlsx index 55e5aa7..b81dc7d 100755 Binary files a/PUA_allocation_chart.xlsx and b/PUA_allocation_chart.xlsx differ diff --git a/demo.PNG b/demo.PNG index b5e543a..2c7cf8f 100644 Binary files a/demo.PNG and b/demo.PNG differ diff --git a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt index c4060ab..101feae 100755 --- a/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt +++ b/src/net/torvald/terrarumsansbitmap/gdx/TerrarumSansBitmap.kt @@ -886,6 +886,7 @@ class TerrarumSansBitmap( SHEET_CODESTYLE_ASCII_VARW -> codestyleAsciiIndexY(ch) SHEET_ALPHABETIC_PRESENTATION_FORMS -> alphabeticPresentationFormsY(ch) SHEET_HENTAIGANA_VARW -> hentaiganaIndexY(ch) + SHEET_CONTROL_PICTURES_VARW -> controlPicturesIndexY(ch) else -> ch / 16 } @@ -2600,6 +2601,7 @@ class TerrarumSansBitmap( internal const val SHEET_CODESTYLE_ASCII_VARW = 37 internal const val SHEET_ALPHABETIC_PRESENTATION_FORMS = 38 internal const val SHEET_HENTAIGANA_VARW = 39 + internal const val SHEET_CONTROL_PICTURES_VARW = 40 internal const val SHEET_UNKNOWN = 254 @@ -2666,6 +2668,7 @@ class TerrarumSansBitmap( "pua_codestyle_ascii_variable.tga", "alphabetic_presentation_forms_extrawide_variable.tga", "hentaigana_variable.tga", + "control_pictures_variable.tga", ) internal val codeRange = arrayOf( // MUST BE MATCHING WITH SHEET INDICES!! 0..0xFF, // SHEET_ASCII_VARW @@ -2708,6 +2711,7 @@ class TerrarumSansBitmap( 0xF0520..0xF057F, // SHEET_CODESTYLE_ASCII_VARW 0xFB00..0xFB17, // SHEET_ALPHABETIC_PRESENTATION_FORMS 0x1B000..0x1B16F, // SHEET_HENTAIGANA_VARW + 0x2400..0x243F, // SHEET_CONTROL_PICTURES_VARW ) private val codeRangeHangulCompat = 0x3130..0x318F @@ -3056,6 +3060,7 @@ class TerrarumSansBitmap( private fun codestyleAsciiIndexY(c: CodePoint) = (c - 0xF0520) / 16 private fun alphabeticPresentationFormsY(c: CodePoint) = (c - 0xFB00) / 16 private fun hentaiganaIndexY(c: CodePoint) = (c - 0x1B000) / 16 + private fun controlPicturesIndexY(c: CodePoint) = (c - 0x2400) / 16 val charsetOverrideDefault = Character.toChars(CHARSET_OVERRIDE_DEFAULT).toSurrogatedString() val charsetOverrideBulgarian = Character.toChars(CHARSET_OVERRIDE_BG_BG).toSurrogatedString()