summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Nabet <serval2412@yahoo.fr>2022-09-12 20:33:37 +0200
committerStephan Bergmann <sbergman@redhat.com>2022-09-15 15:56:35 +0200
commitb943d28f04014a36ce51da386f0b9411b8dbfa01 (patch)
tree4c7b836bc09099b662719c503c09e5627a995fa9
parent382b82541a2e4d83197bd0b20fc5fc40bb4313e2 (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.cxx4
-rw-r--r--include/rtl/textenc.h5
-rw-r--r--sal/qa/rtl/textenc/rtl_textcvt.cxx68
-rw-r--r--sal/textenc/tables.cxx7
-rw-r--r--sal/textenc/tcvtest1.tab344
-rw-r--r--sal/textenc/tencinfo.cxx2
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!
}
/* ======================================================================= */