Encoding woes
I'm working on this now, but this font has a particular issue because it's for an encoding that Terry, essentially, just made up.
I suggest that we handle it thus:
- BDF font should be in Terry's order
- We should distribute two kinds of OpenType font:
- one in Terry order;
- one in Unicode order.
- We distribute a table to convert the encodings between one another.
- For those characters outside of Unicode (there are actually far fewer than @rendello assumed, he just didn't know the right codepoints for them), we put them in the PUA in a space I will ask for from the ConScript folks.

Encoding table is done.
# TEMPLEOS.TXT
# Date: 2022-11-12 03:09:06 UTC
#
# Name: TempleOS
# Unicode version: 15.0
# Table version: 0.1
# Table format: Format A
# Date: 2022 November 12
# Authors: Fredrick Brennan <[email protected]>
0x0 0x0 # UNNAMED
0x1 0x1 # UNNAMED
0x2 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
0x3 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
0x4 0x2502 # BOX DRAWINGS LIGHT VERTICAL
0x5 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
0x6 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
0x7 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
0x8 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
0x9 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
0xA 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
0xB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
0xC 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
0xD 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
0xE 0xE # UNNAMED
0xF 0xF # UNNAMED
0x10 0x10 # UNNAMED
0x11 0x11 # UNNAMED
0x12 0x12 # UNNAMED
0x13 0x13 # UNNAMED
0x14 0x14 # UNNAMED
0x15 0x15 # UNNAMED
0x16 0x16 # UNNAMED
0x17 0x17 # UNNAMED
0x18 0x18 # UNNAMED
0x19 0x19 # UNNAMED
0x1A 0x1A # UNNAMED
0x1B 0x1B # UNNAMED
0x1C 0x1C # UNNAMED
0x1D 0x1D # UNNAMED
0x1E 0x1E # UNNAMED
0x1F 0x1F # UNNAMED
0x20 0x20 # SPACE
0x21 0x21 # EXCLAMATION MARK
0x22 0x22 # QUOTATION MARK
0x23 0x23 # NUMBER SIGN
0x24 0x24 # DOLLAR SIGN
0x25 0x25 # PERCENT SIGN
0x26 0x26 # AMPERSAND
0x27 0x27 # APOSTROPHE
0x28 0x28 # LEFT PARENTHESIS
0x29 0x29 # RIGHT PARENTHESIS
0x2A 0x2A # ASTERISK
0x2B 0x2B # PLUS SIGN
0x2C 0x2C # COMMA
0x2D 0x2D # HYPHEN-MINUS
0x2E 0x2E # FULL STOP
0x2F 0x2F # SOLIDUS
0x30 0x30 # DIGIT ZERO
0x31 0x31 # DIGIT ONE
0x32 0x32 # DIGIT TWO
0x33 0x33 # DIGIT THREE
0x34 0x34 # DIGIT FOUR
0x35 0x35 # DIGIT FIVE
0x36 0x36 # DIGIT SIX
0x37 0x37 # DIGIT SEVEN
0x38 0x38 # DIGIT EIGHT
0x39 0x39 # DIGIT NINE
0x3A 0x3A # COLON
0x3B 0x3B # SEMICOLON
0x3C 0x3C # LESS-THAN SIGN
0x3D 0x3D # EQUALS SIGN
0x3E 0x3E # GREATER-THAN SIGN
0x3F 0x3F # QUESTION MARK
0x40 0x40 # COMMERCIAL AT
0x41 0x41 # LATIN CAPITAL LETTER A
0x42 0x42 # LATIN CAPITAL LETTER B
0x43 0x43 # LATIN CAPITAL LETTER C
0x44 0x44 # LATIN CAPITAL LETTER D
0x45 0x45 # LATIN CAPITAL LETTER E
0x46 0x46 # LATIN CAPITAL LETTER F
0x47 0x47 # LATIN CAPITAL LETTER G
0x48 0x48 # LATIN CAPITAL LETTER H
0x49 0x49 # LATIN CAPITAL LETTER I
0x4A 0x4A # LATIN CAPITAL LETTER J
0x4B 0x4B # LATIN CAPITAL LETTER K
0x4C 0x4C # LATIN CAPITAL LETTER L
0x4D 0x4D # LATIN CAPITAL LETTER M
0x4E 0x4E # LATIN CAPITAL LETTER N
0x4F 0x4F # LATIN CAPITAL LETTER O
0x50 0x50 # LATIN CAPITAL LETTER P
0x51 0x51 # LATIN CAPITAL LETTER Q
0x52 0x52 # LATIN CAPITAL LETTER R
0x53 0x53 # LATIN CAPITAL LETTER S
0x54 0x54 # LATIN CAPITAL LETTER T
0x55 0x55 # LATIN CAPITAL LETTER U
0x56 0x56 # LATIN CAPITAL LETTER V
0x57 0x57 # LATIN CAPITAL LETTER W
0x58 0x58 # LATIN CAPITAL LETTER X
0x59 0x59 # LATIN CAPITAL LETTER Y
0x5A 0x5A # LATIN CAPITAL LETTER Z
0x5B 0x5B # LEFT SQUARE BRACKET
0x5C 0x5C # REVERSE SOLIDUS
0x5D 0x5D # RIGHT SQUARE BRACKET
0x5E 0x5E # CIRCUMFLEX ACCENT
0x5F 0x5F # LOW LINE
0x60 0x60 # GRAVE ACCENT
0x61 0x61 # LATIN SMALL LETTER A
0x62 0x62 # LATIN SMALL LETTER B
0x63 0x63 # LATIN SMALL LETTER C
0x64 0x64 # LATIN SMALL LETTER D
0x65 0x65 # LATIN SMALL LETTER E
0x66 0x66 # LATIN SMALL LETTER F
0x67 0x67 # LATIN SMALL LETTER G
0x68 0x68 # LATIN SMALL LETTER H
0x69 0x69 # LATIN SMALL LETTER I
0x6A 0x6A # LATIN SMALL LETTER J
0x6B 0x6B # LATIN SMALL LETTER K
0x6C 0x6C # LATIN SMALL LETTER L
0x6D 0x6D # LATIN SMALL LETTER M
0x6E 0x6E # LATIN SMALL LETTER N
0x6F 0x6F # LATIN SMALL LETTER O
0x70 0x70 # LATIN SMALL LETTER P
0x71 0x71 # LATIN SMALL LETTER Q
0x72 0x72 # LATIN SMALL LETTER R
0x73 0x73 # LATIN SMALL LETTER S
0x74 0x74 # LATIN SMALL LETTER T
0x75 0x75 # LATIN SMALL LETTER U
0x76 0x76 # LATIN SMALL LETTER V
0x77 0x77 # LATIN SMALL LETTER W
0x78 0x78 # LATIN SMALL LETTER X
0x79 0x79 # LATIN SMALL LETTER Y
0x7A 0x7A # LATIN SMALL LETTER Z
0x7B 0x7B # LEFT CURLY BRACKET
0x7C 0x7C # VERTICAL LINE
0x7D 0x7D # RIGHT CURLY BRACKET
0x7E 0x7E # TILDE
0x7F 0x7F # UNNAMED
0x80 0xC7 # LATIN CAPITAL LETTER C WITH CEDILLA
0x81 0xFC # LATIN SMALL LETTER U WITH DIAERESIS
0x82 0xE9 # LATIN SMALL LETTER E WITH ACUTE
0x83 0xE2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84 0xE4 # LATIN SMALL LETTER A WITH DIAERESIS
0x85 0xE0 # LATIN SMALL LETTER A WITH GRAVE
0x86 0xE5 # LATIN SMALL LETER A WITH RING ABOVE
0x87 0xE7 # LATIN SMALL LETTER C WITH CEDILLA
0x88 0xEA # LATIN SMALL LETTER E WITH CIRCUMFLEX
0x89 0xEB # LATIN SMALL LETTER E WITH DIAERESIS
0x8A 0xE8 # LATIN SMALL LETTER E WITH GRAVE
0x8B 0xEF # LATIN SMALL LETTER I WITH DIAERESIS
0x8C 0xEE # LATIN SMALL LETTER I WITH CIRCUMFLEX
0x8D 0xEC # LATIN SMALL LETTER I WITH GRAVE
0x8E 0xC4 # LATIN CAPITAL LETTER A WITH DIAERESIS
0x8F 0xC5 # LATIN CAPITAL LETTER A WITH RING ABOVE
0x90 0xC9 # LATIN CAPITAL LETTER E WITH ACUTE
0x91 0xE6 # LATIN SMALL LETTER AE
0x92 0xC6 # LATIN CAPITAL LETTER AE
0x93 0xF4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94 0xF6 # LATIN SMALL LETTER O WITH DIAERESIS
0x95 0xF2 # LATIN SMALL LETTER O WITH GRAVE
0x96 0xFB # LATIN SMALL LETTER U WITH CIRCUMFLEX
0x97 0xF9 # LATIN SMALL LETTER U WITH GRAVE
0x98 0xFF # LATIN SMALL LETTER Y WITH DIAERESIS
0x99 0xD6 # LATIN CAPITAL LETTER O WITH DIAERESIS
0x9A 0xDC # LATIN CAPITAL LETTER U WITH DIAERESIS
0x9B 0xA2 # CENT SIGN
0x9C 0xA3 # POUND SIGN
0x9D 0xA5 # YEN SIGN
0x9E 0x20A7 # PESETA SIGN
0x9F 0x192 # LATIN SMALL LETTER F WITH HOOK
0xA0 0xE1 # LATIN SMALL LETTER A WITH ACUTE
0xA1 0xED # LATIN SMALL LETTER I WITH ACUTE
0xA2 0xF3 # LATIN SMALL LETTER O WITH ACUTE
0xA3 0xFA # LATIN SMALL LETTER U WITH ACUTE
0xA4 0xF1 # LATIN SMALL LETTER N WITH TILDE
0xA5 0xD1 # LATIN CAPITAL LETTER N WITH TILDE
0xA6 0xAA # FEMININE ORDINAL INDICATOR
0xA7 0xBA # MASCULINE ORDINAL INDICATOR
0xA8 0xBF # INVERTED QUESTION MARK
0xA9 0x2310 # REVERSED NOT SIGN
0xAA 0xAC # NOT SIGN
0xAB 0xBD # VULGAR FRACTION ONE HALF
0xAC 0xBC # VULGAR FRACTION ONE QUARTER
0xAD 0xA1 # INVERTED EXCLAMATION MARK
0xAE 0xAB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAF 0xBB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xB0 0x2591 # LIGHT SHADE
0xB1 0x2592 # MEDIUM SHADE
0xB2 0x2593 # DARK SHADE
0xB3 0x2502 # BOX DRAWINGS LIGHT VERTICAL
0xB4 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xB5 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xB6 0x2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xB7 0x2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xB8 0x2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xB9 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xBA 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
0xBB 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
0xBC 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
0xBD 0x255C # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xBE 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xBF 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
0xC0 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
0xC1 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xC2 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xC3 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xC4 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
0xC5 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xC6 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xC7 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xC8 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
0xC9 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xCA 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xCB 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xCC 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xCD 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
0xCE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xCF 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xD0 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xD1 0x2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xD2 0x2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xD3 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xD4 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xD5 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xD6 0x2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xD7 0x256B # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xD8 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xD9 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
0xDA 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
0xDB 0x2588 # FULL BLOCK
0xDC 0x2584 # LOWER HALF BLOCK
0xDD 0x258C # LEFT HALF BLOCK
0xDE 0x2590 # RIGHT HALF BLOCK
0xDF 0x2580 # UPPER HALF BLOCK
0xE0 0x3B1 # GREEK SMALL LETTER ALPHA
0xE1 0xDF # LATIN SMALL LETTER SHARP S
0xE2 0x393 # GREEK CAPITAL LETTER GAMMA
0xE3 0x3C0 # GREEK SMALL LETTER PI
0xE4 0x3A3 # GREEK CAPITAL LETTER SIGMA
0xE5 0x3C3 # GREEK SMALL LETTER SIGMA
0xE6 0xB5 # MICRO SIGN
0xE7 0x3C4 # GREEK SMALL LETTER TAU
0xE8 0x3A6 # GREEK CAPITAL LETTER PHI
0xE9 0x398 # GREEK CAPITAL LETTER THETA
0xEA 0x3A9 # GREEK CAPITAL LETTER OMEGA
0xEB 0x3B4 # GREEK SMALL LETTER DELTA
0xEC 0x221E # INFINITY
0xED 0x3C6 # GREEK SMALL LETTER PHI
0xEE 0x3B5 # GREEK SMALL LETTER EPSILON
0xEF 0x2229 # INTERSECTION
0xF0 0x2261 # IDENTICAL TO
0xF1 0xB1 # PLUS-MINUS SIGN
0xF2 0x2265 # GREATER-THAN OR EQUAL TO
0xF3 0x2264 # LESS-THAN OR EQUAL TO
0xF4 0x2320 # TOP HALF INTEGRAL
0xF5 0x2321 # BOTTOM HALF INTEGRAL
0xF6 0xF7 # DIVISION SIGN
0xF7 0x2248 # ALMOST EQUAL TO
0xF8 0xB0 # DEGREE SIGN
0xF9 0x2219 # BULLET OPERATOR
0xFA 0xB7 # MIDDLE DOT
0xFB 0x221A # SQUARE ROOT
0xFC 0x207F # SUPERSCRIPT LATIN SMALL LETTER N
0xFD 0xB2 # SUPERSCRIPT TWO
0xFE 0x25A0 # BLACK SQUARE
0xFF 0xA0 # NO-BREAK SPACE
0x100 0x411 # CYRILLIC CAPITAL LETTER BE
0x101 0x413 # CYRILLIC CAPITAL LETTER GHE
0x102 0x401 # CYRILLIC CAPITAL LETTER IO
0x103 0x416 # CYRILLIC CAPITAL LETTER ZHE
0x104 0x417 # CYRILLIC CAPITAL LETTER ZE
0x105 0x418 # CYRILLIC CAPITAL LETTER I
0x106 0x419 # CYRILLIC CAPITAL LETTER SHORT I
0x107 0x41B # CYRILLIC CAPITAL LETTER EL
0x108 0x41F # CYRILLIC CAPITAL LETTER PE
0x109 0x423 # CYRILLIC CAPITAL LETTER U
0x10A 0x424 # CYRILLIC CAPITAL LETTER EF
0x10B 0x427 # CYRILLIC CAPITAL LETTER CHE
0x10C 0x428 # CYRILLIC CAPITAL LETTER SHA
0x10D 0x42A # CYRILLIC CAPITAL LETTER HARD SIGN
0x10E 0x42B # CYRILLIC CAPITAL LETTER YERU
0x10F 0x42D # CYRILLIC CAPITAL LETTER E
0x110 0x42E # CYRILLIC CAPITAL LETTER YU
0x111 0x42F # CYRILLIC CAPITAL LETTER YA
0x112 0x431 # CYRILLIC SMALL LETTER BE
0x113 0x432 # CYRILLIC SMALL LETTER VE
0x114 0x433 # CYRILLIC SMALL LETTER GHE
0x115 0x451 # CYRILLIC SMALL LETTER IO
0x116 0x436 # CYRILLIC SMALL LETTER ZHE
0x117 0x437 # CYRILLIC SMALL LETTER ZE
0x118 0x438 # CYRILLIC SMALL LETTER I
0x119 0x439 # CYRILLIC SMALL LETTER SHORT I
0x11A 0x43A # CYRILLIC SMALL LETTER KA
0x11B 0x43B # CYRILLIC SMALL LETTER EL
0x11C 0x43C # CYRILLIC SMALL LETTER EM
0x11D 0x43D # CYRILLIC SMALL LETTER EN
0x11E 0x43F # CYRILLIC SMALL LETTER PE
0x11F 0x442 # CYRILLIC SMALL LETTER TE
0x120 0x447 # CYRILLIC SMALL LETTER CHE
0x121 0x448 # CYRILLIC SMALL LETTER SHA
0x122 0x44A # CYRILLIC SMALL LETTER HARD SIGN
0x123 0x44B # CYRILLIC SMALL LETTER YERU
0x124 0x44C # CYRILLIC SMALL LETTER SOFT SIGN
0x125 0x44D # CYRILLIC SMALL LETTER E
0x126 0x44E # CYRILLIC SMALL LETTER YU
0x127 0x44F # CYRILLIC SMALL LETTER YA
0x128 0xAB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0x129 0xBB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0x12A 0x201C # LEFT DOUBLE QUOTATION MARK
0x12B 0x201D # RIGHT DOUBLE QUOTATION MARK
0x12C 0x2116 # NUMERO SIGN
0x12D 0xBF # INVERTED QUESTION MARK
0x12E 0x192 # LATIN SMALL LETTER F WITH HOOK
0x12F 0xA3 # POUND SIGN
0x130 0x2E # FULL STOP
0x131 0x1D377 # TALLY MARK ONE
0x132 0x2E1A # HYPHEN WITH DIAERESIS
0x133 0x203C # DOUBLE EXCLAMATION MARK
0x134 0x134 # UNNAMED
0x135 0x2E3 # MODIFIER LETTER SMALL X
0x136 0x136 # UNNAMED
0x137 0x2160 # ROMAN NUMERAL ONE
0x138 0x2161 # ROMAN NUMERAL TWO
0x139 0x2191 # UPWARDS ARROW
0x13A 0x2193 # DOWNWARDS ARROW
0x13B 0x21E4 # LEFTWARDS ARROW TO BAR
0x13C 0x21E5 # RIGHTWARDS ARROW TO BAR
0x13D 0x13D # UNNAMED
0x13E 0x13E # UNNAMED
0x13F 0x2022 # BULLET
0x140 0x414 # CYRILLIC CAPITAL LETTER DE
0x141 0x426 # CYRILLIC CAPITAL LETTER TSE
0x142 0x429 # CYRILLIC CAPITAL LETTER SHCHA
0x143 0x434 # CYRILLIC SMALL LETTER DE
0x144 0x444 # CYRILLIC SMALL LETTER EF
0x145 0x145 # UNNAMED
0x146 0x449 # CYRILLIC SMALL LETTER SHCHA
0x147 0xB4 # ACUTE ACCENT
0x148 0xA8 # DIAERESIS
0x149 0x2DC # SMALL TILDE
0x14A 0xE9 # LATIN SMALL LETTER E WITH ACUTE
0x14B 0xE7 # LATIN SMALL LETTER C WITH CEDILLA
0x14C 0x133 # LATIN SMALL LIGATURE IJ
0x14D 0x1F514 # BELL
0x14E 0x25CC # DOTTED CIRCLE
0x14F 0x25EF # LARGE CIRCLE
0x150 0xBC # VULGAR FRACTION ONE QUARTER
0x151 0x2153 # VULGAR FRACTION ONE THIRD
0x152 0xBD # VULGAR FRACTION ONE HALF
0x153 0xBE # VULGAR FRACTION THREE QUARTERS
0x154 0x1FA9C # LADDER
0x155 0x2056 # THREE DOT PUNCTUATION
0x156 0x2380 # INSERTION SYMBOL
0x157 0x157 # UNNAMED
0x158 0x158 # UNNAMED
0x159 0x159 # UNNAMED
0x15A 0x15A # UNNAMED
0x15B 0x2626 # ORTHODOX CROSS
0x15C 0x21F2 # SOUTH EAST ARROW TO CORNER
0x15D 0xA7 # SECTION SIGN
0x15E 0xB6 # PILCROW SIGN
0x15F 0x200D # ZERO WIDTH JOINER

@ctrlcctrlv I'm not up on the font world, but I don't understand points 2 and 3. Would the font with Terry's order not work with Unicode, and if not, might it be confusing to add for the font normies (such as myself)?
Regarding point 4, I knew that most of them would have Unicode representations, but I couldn't for the life of me figure out what they were. I was planning to go back and fix it up, but never got around to it. I just dumped them at the beginning of one of the PUAs. If you want to formalize their position in the PUA, then feel free, although it's probably will never be an issue for –again– us font normies. ;)
@rendello The issue is if you try to view a file made on TempleOS with your font, it will not work if the font is not in Terry order. (And some programs may have their own limitations around the use of certain codepoints, e.g., Terry likes to put blocks at 0x7F, some programs will not render these, nor any of the characters between 0x80 and 0x9F.)
So, the Unicode font should certainly be default, I agree with you: thus that huge encoding table which makes it possible to coerce Terry order to Unicode order.
Today I'm going to generate an ICU compatible conversion file. (https://unicode-org.github.io/icu/userguide/conversion/data.html#icu-mapping-table-data-files)
@ctrlcctrlv I see, thanks for the explanation
Yes, to do it right there need to be three conversion tables:
- Terry StdFont → Unicode
- Terry Cyrillic → Unicode
- TempleOS font merged → Unicode
Those files are enough for tools like iconv to do the reverse conversions, although some data will be inevitably lost because Terry duplicated characters. So e.g. if you convert to Unicode and back you may not get byte-for-byte results.
(But the result will still look the same in TempleOS.)
By the way, I think that Terry's encoding is the only popular encoding in history which does what's called "LCG unification". This is similar to CJK unification, which is common in encodings and software. Terry did not add a codepoint for e.g. Cyrillic a, instead I guess assuming users would use the Latin one even though it'd be hilariously ugly because the Cyrillic is regular and the Latin is bold. I won't be trying to fix this.
Regarding point 4, I knew that most of them would have Unicode representations, but I couldn't for the life of me figure out what they were. I was planning to go back and fix it up, but never got around to it.
It doesn't help that Terry was a boomer and added a glyph for a currency that has not existed since 2002 (peseta, ₧), before he even started work on TempleOS lol :o)
The "LCG unification", as you've termed it, was a hilarious thing to figure out when I was first looking at the font. I wonder where the Cyrillic characters are from.
Hahaha it's not my term, I read it on a Unicode mailing list years ago when someone was making an argument against some point about CJK unification. I've never seen LCG unification in practice until this day, it's usually an absurdly broken idea you can trot out to make a point in a discussion about character encodings.