/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.tika.parser.wordperfect; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * WordPerfect 6+ constant values used for mapping WordPerfect charsets to * unicode equivalents when possible. * @author Pascal Essiembre */ final class WP6Charsets { private static final Logger LOG = LoggerFactory.getLogger(WP6Charsets.class); public static final char[] DEFAULT_EXTENDED_INTL_CHARS = new char[] { '\0', '\u00E5', '\u00C5', '\u00E6', '\u00C6', '\u00E4', '\u00C4', '\u00E1', '\u00E0', '\u00E2', '\u00E3', '\u00C3', '\u00E7', '\u00C7', '\u00EB', '\u00E9', '\u00C9', '\u00E8', '\u00EA', '\u00ED', '\u00F1', '\u00D1', '\u00F8', '\u00D8', '\u00F5', '\u00D5', '\u00F6', '\u00D6', '\u00FC', '\u00DC', '\u00FA', '\u00F9', '\u00DF', }; /** * Extended character sets used when fixed-length multi-byte functions * with a byte value of 240 (0xF0) are found in a WordPerfect document. * Those character set codes may be specific to WordPerfect * file specifications and may or may not be considered standard * outside WordPerfect. Applies to version 6 and likely higher. */ public static final char[][] EXTENDED_CHARSETS = new char[][] { // WP Charset 0: ASCII (96 chars) { ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', '\u00A0' }, // WP Charset 1: Multinational (242 chars) { '\u0300','\u00b7','\u0303','\u0302','\u0335','\u0338','\u0301','\u0308', '\u0304','\u0313','\u0315','\u02bc','\u0326','\u0315','\u00b0','\u0307', '\u030b','\u0327','\u0328','\u030c','\u0337','\u0305','\u0306','\u00df', '\u0138','\u006a','\u00c1','\u00e1','\u00c2','\u00e2','\u00c4','\u00e4', '\u00c0','\u00e0','\u00c5','\u00e5','\u00c6','\u00e6','\u00c7','\u00e7', '\u00c9','\u00e9','\u00ca','\u00ea','\u00cb','\u00eb','\u00c8','\u00e8', '\u00cd','\u00ed','\u00ce','\u00ee','\u00cf','\u00ef','\u00cc','\u00ec', '\u00d1','\u00f1','\u00d3','\u00f3','\u00d4','\u00f4','\u00d6','\u00f6', '\u00d2','\u00f2','\u00da','\u00fa','\u00db','\u00fb','\u00dc','\u00fc', '\u00d9','\u00f9','\u0178','\u00ff','\u00c3','\u00e3','\u0110','\u0111', '\u00d8','\u00f8','\u00d5','\u00f5','\u00dd','\u00fd','\u00d0','\u00f0', '\u00de','\u00fe','\u0102','\u0103','\u0100','\u0101','\u0104','\u0105', '\u0106','\u0107','\u010c','\u010d','\u0108','\u0109','\u010a','\u010b', '\u010e','\u010f','\u011a','\u011b','\u0116','\u0117','\u0112','\u0113', '\u0118','\u0119','\u01f4','\u01f5','\u011e','\u011f','\u01e6','\u01e7', '\u0122','\u0123','\u011c','\u011d','\u0120','\u0121','\u0124','\u0125', '\u0126','\u0127','\u0130','\u0069','\u012a','\u012b','\u012e','\u012f', '\u0128','\u0129','\u0132','\u0133','\u0134','\u0135','\u0136','\u0137', '\u0139','\u013a','\u013d','\u013e','\u013b','\u013c','\u013f','\u0140', '\u0141','\u0142','\u0143','\u0144','\u0000','\u0149','\u0147','\u0148', '\u0145','\u0146','\u0150','\u0151','\u014c','\u014d','\u0152','\u0153', '\u0154','\u0155','\u0158','\u0159','\u0156','\u0157','\u015a','\u015b', '\u0160','\u0161','\u015e','\u015f','\u015c','\u015d','\u0164','\u0165', '\u0162','\u0163','\u0166','\u0167','\u016c','\u016d','\u0170','\u0171', '\u016a','\u016b','\u0172','\u0173','\u016e','\u016f','\u0168','\u0169', '\u0174','\u0175','\u0176','\u0177','\u0179','\u017a','\u017d','\u017e', '\u017b','\u017c','\u014a','\u014b','\u0000','\u0000','\u0000','\u0000', '\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000','\u0000', '\u0000','\u0000','\u1ef2','\u1ef3','\u010e','\u010f','\u01a0','\u01a1', '\u01af','\u01b0','\u0114','\u0115','\u012c','\u012d','\u0049','\u0131', '\u014e','\u014f' }, // WP Charset 2: Phonetic (145 chars) { '\u02b9','\u02ba','\u02bb','\u0020','\u02bd','\u02bc','\u0020','\u02be', '\u02bf','\u0310','\u02d0','\u02d1','\u0306','\u032e','\u0329','\u02c8', '\u02cc','\u02c9','\u02ca','\u02cb','\u02cd','\u02ce','\u02cf','\u02c6', '\u02c7','\u02dc','\u0325','\u02da','\u032d','\u032c','\u0323','\u0308', '\u0324','\u031c','\u031d','\u031e','\u031f','\u0320','\u0321','\u0322', '\u032a','\u032b','\u02d2','\u02d3','\u0361','\u0356','\u005f','\u2017', '\u033e','\u02db','\u0327','\u0233','\u030d','\u02b0','\u02b6','\u0250', '\u0251','\u0252','\u0253','\u0299','\u0254','\u0255','\u0297','\u0256', '\u0257','\u0258','\u0259','\u025a','\u025b','\u025c','\u025d','\u029a', '\u025e','\u025f','\u0278','\u0261','\u0260','\u0262','\u029b','\u0263', '\u0264','\u0265','\u0266','\u0267','\u029c','\u0268','\u026a','\u0269', '\u029d','\u029e','\u026b','\u026c','\u026d','\u029f','\u026e','\u028e', '\u026f','\u0270','\u0271','\u0272','\u0273','\u0274','\u0276','\u0277', '\u02a0','\u0279','\u027a','\u027b','\u027c','\u027d','\u027e','\u027f', '\u0280','\u0281','\u0282','\u0283','\u0284','\u0285','\u0286','\u0287', '\u0288','\u0275','\u0289','\u028a','\u028c','\u028b','\u028d','\u03c7', '\u028f','\u0290','\u0291','\u0292','\u0293','\u0294','\u0295','\u0296', '\u02a1','\u02a2','\u0298','\u02a3','\u02a4','\u02a5','\u02a6','\u02a7', '\u02a8' }, // WP Charset 3: Box Drawing (88 chars) { '\u2591','\u2592','\u2593','\u2588','\u258c','\u2580','\u2590','\u2584', '\u2500','\u2502','\u250c','\u2510','\u2518','\u2514','\u251c','\u252c', '\u2524','\u2534','\u253c','\u2550','\u2551','\u2554','\u2557','\u255d', '\u255a','\u2560','\u2566','\u2563','\u2569','\u256c','\u2552','\u2555', '\u255b','\u2558','\u2553','\u2556','\u255c','\u2559','\u255e','\u2565', '\u2561','\u2568','\u255f','\u2564','\u2562','\u2567','\u256b','\u256a', '\u2574','\u2575','\u2576','\u2577','\u2578','\u2579','\u257a','\u257b', '\u257c','\u257e','\u257d','\u257f','\u251f','\u2522','\u251e','\u2521', '\u252e','\u2532','\u252d','\u2531','\u2527','\u2526','\u252a','\u2529', '\u2536','\u253a','\u2535','\u2539','\u2541','\u2546','\u253e','\u2540', '\u2544','\u254a','\u253d','\u2545','\u2548','\u2543','\u2549','\u2547' }, // WP Charset 4: Typographic Symbols (102 chars) { '\u25cf','\u25cb','\u25a0','\u2022','\u002a','\u00b6','\u00a7','\u00a1', '\u00bf','\u00ab','\u00bb','\u00a3','\u00a5','\u20a7','\u0192','\u00aa', '\u00ba','\u00bd','\u00bc','\u00a2','\u00b2','\u207f','\u00ae','\u00a9', '\u00a4','\u00be','\u00b3','\u201b','\u2019','\u2018','\u201f','\u201d', '\u201c','\u2013','\u2014','\u2039','\u203a','\u25cb','\u25a1','\u2020', '\u2021','\u2122','\u2120','\u211e','\u25cf','\u25e6','\u25a0','\u25aa', '\u25a1','\u25ab','\u2012','\ufb00','\ufb03','\ufb04','\ufb01','\ufb02', '\u2026','\u0024','\u20a3','\u20a2','\u20a0','\u20a4','\u201a','\u201e', '\u2153','\u2154','\u215b','\u215c','\u215d','\u215e','\u24c2','\u24c5', '\u20ac','\u2105','\u2106','\u2030','\u2116','\u2014','\u00b9','\u2409', '\u240c','\u240d','\u240a','\u2424','\u240b','\u267c','\u20a9','\u20a6', '\u20a8','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u1d11','\u1d12' // last two uncertain }, // WP Charset 5: Iconic Symbol (255 chars) { '\u2661','\u2662','\u2667','\u2664','\u2642','\u2640','\u263c','\u263a', '\u263b','\u266a','\u266c','\u25ac','\u2302','\u203c','\u221a','\u21a8', '\u2310','\u2319','\u25d8','\u25d9','\u21b5','\u2104','\u261c','\u23b5', '\u2610','\u2612','\u2639','\u266f','\u266d','\u266e','\u260e','\u231a', '\u231b','\u2701','\u2702','\u2703','\u2704','\u260e','\u2706','\u2707', '\u2708','\u2709','\u261b','\u261e','\u270c','\u270d','\u270e','\u270f', '\u2710','\u2711','\u2712','\u2713','\u2714','\u2715','\u2716','\u2717', '\u2718','\u2719','\u271a','\u271b','\u271c','\u271d','\u271e','\u271f', '\u2720','\u2721','\u2722','\u2723','\u2724','\u2725','\u2726','\u2727', '\u2605','\u2606','\u272a','\u272b','\u272c','\u272d','\u272e','\u272f', '\u2730','\u2731','\u2732','\u2733','\u2734','\u2735','\u2736','\u2737', '\u2738','\u2739','\u273a','\u273b','\u273c','\u273d','\u273e','\u273f', '\u2740','\u2741','\u2742','\u2743','\u2744','\u2745','\u2746','\u2747', '\u2748','\u2749','\u274a','\u274b','\u25cf','\u274d','\u25a0','\u274f', '\u2750','\u2751','\u2752','\u25b2','\u25bc','\u25c6','\u2756','\u25d7', '\u2758','\u2759','\u275a','\u275b','\u275c','\u275d','\u275e','\u2036', '\u2033','\u0020','\u0020','\u0020','\u0020','\u2329','\u232a','\u005b', '\u005d','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u2190','\u0020','\u0020','\u0020','\u0020','\u0020','\u21e8','\u21e6', '\u2794','\u0020','\u0020','\u0020','\u0020','\u0020','\u25d6','\u0020', '\u0020','\u2761','\u2762','\u2763','\u2764','\u2765','\u2766','\u2767', '\u2663','\u2666','\u2665','\u2660','\u2780','\u2781','\u2782','\u2783', '\u2784','\u2785','\u2786','\u2787','\u2788','\u2789','\u2776','\u2777', '\u2778','\u2779','\u277a','\u277b','\u277c','\u277d','\u277e','\u277f', '\u2780','\u2781','\u2782','\u2783','\u2784','\u2785','\u2786','\u2787', '\u2788','\u2789','\u278a','\u278b','\u278c','\u278d','\u278e','\u278f', '\u2790','\u2791','\u2792','\u2793','\u2794','\u2192','\u2194','\u2195', '\u2798','\u2799','\u279a','\u279b','\u279c','\u279d','\u279e','\u279f', '\u27a0','\u27a1','\u27a2','\u27a3','\u27a4','\u27a5','\u27a6','\u27a7', '\u27a8','\u27a9','\u27aa','\u27ab','\u27ac','\u27ad','\u27ae','\u27af', '\u0020','\u27b1','\u27b2','\u27b3','\u27b4','\u27b5','\u27b6','\u27b7', '\u27b8','\u27b9','\u27ba','\u27bb','\u27bc','\u27bd','\u27be' }, // WP Charset 6: Math/Scientific (238 chars) { '\u2212','\u00b1','\u2264','\u2265','\u221d','\u002f','\u2215','\u2216', '\u00f7','\u2223','\u27e8','\u27e9','\u223c','\u2248','\u2261','\u2208', '\u2229','\u2225','\u2211','\u221e','\u00ac','\u2192','\u2190','\u2191', '\u2193','\u2194','\u2195','\u25b8','\u25c2','\u25b4','\u25be','\u22c5', '\u00b7','\u2218','\u2219','\u212b','\u00b0','\u00b5','\u203e','\u00d7', '\u222b','\u220f','\u2213','\u2207','\u2202','\u2032','\u2033','\u2192', '\u212f','\u2113','\u210f','\u2111','\u211c','\u2118','\u21c4','\u21c6', '\u21d2','\u21d0','\u21d1','\u21d3','\u21d4','\u21d5','\u2197','\u2198', '\u2196','\u2199','\u222a','\u2282','\u2283','\u2286','\u2287','\u220d', '\u2205','\u2308','\u2309','\u230a','\u230b','\u226a','\u226b','\u2220', '\u2297','\u2295','\u2296','\u2a38','\u2299','\u2227','\u2228','\u22bb', '\u22a4','\u22a5','\u2312','\u22a2','\u22a3','\u25a1','\u25a0','\u25ca', '\u25c6','\u27e6','\u27e7','\u2260','\u2262','\u2235','\u2234','\u2237', '\u222e','\u2112','\u212d','\u2128','\u2118','\u20dd','\u29cb','\u25c7', '\u22c6','\u2034','\u2210','\u2243','\u2245','\u227a','\u227c','\u227b', '\u227d','\u2203','\u2200','\u22d8','\u22d9','\u228e','\u228a','\u228b', '\u2293','\u2294','\u228f','\u2291','\u22e4','\u2290','\u2292','\u22e5', '\u25b3','\u25bd','\u25c3','\u25b9','\u22c8','\u2323','\u2322','\u25ef', '\u219d','\u21a9','\u21aa','\u21a3','\u21bc','\u21bd','\u21c0','\u21c1', '\u21cc','\u21cb','\u21bf','\u21be','\u21c3','\u21c2','\u21c9','\u21c7', '\u22d3','\u22d2','\u22d0','\u22d1','\u229a','\u229b','\u229d','\u2127', '\u2221','\u2222','\u25c3','\u25b9','\u25b5','\u25bf','\u2214','\u2250', '\u2252','\u2253','\u224e','\u224d','\u22a8','\u2258','\u226c','\u0285', '\u2605','\u226e','\u2270','\u226f','\u2271','\u2241','\u2244','\u2247', '\u2249','\u2280','\u22e0','\u2281','\u22e1','\u2284','\u2285','\u2288', '\u2289','\u0020','\u0020','\u22e2','\u22e3','\u2226','\u2224','\u226d', '\u2204','\u2209','\u2247','\u2130','\u2131','\u2102','\u0020','\u2115', '\u211d','\u225f','\u22be','\u220b','\u22ef','\u2026','\u22ee','\u22f1', '\u0020','\u20e1','\u002b','\u002d','\u003d','\u002a','\u2032','\u2033', '\u2034','\u210b','\u2118','\u2272','\u2273','\u0020' }, // WP Charset 7 Math/Scientific Extended (229 chars) { '\u2320','\u2321','\u23a5','\u23bd','\u221a','\u0020','\u2211','\u220f', '\u2210','\u222b','\u222e','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u23a7','\u23a8','\u23a9','\u23aa','\u0020','\u0020','\u0020', '\u0020','\u23ab','\u23ac','\u23ad','\u23aa','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u222a','\u222b','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u239b','\u239d','\u239c','\u0020','\u0020','\u0020','\u0020','\u239e', '\u23a8','\u239f','\u0020','\u0020','\u0020','\u0020','\u23a1','\u23a3', '\u23a2','\u0020','\u20aa','\u0020','\u0020','\u23a4','\u23a6','\u23a5', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u22c3','\u22c2','\u228e','\u2a04','\u2294','\u2a06','\u2227','\u22c0', '\u2228','\u22c1','\u2297','\u2a02','\u2295','\u2a01','\u2299','\u2a00', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u0020','\u0020','\u229d','\u0020','\u2238','\u0020', '\u27e6','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u27e7', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u21bc','\u21bd','\u0020','\u296c','\u296d','\u296a','\u296b','\u0020', '\u21c9','\u21c7','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u21be','\u21bf','\u21c3','\u21c2','\u0020','\u2293','\u2a05','\u23a1', '\u0020','\u0020','\u0020','\u0020','\u0020' }, // WP Charset 8: Greek (219 chars) { '\u0391','\u03b1','\u0392','\u03b2','\u0392','\u03d0','\u0393','\u03b3', '\u0394','\u03b4','\u0395','\u03b5','\u0396','\u03b6','\u0397','\u03b7', '\u0398','\u03b8','\u0399','\u03b9','\u039a','\u03ba','\u039b','\u03bb', '\u039c','\u03bc','\u039d','\u03bd','\u039e','\u03be','\u039f','\u03bf', '\u03a0','\u03c0','\u03a1','\u03c1','\u03a3','\u03c3','\u03a3','\u03c2', '\u03a4','\u03c4','\u03a5','\u03c5','\u03a6','\u03c6','\u03a7','\u03c7', '\u03a8','\u03c8','\u03a9','\u03c9','\u0386','\u03ac','\u0388','\u03ad', '\u0389','\u03ae','\u038a','\u03af','\u03aa','\u03ca','\u038c','\u03cc', '\u038e','\u03cd','\u03ab','\u03cb','\u038f','\u03ce','\u03b5','\u03d1', '\u03f0','\u03d6','\u03f1','\u03c2','\u03d2','\u03d5','\u03c9','\u037e', '\u0387','\u0374','\u0375','\u0384','\u00a8','\u0385','\u1fed','\u1fef', '\u1fc0','\u1fbd','\u1ffe','\u037a','\u1fce','\u1fde','\u1fcd','\u1fdd', '\u1fcf','\u1fdf','\u0384','\u1fef','\u1fc0','\u1fbd','\u1ffe','\u1fce', '\u1fde','\u1fcd','\u1fdd','\u1fcf','\u1fdf','\u1f70','\u1fb6','\u1fb3', '\u1fb4','\u1fb2','\u1fb7','\u1f00','\u1f04','\u1f02','\u1f06','\u1f80', '\u1f84','\u1f82','\u1f86','\u1f01','\u1f05','\u1f03','\u1f07','\u1f81', '\u1f85','\u1f83','\u1f87','\u1f72','\u1f10','\u1f14','\u1f12','\u1f11', '\u1f15','\u1f13','\u1f74','\u1fc6','\u1fc3','\u1fc4','\u1fc2','\u1fc7', '\u1f20','\u1f24','\u1f22','\u1f26','\u1f90','\u1f94','\u1f92','\u1f96', '\u1f21','\u1f25','\u1f23','\u1f27','\u1f91','\u1f95','\u1f93','\u1f97', '\u1f76','\u1fd6','\u0390','\u1fd2','\u1f30','\u1f34','\u1f32','\u1f36', '\u1f31','\u1f35','\u1f33','\u1f37','\u1f78','\u1f40','\u1f44','\u1f42', '\u1f41','\u1f45','\u1f43','\u1fe5','\u1fe4','\u1f7a','\u1fe6','\u03b0', '\u1fe2','\u1f50','\u1f54','\u1f52','\u1f56','\u1f51','\u1f55','\u1f53', '\u1f57','\u1f7c','\u1ff6','\u1ff3','\u1ff4','\u1ff2','\u1ff7','\u1f60', '\u1f64','\u1f62','\u1f66','\u1fa0','\u1fa4','\u1fa2','\u1fa6','\u1f61', '\u1f65','\u1f63','\u1f67','\u1fa1','\u1fa5','\u1fa3','\u1fa7','\u03da', '\u03dc','\u03de','\u03e0' }, // WP Charset 9: Hebrew (123 chars) { '\u05d0','\u05d1','\u05d2','\u05d3','\u05d4','\u05d5','\u05d6','\u05d7', '\u05d8','\u05d9','\u05da','\u05db','\u05dc','\u05dd','\u05de','\u05df', '\u05e0','\u05e1','\u05e2','\u05e3','\u05e4','\u05e5','\u05e6','\u05e7', '\u05e8','\u05e9','\u05ea','\u05be','\u05c0','\u05c3','\u05f3','\u05f4', '\u05b0','\u05b1','\u05b2','\u05b3','\u05b4','\u05b5','\u05b6','\u05b7', '\u05b8','\u05b9','\u05b9','\u05bb','\u05bc','\u05bd','\u05bf','\u05b7', '\ufb1e','\u05f0','\u05f1','\u05f2','\ufb1f','\u0591','\u0596','\u0020', '\u05a4','\u059a','\u059b','\u05a3','\u05a5','\u05a6','\u05a7','\u05a2', '\u0592','\u0593','\u0594','\u0595','\u0597','\u0598','\u0599','\u05a8', '\u05f3','\u05f3','\u05f4','\u0020','\u05a9','\u05a0','\u059f','\u05ab', '\u05ac','\u05af','\u05c4','\u05aa','\ufb30','\ufb31','\u05d1','\ufb32', '\ufb33','\ufb34','\ufb35','\ufb4b','\ufb36','\u05d7','\ufb38','\ufb39', '\ufb1d','\ufb3b','\ufb3a','\u05da','\u05da','\u05da','\u05da','\u05da', '\u05da','\ufb3c','\ufb3e','\ufb40','\u05d5','\ufb41','\ufb44','\u05e4', '\ufb46','\ufb47','\ufb2b','\ufb2d','\ufb2a','\ufb2c','\ufb4a','\u05dc', '\ufb3c','\ufb49','\u20aa' }, // WP Charset 10: Cyrillic (250 chars) { '\u0410','\u0430','\u0411','\u0431','\u0412','\u0432','\u0413','\u0433', '\u0414','\u0434','\u0415','\u0435','\u0401','\u0451','\u0416','\u0436', '\u0417','\u0437','\u0418','\u0438','\u0419','\u0439','\u041a','\u043a', '\u041b','\u043b','\u041c','\u043c','\u041d','\u043d','\u041e','\u043e', '\u041f','\u043f','\u0420','\u0440','\u0421','\u0441','\u0422','\u0442', '\u0423','\u0443','\u0424','\u0444','\u0425','\u0445','\u0426','\u0446', '\u0427','\u0447','\u0428','\u0448','\u0429','\u0449','\u042a','\u044a', '\u042b','\u044b','\u042c','\u044c','\u042d','\u044d','\u042e','\u044e', '\u042f','\u044f','\u04d8','\u04d9','\u0403','\u0453','\u0490','\u0491', '\u0492','\u0493','\u0402','\u0452','\u0404','\u0454','\u0404','\u0454', '\u0496','\u0497','\u0405','\u0455','\u0020','\u0020','\u0418','\u0438', '\u0406','\u0456','\u0407','\u0457','\u0020','\u0020','\u0408','\u0458', '\u040c','\u045c','\u049a','\u049b','\u04c3','\u04c4','\u049c','\u049d', '\u0409','\u0459','\u04a2','\u04a3','\u040a','\u045a','\u047a','\u047b', '\u0460','\u0461','\u040b','\u045b','\u040e','\u045e','\u04ee','\u04ef', '\u04ae','\u04af','\u04b0','\u04b1','\u0194','\u0263','\u04b2','\u04b3', '\u0425','\u0445','\u04ba','\u04bb','\u047e','\u047f','\u040f','\u045f', '\u04b6','\u04b7','\u04b8','\u04b9','\u0428','\u0448','\u0462','\u0463', '\u0466','\u0467','\u046a','\u046b','\u046e','\u046f','\u0470','\u0471', '\u0472','\u0473','\u0474','\u0475','\u0410','\u0430','\u0415','\u0435', '\u0404','\u0454','\u0418','\u0438','\u0406','\u0456','\u0407','\u0457', '\u041e','\u043e','\u0423','\u0443','\u042b','\u044b','\u042d','\u044d', '\u042e','\u044e','\u042f','\u044f','\u0410','\u0430','\u0400','\u0450', '\u0401','\u0451','\u040d','\u045d','\u041e','\u043e','\u0423','\u0443', '\u042b','\u044b','\u042d','\u044d','\u042e','\u044e','\u042f','\u044f', '\u0301','\u0300','\u0308','\u0306','\u0326','\u0328','\u0304','\u0020', '\u201e','\u201c','\u10d0','\u10d1','\u10d2','\u10d3','\u10d4','\u10d5', '\u10d6','\u10f1','\u10d7','\u10d8','\u10d9','\u10da','\u10db','\u10dc', '\u10f2','\u10dd','\u10de','\u10df','\u10e0','\u10e1','\u10e2','\u10e3', '\u10f3','\u10e4','\u10e5','\u10e6','\u10e7','\u10e8','\u10e9','\u10ea', '\u10eb','\u10ec','\u10ed','\u10ee','\u10f4','\u10ef','\u10f0','\u10f5', '\u10f6','\u10e3' }, // WP Charset 11: Japanese (63 chars) { '\uff61','\uff62','\uff63','\uff64','\uff65','\uff66','\uff67','\uff68', '\uff69','\uff6a','\uff6b','\uff6c','\uff6d','\uff6e','\uff6f','\uff70', '\uff71','\uff72','\uff73','\uff74','\uff75','\uff76','\uff77','\uff78', '\uff79','\uff7a','\uff7b','\uff7c','\uff7d','\uff7e','\uff7f','\uff80', '\uff81','\uff82','\uff83','\uff84','\uff85','\uff86','\uff87','\uff88', '\uff89','\uff8a','\uff8b','\uff8c','\uff8d','\uff8e','\uff8f','\uff90', '\uff91','\uff92','\uff93','\uff94','\uff95','\uff96','\uff97','\uff98', '\uff99','\uff9a','\uff9b','\uff9c','\uff9d','\uff9e','\uff9f' }, // WP Charset 12: Current Font Symbols (256 chars) { //TODO implement Current Font Symbols ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ' }, // WP Charset 13: Arabic (196 chars) { '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u0020','\u064e','\ufe77','\u064f','\ufe79','\u0650','\ufe7b', '\u064b','\u064c','\u064c','\u064d','\u0652','\ufe7f','\u0651','\ufe7d', '\ufc60','\ufcf2','\ufc61','\ufcf3','\ufc62','\ufcf4','\u064b','\ufc5e', '\ufc5e','\ufc5f','\u0653','\u0670','\u0654','\u0020','\u060c','\u061b', '\u061f','\u066d','\u066a','\u00bb','\u00ab','\u0029','\u0028','\u0661', '\u0662','\u0663','\u0664','\u0665','\u0666','\u0667','\u0668','\u0669', '\u0660','\u0662','\u0627','\ufe8e','\u0628','\ufe91','\ufe92','\ufe90', '\u062a','\ufe97','\ufe98','\ufe96','\u062b','\ufe9b','\ufe9c','\ufe9a', '\u062c','\ufe9f','\ufea0','\ufe9e','\u062d','\ufea3','\ufea4','\ufea2', '\u062e','\ufea7','\ufea8','\ufea6','\u062f','\ufeaa','\u0630','\ufeac', '\u0631','\ufeae','\u0632','\ufeaf','\u0633','\ufeb3','\ufeb4','\ufeb2', '\u0634','\ufeb7','\ufeb8','\ufeb6','\u0635','\ufebb','\ufebc','\ufeba', '\u0636','\ufebf','\ufec0','\ufebe','\u0637','\ufec3','\ufec4','\ufec2', '\u0638','\ufec7','\ufec8','\ufec6','\u0639','\ufecb','\ufecc','\ufeca', '\u063a','\ufecf','\ufed0','\ufece','\u0641','\ufed3','\ufed4','\ufed2', '\u0642','\ufed7','\ufed8','\ufed6','\u0643','\ufedb','\ufedc','\ufeda', '\u0644','\ufedf','\ufee0','\ufede','\u0645','\ufee3','\ufee4','\ufee2', '\u0646','\ufee7','\ufee8','\ufee6','\u0647','\ufeeb','\ufeec','\ufeea', '\u0629','\ufe94','\u0648','\ufeee','\u064a','\ufef3','\ufef4','\ufef2', '\u0649','\ufef3','\ufef4','\ufef0','\u0621','\u0623','\ufe84','\u0625', '\ufe88','\u0624','\ufe86','\u0626','\ufe8b','\ufe8c','\ufe8a','\ufd3d', '\ufd3c','\u0622','\ufe82','\u0671','\ufb51','\ufefb','\ufefc','\ufef7', '\ufef8','\ufef9','\ufefa','\u0020','\ufefc','\ufef5','\ufef6','\u0020', '\u0020','\ufdf2','\u0640','\u0640' }, // WP Charset 14: Arabic Script (220 chars) { '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0615', '\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0615','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020','\u0020', '\u0020','\u06d4','\u0020','\u0020','\u00b0','\u0020','\u065a','\u0020', '\u065a','\u0659','\u0020','\u0020','\u0654','\u064c','\ufc5e','\u065a', '\u065a','\u06f4','\u06f4','\u06f5','\u06f6','\u06f6','\u06f7','\u06f8', '\u067b','\ufb54','\ufb55','\ufb53','\u0680','\ufb5c','\ufb5d','\ufb5b', '\u067e','\ufb58','\ufb59','\ufb57','\u0679','\ufb68','\ufb69','\ufb67', '\u067c','\u067c','\u067c','\u067c','\u067f','\ufb64','\ufb65','\ufb63', '\u067d','\u067d','\u067d','\u067d','\u067a','\ufb60','\ufb61','\ufb5f', '\u0684','\ufb74','\ufb75','\ufb73','\u0683','\ufb78','\ufb79','\ufb77', '\u0686','\ufb7c','\ufb7d','\ufb7b','\u0687','\ufb80','\ufb81','\ufb7f', '\u0685','\u0685','\u0685','\u0685','\u0681','\u0681','\u0681','\u0681', '\u0688','\ufb89','\u0689','\u0689','\u068c','\ufb85','\u068e','\ufb87', '\u068a','\u068a','\u068d','\ufb83','\u0693','\u0693','\u0691','\ufb8d', '\u0699','\u0699','\u0695','\u0695','\u0692','\u0692','\u0698','\ufb8b', '\u0696','\u0696','\u075b','\u075b','\u069a','\u069a','\u069a','\u069a', '\u06a0','\u06a0','\u06a0','\u06a0','\u06a4','\ufb6c','\ufb6d','\ufb6b', '\u06a6','\ufb70','\ufb71','\ufb6f','\u06a9','\ufb90','\ufb91','\ufb8f', '\u0643','\ufedb','\ufedc','\ufeda','\u06aa','\u06aa','\u06aa','\u06aa', '\u06af','\ufb94','\ufb95','\ufb93','\u06af','\ufb94','\ufb95','\ufb93', '\u06ab','\u06ab','\u06ab','\u06ab','\u06b1','\ufb9c','\ufb9d','\ufb9b', '\u06b3','\ufb98','\ufb99','\ufb97','\u06b5','\u06b5','\u06b5','\u06b5', '\u0020','\u0020','\u06ba','\u0020','\u0020','\ufb9f','\u06bc','\u06bc', '\u06bc','\u06bc','\u06bb','\ufba2','\ufba3','\ufba1','\u06c6','\ufbda', '\u0020','\u0020','\u06ca','\u06ca','\u06c1','\ufba8','\ufba9','\ufba7', '\u06ce','\u06ce','\u06ce','\u06ce','\u06d2','\ufbaf','\u06d1','\u06d1', '\u06d1','\u06d1','\u06c0','\ufba5' }, }; //TODO map multi-characters /** * Constructor. */ private WP6Charsets() { } public static void append(StringBuilder out, int charset, int charval) { if (charset >= WP6Charsets.EXTENDED_CHARSETS.length) { LOG.debug("Unsupported WordPerfect 6+ charset: {}", charset); out.append(' '); } else if (charval >= WP6Charsets.EXTENDED_CHARSETS[charset].length) { LOG.debug("Unsupported WordPerfect 6+ charset ({}) character value: {}", charset, charval); out.append(' '); } else { out.append(WP6Charsets.EXTENDED_CHARSETS[charset][charval]); } } }