diff options
author | Julien Nabet <serval2412@yahoo.fr> | 2022-09-12 20:33:37 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2022-09-15 15:56:35 +0200 |
commit | b943d28f04014a36ce51da386f0b9411b8dbfa01 (patch) | |
tree | 4c7b836bc09099b662719c503c09e5627a995fa9 | |
parent | 382b82541a2e4d83197bd0b20fc5fc40bb4313e2 (diff) |
tdf#150877: Add support for Kamenický and Mazovia encodings
...as referenced e.g. at
<https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/aa975345(v=vs.71)>
"Code Pages Supported by Visual FoxPro". That source lists those two encodings
with "code page" values 895 and 620, resp. (which might be what we call "Windows
code pages" in include/rtl/tencinfo.h) and "code page identifier" values 0x68
and 0x69, reps. (which might be what we call "Windows charsets" in
include/rtl/tencinfo.h. But I deliberately left these two new
RTL_TEXTENCODING_* values without any mappings to such Windows codepages etc.,
as I didn't find any authoritative sources. What I used is the information
available at <https://en.wikipedia.org/wiki/Kamenick%C3%BD_encoding> and
<https://en.wikipedia.org/wiki/Mazovia_encoding>.
(And while at it, I also updated the instructions what to do "Whenever some
encoding is added here" in include/rtl/textenc.h.)
This commit is building on some prior, abandoned work by Julien Nabet at
<https://gerrit.libreoffice.org/c/core/+/139819> "tdf#150877: DBF Mazovia
encoding (0x69)".
Change-Id: Iae8af4ebab8915411499ae7ef951339b335aa857
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140014
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
-rw-r--r-- | connectivity/source/commontools/dbtools.cxx | 4 | ||||
-rw-r--r-- | include/rtl/textenc.h | 5 | ||||
-rw-r--r-- | sal/qa/rtl/textenc/rtl_textcvt.cxx | 68 | ||||
-rw-r--r-- | sal/textenc/tables.cxx | 7 | ||||
-rw-r--r-- | sal/textenc/tcvtest1.tab | 344 | ||||
-rw-r--r-- | sal/textenc/tencinfo.cxx | 2 |
6 files changed, 423 insertions, 7 deletions
diff --git a/connectivity/source/commontools/dbtools.cxx b/connectivity/source/commontools/dbtools.cxx index 93c00069b821..efe44974d892 100644 --- a/connectivity/source/commontools/dbtools.cxx +++ b/connectivity/source/commontools/dbtools.cxx @@ -2016,8 +2016,8 @@ namespace dbase case 0x65: eEncoding = RTL_TEXTENCODING_IBM_866; break; // Russian MS-DOS code page 866 case 0x66: eEncoding = RTL_TEXTENCODING_IBM_865; break; // Nordic MS-DOS code page 865 case 0x67: eEncoding = RTL_TEXTENCODING_IBM_861; break; // Icelandic MS-DOS - //case 0x68: eEncoding = ; break; // Kamenicky (Czech) MS-DOS - //case 0x69: eEncoding = ; break; // Mazovia (Polish) MS-DOS + case 0x68: eEncoding = RTL_TEXTENCODING_KAMENICKY; break; // Kamenicky (Czech) MS-DOS + case 0x69: eEncoding = RTL_TEXTENCODING_MAZOVIA; break; // Mazovia (Polish) MS-DOS case 0x6A: eEncoding = RTL_TEXTENCODING_IBM_737; break; // Greek MS-DOS (437G) case 0x6B: eEncoding = RTL_TEXTENCODING_IBM_857; break; // Turkish MS-DOS case 0x6C: eEncoding = RTL_TEXTENCODING_IBM_863; break; // MS-DOS, Canada diff --git a/include/rtl/textenc.h b/include/rtl/textenc.h index 1a675e1be665..af4a16e5c422 100644 --- a/include/rtl/textenc.h +++ b/include/rtl/textenc.h @@ -133,8 +133,11 @@ typedef sal_uInt16 rtl_TextEncoding; #define RTL_TEXTENCODING_ADOBE_SYMBOL (RTL_TEXTENC_CAST( 92 )) #define RTL_TEXTENCODING_PT154 (RTL_TEXTENC_CAST( 93 )) #define RTL_TEXTENCODING_ADOBE_DINGBATS (RTL_TEXTENC_CAST( 94 )) +#define RTL_TEXTENCODING_KAMENICKY (RTL_TEXTENC_CAST( 95 )) +#define RTL_TEXTENCODING_MAZOVIA (RTL_TEXTENC_CAST( 96 )) /* ATTENTION! Whenever some encoding is added here, make sure to update - * rtl_isOctetTextEncoding in tencinfo.c. + * rtl_isOctetTextEncoding in sal/textenc/tencinfo.cxx and sal_getFullTextEncodingData in + * sal/textenc/tables.cxx. */ #define RTL_TEXTENCODING_USER_START (RTL_TEXTENC_CAST( 0x8000 )) diff --git a/sal/qa/rtl/textenc/rtl_textcvt.cxx b/sal/qa/rtl/textenc/rtl_textcvt.cxx index 55804bd32838..a31603d90ae9 100644 --- a/sal/qa/rtl/textenc/rtl_textcvt.cxx +++ b/sal/qa/rtl/textenc/rtl_textcvt.cxx @@ -1286,7 +1286,73 @@ void Test::testSingleByte() { 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437, 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F, 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447, - 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F } } }; + 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F } }, + { RTL_TEXTENCODING_KAMENICKY, + { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, + 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, + 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, + 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, + 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, + 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, + 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, + 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, + 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, + 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, + 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, + 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, + 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, + 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, + 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, + 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, + 0x010C,0x00FC,0x00E9,0x010F,0x00E4,0x010E,0x0164,0x010D, + 0x011B,0x011A,0x0139,0x00CD,0x013E,0x013A,0x00C4,0x00C1, + 0x00C9,0x017E,0x017D,0x00F4,0x00F6,0x00D3,0x016F,0x00DA, + 0x00FD,0x00D6,0x00DC,0x0160,0x013D,0x00DD,0x0158,0x0165, + 0x00E1,0x00ED,0x00F3,0x00FA,0x0148,0x0147,0x016E,0x00D4, + 0x0161,0x0159,0x0155,0x0154,0x00BC,0x00A7,0x00AB,0x00BB, + 0x2591,0x2592,0x2593,0x2502,0x2524,0x2561,0x2562,0x2556, + 0x2555,0x2563,0x2551,0x2557,0x255D,0x255C,0x255B,0x2510, + 0x2514,0x2534,0x252C,0x251C,0x2500,0x253C,0x255E,0x255F, + 0x255A,0x2554,0x2569,0x2566,0x2560,0x2550,0x256C,0x2567, + 0x2568,0x2564,0x2565,0x2559,0x2558,0x2552,0x2553,0x256B, + 0x256A,0x2518,0x250C,0x2588,0x2584,0x258C,0x2590,0x2580, + 0x03B1,0x00DF,0x0393,0x03C0,0x03A3,0x03C3,0x00B5,0x03C4, + 0x03A6,0x0398,0x03A9,0x03B4,0x221E,0x03C6,0x03B5,0x2229, + 0x2261,0x00B1,0x2265,0x2264,0x2320,0x2321,0x00F7,0x2248, + 0x00B0,0x2219,0x00B7,0x221A,0x207F,0x00B2,0x25A0,0x00A0 } }, + { RTL_TEXTENCODING_MAZOVIA, + { 0x0000,0x0001,0x0002,0x0003,0x0004,0x0005,0x0006,0x0007, + 0x0008,0x0009,0x000A,0x000B,0x000C,0x000D,0x000E,0x000F, + 0x0010,0x0011,0x0012,0x0013,0x0014,0x0015,0x0016,0x0017, + 0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,0x001F, + 0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,0x0027, + 0x0028,0x0029,0x002A,0x002B,0x002C,0x002D,0x002E,0x002F, + 0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037, + 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F, + 0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,0x0047, + 0x0048,0x0049,0x004A,0x004B,0x004C,0x004D,0x004E,0x004F, + 0x0050,0x0051,0x0052,0x0053,0x0054,0x0055,0x0056,0x0057, + 0x0058,0x0059,0x005A,0x005B,0x005C,0x005D,0x005E,0x005F, + 0x0060,0x0061,0x0062,0x0063,0x0064,0x0065,0x0066,0x0067, + 0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E,0x006F, + 0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, + 0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F, + 0x00C7,0x00FC,0x00E9,0x00E2,0x00E4,0x00E0,0x0105,0x00E7, + 0x00EA,0x00EB,0x00E8,0x00EF,0x00EE,0x0107,0x00C4,0x0104, + 0x0118,0x0119,0x0142,0x00F4,0x00F6,0x0106,0x00FB,0x00F9, + 0x015A,0x00D6,0x00DC,0x00A2,0x0141,0x00A5,0x015B,0x0192, + 0x0179,0x017B,0x00F3,0x00D3,0x0144,0x0143,0x017A,0x017C, + 0x00BF,0x2310,0x00AC,0x00BD,0x00BC,0x00A1,0x00AB,0x00BB, + 0x2591,0x2592,0x2593,0x2502,0x2524,0x2561,0x2562,0x2556, + 0x2555,0x2563,0x2551,0x2557,0x255D,0x255C,0x255B,0x2510, + 0x2514,0x2534,0x252C,0x251C,0x2500,0x253C,0x255E,0x255F, + 0x255A,0x2554,0x2569,0x2566,0x2560,0x2550,0x256C,0x2567, + 0x2568,0x2564,0x2565,0x2559,0x2558,0x2552,0x2553,0x256B, + 0x256A,0x2518,0x250C,0x2588,0x2584,0x258C,0x2590,0x2580, + 0x03B1,0x00DF,0x0393,0x03C0,0x03A3,0x03C3,0x00B5,0x03C4, + 0x03A6,0x0398,0x03A9,0x03B4,0x221E,0x03C6,0x03B5,0x2229, + 0x2261,0x00B1,0x2265,0x2264,0x2320,0x2321,0x00F7,0x2248, + 0x00B0,0x2219,0x00B7,0x221A,0x207F,0x00B2,0x25A0,0x00A0 } } }; for (std::size_t i = 0; i < SAL_N_ELEMENTS(data); ++i) { testSingleByteCharSet(data[i]); } diff --git a/sal/textenc/tables.cxx b/sal/textenc/tables.cxx index 075f1d56f902..163ffe131de4 100644 --- a/sal/textenc/tables.cxx +++ b/sal/textenc/tables.cxx @@ -23,6 +23,7 @@ #include <cassert> #include <cstddef> +#include <iterator> #include <rtl/textenc.h> #include <sal/types.h> @@ -257,10 +258,12 @@ extern "C" SAL_DLLPUBLIC_EXPORT ImplTextEncodingData const * &adobeStandardEncodingData, /* ADOBE_STANDARD */ &adobeSymbolEncodingData, /* ADOBE_SYMBOL */ &aImplPT154TextEncodingData, /* PT154 */ - &adobeDingbatsEncodingData }; /* ADOBE_DINGBATS */ + &adobeDingbatsEncodingData, /* ADOBE_DINGBATS */ + &kamenickyEncodingData, /* KAMENICKY */ + &mazoviaEncodingData }; /* MAZOVIA */ static_assert( - SAL_N_ELEMENTS(aData) == RTL_TEXTENCODING_ADOBE_DINGBATS + 1, + SAL_N_ELEMENTS(aData) == RTL_TEXTENCODING_MAZOVIA + 1, "update table above if a new encoding is added"); return diff --git a/sal/textenc/tcvtest1.tab b/sal/textenc/tcvtest1.tab index b8661ab9c5e9..7c54f2393934 100644 --- a/sal/textenc/tcvtest1.tab +++ b/sal/textenc/tcvtest1.tab @@ -4578,3 +4578,347 @@ ImplTextEncodingData const aImplPT154TextEncodingData 204, RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME }; /* SCRIPT_CYRILLIC */ + +/* ======================================================================= */ + +/* Kamenický */ +/* Czech, see <https://en.wikipedia.org/wiki/Kamenick%C3%BD_encoding> */ +/* 1-byte, 0x00-0x7F ASCII without exception */ +/* Convert-Tables: <https://en.wikipedia.org/wiki/Kamenick%C3%BD_encoding> obtained 2022-09-15 */ + +sal_uInt16 const kamenickyToUniTab[128] = { +/* 0 1 2 3 4 5 6 7 */ +/* 8 9 A B C D E F */ + 0x010C, 0x00FC, 0x00E9, 0x010F, 0x00E4, 0x010E, 0x0164, 0x010D, /* 0x80 */ + 0x011B, 0x011A, 0x0139, 0x00CD, 0x013E, 0x013A, 0x00C4, 0x00C1, /* 0x80 */ + 0x00C9, 0x017E, 0x017D, 0x00F4, 0x00F6, 0x00D3, 0x016F, 0x00DA, /* 0x90 */ + 0x00FD, 0x00D6, 0x00DC, 0x0160, 0x013D, 0x00DD, 0x0158, 0x0165, /* 0x90 */ + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0148, 0x0147, 0x016E, 0x00D4, /* 0xA0 */ + 0x0161, 0x0159, 0x0155, 0x0154, 0x00BC, 0x00A7, 0x00AB, 0x00BB, /* 0xA0 */ + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */ + 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */ + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */ + 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */ + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */ + 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */ + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */ + 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */ + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */ + 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */ +}; + +ImplUniCharTabData const kamenickyToCharTabEx[128] = { + { 0x00A0, 0xFF, 0 }, + { 0x00A7, 0xAD, 0 }, + { 0x00AB, 0xAE, 0 }, + { 0x00B0, 0xF8, 0 }, + { 0x00B1, 0xF1, 0 }, + { 0x00B2, 0xFD, 0 }, + { 0x00B5, 0xE6, 0 }, + { 0x00B7, 0xFA, 0 }, + { 0x00BB, 0xAF, 0 }, + { 0x00BC, 0xAC, 0 }, + { 0x00C1, 0x8F, 0 }, + { 0x00C4, 0x8E, 0 }, + { 0x00C9, 0x90, 0 }, + { 0x00CD, 0x8B, 0 }, + { 0x00D3, 0x95, 0 }, + { 0x00D4, 0xA7, 0 }, + { 0x00D6, 0x99, 0 }, + { 0x00DA, 0x97, 0 }, + { 0x00DC, 0x9A, 0 }, + { 0x00DD, 0x9D, 0 }, + { 0x00DF, 0xE1, 0 }, + { 0x00E1, 0xA0, 0 }, + { 0x00E4, 0x84, 0 }, + { 0x00E9, 0x82, 0 }, + { 0x00ED, 0xA1, 0 }, + { 0x00F3, 0xA2, 0 }, + { 0x00F4, 0x93, 0 }, + { 0x00F6, 0x94, 0 }, + { 0x00F7, 0xF6, 0 }, + { 0x00FA, 0xA3, 0 }, + { 0x00FC, 0x81, 0 }, + { 0x00FD, 0x98, 0 }, + { 0x010C, 0x80, 0 }, + { 0x010D, 0x87, 0 }, + { 0x010E, 0x85, 0 }, + { 0x010F, 0x83, 0 }, + { 0x011A, 0x89, 0 }, + { 0x011B, 0x88, 0 }, + { 0x0139, 0x8A, 0 }, + { 0x013A, 0x8D, 0 }, + { 0x013D, 0x9C, 0 }, + { 0x013E, 0x8C, 0 }, + { 0x0147, 0xA5, 0 }, + { 0x0148, 0xA4, 0 }, + { 0x0154, 0xAB, 0 }, + { 0x0155, 0xAA, 0 }, + { 0x0158, 0x9E, 0 }, + { 0x0159, 0xA9, 0 }, + { 0x0160, 0x9B, 0 }, + { 0x0161, 0xA8, 0 }, + { 0x0164, 0x86, 0 }, + { 0x0165, 0x9F, 0 }, + { 0x016E, 0xA6, 0 }, + { 0x016F, 0x96, 0 }, + { 0x017D, 0x92, 0 }, + { 0x017E, 0x91, 0 }, + { 0x0393, 0xE2, 0 }, + { 0x0398, 0xE9, 0 }, + { 0x03A3, 0xE4, 0 }, + { 0x03A6, 0xE8, 0 }, + { 0x03A9, 0xEA, 0 }, + { 0x03B1, 0xE0, 0 }, + { 0x03B4, 0xEB, 0 }, + { 0x03B5, 0xEE, 0 }, + { 0x03C0, 0xE3, 0 }, + { 0x03C3, 0xE5, 0 }, + { 0x03C4, 0xE7, 0 }, + { 0x03C6, 0xED, 0 }, + { 0x207F, 0xFC, 0 }, + { 0x2219, 0xF9, 0 }, + { 0x221A, 0xFB, 0 }, + { 0x221E, 0xEC, 0 }, + { 0x2229, 0xEF, 0 }, + { 0x2248, 0xF7, 0 }, + { 0x2261, 0xF0, 0 }, + { 0x2264, 0xF3, 0 }, + { 0x2265, 0xF2, 0 }, + { 0x2320, 0xF4, 0 }, + { 0x2321, 0xF5, 0 }, + { 0x2500, 0xC4, 0 }, + { 0x2502, 0xB3, 0 }, + { 0x250C, 0xDA, 0 }, + { 0x2510, 0xBF, 0 }, + { 0x2514, 0xC0, 0 }, + { 0x2518, 0xD9, 0 }, + { 0x251C, 0xC3, 0 }, + { 0x2524, 0xB4, 0 }, + { 0x252C, 0xC2, 0 }, + { 0x2534, 0xC1, 0 }, + { 0x253C, 0xC5, 0 }, + { 0x2550, 0xCD, 0 }, + { 0x2551, 0xBA, 0 }, + { 0x2552, 0xD5, 0 }, + { 0x2553, 0xD6, 0 }, + { 0x2554, 0xC9, 0 }, + { 0x2555, 0xB8, 0 }, + { 0x2556, 0xB7, 0 }, + { 0x2557, 0xBB, 0 }, + { 0x2558, 0xD4, 0 }, + { 0x2559, 0xD3, 0 }, + { 0x255A, 0xC8, 0 }, + { 0x255B, 0xBE, 0 }, + { 0x255C, 0xBD, 0 }, + { 0x255D, 0xBC, 0 }, + { 0x255E, 0xC6, 0 }, + { 0x255F, 0xC7, 0 }, + { 0x2560, 0xCC, 0 }, + { 0x2561, 0xB5, 0 }, + { 0x2562, 0xB6, 0 }, + { 0x2563, 0xB9, 0 }, + { 0x2564, 0xD1, 0 }, + { 0x2565, 0xD2, 0 }, + { 0x2566, 0xCB, 0 }, + { 0x2567, 0xCF, 0 }, + { 0x2568, 0xD0, 0 }, + { 0x2569, 0xCA, 0 }, + { 0x256A, 0xD8, 0 }, + { 0x256B, 0xD7, 0 }, + { 0x256C, 0xCE, 0 }, + { 0x2580, 0xDF, 0 }, + { 0x2584, 0xDC, 0 }, + { 0x2588, 0xDB, 0 }, + { 0x258C, 0xDD, 0 }, + { 0x2590, 0xDE, 0 }, + { 0x2591, 0xB0, 0 }, + { 0x2592, 0xB1, 0 }, + { 0x2593, 0xB2, 0 }, + { 0x25A0, 0xFE, 0 } +}; + +ImplByteConvertData const kamenickyByteCvtData = { + kamenickyToUniTab, nullptr, nullptr, nullptr, kamenickyToCharTabEx, 0x80, 0xFF, NOTABUNI_START, + NOTABUNI_END, NOTABCHAR_START, NOTABCHAR_END, NOTABCHAR_START, NOTABCHAR_END, + std::size(kamenickyToCharTabEx) +}; + +ImplTextEncodingData const kamenickyEncodingData = { + { &kamenickyByteCvtData, sal::detail::textenc::convertCharToUnicode, + sal::detail::textenc::convertUnicodeToChar, nullptr, nullptr, nullptr, nullptr, nullptr, + nullptr }, + nullptr, nullptr, 1, 1, 1, 0, RTL_TEXTENCODING_INFO_ASCII +}; + +/* ======================================================================= */ + +/* Mazovia */ +/* Polish, see <https://en.wikipedia.org/wiki/Mazovia_encoding> */ +/* 1-byte, 0x00-0x7F ASCII without exception */ +/* Convert-Tables: <https://en.wikipedia.org/wiki/Mazovia_encoding> obtained 2022-09-15 */ + +sal_uInt16 const mazoviaToUniTab[128] = { +/* 0 1 2 3 4 5 6 7 */ +/* 8 9 A B C D E F */ + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x0105, 0x00E7, /* 0x80 */ + 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0107, 0x00C4, 0x0104, /* 0x80 */ + 0x0118, 0x0119, 0x0142, 0x00F4, 0x00F6, 0x0106, 0x00FB, 0x00F9, /* 0x90 */ + 0x015A, 0x00D6, 0x00DC, 0x00A2, 0x0141, 0x00A5, 0x015B, 0x0192, /* 0x90 */ + 0x0179, 0x017B, 0x00F3, 0x00D3, 0x0144, 0x0143, 0x017A, 0x017C, /* 0xA0 */ + 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, /* 0xA0 */ + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, /* 0xB0 */ + 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, /* 0xB0 */ + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, /* 0xC0 */ + 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, /* 0xC0 */ + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, /* 0xD0 */ + 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */ + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, /* 0xE0 */ + 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, /* 0xE0 */ + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */ + 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 /* 0xF0 */ +}; + +ImplUniCharTabData const mazoviaToCharTabEx[128] = { + { 0x00A0, 0xFF, 0 }, + { 0x00A1, 0xAD, 0 }, + { 0x00A2, 0x9B, 0 }, + { 0x00A5, 0x9D, 0 }, + { 0x00AB, 0xAE, 0 }, + { 0x00AC, 0xAA, 0 }, + { 0x00B0, 0xF8, 0 }, + { 0x00B1, 0xF1, 0 }, + { 0x00B2, 0xFD, 0 }, + { 0x00B5, 0xE6, 0 }, + { 0x00B7, 0xFA, 0 }, + { 0x00BB, 0xAF, 0 }, + { 0x00BC, 0xAC, 0 }, + { 0x00BD, 0xAB, 0 }, + { 0x00BF, 0xA8, 0 }, + { 0x00C4, 0x8E, 0 }, + { 0x00C7, 0x80, 0 }, + { 0x00D3, 0xA3, 0 }, + { 0x00D6, 0x99, 0 }, + { 0x00DC, 0x9A, 0 }, + { 0x00DF, 0xE1, 0 }, + { 0x00E0, 0x85, 0 }, + { 0x00E2, 0x83, 0 }, + { 0x00E4, 0x84, 0 }, + { 0x00E7, 0x87, 0 }, + { 0x00E8, 0x8A, 0 }, + { 0x00E9, 0x82, 0 }, + { 0x00EA, 0x88, 0 }, + { 0x00EB, 0x89, 0 }, + { 0x00EE, 0x8C, 0 }, + { 0x00EF, 0x8B, 0 }, + { 0x00F3, 0xA2, 0 }, + { 0x00F4, 0x93, 0 }, + { 0x00F6, 0x94, 0 }, + { 0x00F7, 0xF6, 0 }, + { 0x00F9, 0x97, 0 }, + { 0x00FB, 0x96, 0 }, + { 0x00FC, 0x81, 0 }, + { 0x0104, 0x8F, 0 }, + { 0x0105, 0x86, 0 }, + { 0x0106, 0x95, 0 }, + { 0x0107, 0x8D, 0 }, + { 0x0118, 0x90, 0 }, + { 0x0119, 0x91, 0 }, + { 0x0141, 0x9C, 0 }, + { 0x0142, 0x92, 0 }, + { 0x0143, 0xA5, 0 }, + { 0x0144, 0xA4, 0 }, + { 0x015A, 0x98, 0 }, + { 0x015B, 0x9E, 0 }, + { 0x0179, 0xA0, 0 }, + { 0x017A, 0xA6, 0 }, + { 0x017B, 0xA1, 0 }, + { 0x017C, 0xA7, 0 }, + { 0x0192, 0x9F, 0 }, + { 0x0393, 0xE2, 0 }, + { 0x0398, 0xE9, 0 }, + { 0x03A3, 0xE4, 0 }, + { 0x03A6, 0xE8, 0 }, + { 0x03A9, 0xEA, 0 }, + { 0x03B1, 0xE0, 0 }, + { 0x03B4, 0xEB, 0 }, + { 0x03B5, 0xEE, 0 }, + { 0x03C0, 0xE3, 0 }, + { 0x03C3, 0xE5, 0 }, + { 0x03C4, 0xE7, 0 }, + { 0x03C6, 0xED, 0 }, + { 0x207F, 0xFC, 0 }, + { 0x2219, 0xF9, 0 }, + { 0x221A, 0xFB, 0 }, + { 0x221E, 0xEC, 0 }, + { 0x2229, 0xEF, 0 }, + { 0x2248, 0xF7, 0 }, + { 0x2261, 0xF0, 0 }, + { 0x2264, 0xF3, 0 }, + { 0x2265, 0xF2, 0 }, + { 0x2310, 0xA9, 0 }, + { 0x2320, 0xF4, 0 }, + { 0x2321, 0xF5, 0 }, + { 0x2500, 0xC4, 0 }, + { 0x2502, 0xB3, 0 }, + { 0x250C, 0xDA, 0 }, + { 0x2510, 0xBF, 0 }, + { 0x2514, 0xC0, 0 }, + { 0x2518, 0xD9, 0 }, + { 0x251C, 0xC3, 0 }, + { 0x2524, 0xB4, 0 }, + { 0x252C, 0xC2, 0 }, + { 0x2534, 0xC1, 0 }, + { 0x253C, 0xC5, 0 }, + { 0x2550, 0xCD, 0 }, + { 0x2551, 0xBA, 0 }, + { 0x2552, 0xD5, 0 }, + { 0x2553, 0xD6, 0 }, + { 0x2554, 0xC9, 0 }, + { 0x2555, 0xB8, 0 }, + { 0x2556, 0xB7, 0 }, + { 0x2557, 0xBB, 0 }, + { 0x2558, 0xD4, 0 }, + { 0x2559, 0xD3, 0 }, + { 0x255A, 0xC8, 0 }, + { 0x255B, 0xBE, 0 }, + { 0x255C, 0xBD, 0 }, + { 0x255D, 0xBC, 0 }, + { 0x255E, 0xC6, 0 }, + { 0x255F, 0xC7, 0 }, + { 0x2560, 0xCC, 0 }, + { 0x2561, 0xB5, 0 }, + { 0x2562, 0xB6, 0 }, + { 0x2563, 0xB9, 0 }, + { 0x2564, 0xD1, 0 }, + { 0x2565, 0xD2, 0 }, + { 0x2566, 0xCB, 0 }, + { 0x2567, 0xCF, 0 }, + { 0x2568, 0xD0, 0 }, + { 0x2569, 0xCA, 0 }, + { 0x256A, 0xD8, 0 }, + { 0x256B, 0xD7, 0 }, + { 0x256C, 0xCE, 0 }, + { 0x2580, 0xDF, 0 }, + { 0x2584, 0xDC, 0 }, + { 0x2588, 0xDB, 0 }, + { 0x258C, 0xDD, 0 }, + { 0x2590, 0xDE, 0 }, + { 0x2591, 0xB0, 0 }, + { 0x2592, 0xB1, 0 }, + { 0x2593, 0xB2, 0 }, + { 0x25A0, 0xFE, 0 } +}; + +ImplByteConvertData const mazoviaByteCvtData = { + mazoviaToUniTab, nullptr, nullptr, nullptr, mazoviaToCharTabEx, 0x80, 0xFF, NOTABUNI_START, + NOTABUNI_END, NOTABCHAR_START, NOTABCHAR_END, NOTABCHAR_START, NOTABCHAR_END, + std::size(mazoviaToCharTabEx) +}; + +ImplTextEncodingData const mazoviaEncodingData = { + { &mazoviaByteCvtData, sal::detail::textenc::convertCharToUnicode, + sal::detail::textenc::convertUnicodeToChar, nullptr, nullptr, nullptr, nullptr, nullptr, + nullptr }, + nullptr, nullptr, 1, 1, 1, 0, RTL_TEXTENCODING_INFO_ASCII +}; diff --git a/sal/textenc/tencinfo.cxx b/sal/textenc/tencinfo.cxx index 61439b489a7c..7db2753938f3 100644 --- a/sal/textenc/tencinfo.cxx +++ b/sal/textenc/tencinfo.cxx @@ -33,7 +33,7 @@ sal_Bool SAL_CALL rtl_isOctetTextEncoding(rtl_TextEncoding nEncoding) return nEncoding > RTL_TEXTENCODING_DONTKNOW && nEncoding != 9 // RTL_TEXTENCODING_SYSTEM - && nEncoding <= RTL_TEXTENCODING_ADOBE_DINGBATS; // always update this! + && nEncoding <= RTL_TEXTENCODING_MAZOVIA; // always update this! } /* ======================================================================= */ |