diff --git a/src/xpdev/unicode.c b/src/xpdev/unicode.c index 64230db991313ef0f7d9fac67a0b85d6e80cf88f..f1643e71a6592550a5dcb13d1d1387f583047c08 100644 --- a/src/xpdev/unicode.c +++ b/src/xpdev/unicode.c @@ -348,6 +348,18 @@ char unicode_to_cp437(enum unicode_codepoint codepoint) case UNICODE_BROKEN_BAR: return '|'; + case UNICODE_CENT_SIGN: return CP437_CHAR_CENT_SIGN; + case UNICODE_POUND_SIGN: return CP437_CHAR_POUND_SIGN; + case UNICODE_YEN_SIGN: return CP437_CHAR_YEN_SIGN; + case UNICODE_SECTION_SIGN: return CP437_CHAR_SECTION_SIGN; + case UNICODE_DEGREE_SIGN: return CP437_CHAR_DEGREE_SIGN; + case UNICODE_PLUS_MINUS_SIGN: return CP437_CHAR_PLUS_MINUS_SIGN; + case UNICODE_SUPERSCRIPT_TWO: return CP437_CHAR_SUPERSCRIPT_TWO; + case UNICODE_PILCROW_SIGN: return CP437_CHAR_PILCROW_SIGN; + case UNICODE_INVERTED_QUESTION_MARK: return CP437_CHAR_INVERTED_QUESTION_MARK; + case UNICODE_INVERTED_EXCLAMATION_MARK: return CP437_CHAR_INVERTED_EXCLAMATION_MARK; + case UNICODE_DOUBLE_EXCLAMATION_MARK: return CP437_CHAR_DOUBLE_EXCLAMATION_MARK; + // Perform Upper -> Lower case mapping where an upper case equivalent doesn't exist in CP437: case UNICODE_LATIN_CAPITAL_LETTER_A_WITH_GRAVE: return CP437_CHAR_LATIN_SMALL_LETTER_A_WITH_GRAVE; case UNICODE_LATIN_CAPITAL_LETTER_A_WITH_ACUTE: return CP437_CHAR_LATIN_SMALL_LETTER_A_WITH_ACUTE; @@ -626,12 +638,13 @@ char unicode_to_cp437(enum unicode_codepoint codepoint) case 0x2594: // Upper One Eighth Block return '\xDF'; - } - // Look for a 1:1 match in the CP437 -> Unicode table - for(int i = 1; i < 0x100; i++) { - if(cp437_unicode_tbl[i] == codepoint) - return i; + default: // Look for a 1:1 match in the CP437 -> Unicode table + for(int i = 1; i < 0x100; i++) { + if(cp437_unicode_tbl[i] == codepoint) + return i; + } + break; } return '\0'; // Not-mapped