2 Commits

Author SHA1 Message Date
minjaesong
af334ad20b Enclosed alphanumerics (issue #18) 2026-05-17 17:21:39 +09:00
minjaesong
55ad8ee943 minor fixes 2026-05-06 22:13:27 +09:00
14 changed files with 28 additions and 12 deletions

View File

@@ -85,6 +85,7 @@ SHEET_COPTIC_VARW = 49
SHEET_CYRILIC_EXTD_VARW = 50 SHEET_CYRILIC_EXTD_VARW = 50
SHEET_MATHS1_VARW = 51 SHEET_MATHS1_VARW = 51
SHEET_EMOJI1 = 52 SHEET_EMOJI1 = 52
SHEET_ENCLOSED_ALPHNUM_VARW = 53
SHEET_UNKNOWN = 254 SHEET_UNKNOWN = 254
@@ -142,6 +143,7 @@ FILE_LIST = [
"cyrilic_extD_variable.tga", "cyrilic_extD_variable.tga",
"maths1_extrawide_variable.tga", "maths1_extrawide_variable.tga",
"emoji1.tga", "emoji1.tga",
"enclosed_alphanumeric_variable.tga",
] ]
CODE_RANGE = [ CODE_RANGE = [
@@ -198,6 +200,7 @@ CODE_RANGE = [
list(range(0x1E030, 0x1E090)), # 50: Cyrillic Ext D list(range(0x1E030, 0x1E090)), # 50: Cyrillic Ext D
list(range(0x2200, 0x2400)), # 51: Maths1 list(range(0x2200, 0x2400)), # 51: Maths1
list(range(0x1F600, 0x1F650)), # 52: Emoji1 list(range(0x1F600, 0x1F650)), # 52: Emoji1
list(range(0x2460, 0x2500)), # 53: Enclosed Alphanum
] ]
CODE_RANGE_HANGUL_COMPAT = range(0x3130, 0x3190) CODE_RANGE_HANGUL_COMPAT = range(0x3130, 0x3190)
@@ -589,5 +592,6 @@ def index_y(sheet_index, c):
SHEET_CYRILIC_EXTD_VARW: lambda: (c - 0x1E030) // 16, SHEET_CYRILIC_EXTD_VARW: lambda: (c - 0x1E030) // 16,
SHEET_MATHS1_VARW: lambda: (c - 0x2200) // 16, SHEET_MATHS1_VARW: lambda: (c - 0x2200) // 16,
SHEET_EMOJI1: lambda: (c - 0x1F600) // 16, SHEET_EMOJI1: lambda: (c - 0x1F600) // 16,
SHEET_ENCLOSED_ALPHNUM_VARW: lambda: (c - 0x2460) // 16,
SHEET_HANGUL: lambda: 0, SHEET_HANGUL: lambda: 0,
}.get(sheet_index, lambda: c // 16)() }.get(sheet_index, lambda: c // 16)()

BIN
demo.PNG

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 180 KiB

View File

@@ -132,6 +132,7 @@ How multilingual? Real multilingual!
Cyrillic Supplement Cyrillic Supplement
Cyrillic Extended-A/B/C/D Cyrillic Extended-A/B/C/D
Devanagari Devanagari
Enclosed Alphanumerics
Enclosed Alphanumeric Supplement Enclosed Alphanumeric Supplement
General Punctuations General Punctuations
Georgian􏿆ჼ􀀀 Georgian􏿆ჼ􀀀

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -904,6 +904,7 @@ class TerrarumSansBitmap(
SHEET_CYRILIC_EXTD_VARW -> cyrilicExtDIndexY(ch) SHEET_CYRILIC_EXTD_VARW -> cyrilicExtDIndexY(ch)
SHEET_MATHS1_VARW -> maths1IndexY(ch) SHEET_MATHS1_VARW -> maths1IndexY(ch)
SHEET_EMOJI1 -> emoji1IndexY(ch) SHEET_EMOJI1 -> emoji1IndexY(ch)
SHEET_ENCLOSED_ALPHNUM_VARW -> enclosedAlphnumIndexY(ch)
else -> ch / 16 else -> ch / 16
} }
@@ -2643,6 +2644,7 @@ class TerrarumSansBitmap(
internal const val SHEET_CYRILIC_EXTD_VARW = 50 internal const val SHEET_CYRILIC_EXTD_VARW = 50
internal const val SHEET_MATHS1_VARW = 51 internal const val SHEET_MATHS1_VARW = 51
internal const val SHEET_EMOJI1 = 52 internal const val SHEET_EMOJI1 = 52
internal const val SHEET_ENCLOSED_ALPHNUM_VARW = 53
internal const val SHEET_UNKNOWN = 254 internal const val SHEET_UNKNOWN = 254
@@ -2718,6 +2720,7 @@ class TerrarumSansBitmap(
"cyrilic_extD_variable.tga", "cyrilic_extD_variable.tga",
"maths1_extrawide_variable.tga", "maths1_extrawide_variable.tga",
"emoji1.tga", "emoji1.tga",
"enclosed_alphanumeric_variable.tga",
) )
internal val codeRange = arrayOf( // MUST BE MATCHING WITH SHEET INDICES!! internal val codeRange = arrayOf( // MUST BE MATCHING WITH SHEET INDICES!!
0..0xFF, // SHEET_ASCII_VARW 0..0xFF, // SHEET_ASCII_VARW
@@ -2773,6 +2776,7 @@ class TerrarumSansBitmap(
0x1E030..0x1E08F, // SHEET_CYRILIC_EXTD_VARW 0x1E030..0x1E08F, // SHEET_CYRILIC_EXTD_VARW
0x2200..0x23FF, // SHEET_MATHS1_VARW 0x2200..0x23FF, // SHEET_MATHS1_VARW
0x1F600..0x1F64F, // SHEET_EMOJI1 0x1F600..0x1F64F, // SHEET_EMOJI1
0x2460..0x24FF, // SHEET_ENCLOSED_ALPHNUM_VARW
) )
private val codeRangeHangulCompat = 0x3130..0x318F private val codeRangeHangulCompat = 0x3130..0x318F
@@ -3136,6 +3140,7 @@ class TerrarumSansBitmap(
private fun cyrilicExtDIndexY(c: CodePoint) = (c - 0x1E030) / 16 private fun cyrilicExtDIndexY(c: CodePoint) = (c - 0x1E030) / 16
private fun maths1IndexY(c: CodePoint) = (c - 0x2200) / 16 private fun maths1IndexY(c: CodePoint) = (c - 0x2200) / 16
private fun emoji1IndexY(c: CodePoint) = (c - 0x1F600) / 16 private fun emoji1IndexY(c: CodePoint) = (c - 0x1F600) / 16
private fun enclosedAlphnumIndexY(c: CodePoint) = (c - 0x2460) / 16
val charsetOverrideDefault = Character.toChars(CHARSET_OVERRIDE_DEFAULT).toSurrogatedString() val charsetOverrideDefault = Character.toChars(CHARSET_OVERRIDE_DEFAULT).toSurrogatedString()
val charsetOverrideBulgarian = Character.toChars(CHARSET_OVERRIDE_BG_BG).toSurrogatedString() val charsetOverrideBulgarian = Character.toChars(CHARSET_OVERRIDE_BG_BG).toSurrogatedString()

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.