/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* 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 .
*/
#include <sal/config.h>
#include <rtl/ustrbuf.hxx>
#include <sal/log.hxx>
#include <unotools/fontcvt.hxx>
#include <unotools/fontdefs.hxx>
#include <cstddef>
#include <map>
#include <vector>
//These conversion tables were designed for StarSymbol. OpenSymbol
//originally didn't have the same code points as StarSymbol, and
//then gained some extra code points, but there are still potentially
//various holes in OpenSymbol which were filled by StarSymbol, i.e.
//destination mapping points which are empty in OpenSymbol
const sal_Unicode aStarBatsTab[
224 ] =
{
// F020
0 x0020,
0 x263a,
0 x25cf,
0 x274d,
0 x25a0,
0 x25a1,
0 xE000,
0 x2751,
0 x2752,
0 xE001,
0 xE002,
0 xE003,
0 x2756,
0 xE004,
0 xE005,
0 x27a2,
// F030
0 xE006,
0 x2794,
0 x2713,
0 x2612,
0 x2611,
0 x27b2,
0 x261b,
0 x270d,
0 x270e,
0 xE007,
0 x2714,
0 xE008,
0 xE009,
0 xE00A,
0 x274f,
0 x2750,
// F040
0 xE00B,
0 xE00C,
0 xE00D,
0 xE00E,
0 x2722,
0 x2723,
0 x2724,
0 x2725,
0 x2733,
0 x2734,
0 x2735,
0 x2736,
0 x2737,
0 x2738,
0 x2739,
0 x2717,
// F050
0 x2718,
0 x2719,
0 x271a,
0 x271b,
0 x271c,
0 x272b,
0 x272c,
0 x272d,
0 x272e,
0 x272f,
0 x2730,
0 ,
0 xE00F,
0 x278a,
0 x278b,
0 x278c,
// F060
0 x278d,
0 x278e,
0 x278f,
0 x2790,
0 x2791,
0 x2792,
0 x2793,
0 xE010,
0 x2780,
0 x2781,
0 x2782,
0 x2783,
0 x2784,
0 x2785,
0 x2786,
0 x2787,
// F070
0 x2788,
0 x2789,
0 xE011,
0 xE012,
0 x260e,
0 xE013,
0 xE014,
0 xE015,
0 xE016,
0 xE017,
0 xE018,
0 xE019,
0 xE01A,
0 x261e,
0 xE01B,
0 ,
// F080
0 x20ac,
0 ,
0 x201a,
0 x0192,
0 x201e,
0 x2026,
0 x2020,
0 x2021,
0 xE01c,
0 x2030,
0 x0160,
0 x2039,
0 x0152,
0 ,
0 x017d,
0 ,
// F090
0 ,
0 x2018,
0 x2019,
0 x201c,
0 x201d,
0 x2022,
0 x2013,
0 x2014,
0 xE01d,
0 x2122,
0 x0161,
0 x203a,
0 x0153,
0 ,
0 x017e,
0 x0178,
// F0A0
0 ,
0 x21e7,
0 x21e8,
0 x21e9,
0 x21e6,
0 xE01e,
0 xE01f,
0 x00a7,
0 xE020,
0 xE021,
0 xE022,
0 x00ab,
0 xE023,
0 x2639,
0 xE024,
0 xE025,
// F0B0
0 xE026,
0 xE027,
0 xE028,
0 x21e5,
0 x21e4,
0 x2192,
0 x2193,
0 x2190,
0 x2191,
0 xE029,
0 xE02a,
0 x00bb,
0 xE02b,
0 xE02c,
0 xE02d,
0 xE02e,
// F0C0
0 xE02f,
0 xE030,
0 xE031,
0 xE032,
0 x25be,
0 x25b4,
0 x25bf,
0 x25b5,
0 xE033,
0 xE034,
0 xE035,
0 x2702,
0 x2708,
0 x2721,
0 x273f,
0 x2744,
// F0D0
0 x25d7,
0 x2759,
0 xE036,
0 xE037,
0 x2762,
0 x2663,
0 x2665,
0 x2660,
0 x2194,
0 x2195,
0 x2798,
0 x279a,
0 x27b8,
0 ,
0 x00b6,
0 ,
// F0E0
0 x00a2,
0 x00a4,
0 x00a5,
0 xE038,
0 x20a1,
0 x20a2,
0 x20a3,
0 x20a4,
0 x20a9,
0 x20ab,
0 x20a8,
0 xE039,
0 ,
0 ,
0 ,
0 ,
// F0F0
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 xE03a
};
const sal_Unicode aStarMathTab[
224 ] =
{
// F020
0 x0020,
0 x0021,
0 x0022,
0 x0023,
0 xE080,
0 x0025,
0 x0026,
0 x221e,
0 x0028,
0 x0029,
0 x002a,
0 x002b,
0 x002c,
0 x002d,
0 x002e,
0 x002f,
// F030
0 x2224,
0 x21d2,
0 x21d0,
0 x21d4,
0 xE081,
0 xE082,
0 x00b0,
0 ,
0 ,
0 ,
0 x003a,
0 x003b,
0 x003c,
0 x003d,
0 x003e,
0 x00bf,
// F040
0 x2260,
0 xE083,
0 x2212,
0 x2217,
0 x00d7,
0 x22c5,
0 x00f7,
0 x00b1,
0 x2213,
0 x2295,
0 x2296,
0 x2297,
0 x2298,
0 x2299,
0 x222a,
0 x2229,
// F050
0 xE084,
0 xE085,
0 x2264,
0 x2265,
0 xE086,
0 xE087,
0 x226a,
0 x226b,
0 x007e,
0 x2243,
0 x2248,
0 x225d,
0 x2261,
0 x221d,
0 x2202,
0 x2282,
// F060
0 x2283,
0 x2286,
0 x2287,
0 x2284,
0 x2285,
0 x2288,
0 x2289,
0 x2208,
0 x2209,
0 xE089,
0 x2203,
0 x220d,
0 x2135,
0 x2111,
0 x211c,
0 x2118,
// F070
0 xE08a,
0 x2221,
0 x2222,
0 x2223,
0 x2225,
0 x22a5,
0 xE08b,
0 x22ef,
0 x22ee,
0 x22f0,
0 x22f1,
0 x22b6,
0 x22b7,
0 xE08c,
0 x2216,
0 x00ac,
// F080
0 x222b,
0 x222c,
0 x222d,
0 x222e,
0 x222f,
0 x2230,
0 x221a,
0 xE08d,
0 xE08e,
0 xE08f,
0 x2210,
0 x220f,
0 x2211,
0 x2207,
0 x2200,
0 xE090,
// F090
0 xE091,
0 xE092,
0 xE093,
0 xE094,
0 xE095,
0 xE096,
0 xE097,
0 xE098,
0 x02d9,
0 x00a8,
0 xE09b,
0 x02da,
0 x2227,
0 x2228,
0 x220b,
0 x2205,
// F0A0
0 x007b,
0 x007d,
0 xe09e,
0 xe09f,
0 x2329,
0 x232a,
0 x005b,
0 x005d,
0 xE0a0,
0 x22be,
0 xE0a1,
0 x2259,
0 x2254,
0 x2255,
0 x21b3,
0 x2197,
// F0B0
0 x2198,
0 x2245,
0 x301a,
0 x301b,
0 x2373,
0 xE0a5,
0 xE0a6,
0 x22a4,
0 x2112,
0 x2130,
0 x2131,
0 ,
0 xE0a7,
0 xE0a8,
0 xE0a9,
0 xE0aa,
// F0C0
0 x2308,
0 x230a,
0 x2309,
0 x230b,
0 ,
0 xe0ab,
0 xe0ac,
0 xe0ad,
0 xe0ae,
0 xe0af,
0 xe0b0,
0 xe0b1,
0 xe0b2,
0 xe0b3,
0 xe0b4,
0 xe0b5,
// F0D0
0 xe0b6,
0 xe0b7,
0 xe0b8,
0 xe0b9,
0 xe0ba,
0 xe0bb,
0 xe0bc,
0 xe0bd,
0 xe0be,
0 xe0bf,
0 xe0c0,
0 xe0c1,
0 xe0c2,
0 xe0c3,
0 xe0c4,
0 xe0c5,
// F0E0
0 xe0c6,
0 xe0c7,
0 xe0c8,
0 xe0c9,
0 xe0ca,
0 xe0cb,
0 xe0cc,
0 xe0cd,
0 xe0ce,
0 xe0cf,
0 xe0d0,
0 xe0d1,
0 x03f1,
0 xe0d3,
0 xe0d4,
0 xe0d5,
// F0F0
0 x2113,
0 xe0d6,
0 x2107,
0 x2127,
0 x210a,
0 xe0d9,
0 x210f,
0 x019b,
0 xe0db,
0 xe0dc,
0 xe0dd,
0 x2115,
0 x2124,
0 x211a,
0 x211d,
0 x2102
};
const sal_Unicode aWingDingsTab[
224 ] =
{
// F020
0 x0020,
0 xe400,
0 xe401,
0 xe402,
0 xe403,
0 xe404,
0 xe405,
0 xe406,
0 xe407,
0 xe408,
0 xe409,
0 xe40a,
0 xe40b,
0 xe40c,
0 xe40d,
0 xe40e,
// F030
0 xe40f,
0 xe410,
0 xe411,
0 xe412,
0 xe413,
0 xe414,
0 xe415,
0 xe416,
0 xe417,
0 xe418,
0 xe419,
0 xe41a,
0 xe41b,
0 xe41c,
0 x2707,
0 xe41d,
// F040
0 xe41e,
0 xe41f,
0 xe420,
0 xe421,
0 x261c,
0 xe423,
0 x261d,
0 x261f,
0 x261f,
0 xe424,
0 xe425,
0 xe426,
0 xe427,
0 xe428,
0 xe429,
0 xe42a,
// F050
0 xe42b,
0 xe42c,
0 x263c,
0 xe42d,
0 xe42e,
0 xe42f,
0 xe430,
0 xe431,
0 xe432,
0 xe433,
0 x262a,
0 x262f,
0 x0950,
0 xe434,
0 x2648,
0 x2649,
// F060
0 x264a,
0 x264b,
0 x264c,
0 x264d,
0 x264e,
0 x264f,
0 x2650,
0 x2651,
0 x2652,
0 x2653,
0 xe435,
0 xe436,
0 xe437,
0 xe438,
0 xe439,
0 xe43a,
// F070
0 xe43b,
0 xe43c,
0 xe43d,
0 xe43e,
0 xe43f,
0 xe440,
0 xe441,
0 xe442,
0 xe443,
0 x2353,
0 x2318,
0 xe444,
0 xe445,
0 xe446,
0 xe447,
0 ,
// F080
0 xe448,
0 xe449,
0 xe44a,
0 xe44b,
0 xe44c,
0 xe44d,
0 xe44e,
0 xe44f,
0 xe450,
0 xe451,
0 xe452,
0 xe453,
0 xe454,
0 xe455,
0 xe456,
0 xe457,
// F090
0 xe458,
0 xe459,
0 xe45a,
0 xe45b,
0 xe45c,
0 xe45d,
0 xe45e,
0 xe45f,
0 xe460,
0 xe461,
0 xe462,
0 xe463,
0 xe464,
0 xe465,
0 xe466,
0 xe467,
// F0a0
0 xe468,
0 xe469,
0 xe46a,
0 xe46b,
0 xe46c,
0 xe46d,
0 xe46e,
0 xe46f,
0 xe470,
0 xe471,
0 xe472,
0 xe473,
0 xe474,
0 xe475,
0 xe476,
0 xe477,
// F0b0
0 xe478,
0 xe479,
0 xe47a,
0 xe47b,
0 xe47c,
0 xe47d,
0 xe47e,
0 xe47f,
0 xe480,
0 xe481,
0 xe482,
0 xe483,
0 xe484,
0 xe485,
0 xe486,
0 xe487,
// F0c0
0 xe488,
0 xe489,
0 xe48a,
0 xe48b,
0 xe48c,
0 xe48d,
0 xe48e,
0 xe48f,
0 xe490,
0 xe491,
0 xe492,
0 xe493,
0 xe494,
0 xe495,
0 xe496,
0 xe497,
// F0d0
0 xe498,
0 xe499,
0 xe49a,
0 xe49b,
0 xe49c,
0 x232b,
0 x2326,
0 xe49d,
0 xe49e,
0 xe49f,
0 xe4a0,
0 xe4a1,
0 xe4a2,
0 xe4a3,
0 xe4a4,
0 xe4a5,
// F0e0
0 xe4a6,
0 xe4a7,
0 xe4a8,
0 xe4a9,
0 xe4aa,
0 xe4ab,
0 xe4ac,
0 xe4ad,
0 xe4ae,
0 xe4af,
0 xe4b0,
0 xe4b1,
0 xe4b2,
0 xe4b3,
0 xe4b4,
0 xe4b5,
// F0f0
0 xe4b6,
0 xe4b7,
0 xe4b8,
0 xe4b9,
0 xe4ba,
0 xe4bb,
0 xe4bc,
0 xe4bd,
0 xe4be,
0 xe4bf,
0 xe4c0,
0 xe4c1,
0 xe4c2,
0 xe4c3,
0 xe4c4,
0 xe4c5
};
const sal_Unicode aWingDings2Tab[
224 ] =
{
// F020
0 x0020,
0 xe500,
0 xe501,
0 xe502,
0 xe503,
0 xe504,
0 xe505,
0 xe506,
0 xe507,
0 xe508,
0 xe509,
0 xe50a,
0 xe50b,
0 xe50c,
0 xe50d,
0 xe50e,
// F030
0 xe50f,
0 xe510,
0 xe511,
0 xe512,
0 xe513,
0 xe514,
0 xe515,
0 xe516,
0 xe517,
0 xe518,
0 xe519,
0 xe51a,
0 xe51b,
0 xe51c,
0 xe51d,
0 xe51e,
// F040
0 xe51f,
0 xe520,
0 xe521,
0 xe522,
0 xe523,
0 xe524,
0 xe525,
0 xe526,
0 xe527,
0 xe528,
0 xe529,
0 xe52a,
0 xe52b,
0 xe52c,
0 xe52d,
0 xe52e,
// F050
0 xe52f,
0 xe530,
0 xe531,
0 xe532,
0 xe533,
0 xe534,
0 xe535,
0 xe536,
0 xe537,
0 x203D,
0 x203D,
0 x203D,
0 xe53b,
0 xe53c,
0 xe53d,
0 xe53e,
// F060
0 xe53f,
0 xe540,
0 xe541,
0 xe542,
0 xe543,
0 xe544,
0 xe545,
0 xe546,
0 xe547,
0 x24EA,
0 x2460,
0 x2461,
0 x2462,
0 x2463,
0 x2464,
0 x2465,
// F070
0 x2466,
0 x2467,
0 x2468,
0 x2469,
0 xE453,
0 x278A,
0 x278B,
0 x278C,
0 x278D,
0 x278E,
0 x278F,
0 x2790,
0 x2791,
0 x2792,
0 x2793,
0 ,
// F080
0 x2609,
0 x25cb,
0 x263d,
0 x263e,
0 xe55d,
0 xe55e,
0 xe55f,
0 xe560,
0 xe561,
0 xe562,
0 xe563,
0 xe564,
0 xe565,
0 xe566,
0 xe567,
0 xe568,
// F090
0 xe569,
0 xe56a,
0 xe56b,
0 xe56c,
0 xe56d,
0 xe56e,
0 xe56f,
0 xe570,
0 xe571,
0 xe572,
0 xe573,
0 xe574,
0 xe575,
0 ,
0 ,
0 xe578,
// F0a0
0 xe579,
0 xe57a,
0 xe57b,
0 xe57c,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 xe584,
0 xe585,
0 ,
0 xe586,
0 ,
// F0b0
0 ,
0 ,
0 ,
0 ,
0 xe58d,
0 xe58e,
0 xe58f,
0 xe590,
0 ,
0 ,
0 xe593,
0 xe594,
0 ,
0 ,
0 ,
0 xe587,
// F0c0
0 xe599,
0 xe59a,
0 xe59b,
0 xe59c,
0 xe59d,
0 xe59e,
0 xe59f,
0 xe5a0,
0 xe5a1,
0 xe5a2,
0 xe5a3,
0 xe5a4,
0 xe5a5,
0 xe5a6,
0 xe5a7,
0 xe5a8,
// F0d0
0 xe5a9,
0 xe5aa,
0 xe5ab,
0 xe5ac,
0 xe5ad,
0 xe5ae,
0 xe5af,
0 xe5b0,
0 xe5b1,
0 xe5b2,
0 xe5b3,
0 xe5b4,
0 xe5b5,
0 xe5b6,
0 xe5b7,
0 xe5b8,
// F0e0
0 xe5b9,
0 xe5ba,
0 xe5bb,
0 xe5bc,
0 xe5bd,
0 xe5be,
0 xe5bf,
0 xe5c0,
0 xe5c1,
0 xe5c2,
0 xe5c3,
0 xe5c4,
0 xe5c5,
0 xe5c6,
0 xe5c7,
0 xe5c8,
// F0f0
0 xe5c9,
0 ,
0 xe5cb,
0 xe477,
0 xe5cd,
0 xe5ce,
0 xe5cf,
0 xe5d0,
0 x203b,
0 x2042,
0 ,
0 ,
0 ,
0 ,
0 ,
0
};
const sal_Unicode aWingDings3Tab[
224 ] =
{
// F020
0 x0020,
0 xe600,
0 xe601,
0 xe602,
0 xe603,
0 x2196,
0 xe604,
0 x2199,
0 xe605,
0 xe606,
0 xe607,
0 xe608,
0 xe609,
0 xe60a,
0 xe60b,
0 x21de,
// F030
0 x21df,
0 xe60c,
0 xe60d,
0 xe60e,
0 x21e2,
0 x21e1,
0 x21e3,
0 x21af,
0 x21b5,
0 xe60f,
0 xe610,
0 xe611,
0 xe612,
0 xe613,
0 xe614,
0 xe615,
// F040
0 xe616,
0 xe617,
0 xe618,
0 xe619,
0 x21c4,
0 x21c5,
0 xe61a,
0 xe61b,
0 x21c7,
0 x21c9,
0 x21c8,
0 x21ca,
0 x21b6,
0 x21b7,
0 xe61c,
0 xe61d,
// F050
0 x21bb,
0 x21ba,
0 xe61e,
0 x2324,
0 x2303,
0 x2325,
0 x2334,
0 xe61f,
0 x21ea,
0 xe620,
0 xe621,
0 xe622,
0 xe623,
0 xe624,
0 xe625,
0 xe626,
// F060
0 xe627,
0 xe628,
0 xe629,
0 xe62a,
0 xe62b,
0 xe62c,
0 xe62d,
0 xe62e,
0 xe62f,
0 xe630,
0 xe631,
0 xe632,
0 xe633,
0 xe634,
0 xe635,
0 xe636,
// F070
0 xe637,
0 xe638,
0 x25b3,
0 x25bd,
0 x25c0,
0 x25b6,
0 x25c1,
0 x25b7,
0 x25e3,
0 xe639,
0 x25e4,
0 x25e5,
0 x25c2,
0 x25b8,
0 xe63a,
0 ,
// F080
0 xe63b,
0 xe63c,
0 xe63d,
0 xe63e,
0 xe63f,
0 xe640,
0 xe641,
0 xe642,
0 xe643,
0 xe644,
0 xe645,
0 xe646,
0 xe647,
0 xe648,
0 xe649,
0 xe64a,
// F090
0 xe64b,
0 xe64c,
0 xe64d,
0 xe64e,
0 xe64f,
0 xe650,
0 xe651,
0 xe652,
0 xe653,
0 xe654,
0 xe655,
0 xe656,
0 xe657,
0 xe658,
0 xe659,
0 xe65a,
// F0a0
0 xe65b,
0 xe65c,
0 xe65d,
0 xe65e,
0 xe65f,
0 xe660,
0 xe661,
0 xe662,
0 xe663,
0 xe664,
0 xe665,
0 xe666,
0 xe667,
0 xe668,
0 xe669,
0 xe66a,
// F0b0
0 xe66b,
0 xe66c,
0 xe66d,
0 xe66e,
0 xe66f,
0 xe670,
0 xe671,
0 xe672,
0 xe673,
0 xe674,
0 xe675,
0 xe676,
0 xe677,
0 xe678,
0 xe679,
0 xe67a,
// F0c0
0 xe67b,
0 xe67c,
0 xe67d,
0 xe67e,
0 xe67f,
0 xe680,
0 xe681,
0 xe682,
0 xe683,
0 xe684,
0 xe685,
0 xe686,
0 xe687,
0 xe688,
0 xe689,
0 xe68a,
// F0d0
0 xe68b,
0 xe68c,
0 xe68d,
0 xe68e,
0 xe68f,
0 xe690,
0 xe691,
0 xe692,
0 xe693,
0 xe694,
0 xe695,
0 xe696,
0 xe697,
0 xe698,
0 xe699,
0 xe69a,
// F0e0
0 xe69b,
0 xe69c,
0 xe69d,
0 xe69e,
0 xe69f,
0 xe6a0,
0 xe6a1,
0 xe6a2,
0 xe6a3,
0 xe6a4,
0 xe6a5,
0 xe6a6,
0 xe6a7,
0 xe6a8,
0 xe6a9,
0 xe6aa,
// F0f0
0 xe6ab,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0
};
const sal_Unicode aWebDingsTab[
224 ] =
{
// F020
0 x0020,
0 xe300,
0 xe301,
0 xe302,
0 xe303,
0 xe304,
0 xe305,
0 xe306,
0 xe307,
0 xe308,
0 xe309,
0 xe30a,
0 xe30b,
0 xe30c,
0 xe30d,
0 xe30e,
// F030
0 xe30f,
0 xe310,
0 xe311,
0 xe312,
0 xe313,
0 xe314,
0 xe315,
0 xe316,
0 xe317,
0 xe318,
0 xe319,
0 xe31a,
0 xe31b,
0 xe31c,
0 xe31d,
0 xe31e,
// F040
0 xe31f,
0 xe320,
0 xe321,
0 xe322,
0 xe323,
0 xe324,
0 xe325,
0 xe326,
0 xe327,
0 xe328,
0 xe329,
0 xe32a,
0 xe32b,
0 xe32c,
0 xe32d,
0 xe32e,
// F050
0 xe32f,
0 xe330,
0 xe331,
0 xe332,
0 xe333,
0 xe334,
0 xe335,
0 xe336,
0 xe337,
0 xe338,
0 xe339,
0 xe33a,
0 xe33b,
0 xe33c,
0 xe33d,
0 xe33e,
// F060
0 xe33f,
0 xe340,
0 xe341,
0 xe342,
0 xe343,
0 xe344,
0 xe345,
0 xe346,
0 xe347,
0 xe348,
0 xe349,
0 xe34a,
0 xe34b,
0 xe34c,
0 xe34d,
0 xe34e,
// F070
0 xe34f,
0 xe350,
0 xe351,
0 xe352,
0 xe353,
0 xe354,
0 xe355,
0 xe356,
0 xe357,
0 xe358,
0 xe359,
0 xe35a,
0 xe35b,
0 xe35c,
0 xe35d,
0 ,
// F080
0 xe35e,
0 xe35f,
0 xe360,
0 xe361,
0 xe362,
0 xe363,
0 xe364,
0 xe365,
0 xe366,
0 xe367,
0 xe368,
0 xe369,
0 xe36a,
0 xe36b,
0 xe36c,
0 xe36d,
// F090
0 xe36e,
0 xe36f,
0 xe370,
0 xe371,
0 xe372,
0 xe373,
0 xe374,
0 xe375,
0 xe376,
0 xe377,
0 xe378,
0 xe379,
0 xe37a,
0 xe37b,
0 xe37c,
0 xe37d,
// F0a0
0 xe37e,
0 xe37f,
0 xe380,
0 xe381,
0 xe382,
0 xe383,
0 xe384,
0 xe385,
0 xe386,
0 xe387,
0 xe388,
0 xe389,
0 xe38a,
0 xe38b,
0 xe38c,
0 xe38d,
// F0b0
0 xe38e,
0 xe38f,
0 xe390,
0 xe391,
0 xe392,
0 xe393,
0 xe394,
0 xe395,
0 xe396,
0 xe397,
0 xe398,
0 xe399,
0 xe39a,
0 xe39b,
0 xe39c,
0 xe39d,
// F0c0
0 xe39e,
0 xe39f,
0 xe3a0,
0 xe3a1,
0 xe3a2,
0 xe3a3,
0 xe3a4,
0 xe3a5,
0 xe3a6,
0 xe3a7,
0 xe3a8,
0 xe3a9,
0 xe3aa,
0 xe3ab,
0 xe3ac,
0 xe3ad,
// F0d0
0 xe3ae,
0 xe3af,
0 xe3b0,
0 xe3b1,
0 xe3b2,
0 xe3b3,
0 xe3b4,
0 xe3b5,
0 xe3b6,
0 xe3b7,
0 xe3b8,
0 xe3b9,
0 xe3ba,
0 xe3bb,
0 xe3bc,
0 xe3bd,
// F0e0
0 xe3be,
0 xe3bf,
0 xe3c0,
0 xe3c1,
0 xe3c2,
0 xe3c3,
0 xe3c4,
0 xe3c5,
0 xe3c6,
0 xe3c7,
0 xe3c8,
0 xe3c9,
0 xe3ca,
0 xe3cb,
0 xe3cd,
0 xe3ce,
// F0f0
0 xe3cf,
0 xe3d0,
0 xe3d1,
0 xe3d2,
0 xe3d3,
0 xe3d4,
0 xe3d5,
0 xe3d6,
0 xe3d7,
0 xe3d8,
0 xe3d9,
0 xe3da,
0 xe3db,
0 xe3dc,
0 xe3dd,
0 xe3de
};
// See http://www.iana.org/assignments/character-sets/character-sets.xml
// See ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/symbol.txt
const sal_Unicode aAdobeSymbolTab[
224 ] =
{
//TODO:
// F020
0 x0020,
0 xe100,
0 xe101,
0 xe102,
0 xe103,
0 xe104,
0 xe16a,
0 xe105,
0 xe106,
0 xe107,
0 xe108,
0 xe109,
0 xe10a,
0 xe10b,
0 xe10c,
0 xe10d,
// F030
0 x0030,
0 x0031,
0 x0032,
0 x0033,
0 x0034,
0 x0035,
0 x0036,
0 x0037,
0 x0038,
0 x0039,
0 xe10e,
0 xe10f,
0 xe110,
0 xe111,
0 xe112,
0 x003f,
// F040
0 xe113,
0 x0391,
0 x0392,
0 x03a7,
0 x0394,
0 x0395,
0 x03a6,
0 x0393,
0 x0397,
0 x0399,
0 x03d1,
0 x039a,
0 x039b,
0 x039c,
0 x039d,
0 x039f,
// F050
0 x03a0,
0 x0398,
0 x03a1,
0 x03a3,
0 x03a4,
0 x03a5,
0 x03c2,
0 x03a9,
0 x039e,
0 x03a8,
0 x0396,
0 xe114,
0 x2234,
0 xe115,
0 xe116,
0 x005f,
// F060
0 x00af,
0 x03b1,
0 x03b2,
0 x03c7,
0 x03b4,
0 x03b5,
0 x03d5,
0 x03b3,
0 x03b7,
0 x03b9,
0 x03c6,
0 x03ba,
0 x03bb,
0 x03bc,
0 x03bd,
0 x03bf,
// F070
0 x03c0,
0 x03b8,
0 x03c1,
0 x03c3,
0 x03c4,
0 x03c5,
0 x03d6,
0 x03c9,
0 x03be,
0 x03c8,
0 x03b6,
0 xe117,
0 x007c,
0 xe118,
0 xe119,
0 ,
// F080
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
// F090
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
// F0a0
0 xe11a,
0 x03d2,
0 x2032,
0 xe11b,
0 x2215,
0 xe11c,
0 xe11d,
0 xe11e,
0 x2666,
0 xe11f,
0 xe120,
0 xe121,
0 xe122,
0 xe123,
0 xe124,
0 xe125,
// F0b0
0 xe126,
0 xe127,
0 x2033,
0 xe128,
0 xe129,
0 xe12a,
0 xe12b,
0 xe12c,
0 xe12d,
0 xe12e,
0 xe12f,
0 xe130,
0 xe131,
0 x2502,
0 x2500,
0 x21b2,
// F0c0
0 xe132,
0 xe133,
0 xe134,
0 xe135,
0 xe136,
0 xe137,
0 xe138,
0 xe139,
0 xe13a,
0 xe13b,
0 xe13c,
0 xe13d,
0 xe13e,
0 xe13f,
0 xe140,
0 xe141,
// F0d0
0 x2220,
0 xe142,
0 x00ae,
0 x00a9,
0 xe143,
0 xe144,
0 xe145,
0 xe146,
0 xe147,
0 xe148,
0 xe149,
0 xe14a,
0 xe14b,
0 x21d1,
0 xe14c,
0 x21d3,
// F0e0
0 x25ca,
0 xe14d,
0 xe14e,
0 xe14f,
0 xe150,
0 xe151,
0 xf8eb,
0 xf8ec,
0 xf8ed,
0 xf8ee,
0 xf8ef,
0 xf8f0,
0 xf8f1,
0 xf8f2,
0 xf8f3,
0 xf8f4,
// F0f0
0 ,
0 x232a,
0 x222b,
0 x2320,
0 xf8f5,
0 x2321,
0 xf8f6,
0 xf8f7,
0 xf8f8,
0 xf8f9,
0 xf8fa,
0 xf8fb,
0 xf8fc,
0 xf8fd,
0 xf8fe,
0 ,
};
const sal_Unicode aMonotypeSortsTab[
224 ] =
{
// F020
0 x0020,
0 x2701,
0 xe200,
0 x2703,
0 x2704,
0 xe201,
0 x2706,
0 xe202,
0 xe203,
0 xe203,
0 xe204,
0 xe205,
0 x270c,
0 xe206,
0 xe207,
0 xe208,
// F030
0 x2710,
0 x2711,
0 x2712,
0 xe209,
0 xe20a,
0 x2715,
0 x2716,
0 xe20b,
0 xe20c,
0 xe20d,
0 xe20e,
0 xe20f,
0 xe210,
0 x271d,
0 x271e,
0 x271f,
// F040
0 x2720,
0 xe211,
0 xe212,
0 xe213,
0 xe214,
0 xe215,
0 x2726,
0 x2727,
0 x2605,
0 x2729,
0 x272a,
0 xe216,
0 xe217,
0 xe218,
0 xe219,
0 xe21a,
// F050
0 xe21b,
0 xe21c,
0 x2732,
0 xe21d,
0 xe21e,
0 xe21f,
0 xe220,
0 xe221,
0 xe222,
0 xe223,
0 x273a,
0 x273b,
0 x273c,
0 x273d,
0 x273e,
0 xe224,
// F060
0 x2740,
0 x2741,
0 x2742,
0 x2743,
0 xe225,
0 x2745,
0 x2746,
0 x2747,
0 x2748,
0 x2749,
0 x274a,
0 x274b,
0 xe226,
0 xe227,
0 xe228,
0 xe229,
// F070
0 xe22a,
0 xe22b,
0 xe22c,
0 x25b2,
0 x25bc,
0 xe22d,
0 xe22e,
0 xe22f,
0 x2758,
0 xe230,
0 x275a,
0 x275b,
0 x275c,
0 x275d,
0 x275e,
0 ,
// F080
0 xe231,
0 xe232,
0 xe233,
0 xe234,
0 xe235,
0 xe236,
0 xe237,
0 xe238,
0 xe239,
0 xe23a,
0 xe23b,
0 xe23c,
0 xe23d,
0 xe23e,
0 ,
0 ,
// F090
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
// F0a0
0 ,
0 xe23f,
0 xe240,
0 x2763,
0 x2764,
0 x2765,
0 x2766,
0 x2767,
0 xe241,
0 xe242,
0 xe243,
0 xe244,
0 x2460,
0 x2461,
0 x2462,
0 x2463,
// F0b0
0 x2464,
0 x2465,
0 x2466,
0 x2467,
0 x2468,
0 x2469,
0 x2776,
0 x2777,
0 x2778,
0 x2779,
0 x277a,
0 x277b,
0 x277c,
0 x277d,
0 x277e,
0 x277f,
// F0c0
0 xe245,
0 xe246,
0 xe247,
0 xe248,
0 xe249,
0 xe24a,
0 xe24b,
0 xe24c,
0 xe24d,
0 xe24e,
0 xe24f,
0 xe250,
0 xe251,
0 xe252,
0 xe253,
0 xe254,
// F0d0
0 xe255,
0 xe256,
0 xe257,
0 xe258,
0 xe259,
0 xe25a,
0 xe25b,
0 xe25c,
0 xe25d,
0 x2799,
0 xe25e,
0 x279b,
0 x279c,
0 x279d,
0 x279e,
0 x279f,
// F0e0
0 x27a0,
0 x27a1,
0 xe25f,
0 x27a3,
0 x27a4,
0 x27a5,
0 x27a6,
0 x27a7,
0 x27a8,
0 x27a9,
0 x27aa,
0 x27ab,
0 x27ac,
0 x27ad,
0 x27ae,
0 x27af,
// F0f0
0 ,
0 x27b1,
0 xe260,
0 x27b3,
0 x27b4,
0 x27b5,
0 x27b6,
0 x27b7,
0 xe261,
0 x27b9,
0 x27ba,
0 x27bb,
0 x27bc,
0 x27bd,
0 x27be,
0 ,
};
const sal_Unicode aMTExtraTab[
224 ] =
{
// F020
0 x0020,
0 ,
0 ,
0 x0300,
0 x0302,
0 x0303,
0 x0307,
0 ,
0 x2323,
0 x2322,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
// F030
0 ,
0 xEC00,
0 xEC01,
0 xEC02,
0 xEC03,
0 xEC0B,
0 xEC04,
0 xEC05,
0 xEC06,
0 ,
0 x223C,
0 x2243,
0 x22B2,
0 x226A,
0 x22B3,
0 x226B,
// F040
0 x225C,
0 x2259,
0 x2250,
0 x2210,
0 x019B,
0 xEC0E,
0 xEC0F,
0 xEC10,
0 xEC11,
0 x2229,
0 x2127,
0 x2026,
0 x22EF,
0 x22EE,
0 x22F0,
0 x22F1,
// F050
0 x2225,
0 x2235,
0 x2221,
0 x2222,
0 ,
0 x222A,
0 x25B3,
0 x25A1,
0 x25AD,
0 x25B1,
0 x2197,
0 x2199,
0 xEB05,
0 x2198,
0 x2196,
0 xEB06,
// F060
0 x2035,
0 x21A6,
0 x2195,
0 x21D5,
0 x25CB,
0 x2299,
0 x227B,
0 xE98F,
0 x210F,
0 xEE00,
0 xEE01,
0 ,
0 x2113,
0 x2213,
0 xFFFD,
0 x2218,
// F070
0 x227A,
0 xEB1A,
0 x20D7,
0 x20D6,
0 x20E1,
0 xEB00,
0 x20D1,
0 x20D0,
0 xEB19,
0 ,
0 ,
0 xFE38,
0 xEC0C,
0 xFE37,
0 xEC0D,
0 ,
// F080
0 x21C4,
0 xEB01,
0 xEB02,
0 x21CC,
0 xEB03,
0 xEB04,
0 x21C0,
0 x21BD,
0 xF8E7,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
// F090
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
// F0a0
0 ,
0 x211D,
0 x2124,
0 x2102,
0 x211A,
0 x2115,
0 ,
0 x301A,
0 x301B,
0 xEC22,
0 xEC23,
0 xEC24,
0 xEC25,
0 xEC26,
0 xEC27,
0 ,
// F0b0
0 xEE04,
0 xEE05,
0 xEE06,
0 ,
0 ,
0 xEE07,
0 xEE08,
0 xEE09,
0 ,
0 ,
0 xEE0A,
0 xEE0B,
0 xEE0C,
0 ,
0 ,
0 ,
// F0c0
0 xEE0D,
0 xEE0E,
0 xEE0F,
0 xEE10,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
// F0d0
0 ,
0 xEE11,
0 xEE12,
0 xEE13,
0 ,
0 xEE15,
0 xEE16,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
// F0e0
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 xF8FF,
0 x0160,
0 x00DD,
0 x00DE,
0 x00D0,
0 x0161,
0 x00FD,
0 x00FE,
0 x00F0,
// F0f0
0 xFB01,
0 xFB02,
0 x0131,
0 x00B9,
0 x00B2,
0 x00B3,
0 x00BD,
0 x00BC,
0 x00BE,
0 x2044,
0 x00A6,
0 x02DD,
0 x02D8,
0 x02C7,
0 x02DA,
0 x02DB,
};
const sal_Unicode aAdobeSymbolToAppleSymbolTab[
224 ] =
{
// F020
0 x0020,
0 x0021,
0 x2200,
0 x0023,
0 x2203,
0 x0025,
0 x0026,
0 x220D,
0 x0028,
0 x0029,
0 x2217,
0 x002B,
0 x002C,
0 x2212,
0 x002E,
0 x002F,
// F030
0 x0030,
0 x0031,
0 x0032,
0 x0033,
0 x0034,
0 x0035,
0 x0036,
0 x0037,
0 x0038,
0 x0039,
0 x003A,
0 x003B,
0 x003C,
0 x003D,
0 x003E,
0 x003F,
// F040
0 x2245,
0 x0391,
0 x0392,
0 x03A7,
0 x0394,
0 x0395,
0 x03A6,
0 x0393,
0 x0397,
0 x0399,
0 x03D1,
0 x039A,
0 x039B,
0 x039C,
0 x039D,
0 x039F,
// F050
0 x03A0,
0 x0398,
0 x03A1,
0 x03A3,
0 x03A4,
0 x03A5,
0 x03C2,
0 x03A9,
0 x039E,
0 x03A8,
0 x0396,
0 x005B,
0 x2234,
0 x005D,
0 x22A5,
0 x005F,
// F060
0 xF8E5,
0 x03B1,
0 x03B2,
0 x03C7,
0 x03B4,
0 x03B5,
0 x03C6,
0 x03B3,
0 x03B7,
0 x03B9,
0 x03D5,
0 x03BA,
0 x03BB,
0 x03BC,
0 x03BD,
0 x03BF,
// F070
0 x03C0,
0 x03B8,
0 x03C1,
0 x03C3,
0 x03C4,
0 x03C5,
0 x03D6,
0 x03C9,
0 x03BE,
0 x03C8,
0 x03B6,
0 x007B,
0 x007C,
0 x007D,
0 x223C,
0 x007F,
// F080
0 x0080,
0 x0081,
0 x0082,
0 x0083,
0 x0084,
0 x0085,
0 x0086,
0 x0087,
0 x0088,
0 x0089,
0 x008A,
0 x008B,
0 x008C,
0 x008D,
0 x008E,
0 x008F,
// F090
0 x0090,
0 x0091,
0 x0092,
0 x0093,
0 x0094,
0 x0095,
0 x0096,
0 x0097,
0 x0098,
0 x0099,
0 x009A,
0 x009B,
0 x009C,
0 x009D,
0 x009E,
0 x009F,
// F0a0
0 x20AC,
0 x03D2,
0 x2032,
0 x2264,
0 x2044,
0 x221E,
0 x0192,
0 x2663,
0 x2666,
0 x2665,
0 x2660,
0 x2194,
0 x2190,
0 x2191,
0 x2192,
0 x2193,
// F0b0
0 x00B0,
0 x00B1,
0 x2033,
0 x2065,
0 x00D7,
0 x221D,
0 x2202,
0 x2022,
0 x00F7,
0 x2260,
0 x2261,
0 x2248,
0 x2026,
0 x23D0,
0 x23AF,
0 x21B5,
// F0c0
0 x2135,
0 x2111,
0 x211C,
0 x2118,
0 x2297,
0 x2295,
0 x2205,
0 x2229,
0 x222A,
0 x2283,
0 x2287,
0 x2284,
0 x2282,
0 x2286,
0 x2208,
0 x2209,
// F0d0
0 x2220,
0 x2207,
0 x00AE,
0 x00A9,
0 x2122,
0 x220F,
0 x221A,
0 x22C5,
0 x00AC,
0 x2227,
0 x2228,
0 x21D4,
0 x21D0,
0 x21D1,
0 x21D2,
0 x21D3,
// F0e0
0 x25CA,
0 x3008,
0 x00AE,
0 x00A9,
0 x2122,
0 x2211,
0 x239B,
0 x239C,
0 x239D,
0 x23A1,
0 x23A2,
0 x23A3,
0 x23A7,
0 x23A8,
0 x23A9,
0 x23AA,
// F0f0
0 xF8FF,
0 x3009,
0 x222B,
0 x2320,
0 x23AE,
0 x2321,
0 x239E,
0 x239F,
0 x23A0,
0 x23A4,
0 x23A5,
0 x23A6,
0 x23AB,
0 x23AC,
0 x23AD,
0 x00FF
};
static sal_Unicode ImplStarSymbolToStarBats( sal_Unicode c )
{
switch ( c )
{
case 0 x00A2: c =
0 xF0E0;
break ;
case 0 x00A4: c =
0 xF0E1;
break ;
case 0 x00A5: c =
0 xF0E2;
break ;
case 0 x00A7: c =
0 xF0A7;
break ;
case 0 x00AB: c =
0 xF0AB;
break ;
case 0 x00B6: c =
0 xF0DE;
break ;
case 0 x00BB: c =
0 xF0BB;
break ;
case 0 x0152: c =
0 xF08C;
break ;
case 0 x0153: c =
0 xF09C;
break ;
case 0 x0160: c =
0 xF08A;
break ;
case 0 x0161: c =
0 xF09A;
break ;
case 0 x0178: c =
0 xF09F;
break ;
case 0 x017D: c =
0 xF08E;
break ;
case 0 x017E: c =
0 xF09E;
break ;
case 0 x0192: c =
0 xF083;
break ;
case 0 x02C6: c =
0 xF088;
break ;
case 0 x02DC: c =
0 xF098;
break ;
case 0 x2013: c =
0 xF096;
break ;
case 0 x2014: c =
0 xF097;
break ;
case 0 x2018: c =
0 xF091;
break ;
case 0 x2019: c =
0 xF092;
break ;
case 0 x201A: c =
0 xF082;
break ;
case 0 x201C: c =
0 xF093;
break ;
case 0 x201D: c =
0 xF094;
break ;
case 0 x201E: c =
0 xF084;
break ;
case 0 x2020: c =
0 xF086;
break ;
case 0 x2021: c =
0 xF087;
break ;
case 0 x2022: c =
0 xF095;
break ;
case 0 x2026: c =
0 xF085;
break ;
case 0 x2030: c =
0 xF089;
break ;
case 0 x2039: c =
0 xF08B;
break ;
case 0 x203A: c =
0 xF09B;
break ;
case 0 x20A1: c =
0 xF0E4;
break ;
case 0 x20A2: c =
0 xF0E5;
break ;
case 0 x20A3: c =
0 xF0E6;
break ;
case 0 x20A4: c =
0 xF0E7;
break ;
case 0 x20A8: c =
0 xF0EA;
break ;
case 0 x20A9: c =
0 xF0E8;
break ;
case 0 x20AB: c =
0 xF0E9;
break ;
case 0 x20AC: c =
0 xF080;
break ;
case 0 x2122: c =
0 xF099;
break ;
case 0 x2190: c =
0 xF0B7;
break ;
case 0 x2191: c =
0 xF0B8;
break ;
case 0 x2192: c =
0 xF0B5;
break ;
case 0 x2193: c =
0 xF0B6;
break ;
case 0 x2194: c =
0 xF0D8;
break ;
case 0 x2195: c =
0 xF0D9;
break ;
case 0 x21E4: c =
0 xF0B4;
break ;
case 0 x21E5: c =
0 xF0B3;
break ;
case 0 x21E6: c =
0 xF0A4;
break ;
case 0 x21E7: c =
0 xF0B2;
break ;
case 0 x21E8: c =
0 xF0AF;
break ;
case 0 x21E9: c =
0 xF0A3;
break ;
case 0 x25A0: c =
0 xF024;
break ;
case 0 x25A1: c =
0 xF025;
break ;
case 0 x25B4: c =
0 xF0C5;
break ;
case 0 x25B5: c =
0 xF0C7;
break ;
case 0 x25BE: c =
0 xF0C4;
break ;
case 0 x25BF: c =
0 xF0C6;
break ;
case 0 x25C6: c =
0 xF043;
break ;
case 0 x25CF: c =
0 xF022;
break ;
case 0 x25D7: c =
0 xF0D0;
break ;
case 0 x260E: c =
0 xF074;
break ;
case 0 x2611: c =
0 xF034;
break ;
case 0 x2612: c =
0 xF033;
break ;
case 0 x261B: c =
0 xF036;
break ;
case 0 x261E: c =
0 xF07D;
break ;
case 0 x2639: c =
0 xF0AD;
break ;
case 0 x263A: c =
0 xF021;
break ;
case 0 x2702: c =
0 xF0CB;
break ;
case 0 x2708: c =
0 xF0CC;
break ;
case 0 x270D: c =
0 xF07E;
break ;
case 0 x270E: c =
0 xF038;
break ;
case 0 x2713: c =
0 xF039;
break ;
case 0 x2714: c =
0 xF03A;
break ;
case 0 x2717: c =
0 xF04F;
break ;
case 0 x2718: c =
0 xF050;
break ;
case 0 x2719: c =
0 xF051;
break ;
case 0 x271A: c =
0 xF052;
break ;
case 0 x271B: c =
0 xF053;
break ;
case 0 x271C: c =
0 xF054;
break ;
case 0 x2721: c =
0 xF0CD;
break ;
case 0 x2722: c =
0 xF044;
break ;
case 0 x2723: c =
0 xF045;
break ;
case 0 x2724: c =
0 xF046;
break ;
case 0 x2725: c =
0 xF047;
break ;
case 0 x272B: c =
0 xF055;
break ;
case 0 x272C: c =
0 xF056;
break ;
case 0 x272D: c =
0 xF057;
break ;
case 0 x272E: c =
0 xF058;
break ;
case 0 x272F: c =
0 xF059;
break ;
case 0 x2730: c =
0 xF05A;
break ;
case 0 x2733: c =
0 xF048;
break ;
case 0 x2734: c =
0 xF049;
break ;
case 0 x2735: c =
0 xF04A;
break ;
case 0 x2736: c =
0 xF04B;
break ;
case 0 x2737: c =
0 xF04C;
break ;
case 0 x2738: c =
0 xF04D;
break ;
case 0 x2739: c =
0 xF04E;
break ;
case 0 x273F: c =
0 xF0CE;
break ;
case 0 x2744: c =
0 xF0CF;
break ;
case 0 x274D: c =
0 xF023;
break ;
case 0 x274F: c =
0 xF03E;
break ;
case 0 x2750: c =
0 xF03F;
break ;
case 0 x2751: c =
0 xF027;
break ;
case 0 x2752: c =
0 xF028;
break ;
case 0 x2756: c =
0 xF02C;
break ;
case 0 x2759: c =
0 xF0D1;
break ;
case 0 x2762: c =
0 xF0D4;
break ;
case 0 x2780: c =
0 xF068;
break ;
case 0 x2781: c =
0 xF069;
break ;
case 0 x2782: c =
0 xF06A;
break ;
case 0 x2783: c =
0 xF06B;
break ;
case 0 x2784: c =
0 xF06C;
break ;
case 0 x2785: c =
0 xF06D;
break ;
case 0 x2786: c =
0 xF06E;
break ;
case 0 x2787: c =
0 xF06F;
break ;
case 0 x2788: c =
0 xF070;
break ;
case 0 x2789: c =
0 xF071;
break ;
case 0 x278A: c =
0 xF05D;
break ;
case 0 x278B: c =
0 xF05E;
break ;
case 0 x278C: c =
0 xF05F;
break ;
case 0 x278D: c =
0 xF060;
break ;
case 0 x278E: c =
0 xF061;
break ;
case 0 x278F: c =
0 xF062;
break ;
case 0 x2790: c =
0 xF063;
break ;
case 0 x2791: c =
0 xF064;
break ;
case 0 x2792: c =
0 xF065;
break ;
case 0 x2793: c =
0 xF066;
break ;
case 0 x2794: c =
0 xF031;
break ;
case 0 x2798: c =
0 xF0DA;
break ;
case 0 x279A: c =
0 xF0DB;
break ;
case 0 x27A2: c =
0 xF02F;
break ;
case 0 x27B2: c =
0 xF035;
break ;
case 0 x27B8: c =
0 xF0DC;
break ;
case 0 xE000: c =
0 xF000+
38 ;
break ;
case 0 xE001: c =
0 xF000+
41 ;
break ;
case 0 xE002: c =
0 xF000+
42 ;
break ;
case 0 xE003: c =
0 xF000+
43 ;
break ;
case 0 xE004: c =
0 xF000+
45 ;
break ;
case 0 xE005: c =
0 xF000+
46 ;
break ;
case 0 xE006: c =
0 xF000+
48 ;
break ;
case 0 xE007: c =
0 xF000+
57 ;
break ;
case 0 xE008: c =
0 xF000+
59 ;
break ;
case 0 xE009: c =
0 xF000+
60 ;
break ;
case 0 xE00a: c =
0 xF000+
61 ;
break ;
case 0 xE00b: c =
0 xF000+
64 ;
break ;
case 0 xE00c: c =
0 xF000+
65 ;
break ;
case 0 xE00d: c =
0 xF000+
66 ;
break ;
case 0 xE00e: c =
0 xF000+
67 ;
break ;
case 0 xE00f: c =
0 xF000+
92 ;
break ;
case 0 xE010: c =
0 xF000+
103 ;
break ;
case 0 xE011: c =
0 xF000+
114 ;
break ;
case 0 xE012: c =
0 xF000+
115 ;
break ;
case 0 xE013: c =
0 xF000+
117 ;
break ;
case 0 xE014: c =
0 xF000+
118 ;
break ;
case 0 xE015: c =
0 xF000+
119 ;
break ;
case 0 xE016: c =
0 xF000+
120 ;
break ;
case 0 xE017: c =
0 xF000+
121 ;
break ;
case 0 xE018: c =
0 xF000+
122 ;
break ;
case 0 xE019: c =
0 xF000+
123 ;
break ;
case 0 xE01a: c =
0 xF000+
124 ;
break ;
case 0 xE01b: c =
0 xF000+
126 ;
break ;
case 0 xE01c: c =
0 xF000+
136 ;
break ;
case 0 xE01d: c =
0 xF000+
155 ;
break ;
case 0 xE01e: c =
0 xF000+
165 ;
break ;
case 0 xE01f: c =
0 xF000+
166 ;
break ;
case 0 xE020: c =
0 xF000+
168 ;
break ;
case 0 xE021: c =
0 xF000+
169 ;
break ;
case 0 xE022: c =
0 xF000+
170 ;
break ;
case 0 xE023: c =
0 xF000+
172 ;
break ;
case 0 xE024: c =
0 xF000+
174 ;
break ;
case 0 xE025: c =
0 xF000+
175 ;
break ;
case 0 xE026: c =
0 xF000+
176 ;
break ;
case 0 xE027: c =
0 xF000+
177 ;
break ;
case 0 xE028: c =
0 xF000+
178 ;
break ;
case 0 xE029: c =
0 xF000+
185 ;
break ;
case 0 xE02a: c =
0 xF000+
186 ;
break ;
case 0 xE02b: c =
0 xF000+
188 ;
break ;
case 0 xE02c: c =
0 xF000+
189 ;
break ;
case 0 xE02d: c =
0 xF000+
190 ;
break ;
case 0 xE02e: c =
0 xF000+
191 ;
break ;
case 0 xE02f: c =
0 xF000+
192 ;
break ;
case 0 xE030: c =
0 xF000+
193 ;
break ;
case 0 xE031: c =
0 xF000+
194 ;
break ;
case 0 xE032: c =
0 xF000+
195 ;
break ;
case 0 xE033: c =
0 xF000+
200 ;
break ;
case 0 xE034: c =
0 xF000+
201 ;
break ;
case 0 xE035: c =
0 xF000+
202 ;
break ;
case 0 xE036: c =
0 xF000+
210 ;
break ;
case 0 xE037: c =
0 xF000+
211 ;
break ;
case 0 xE038: c =
0 xF000+
227 ;
break ;
case 0 xE039: c =
0 xF000+
235 ;
break ;
case 0 xE03a: c =
0 xF000+
255 ;
break ;
default : c =
0 ;
break ;
}
return c;
}
namespace {
enum SymbolFont
{
Symbol=
1 , Wingdings=
2 , MonotypeSorts=
4 , Webdings=
8 , Wingdings2=
16 ,
Wingdings3=
32 , MTExtra=
64 , TimesNewRoman=
128
};
}
constexpr OUString aSymbolNames[] =
{
u
"Symbol" _ustr, u
"Wingdings" _ustr, u
"Monotype Sorts" _ustr, u
"Webdings" _ustr, u
"Wingdings 2" _ustr,
u
"Wingdings 3" _ustr, u
"MT Extra" _ustr, u
"Times New Roman" _ustr
};
namespace {
struct SymbolEntry
{
sal_uInt8 cIndex;
enum SymbolFont eFont;
};
class StarSymbolToMSMultiFontImpl :
public StarSymbolToMSMultiFont
{
private :
::std::multimap<sal_Unicode, SymbolEntry> maMagicMap;
public :
explicit StarSymbolToMSMultiFontImpl();
OUString ConvertChar(sal_Unicode &rChar) override;
};
struct ExtraTable { sal_Unicode cStar; sal_uInt8 cMS;};
}
ExtraTable
const aWingDingsExtraTab[] =
{
{
0 x25cf,
0 x6C}, {
0 x2714,
0 xFC}, {
0 x2717,
0 xFB}, {
0 x2794,
0 xE8},
{
0 x27a2,
0 xD8}, {
0 xe000,
0 x6F}, {
0 xe001,
0 x73}, {
0 xe002,
0 x74},
{
0 xe003,
0 x75}, {
0 xe004,
0 x77}, {
0 xe005,
0 xA6}, {
0 xe006,
0 xE0},
{
0 xe007,
0 xFC}, {
0 xe008,
0 x6C}, {
0 xe009,
0 x6D}, {
0 xe00a,
0 x6E},
{
0 xe00b,
0 x72}, {
0 xe00c,
0 x75}, {
0 xe00d,
0 x76}, {
0 xe00e,
0 x74},
{
0 xe00f,
0 x8B}, {
0 xe010,
0 x80}, {
0 xe011,
0 x2B}, {
0 xe012,
0 x3A},
{
0 xe013,
0 x5D}, {
0 xe014,
0 x29}, {
0 xe015,
0 x3A}, {
0 xe016,
0 x3C},
{
0 xe017,
0 x38}, {
0 xe018,
0 x3A}, {
0 xe019,
0 x2A}, {
0 xe01a,
0 x2B},
{
0 xe01b,
0 x3F}, {
0 xe01c,
0 x9F}, {
0 xe01d,
0 x80}, {
0 xe01e,
0 x8B},
{
0 xe023,
0 x4A}, {
0 xe025,
0 xF0}, {
0 xe026,
0 xF2}, {
0 xe027,
0 xEF},
{
0 xe028,
0 xF1}, {
0 xe029,
0 x52}, {
0 xe02a,
0 x29}, {
0 xe02b,
0 xE0},
{
0 xe02c,
0 xE2}, {
0 xe02d,
0 xDF}, {
0 xe02e,
0 xE1}, {
0 xe02f,
0 xAC},
{
0 xe030,
0 xAD}, {
0 xe031,
0 xAE}, {
0 xe032,
0 x7C}, {
0 xe033,
0 x43},
{
0 xe034,
0 x4D}, {
0 xe0aa,
0 x71}, {
0 xe422,
0 x44}
};
ExtraTable
const aSymbolExtraTab2[] =
{
{
0 x0020,
0 x20}, {
0 x00A0,
0 x20}, {
0 x0021,
0 x21}, {
0 x2200,
0 x22},
{
0 x0023,
0 x23}, {
0 x2203,
0 x24}, {
0 x0025,
0 x25}, {
0 x0026,
0 x26},
{
0 x220B,
0 x27}, {
0 x0028,
0 x28}, {
0 x0029,
0 x29}, {
0 x2217,
0 x2A},
{
0 x002B,
0 x2B}, {
0 x002C,
0 x2C}, {
0 x2212,
0 x2D}, {
0 x002E,
0 x2E},
{
0 x002F,
0 x2F}, {
0 x003A,
0 x3A}, {
0 x003B,
0 x3B}, {
0 x003C,
0 x3C},
{
0 x003D,
0 x3D}, {
0 x003E,
0 x3E}, {
0 x2245,
0 x40}, {
0 x2206,
0 x44},
{
0 x2126,
0 x57}, {
0 x005B,
0 x5B}, {
0 x005D,
0 x5D}, {
0 x22A5,
0 x5E},
{
0 x03C6,
0 x66}, {
0 x03D5,
0 x6A}, {
0 x00B5,
0 x6D}, {
0 x007B,
0 x7B},
{
0 x007C,
0 x7C}, {
0 x007D,
0 x7D}, {
0 x223C,
0 x7E}, {
0 x20AC,
0 xA0},
{
0 x2032,
0 xA2}, {
0 x2264,
0 xA3}, {
0 x2044,
0 xA4}, {
0 x221E,
0 xA5},
{
0 x0192,
0 xA6}, {
0 x2663,
0 xA7}, {
0 x2665,
0 xA9}, {
0 x2660,
0 xAA},
{
0 x2194,
0 xAB}, {
0 x2190,
0 xAC}, {
0 x2191,
0 xAD}, {
0 x2192,
0 xAE},
{
0 x2193,
0 xAF}, {
0 x00B0,
0 xB0}, {
0 x00B1,
0 xB1}, {
0 x2265,
0 xB3},
{
0 x00D7,
0 xB4}, {
0 x221D,
0 xB5}, {
0 x2202,
0 xB6}, {
0 x2022,
0 xB7},
{
0 x00F7,
0 xB8}, {
0 x2260,
0 xB9}, {
0 x2261,
0 xBA}, {
0 x2248,
0 xBB},
{
0 x2026,
0 xBC}, {
0 x21B5,
0 xBF}, {
0 x2135,
0 xC0}, {
0 x2111,
0 xC1},
{
0 x211C,
0 xC2}, {
0 x2118,
0 xC3}, {
0 x2297,
0 xC4}, {
0 x2295,
0 xC5},
{
0 x2205,
0 xC6}, {
0 x2229,
0 xC7}, {
0 x222A,
0 xC8}, {
0 x2283,
0 xC9},
{
0 x2287,
0 xCA}, {
0 x2284,
0 xCB}, {
0 x2282,
0 xCC}, {
0 x2286,
0 xCD},
{
0 x2208,
0 xCE}, {
0 x2209,
0 xCF}, {
0 x2207,
0 xD1}, {
0 x220F,
0 xD5},
{
0 x221A,
0 xD6}, {
0 x22C5,
0 xD7}, {
0 x00AC,
0 xD8}, {
0 x2227,
0 xD9},
{
0 x2228,
0 xDA}, {
0 x21D4,
0 xDB}, {
0 x21D0,
0 xDC}, {
0 x21D2,
0 xDE},
{
0 x2329,
0 xE1}, {
0 x2211,
0 xE5}, {
0 x232A,
0 xF1}, {
0 x222B,
0 xF2},
{
0 x2320,
0 xF3}, {
0 x2321,
0 xF5}, {
0 x2013,
0 x2D}
};
ExtraTable
const aSymbolExtraTab[] =
{
{
0 xe021,
0 xD3}, {
0 xe024,
0 xD2}, {
0 xe035,
0 x20}, {
0 xe036,
0 x28},
{
0 xe037,
0 x29}, {
0 xe039,
0 x20}, {
0 xe083,
0 x2B}, {
0 xe084,
0 x3C},
{
0 xe085,
0 x3E}, {
0 xe086,
0 xA3}, {
0 xe087,
0 xB3}, {
0 xe089,
0 xCE},
{
0 xe08a,
0 xA6}, {
0 xe08c,
0 xAE}, {
0 xe08d,
0 xD6}, {
0 xe08e,
0 xD6},
{
0 xe08f,
0 xD6}, {
0 xe094,
0 xA2}, {
0 xe09e,
0 x28}, {
0 xe09f,
0 x29},
{
0 xe0a0,
0 xD0}, {
0 xe0a6,
0 xA2}, {
0 xe0a7,
0 x7C}, {
0 xe0a8,
0 x2F},
{
0 xe0ab,
0 x7C}, {
0 xe0ac,
0 x47}, {
0 xe0ad,
0 x44}, {
0 xe0ae,
0 x51},
{
0 xe0af,
0 x4C}, {
0 xe0b0,
0 x58}, {
0 xe0b1,
0 x50}, {
0 xe0b2,
0 x53},
{
0 xe0b3,
0 x55}, {
0 xe0b4,
0 x46}, {
0 xe0b5,
0 x59}, {
0 xe0b6,
0 x57},
{
0 xe0b7,
0 x61}, {
0 xe0b8,
0 x62}, {
0 xe0b9,
0 x67}, {
0 xe0ba,
0 x64},
{
0 xe0bb,
0 x65}, {
0 xe0bc,
0 x7A}, {
0 xe0bd,
0 x68}, {
0 xe0be,
0 x71},
{
0 xe0bf,
0 x69}, {
0 xe0c0,
0 x6B}, {
0 xe0c1,
0 x6C}, {
0 xe0c2,
0 x6D},
{
0 xe0c3,
0 x6E}, {
0 xe0c4,
0 x78}, {
0 xe0c5,
0 x6F}, {
0 xe0c6,
0 x70},
{
0 xe0c7,
0 x72}, {
0 xe0c8,
0 x73}, {
0 xe0c9,
0 x74}, {
0 xe0ca,
0 x75},
{
0 xe0cb,
0 x66}, {
0 xe0cc,
0 x63}, {
0 xe0cd,
0 x79}, {
0 xe0ce,
0 x77},
{
0 xe0cf,
0 x65}, {
0 xe0d0,
0 x4A}, {
0 xe0d1,
0 x76}, {
0 xe0d3,
0 x56},
{
0 xe0d4,
0 x6A}, {
0 xe0d5,
0 xB6}, {
0 xe0d6,
0 x69}, {
0 xe0db,
0 xAC},
{
0 xe0dc,
0 xAD}, {
0 xe0dd,
0 xAF}
};
ExtraTable
const aTNRExtraTab[] =
{
{
0 xe021,
0 xA9},
{
0 xe022,
0 x40},
{
0 xe024,
0 xAE},
{
0 xe035,
0 x20},
{
0 xe036,
'(' },
{
0 xe037,
')' },
{
0 xe039,
0 x20},
{
0 xe03a,
0 x80},
{
0 xe080,
0 x89},
{
0 xe083,
'+' },
{
0 xe084,
'<' },
{
0 xe085,
'>' },
{
0 xe0a9,
'\\' }
};
StarSymbolToMSMultiFontImpl::StarSymbolToMSMultiFontImpl()
{
struct ConvertTable
{
enum SymbolFont meFont;
const sal_Unicode* pTab;
};
//In order of preference
static const ConvertTable aConservativeTable[] =
{
{Symbol, aAdobeSymbolTab},
{Wingdings, aWingDingsTab},
{MonotypeSorts, aMonotypeSortsTab},
{Webdings, aWebDingsTab},
{Wingdings2, aWingDings2Tab},
{Wingdings3, aWingDings3Tab},
{MTExtra, aMTExtraTab}
};
struct ExtendedConvertTable
{
enum SymbolFont meFont;
const ExtraTable *mpTable;
size_t mnSize;
ExtendedConvertTable(SymbolFont eFont,
const ExtraTable *pTable,
size_t nSize)
: meFont(eFont), mpTable(pTable), mnSize(nSize) {}
};
//Reverse map from a given starsymbol char to exact matches in ms symbol
//fonts.
for (
auto const & r: aConservativeTable)
{
SymbolEntry aEntry;
aEntry.eFont = r.meFont;
for (aEntry.cIndex =
0 xFF; aEntry.cIndex >=
0 x20; --aEntry.cIndex)
{
if (sal_Unicode cChar = r.pTab[aEntry.cIndex-
0 x20])
maMagicMap.emplace(cChar, aEntry);
}
}
//In order of preference
static const ExtendedConvertTable aAggressiveTable[] =
{
ExtendedConvertTable(Symbol, aSymbolExtraTab2,
sizeof (aSymbolExtraTab2)),
ExtendedConvertTable(Symbol, aSymbolExtraTab,
sizeof (aSymbolExtraTab)),
ExtendedConvertTable(Wingdings, aWingDingsExtraTab,
sizeof (aWingDingsExtraTab)),
ExtendedConvertTable(TimesNewRoman, aTNRExtraTab,
sizeof (aTNRExtraTab))
};
//Allow extra conversions that are not perfect, but "good enough"
for (
auto const & r: aAggressiveTable)
{
SymbolEntry aEntry;
aEntry.eFont = r.meFont;
for (
int j = r.mnSize /
sizeof (r.mpTable[
0 ]) -
1 ; j >=
0 ; --j)
{
aEntry.cIndex = r.mpTable[j].cMS;
maMagicMap.emplace(r.mpTable[j].cStar, aEntry);
}
}
}
static const OUString & SymbolFontToString(
int nResult)
{
const OUString *ppName = aSymbolNames;
int nI = Symbol;
while (nI <= nResult)
{
if (!(nI & nResult))
nI = nI <<
1 ;
else
break ;
ppName++;
}
return *ppName;
}
OUString StarSymbolToMSMultiFontImpl::ConvertChar(sal_Unicode &rChar)
{
OUString sRet;
::std::multimap<sal_Unicode, SymbolEntry>::const_iterator aResult =
maMagicMap.find(rChar);
if (aResult != maMagicMap.end())
{
const SymbolEntry &rEntry = (*aResult).second;
sRet = SymbolFontToString(rEntry.eFont);
rChar = rEntry.cIndex;
}
return sRet;
}
StarSymbolToMSMultiFont *CreateStarSymbolToMSMultiFont()
{
return new StarSymbolToMSMultiFontImpl;
}
sal_Unicode ConvertChar::RecodeChar( sal_Unicode cChar )
const
{
sal_Unicode cRetVal =
0 ;
if ( mpCvtFunc )
{
// use a conversion function for recoding
cRetVal = mpCvtFunc( cChar );
}
else
{
// use a conversion table for recoding
sal_Unicode cIndex = cChar;
// allow symbol aliasing
if ( cIndex &
0 xFF00 )
cIndex -=
0 xF000;
// recode the symbol
if ( cIndex>=
0 x0020 && cIndex<=
0 x00FF )
{
cRetVal = mpCvtTab[ cIndex -
0 x0020 ];
if (!cRetVal && !maSubsFontName.isEmpty())
{
if ( IsOpenSymbol( maSubsFontName ) )
{
cRetVal =
0 xE12C;
SAL_WARN(
"unotools.misc" ,
"Forcing a bullet substitution from 0x" <<
OString::number(cChar,
16 ) <<
" to 0x" <<
OString::number(cRetVal,
16 ));
}
}
}
}
return cRetVal ? cRetVal : cChar;
}
// recode the string assuming the character codes are symbol codes
// from a traditional symbol font (i.e. U+F020..U+F0FF)
void ConvertChar::RecodeString( OUString& rStr, sal_Int32 nIndex, sal_Int32 nLen )
const
{
sal_Int32 nLastIndex = nIndex + nLen;
OUStringBuffer aTmpStr(rStr);
if ( nLastIndex > aTmpStr.getLength() )
nLastIndex = aTmpStr.getLength();
for (; nIndex < nLastIndex; ++nIndex )
{
sal_Unicode cOrig = rStr[ nIndex ];
// only recode symbols and their U+00xx aliases
if ( ((cOrig <
0 x0020) || (cOrig >
0 x00FF))
&& ((cOrig <
0 xF020) || (cOrig >
0 xF0FF)) )
continue ;
// recode a symbol
sal_Unicode cNew = RecodeChar( cOrig );
if ( cOrig != cNew )
aTmpStr[ nIndex ] = cNew;
}
rStr = aTmpStr.makeStringAndClear();
}
namespace {
struct RecodeTable {
const char * pOrgName; ConvertChar aCvt;};
}
const RecodeTable aStarSymbolRecodeTable[] =
{
// the first two entries must be StarMath and StarBats; do not reorder!
// reason: see CreateFontToSubsFontConverter method
{
"starbats" , {aStarBatsTab, u
"StarSymbol" _ustr, nullptr}},
{
"starmath" , {aStarMathTab, u
"StarSymbol" _ustr, nullptr}},
{
"symbol" , {aAdobeSymbolTab, u
"StarSymbol" _ustr, nullptr}},
{
"standardsymbols" , {aAdobeSymbolTab, u
"StarSymbol" _ustr, nullptr}},
{
"standardsymbolsl" ,{aAdobeSymbolTab, u
"StarSymbol" _ustr, nullptr}},
{
"monotypesorts" , {aMonotypeSortsTab, u
"StarSymbol" _ustr, nullptr}},
// {"monotypesorts2", {aMonotypeSorts2Tab, u"StarSymbol"_ustr, NULL}}
{
"zapfdingbats" , {aMonotypeSortsTab, u
"StarSymbol" _ustr, nullptr}},
//ZapfDingbats=MonotypeSorts-X?
{
"itczapfdingbats" , {aMonotypeSortsTab, u
"StarSymbol" _ustr, nullptr}},
{
"dingbats" , {aMonotypeSortsTab, u
"StarSymbol" _ustr, nullptr}},
{
"webdings" , {aWebDingsTab, u
"StarSymbol" _ustr, nullptr}},
{
"wingdings" , {aWingDingsTab, u
"StarSymbol" _ustr, nullptr}},
{
"wingdings2" , {aWingDings2Tab, u
"StarSymbol" _ustr, nullptr}},
{
"wingdings3" , {aWingDings3Tab, u
"StarSymbol" _ustr, nullptr}},
{
"mtextra" , {aMTExtraTab, u
"StarSymbol" _ustr, nullptr}}
};
const RecodeTable aAppleSymbolRecodeTable[] = {
{
"symbol" , {aAdobeSymbolToAppleSymbolTab, u
"AppleSymbol" _ustr, nullptr}}
};
static ConvertChar aImplStarSymbolCvt = { nullptr, u
"StarBats" _ustr, ImplStarSymbolToSt
arBats };
const ConvertChar* ConvertChar::GetRecodeData( std::u16string_view rOrgFontName, std::u16string_view rMapFontName )
{
const ConvertChar* pCvt = nullptr;
// clean up and lowercase font name
OUString aOrgName( GetEnglishSearchFontName( rOrgFontName ) );
OUString aMapName( GetEnglishSearchFontName( rMapFontName ) );
if ( aMapName == "starsymbol"
|| aMapName == "opensymbol" )
{
for (auto const & r: aStarSymbolRecodeTable)
{
if ( aOrgName.equalsAscii( r.pOrgName ) )
{
pCvt = &r.aCvt;
break ;
}
}
}
//It's plausible that it's better to implement this
//as an additional encoding alongside the existing
//adobe-symbol to unicode conversion in rtl instead
else if ( aMapName == "applesymbol" )
{
for (auto const & r: aAppleSymbolRecodeTable)
{
if ( aOrgName.equalsAscii( r.pOrgName ) )
{
pCvt = &r.aCvt;
break ;
}
}
}
else if ( aMapName == "starbats" )
{
if ( aOrgName == "starsymbol" )
pCvt = &aImplStarSymbolCvt;
else if ( aOrgName == "opensymbol" )
pCvt = &aImplStarSymbolCvt;
}
return pCvt;
}
FontToSubsFontConverter CreateFontToSubsFontConverter( std::u16string_view rOrgName, FontToSubsFontFlags nFlags )
{
const ConvertChar* pCvt = nullptr;
OUString aName = GetEnglishSearchFontName( rOrgName );
if ( nFlags == FontToSubsFontFlags::IMPORT )
{
const std::size_t nEntries = 2 ; // only StarMath+StarBats
for ( std::size_t i = 0 ; i < nEntries; ++i )
{
const RecodeTable& r = aStarSymbolRecodeTable[i];
if ( aName.equalsAscii( r.pOrgName ) )
{
pCvt = &r.aCvt;
break ;
}
}
}
else
{
// TODO: only StarMath+StarBats
if ( aName == "starsymbol" )
pCvt = &aImplStarSymbolCvt;
else if ( aName == "opensymbol" )
pCvt = &aImplStarSymbolCvt;
}
return const_cast <ConvertChar *>(pCvt);
}
sal_Unicode ConvertFontToSubsFontChar(
FontToSubsFontConverter hConverter, sal_Unicode cChar )
{
if ( hConverter )
return static_cast <ConvertChar*>(hConverter)->RecodeChar( cChar );
else
return cChar;
}
OUString GetFontToSubsFontName( FontToSubsFontConverter hConverter )
{
if ( !hConverter )
return OUString();
return static_cast <ConvertChar*>(hConverter)->maSubsFontName;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Messung V0.5 in Prozent C=92 H=92 G=91
¤ Dauer der Verarbeitung: 0.49 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland