blob: ff282aff2913ddc3a7327da05a138795b705a4fe [file] [log] [blame]
/*
* 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 {
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'},};
private static final Logger LOG = LoggerFactory.getLogger(WP6Charsets.class);
//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]);
}
}
}