diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2013-08-31 16:05:13 +0000 |
|---|---|---|
| committer | Krzysztof KosiĆski <tweenk.pl@gmail.com> | 2013-08-31 16:05:13 +0000 |
| commit | 14f607efe6cb318756d74604c3cd6810799b5434 (patch) | |
| tree | fd4eed3ffaeab8be48006e8c652f89fae21848ae /src/libunicode-convert | |
| parent | Merge in pdf work by david bild, thanks David\! (diff) | |
| download | inkscape-14f607efe6cb318756d74604c3cd6810799b5434.tar.gz inkscape-14f607efe6cb318756d74604c3cd6810799b5434.zip | |
Move libuemf to a separate directory.
Rename libunicode-convert to symbol_convert and put it in libuemf.
(bzr r12490)
Diffstat (limited to 'src/libunicode-convert')
| -rw-r--r-- | src/libunicode-convert/Makefile_insert | 5 | ||||
| -rw-r--r-- | src/libunicode-convert/README | 1 | ||||
| -rw-r--r-- | src/libunicode-convert/makefile.in | 17 | ||||
| -rw-r--r-- | src/libunicode-convert/unicode-convert.c | 1008 | ||||
| -rw-r--r-- | src/libunicode-convert/unicode-convert.h | 51 |
5 files changed, 0 insertions, 1082 deletions
diff --git a/src/libunicode-convert/Makefile_insert b/src/libunicode-convert/Makefile_insert deleted file mode 100644 index e69049310..000000000 --- a/src/libunicode-convert/Makefile_insert +++ /dev/null @@ -1,5 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -ink_common_sources += \ - libunicode-convert/unicode-convert.c \ - libunicode-convert/unicode-convert.h diff --git a/src/libunicode-convert/README b/src/libunicode-convert/README deleted file mode 100644 index 51d96970d..000000000 --- a/src/libunicode-convert/README +++ /dev/null @@ -1 +0,0 @@ -Some simple routines for converting between Unicode and nonunicode fonts. diff --git a/src/libunicode-convert/makefile.in b/src/libunicode-convert/makefile.in deleted file mode 100644 index ca0d7dc1e..000000000 --- a/src/libunicode-convert/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) libunicode-convert/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) libunicode-convert/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/libunicode-convert/unicode-convert.c b/src/libunicode-convert/unicode-convert.c deleted file mode 100644 index c8d2de064..000000000 --- a/src/libunicode-convert/unicode-convert.c +++ /dev/null @@ -1,1008 +0,0 @@ -/** @file - * @brief Windows-only Enhanced Metafile input and output. - */ -/* Authors: - * David mathog <mathog@caltech.edu> - * - * Copyright (C) 2012 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - * - * References: - * see unicode-convert.h - * - * v1.4 08/21/2012 Changed this so that the incoming routines use uint32_t and the outgoing use uint16_t. This gets rid - * of wchar_t, which was different sizes on windows/linux, and required lots of ifdef's elsewhere in the code. - * v1.3 04/03/2012 Bullets were a problem. Symbol bullet -> Times New Roman Bullet looks OK, but - * it looked bad going the other way. Changed mapping Symbol bullet to 2219 (Bullet operator, math - * symbol.) That way Symbol bullet can map in and out, while other font bullet an remain in that - * font's bullet glyph. - * v1.2 03/26/2012 Introduced bug into SingleUnicodeToNon repaired. - * v1.1 03/25/2012 Changed ampersand mapping on Wingdings (to avoid normal Ampersand mapping - * to Wingdings ampersand when not intended. Fixed access bugs for when no conversion is - * mapped in UnicodeToNon and SingleUnicodeToNon - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include <string.h> -#include "unicode-convert.h" - - -static bool hold_symb=0; // if any of these change, (re)generate the map table -static bool hold_wing=0; -static bool hold_zdng=0; -static bool hold_pua=0; -static unsigned char *from_unicode=NULL; -static unsigned char *to_font=NULL; - -/* The following tables were created from the files - adobe-dingbats.enc.gz - adobe-symbol.enc.gz - adobe-standard.enc.gz - - which came as part of the X11-font-encodings rpm on Mandriva 2010. - The original source for the data must have been Adobe. - Some also from: - ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/symbol.txt - http://www.csn.ul.ie/~caolan/wingdings/proposal/ - www.renderx.com/Tests/zapf-dingbats.pdf - - The intent is as follows: - - on conversion from ASCII/extended -> Unicode use the appropriate table for - the font and change font + code (symbol, zapf dingbats, wingdings). - Going the other way, set up two transfer tables, - the first is unicode -> 0-FF values, and the seond is unicode -> cvt_to_font. - These tables are filled dingbats, wingdings, then symbols, so with the rightmost one getting - precedence if both contain the symbol. - - Whereever possible do NOT map two input characters to the same output character, use a slightly - off character if it is somewhat close and disambiguates. - -v 1.0.0 14-MAR-2012, David Mathog - -*/ - -static unsigned int wingdings_convert[256]={ - 0xFFFD, // 0x00 no replacement - 0xFFFD, // 0x01 no replacement - 0xFFFD, // 0x02 no replacement - 0xFFFD, // 0x03 no replacement - 0xFFFD, // 0x04 no replacement - 0xFFFD, // 0x05 no replacement - 0xFFFD, // 0x06 no replacement - 0xFFFD, // 0x07 no replacement - 0xFFFD, // 0x08 no replacement - 0xFFFD, // 0x09 no replacement - 0xFFFD, // 0x0A no replacement - 0xFFFD, // 0x0B no replacement - 0xFFFD, // 0x0C no replacement - 0xFFFD, // 0x0D no replacement - 0xFFFD, // 0x0E no replacement - 0xFFFD, // 0x0F no replacement - 0xFFFD, // 0x10 no replacement - 0xFFFD, // 0x11 no replacement - 0xFFFD, // 0x12 no replacement - 0xFFFD, // 0x13 no replacement - 0xFFFD, // 0x14 no replacement - 0xFFFD, // 0x15 no replacement - 0xFFFD, // 0x16 no replacement - 0xFFFD, // 0x17 no replacement - 0xFFFD, // 0x18 no replacement - 0xFFFD, // 0x19 no replacement - 0xFFFD, // 0x1A no replacement - 0xFFFD, // 0x1B no replacement - 0xFFFD, // 0x1C no replacement - 0xFFFD, // 0x1D no replacement - 0xFFFD, // 0x1E no replacement - 0xFFFD, // 0x1F no replacement - 0x0020, // 0x20 SPACE - 0x270E, // 0x21 LOWER RIGHT PENCIL (close, but not exact) - 0x2702, // 0x22 BLACK SCISSORS - 0x2701, // 0x23 UPPER BLADE SCISSORS - 0xFFFD, // 0x24 no replacement - 0xFFFD, // 0x25 no replacement - 0xFFFD, // 0x26 no replacement - 0xFFFD, // 0x27 no replacement - 0x260E, // 0x28 BLACK TELEPHONE - 0x2706, // 0x29 TELEPHONE LOCATION SIGN (close, but not exact) - 0x2709, // 0x2A ENVELOPE - 0x2709, // 0x2B ENVELOPE (close, but not exact) - 0xFFFD, // 0x2C no replacement - 0xFFFD, // 0x2D no replacement - 0xFFFD, // 0x2E no replacement - 0xFFFD, // 0x2F no replacement - 0xFFFD, // 0x30 no replacement - 0xFFFD, // 0x31 no replacement - 0xFFFD, // 0x32 no replacement - 0xFFFD, // 0x33 no replacement - 0xFFFD, // 0x34 no replacement - 0xFFFD, // 0x35 no replacement - 0x231B, // 0x36 HOURGLASS - 0x2328, // 0x37 KEYBOARD - 0xFFFD, // 0x38 no replacement - 0xFFFD, // 0x39 no replacement - 0xFFFD, // 0x3A no replacement - 0xFFFD, // 0x3B no replacement - 0xFFFD, // 0x3C no replacement - 0xFFFD, // 0x3D no replacement - 0x2707, // 0x3E TAPE DRIVE - 0x270D, // 0x3F WRITING HAND - 0x270D, // 0x40 WRITING HAND (close, but not exact) - 0x270C, // 0x41 VICTORY HAND - 0xFFFD, // 0x42 3 FINGER UP HAND (no replacement) - 0xFFFD, // 0x43 THUMBS UP HAND (no replacement) - 0xFFFD, // 0x44 THUMBS DOWN HAND (no replacement) - 0x261C, // 0x45 WHITE LEFT POINTING INDEX - 0x261E, // 0x46 WHITE RIGHT POINTING INDEX - 0x261D, // 0x47 WHITE UP POINTING INDEX - 0x261F, // 0x48 WHITE DOWN POINTING INDEX - 0xFFFD, // 0x49 OPEN HAND (no replacement) - 0x263A, // 0x4A WHITE SMILING FACE - 0x263A, // 0x4B WHITE SMILING FACE (close, but not exact) - 0x2639, // 0x4C WHITE FROWNING FACE - 0xFFFD, // 0x4D BOMB (no replacement. 1F4A3) - 0x2620, // 0x4E SKULL AND CROSSBONES - 0x2690, // 0x4F WHITE FLAG (not exact) - 0x2691, // 0x50 WHITE PENANT (use BLACK FLAG) - 0x2708, // 0x51 AIRPLANE - 0x263C, // 0x52 WHITE SUN WITH RAYS (close, but not exact) - 0x2602, // 0x53 RAINDROP (use UMBRELLA) - 0x2744, // 0x54 SNOWFLAKE - 0x271D, // 0x55 WHITE LATIN CROSS (use BLACK CROSS) - 0x271E, // 0x56 SHADOWED WHITE LATIN CROSS - 0x271F, // 0x57 CELTIC CROSS (use OUTLINED LATIN CROSS) - 0x2720, // 0x58 MALTESE CROSS - 0x2721, // 0x59 STAR OF DAVID - 0x262A, // 0x5A STAR AND CRESCENT - 0x262F, // 0x5B YIN YANG - 0x0950, // 0x5C DEVANGARI OM CORRECT|CLOSE: Perhaps PROPOSE SACRED OM ? - 0x2638, // 0x5D WHEEL OF DHARMA - 0x2648, // 0x5E ARIES - 0x2649, // 0x5F TAURUS - 0x264A, // 0x60 GEMINI - 0x264B, // 0x61 CANCER - 0x264C, // 0x62 LEO - 0x264D, // 0x63 VIRGO - 0x264E, // 0x64 LIBRA - 0x264F, // 0x65 SCORPIUS - 0x2650, // 0x66 SAGITTARIUS - 0x2651, // 0x67 CAPRICORN - 0x2652, // 0x68 AQUARIUS - 0x2653, // 0x69 PISCES - 0xFFFD, // 0x6A LOWER CASE AMPERSAND)?) (no replacement) - 0xFF06, // 0x6B AMPERSAND (use FULL WIDTH AMPERSAND, close, but not exact. Do NOT use 0026, or it maps normal Ampersands to Wingdings Ampersand) - 0x25CF, // 0x6C BLACK CIRCLE - 0x274D, // 0x6D SHADOWED WHITE CIRCLE (close, but not exact) - 0x25A0, // 0x6E BLACK SQUARE - 0x25A3, // 0x6F WHITE SQUARE IN BLACK RECTANGLE (use BLACK SQUSRE in WHITE SQUARE) - 0x25A1, // 0x70 WHITE SQUARE (close, but not exact) - 0x2751, // 0x71 LOWER RIGHT SHADOWED WHITE SQUARE - 0x2752, // 0x72 UPPER RIGHT SHADOWED WHITE SQUARE - 0x25CA, // 0x73 LOZENGE (close, but not exact) - 0x25CA, // 0x74 LOZENGE (close, but not exact) - 0x25C6, // 0x75 BLACK DIAMOND - 0x2756, // 0x76 BLACK DIAMOND MINUS WHITE X - 0x25C6, // 0x77 BLACK DIAMOND (close, but not exact) - 0x2327, // 0x78 X IN A RECTANGLE BOX - 0x2353, // 0x79 APL FUNCTIONAL SYMBOL QUAD UP CARET(close, but not exact) - 0x2318, // 0x7A PLACE OF INTEREST SIGN - 0x2740, // 0x7B WHITE FLORETTE (close, but not exact) - 0x273F, // 0x7C BLACK FLORETTE (close, but not exact) - 0x275D, // 0x7D HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT - 0x275E, // 0x7E HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT - 0xFFFD, // 0x7F unused - 0x24EA, // 0x80 CIRCLED DIGIT ZERO - 0x2460, // 0x81 CIRCLED DIGIT ONE - 0x2461, // 0x82 CIRCLED DIGIT TWO - 0x2462, // 0x83 CIRCLED DIGIT THREE - 0x2463, // 0x84 CIRCLED DIGIT FOUR - 0x2464, // 0x85 CIRCLED DIGIT FIVE - 0x2465, // 0x86 CIRCLED DIGIT SIX - 0x2466, // 0x87 CIRCLED DIGIT SEVEN - 0x2467, // 0x88 CIRCLED DIGIT EIGHT - 0x2468, // 0x89 CIRCLED DIGIT NINE - 0x2469, // 0x8A CIRCLED NUMBER TEN - 0xFFFD, // 0x8B no replacement - 0x2776, // 0x8C DINGBAT NEGATIVE CIRCLED DIGIT ONE - 0x2777, // 0x8D DINGBAT NEGATIVE CIRCLED DIGIT TWO - 0x2778, // 0x8E DINGBAT NEGATIVE CIRCLED DIGIT THREE - 0x2779, // 0x8F DINGBAT NEGATIVE CIRCLED DIGIT FOUR - 0x277A, // 0x90 DINGBAT NEGATIVE CIRCLED DIGIT FIVE - 0x277B, // 0x91 DINGBAT NEGATIVE CIRCLED DIGIT SIX - 0x277C, // 0x92 DINGBAT NEGATIVE CIRCLED DIGIT SEVEN - 0x277D, // 0x93 DINGBAT NEGATIVE CIRCLED DIGIT EIGHT - 0x277E, // 0x94 DINGBAT NEGATIVE CIRCLED DIGIT NINE - 0x277F, // 0x95 DINGBAT NEGATIVE CIRCLED NUMBER TEN - 0xFFFD, // 0x96 ROTATED FLORAL HEART BULLET (no good replacement) - 0xFFFD, // 0x97 REVERSED ROTATED FLORAL HEART BULLET (no good replacement) - 0xFFFD, // 0x98 REVERSED ROTATED FLORAL HEART BULLET (no good replacement) - 0xFFFD, // 0x99 ROTATED FLORAL HEART BULLET (no good replacement) - 0xFFFD, // 0x9A ROTATED FLORAL HEART BULLET (no good replacement) - 0xFFFD, // 0x9B REVERSED ROTATED FLORAL HEART BULLET (no good replacement) - 0xFFFD, // 0x9C REVERSED ROTATED FLORAL HEART BULLET (no good replacement) - 0xFFFD, // 0x9D ROTATED FLORAL HEART BULLET (no good replacement) - 0x2219, // 0x9E BULLET (use BULLET operator, so normal font BULLET will not convert to Symbol BULLET) - 0x25CF, // 0x9F BLACK CIRCLE (close, but not exact) - 0x25AA, // 0xA0 BLACK VERY SMALL SQUARE - 0x26AA, // 0xA1 WHITE CIRCLE (use MEDIUM WHITE CIRCLE) - 0x25CB, // 0xA2 HEAVY WHITE CIRCLE (use WHITE CIRCLE) - 0x25CD, // 0xA3 HEAVIEST CIRCLE (use CIRCLE WITH VERTICAL FILL) - 0x25C9, // 0xA4 CIRCLE WITH A CENTRAL DOT (close, dot much bigger) - 0x25CE, // 0xA5 BULLSEYE - 0x274D, // 0xA6 SHADOWED WHITE CIRCLE (close, but not exact) - 0xFFED, // 0xA7 BLACK SMALL SQUARE - 0x2610, // 0xA8 WHITE SQUARE (close, but not exact, different fro 25A1) - 0xFFFD, // 0xA9 no replacement - 0x2726, // 0xAA BLACK FOUR POINTED STAR MAYBE - 0x2605, // 0xAB BLACK STAR - 0x2736, // 0xAC SIX POINTED BLACK STAR - 0x2737, // 0xAD EIGHT POINTED RECTILINEAR BLACK STAR - 0x2738, // 0xAE TWELVE POINTED BLACK STAR - 0x2735, // 0xAF EIGHT POINTED PINWHEEL STAR - 0xFFFD, // 0xB0 no replacement - 0xFFFD, // 0xB1 no replacement - 0x2727, // 0xB2 WHITE FOUR POINTED STAR - 0x2726, // 0xB3 ROTATED WHITE FOUR POINTED STAR (use BLACK FOUR POINTED STAR) - 0xFFFD, // 0xB4 REPLACEMENT CHARACTER (close, but not exact) - 0x272A, // 0xB5 CIRCLED WHITE STAR - 0x2730, // 0xB6 SHADOWED WHITE STAR - 0xFFFD, // 0xB7 ANALOG CLOCK 1 (no replacement) - 0xFFFD, // 0xB8 ANALOG CLOCK 2 (no replacement) - 0xFFFD, // 0xB9 ANALOG CLOCK 3 (no replacement) - 0xFFFD, // 0xBA ANALOG CLOCK 4 (no replacement) - 0xFFFD, // 0xBB ANALOG CLOCK 5 (no replacement) - 0xFFFD, // 0xBC ANALOG CLOCK 6 (no replacement) - 0xFFFD, // 0xBD ANALOG CLOCK 7 (no replacement) - 0xFFFD, // 0xBE ANALOG CLOCK 8 (no replacement) - 0xFFFD, // 0xBF ANALOG CLOCK 9 (no replacement) - 0xFFFD, // 0xC0 ANALOG CLOCK 10 (no replacement) - 0xFFFD, // 0xC1 ANALOG CLOCK 11 (no replacement) - 0xFFFD, // 0xC2 ANALOG CLOCK 12 (no replacement) - 0x21B2, // 0xC3 TURN ARROW DOWN AND LEFT (Meaning close, shape differs) - 0x21B3, // 0xC4 TURN ARROW DOWN AND RIGHT (Meaning close, shape differs) - 0x21B0, // 0xC5 TURN ARROW UP AND LEFT (Meaning close, shape differs) - 0x21B1, // 0xC6 TURN ARROW UP AND RIGHT (Meaning close, shape differs) - 0x2B11, // 0xC7 TURN ARROW LEFT AND UP (Meaning close, shape differs) - 0x2B0F, // 0xC8 TURN ARROW RIGHT AND UP (Meaning close, shape differs) - 0x2B10, // 0xC9 TURN ARROW LEFT AND DOWN (Meaning close, shape differs) - 0x2B0E, // 0xCA TURN ARROW RIGHT AND DOWN (Meaning close, shape differs) - 0xFFFD, // 0xCB no replacement - 0xFFFD, // 0xCC no replacement - 0xFFFD, // 0xCD no replacement - 0xFFFD, // 0xCE no replacement - 0xFFFD, // 0xCF no replacement - 0xFFFD, // 0xD0 no replacement - 0xFFFD, // 0xD1 no replacement - 0xFFFD, // 0xD2 no replacement - 0xFFFD, // 0xD3 no replacement - 0xFFFD, // 0xD4 no replacement - 0x232B, // 0xD5 ERASE TO THE LEFT - 0x2326, // 0xD6 ERASE TO THE RIGHT - 0x25C0, // 0xD7 THREE-D LIGHTED LEFT ARROWHEAD (Use BLACK LEFT TRIANGLE) - 0x25B6, // 0xD8 THREE-D LIGHTED RIGHT ARROWHEAD (Use BLACK RIGHT TRIANGLE, 27A2 is exact but has no other directions) - 0x25B2, // 0xD9 THREE-D LIGHTED UP ARROWHEAD (Use BLACK UP TRIANGLE) - 0x25BC, // 0xDA THREE-D LIGHTED DOWN ARROWHEAD (Use BLACK DOWN TRIANGLE) - 0xFFFD, // 0xDB no replacement - 0x27B2, // 0xDC CIRCLED HEAVY WHITE RIGHTWARDS ARROW - 0xFFFD, // 0xDD no replacement - 0xFFFD, // 0xDE no replacement - 0x2190, // 0xDF LEFT ARROW - 0x2192, // 0xE0 RIGHT ARROW - 0x2191, // 0xE1 UP ARROW - 0x2193, // 0xE2 DOWN ARROW - 0x2196, // 0xE3 UPPER LEFT ARROW - 0x2197, // 0xE4 UPPER RIGHT ARROW - 0x2199, // 0xE5 LOWER LEFT ARROW - 0x2198, // 0xE6 LOWER RIGHT ARROW - 0x2B05, // 0xE7 HEAVY LEFT BLACK ARROW (same as regular BLACK ARROW) - 0x2B08, // 0xE8 HEAVY RIGHT BLACK ARROW (same as regular BLACK ARROW) - 0x2B06, // 0xE9 HEAVY UP BLACK ARROW (no equiv BLACK ARROW) - 0x2B07, // 0xEA HEAVY DOWN BLACK ARROW (same as regular BLACK ARROW) - 0x2B09, // 0xEB HEAVY UPPER LEFT BLACK ARROW same as regular BLACK ARROW) - 0x2B08, // 0xEC HEAVY UPPER RIGHT BLACK ARROW same as regular BLACK ARROW) - 0x2B0B, // 0xED HEAVY LOWER LEFT BLACK ARROW (same as regular BLACK ARROW) - 0x2B0A, // 0xEE HEAVY LOWER RIGHT BLACK ARROW (same as regular BLACK ARROW) - 0x21E6, // 0xEF LEFTWARDS WHITE ARROW - 0x21E8, // 0xF0 RIGHTWARDS WHITE ARROW - 0x21E7, // 0xF1 UPWARDS WHITE ARROW - 0x21E9, // 0xF2 DOWNWARDS WHITE ARROW - 0x21D4, // 0xF3 LEFT RIGHT DOUBLE ARROW - 0x21D5, // 0xF4 UP DOWN DOUBLE ARROW - 0x21D6, // 0xF5 NORTH WEST DOUBLE ARROW (close, but not exact) - 0x21D7, // 0xF6 NORTH EAST DOUBLE ARROW (close, but not exact) - 0x21D9, // 0xF7 SOUTH WEST DOUBLE ARROW (close, but not exact) - 0x21D8, // 0xF8 SOUTH EAST DOUBLE ARROW (close, but not exact) - 0xFFFD, // 0xF9 no replacement - 0xFFFD, // 0xFA no replacement - 0x2717, // 0xFB BALLOT X - 0x2713, // 0xFC CHECK MARK - 0x2612, // 0xFD BALLOT BOX WITH X - 0x2611, // 0xFE BALLOT BOX WITH CHECK - 0xFFFD // 0xFF no replacement -}; - -/* characters from zapf dingbat font, conversion to a unicode font. Change both the - code and the font on conversion. These are untested as the development machine did - not have the font installed. */ -static unsigned int dingbats_convert[256]={ - 0xFFFD, // 0x00 no replacement - 0xFFFD, // 0x01 no replacement - 0xFFFD, // 0x02 no replacement - 0xFFFD, // 0x03 no replacement - 0xFFFD, // 0x04 no replacement - 0xFFFD, // 0x05 no replacement - 0xFFFD, // 0x06 no replacement - 0xFFFD, // 0x07 no replacement - 0xFFFD, // 0x08 no replacement - 0xFFFD, // 0x09 no replacement - 0xFFFD, // 0x0A no replacement - 0xFFFD, // 0x0B no replacement - 0xFFFD, // 0x0C no replacement - 0xFFFD, // 0x0D no replacement - 0xFFFD, // 0x0E no replacement - 0xFFFD, // 0x0F no replacement - 0xFFFD, // 0x10 no replacement - 0xFFFD, // 0x11 no replacement - 0xFFFD, // 0x12 no replacement - 0xFFFD, // 0x13 no replacement - 0xFFFD, // 0x14 no replacement - 0xFFFD, // 0x15 no replacement - 0xFFFD, // 0x16 no replacement - 0xFFFD, // 0x17 no replacement - 0xFFFD, // 0x18 no replacement - 0xFFFD, // 0x19 no replacement - 0xFFFD, // 0x1A no replacement - 0xFFFD, // 0x1B no replacement - 0xFFFD, // 0x1C no replacement - 0xFFFD, // 0x1D no replacement - 0xFFFD, // 0x1E no replacement - 0xFFFD, // 0x1F no replacement - 0x0020, // 0x20 SPACE - 0x2701, // 0x21 UPPER BLADE SCISSORS - 0x2702, // 0x22 BLACK SCISSORS - 0x2703, // 0x23 LOWER BLADE SCISSORS - 0x2704, // 0x24 WHITE SCISSORS - 0x260E, // 0x25 BLACK TELEPHONE - 0x2706, // 0x26 TELEPHONE LOCATION SIGN - 0x2707, // 0x27 TAPE DRIVE - 0x2708, // 0x28 AIRPLANE - 0x2709, // 0x29 ENVELOPE - 0x261B, // 0x2A BLACK RIGHT POINTING INDEX - 0x261E, // 0x2B WHITE RIGHT POINTING INDEX - 0x270C, // 0x2C VICTORY HAND - 0x270D, // 0x2D WRITING HAND - 0x270E, // 0x2E LOWER RIGHT PENCIL - 0x270F, // 0x2F PENCIL - 0x2710, // 0x30 UPPER RIGHT PENCIL - 0x2711, // 0x31 WHITE NIB - 0x2712, // 0x32 BLACK NIB - 0x2713, // 0x33 CHECK MARK - 0x2714, // 0x34 HEAVY CHECK MARK - 0x2715, // 0x35 MULTIPLICATION X - 0x2716, // 0x36 HEAVY MULTIPLICATION X - 0x2717, // 0x37 BALLOT X - 0x2718, // 0x38 HEAVY BALLOT X - 0x2719, // 0x39 OUTLINED GREEK CROSS - 0x271A, // 0x3A HEAVY GREEK CROSS - 0x271B, // 0x3B OPEN CENTRE CROSS - 0x271C, // 0x3C HEAVY OPEN CENTRE CROSS - 0x271D, // 0x3D LATIN CROSS - 0x271E, // 0x3E SHADOWED WHITE LATIN CROSS - 0x271F, // 0x3F OUTLINED LATIN CROSS - 0x2720, // 0x40 MALTESE CROSS - 0x2721, // 0x41 STAR OF DAVID - 0x2722, // 0x42 FOUR TEARDROP-SPOKED ASTERISK - 0x2723, // 0x43 FOUR BALLOON-SPOKED ASTERISK - 0x2724, // 0x44 HEAVY FOUR BALLOON-SPOKED ASTERISK - 0x2725, // 0x45 FOUR CLUB-SPOKED ASTERISK - 0x2726, // 0x46 BLACK FOUR POINTED STAR - 0x2727, // 0x47 WHITE FOUR POINTED STAR - 0x2605, // 0x48 BLACK STAR - 0x2729, // 0x49 STRESS OUTLINED WHITE STAR - 0x272A, // 0x4A CIRCLED WHITE STAR - 0x272B, // 0x4B OPEN CENTRE BLACK STAR - 0x272C, // 0x4C BLACK CENTRE WHITE STAR - 0x272D, // 0x4D OUTLINED BLACK STAR - 0x272E, // 0x4E HEAVY OUTLINED BLACK STAR - 0x272F, // 0x4F PINWHEEL STAR - 0x2730, // 0x50 SHADOWED WHITE STAR - 0x2731, // 0x51 HEAVY ASTERISK - 0x2732, // 0x52 OPEN CENTRE ASTERISK - 0x2733, // 0x53 EIGHT SPOKED ASTERISK - 0x2734, // 0x54 EIGHT POINTED BLACK STAR - 0x2735, // 0x55 EIGHT POINTED PINWHEEL STAR - 0x2736, // 0x56 SIX POINTED BLACK STAR - 0x2737, // 0x57 EIGHT POINTED RECTILINEAR BLACK STAR - 0x2738, // 0x58 HEAVY EIGHT POINTED RECTILINEAR BLACK STAR - 0x2739, // 0x59 TWELVE POINTED BLACK STAR - 0x273A, // 0x5A SIXTEEN POINTED ASTERISK - 0x273B, // 0x5B TEARDROP-SPOKED ASTERISK - 0x273C, // 0x5C OPEN CENTRE TEARDROP-SPOKED ASTERISK - 0x273D, // 0x5D HEAVY TEARDROP-SPOKED ASTERISK - 0x273E, // 0x5E SIX PETALLED BLACK AND WHITE FLORETTE - 0x273F, // 0x5F BLACK FLORETTE - 0x2740, // 0x60 WHITE FLORETTE - 0x2741, // 0x61 EIGHT PETALLED OUTLINED BLACK FLORETTE - 0x2742, // 0x62 CIRCLED OPEN CENTRE EIGHT POINTED STAR - 0x2743, // 0x63 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK - 0x2744, // 0x64 SNOWFLAKE - 0x2745, // 0x65 TIGHT TRIFOLIATE SNOWFLAKE - 0x2746, // 0x66 HEAVY CHEVRON SNOWFLAKE - 0x2747, // 0x67 SPARKLE - 0x2748, // 0x68 HEAVY SPARKLE - 0x2749, // 0x69 BALLOON-SPOKED ASTERISK - 0x274A, // 0x6A EIGHT TEARDROP-SPOKED PROPELLER ASTERISK - 0x274B, // 0x6B HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK - 0x25CF, // 0x6C BLACK CIRCLE - 0x274D, // 0x6D SHADOWED WHITE CIRCLE - 0x25A0, // 0x6E BLACK SQUARE - 0x274F, // 0x6F LOWER RIGHT DROP-SHADOWED WHITE SQUARE - 0x2750, // 0x70 UPPER RIGHT DROP-SHADOWED WHITE SQUARE - 0x2751, // 0x71 LOWER RIGHT SHADOWED WHITE SQUARE - 0x2752, // 0x72 UPPER RIGHT SHADOWED WHITE SQUARE - 0x25B2, // 0x73 BLACK UP-POINTING TRIANGLE - 0x25BC, // 0x74 BLACK DOWN-POINTING TRIANGLE - 0x25C6, // 0x75 BLACK DIAMOND - 0x2756, // 0x76 BLACK DIAMOND MINUS WHITE X - 0x25D7, // 0x77 RIGHT HALF BLACK CIRCLE - 0x2758, // 0x78 LIGHT VERTICAL BAR - 0x2759, // 0x79 MEDIUM VERTICAL BAR - 0x275A, // 0x7A HEAVY VERTICAL BAR - 0x275B, // 0x7B HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT - 0x275C, // 0x7C HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT - 0x275D, // 0x7D HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT - 0x275E, // 0x7E HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT - 0xFFFD, // 0x7F no replacement - 0xF8D7, // 0x80 MEDIUM LEFT PARENTHESIS ORNAMENT - 0xF8D8, // 0x81 MEDIUM RIGHT PARENTHESIS ORNAMENT - 0xF8D9, // 0x82 MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT - 0xF8DA, // 0x83 MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT - 0xF8DB, // 0x84 MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT - 0xF8DC, // 0x85 MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT - 0xF8DD, // 0x86 HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT - 0xF8DE, // 0x87 HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT - 0xF8DF, // 0x88 HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT - 0xF8E0, // 0x89 HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT - 0xF8E1, // 0x8A LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT - 0xF8E2, // 0x8B LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT - 0xF8E3, // 0x8C MEDIUM LEFT CURLY BRACKET ORNAMENT - 0xF8E4, // 0x8D MEDIUM RIGHT CURLY BRACKET ORNAMENT - 0xFFFD, // 0x8E no replacement - 0xFFFD, // 0x8F no replacement - 0xFFFD, // 0x90 no replacement - 0xFFFD, // 0x91 no replacement - 0xFFFD, // 0x92 no replacement - 0xFFFD, // 0x93 no replacement - 0xFFFD, // 0x94 no replacement - 0xFFFD, // 0x95 no replacement - 0xFFFD, // 0x96 no replacement - 0xFFFD, // 0x97 no replacement - 0xFFFD, // 0x98 no replacement - 0xFFFD, // 0x99 no replacement - 0xFFFD, // 0x9A no replacement - 0xFFFD, // 0x9B no replacement - 0xFFFD, // 0x9C no replacement - 0xFFFD, // 0x9D no replacement - 0xFFFD, // 0x9E no replacement - 0xFFFD, // 0x9F no replacement - 0xFFFD, // 0xA0 no replacement - 0x2761, // 0xA1 CURVED STEM PARAGRAPH SIGN ORNAMENT - 0x2762, // 0xA2 HEAVY EXCLAMATION MARK ORNAMENT - 0x2763, // 0xA3 HEAVY HEART EXCLAMATION MARK ORNAMENT - 0x2764, // 0xA4 HEAVY BLACK HEART - 0x2765, // 0xA5 ROTATED HEAVY BLACK HEART BULLET - 0x2766, // 0xA6 FLORAL HEART - 0x2767, // 0xA7 ROTATED FLORAL HEART BULLET - 0x2663, // 0xA8 BLACK CLUB SUIT - 0x2666, // 0xA9 BLACK DIAMOND SUIT - 0x2665, // 0xAA BLACK HEART SUIT - 0x2660, // 0xAB BLACK SPADE SUIT - 0x2460, // 0xAC CIRCLED DIGIT ONE - 0x2461, // 0xAD CIRCLED DIGIT TWO - 0x2462, // 0xAE CIRCLED DIGIT THREE - 0x2463, // 0xAF CIRCLED DIGIT FOUR - 0x2464, // 0xB0 CIRCLED DIGIT FIVE - 0x2465, // 0xB1 CIRCLED DIGIT SIX - 0x2466, // 0xB2 CIRCLED DIGIT SEVEN - 0x2467, // 0xB3 CIRCLED DIGIT EIGHT - 0x2468, // 0xB4 CIRCLED DIGIT NINE - 0x2469, // 0xB5 CIRCLED NUMBER TEN - 0x2776, // 0xB6 DINGBAT NEGATIVE CIRCLED DIGIT ONE - 0x2777, // 0xB7 DINGBAT NEGATIVE CIRCLED DIGIT TWO - 0x2778, // 0xB8 DINGBAT NEGATIVE CIRCLED DIGIT THREE - 0x2779, // 0xB9 DINGBAT NEGATIVE CIRCLED DIGIT FOUR - 0x277A, // 0xBA DINGBAT NEGATIVE CIRCLED DIGIT FIVE - 0x277B, // 0xBB DINGBAT NEGATIVE CIRCLED DIGIT SIX - 0x277C, // 0xBC DINGBAT NEGATIVE CIRCLED DIGIT SEVEN - 0x277D, // 0xBD DINGBAT NEGATIVE CIRCLED DIGIT EIGHT - 0x277E, // 0xBE DINGBAT NEGATIVE CIRCLED DIGIT NINE - 0x277F, // 0xBF DINGBAT NEGATIVE CIRCLED NUMBER TEN - 0x2780, // 0xC0 DINGBAT CIRCLED SANS-SERIF DIGIT ONE - 0x2781, // 0xC1 DINGBAT CIRCLED SANS-SERIF DIGIT TWO - 0x2782, // 0xC2 DINGBAT CIRCLED SANS-SERIF DIGIT THREE - 0x2783, // 0xC3 DINGBAT CIRCLED SANS-SERIF DIGIT FOUR - 0x2784, // 0xC4 DINGBAT CIRCLED SANS-SERIF DIGIT FIVE - 0x2785, // 0xC5 DINGBAT CIRCLED SANS-SERIF DIGIT SIX - 0x2786, // 0xC6 DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN - 0x2787, // 0xC7 DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT - 0x2788, // 0xC8 DINGBAT CIRCLED SANS-SERIF DIGIT NINE - 0x2789, // 0xC9 DINGBAT CIRCLED SANS-SERIF NUMBER TEN - 0x278A, // 0xCA DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE - 0x278B, // 0xCB DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO - 0x278C, // 0xCC DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE - 0x278D, // 0xCD DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR - 0x278E, // 0xCE DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE - 0x278F, // 0xCF DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX - 0x2790, // 0xD0 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN - 0x2791, // 0xD1 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT - 0x2792, // 0xD2 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE - 0x2793, // 0xD3 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN - 0x2794, // 0xD4 HEAVY WIDE-HEADED RIGHTWARDS ARROW - 0x2192, // 0xD5 RIGHTWARDS ARROW - 0x2194, // 0xD6 LEFT RIGHT ARROW - 0x2195, // 0xD7 UP DOWN ARROW - 0x2798, // 0xD8 HEAVY SOUTH EAST ARROW - 0x2799, // 0xD9 HEAVY RIGHTWARDS ARROW - 0x279A, // 0xDA HEAVY NORTH EAST ARROW - 0x279B, // 0xDB DRAFTING POINT RIGHTWARDS ARROW - 0x279C, // 0xDC HEAVY ROUND-TIPPED RIGHTWARDS ARROW - 0x279D, // 0xDD TRIANGLE-HEADED RIGHTWARDS ARROW - 0x279E, // 0xDE HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW - 0x279F, // 0xDF DASHED TRIANGLE-HEADED RIGHTWARDS ARROW - 0x27A0, // 0xE0 HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW - 0x27A1, // 0xE1 BLACK RIGHTWARDS ARROW - 0x27A2, // 0xE2 THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD - 0x27A3, // 0xE3 THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD - 0x27A4, // 0xE4 BLACK RIGHTWARDS ARROWHEAD - 0x27A5, // 0xE5 HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW - 0x27A6, // 0xE6 HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW - 0x27A7, // 0xE7 SQUAT BLACK RIGHTWARDS ARROW - 0x27A8, // 0xE8 HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW - 0x27A9, // 0xE9 RIGHT-SHADED WHITE RIGHTWARDS ARROW - 0x27AA, // 0xEA LEFT-SHADED WHITE RIGHTWARDS ARROW - 0x27AB, // 0xEB BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW - 0x27AC, // 0xEC FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW - 0x27AD, // 0xED HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - 0x27AE, // 0xEE HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - 0x27AF, // 0xEF NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - 0xFFFD, // 0xF0 no replacement - 0x27B1, // 0xF1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW - 0x27B2, // 0xF2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW - 0x27B3, // 0xF3 WHITE-FEATHERED RIGHTWARDS ARROW - 0x27B4, // 0xF4 BLACK-FEATHERED SOUTH EAST ARROW - 0x27B5, // 0xF5 BLACK-FEATHERED RIGHTWARDS ARROW - 0x27B6, // 0xF6 BLACK-FEATHERED NORTH EAST ARROW - 0x27B7, // 0xF7 HEAVY BLACK-FEATHERED SOUTH EAST ARROW - 0x27B8, // 0xF8 HEAVY BLACK-FEATHERED RIGHTWARDS ARROW - 0x27B9, // 0xF9 HEAVY BLACK-FEATHERED NORTH EAST ARROW - 0x27BA, // 0xFA TEARDROP-BARBED RIGHTWARDS ARROW - 0x27BB, // 0xFB HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW - 0x27BC, // 0xFC WEDGE-TAILED RIGHTWARDS ARROW - 0x27BD, // 0xFD HEAVY WEDGE-TAILED RIGHTWARDS ARROW - 0x27BE, // 0xFE OPEN-OUTLINED RIGHTWARDS ARROW - 0xFFFD // 0xFF no replacement -}; - -/* characters from symbol font, conversion to a unicode font. Change both the - code and the font on conversion. */ -static unsigned int symbol_convert[256]={ - 0xFFFD, // 0x00 no replacement - 0xFFFD, // 0x01 no replacement - 0xFFFD, // 0x02 no replacement - 0xFFFD, // 0x03 no replacement - 0xFFFD, // 0x04 no replacement - 0xFFFD, // 0x05 no replacement - 0xFFFD, // 0x06 no replacement - 0xFFFD, // 0x07 no replacement - 0xFFFD, // 0x08 no replacement - 0xFFFD, // 0x09 no replacement - 0xFFFD, // 0x0A no replacement - 0xFFFD, // 0x0B no replacement - 0xFFFD, // 0x0C no replacement - 0xFFFD, // 0x0D no replacement - 0xFFFD, // 0x0E no replacement - 0xFFFD, // 0x0F no replacement - 0xFFFD, // 0x10 no replacement - 0xFFFD, // 0x11 no replacement - 0xFFFD, // 0x12 no replacement - 0xFFFD, // 0x13 no replacement - 0xFFFD, // 0x14 no replacement - 0xFFFD, // 0x15 no replacement - 0xFFFD, // 0x16 no replacement - 0xFFFD, // 0x17 no replacement - 0xFFFD, // 0x18 no replacement - 0xFFFD, // 0x19 no replacement - 0xFFFD, // 0x1A no replacement - 0xFFFD, // 0x1B no replacement - 0xFFFD, // 0x1C no replacement - 0xFFFD, // 0x1D no replacement - 0xFFFD, // 0x1E no replacement - 0xFFFD, // 0x1F no replacement - 0x0020, // 0x20 SPACE - 0x0021, // 0x21 EXCLAMATION MARK - 0x2200, // 0x22 FOR ALL - 0x0023, // 0x23 NUMBER SIGN - 0x2203, // 0x24 THERE EXISTS - 0x0025, // 0x25 PERCENT SIGN - 0x0026, // 0x26 AMPERSAND - 0x220B, // 0x27 CONTAINS AS MEMBER - 0x0028, // 0x28 OPENING PARENTHESIS - 0x0029, // 0x29 CLOSING PARENTHESIS - 0x2217, // 0x2A ASTERISK OPERATOR - 0x002B, // 0x2B PLUS SIGN - 0x002C, // 0x2C COMMA - 0x2212, // 0x2D MINUS SIGN - 0x002E, // 0x2E PERIOD - 0x002F, // 0x2F SLASH - 0x0030, // 0x30 DIGIT ZERO - 0x0031, // 0x31 DIGIT ONE - 0x0032, // 0x32 DIGIT TWO - 0x0033, // 0x33 DIGIT THREE - 0x0034, // 0x34 DIGIT FOUR - 0x0035, // 0x35 DIGIT FIVE - 0x0036, // 0x36 DIGIT SIX - 0x0037, // 0x37 DIGIT SEVEN - 0x0038, // 0x38 DIGIT EIGHT - 0x0039, // 0x39 DIGIT NINE - 0x003A, // 0x3A COLON - 0x003B, // 0x3B SEMICOLON - 0x003C, // 0x3C LESS-THAN SIGN - 0x003D, // 0x3D EQUALS SIGN - 0x003E, // 0x3E GREATER-THAN SIGN - 0x003F, // 0x3F QUESTION MARK - 0x2245, // 0x40 APPROXIMATELY EQUAL TO - 0x0391, // 0x41 GREEK CAPITAL LETTER ALPHA - 0x0392, // 0x42 GREEK CAPITAL LETTER BETA - 0x03A7, // 0x43 GREEK CAPITAL LETTER CHI - 0x0394, // 0x44 GREEK CAPITAL LETTER DELTA - 0x0395, // 0x45 GREEK CAPITAL LETTER EPSILON - 0x03A6, // 0x46 GREEK CAPITAL LETTER PHI - 0x0393, // 0x47 GREEK CAPITAL LETTER GAMMA - 0x0397, // 0x48 GREEK CAPITAL LETTER ETA - 0x0399, // 0x49 GREEK CAPITAL LETTER IOTA - 0x03D1, // 0x4A GREEK SMALL LETTER SCRIPT THETA - 0x039A, // 0x4B GREEK CAPITAL LETTER KAPPA - 0x039B, // 0x4C GREEK CAPITAL LETTER LAMBDA - 0x039C, // 0x4D GREEK CAPITAL LETTER MU - 0x039D, // 0x4E GREEK CAPITAL LETTER NU - 0x039F, // 0x4F GREEK CAPITAL LETTER OMICRON - 0x03A0, // 0x50 GREEK CAPITAL LETTER PI - 0x0398, // 0x51 GREEK CAPITAL LETTER THETA - 0x03A1, // 0x52 GREEK CAPITAL LETTER RHO - 0x03A3, // 0x53 GREEK CAPITAL LETTER SIGMA - 0x03A4, // 0x54 GREEK CAPITAL LETTER TAU - 0x03A5, // 0x55 GREEK CAPITAL LETTER UPSILON - 0x03C2, // 0x56 GREEK SMALL LETTER FINAL SIGMA - 0x03A9, // 0x57 GREEK CAPITAL LETTER OMEGA - 0x039E, // 0x58 GREEK CAPITAL LETTER XI - 0x03A8, // 0x59 GREEK CAPITAL LETTER PSI - 0x0396, // 0x5A GREEK CAPITAL LETTER ZETA - 0x005B, // 0x5B OPENING SQUARE BRACKET - 0x2234, // 0x5C THEREFORE - 0x005D, // 0x5D CLOSING SQUARE BRACKET - 0x22A5, // 0x5E UP TACK - 0x005F, // 0x5F SPACING UNDERSCORE - 0x203E, // 0x60 SPACING OVERSCORE - 0x03B1, // 0x61 GREEK SMALL LETTER ALPHA - 0x03B2, // 0x62 GREEK SMALL LETTER BETA - 0x03C7, // 0x63 GREEK SMALL LETTER CHI - 0x03B4, // 0x64 GREEK SMALL LETTER DELTA - 0x03B5, // 0x65 GREEK SMALL LETTER EPSILON - 0x03C6, // 0x66 GREEK SMALL LETTER PHI - 0x03B3, // 0x67 GREEK SMALL LETTER GAMMA - 0x03B7, // 0x68 GREEK SMALL LETTER ETA - 0x03B9, // 0x69 GREEK SMALL LETTER IOTA - 0x03D5, // 0x6A GREEK SMALL LETTER SCRIPT PHI - 0x03BA, // 0x6B GREEK SMALL LETTER KAPPA - 0x03BB, // 0x6C GREEK SMALL LETTER LAMBDA - 0x03BC, // 0x6D GREEK SMALL LETTER MU - 0x03BD, // 0x6E GREEK SMALL LETTER NU - 0x03BF, // 0x6F GREEK SMALL LETTER OMICRON - 0x03C0, // 0x70 GREEK SMALL LETTER PI - 0x03B8, // 0x71 GREEK SMALL LETTER THETA - 0x03C1, // 0x72 GREEK SMALL LETTER RHO - 0x03C3, // 0x73 GREEK SMALL LETTER SIGMA - 0x03C4, // 0x74 GREEK SMALL LETTER TAU - 0x03C5, // 0x75 GREEK SMALL LETTER UPSILON - 0x03D6, // 0x76 GREEK SMALL LETTER OMEGA PI - 0x03C9, // 0x77 GREEK SMALL LETTER OMEGA - 0x03BE, // 0x78 GREEK SMALL LETTER XI - 0x03C8, // 0x79 GREEK SMALL LETTER PSI - 0x03B6, // 0x7A GREEK SMALL LETTER ZETA - 0x007B, // 0x7B OPENING CURLY BRACKET - 0x007C, // 0x7C VERTICAL BAR - 0x007D, // 0x7D CLOSING CURLY BRACKET - 0x223C, // 0x7E TILDE OPERATOR - 0xFFFD, // 0x7F no replacement - 0xFFFD, // 0x80 no replacement - 0xFFFD, // 0x81 no replacement - 0xFFFD, // 0x82 no replacement - 0xFFFD, // 0x83 no replacement - 0xFFFD, // 0x84 no replacement - 0xFFFD, // 0x85 no replacement - 0xFFFD, // 0x86 no replacement - 0xFFFD, // 0x87 no replacement - 0xFFFD, // 0x88 no replacement - 0xFFFD, // 0x89 no replacement - 0xFFFD, // 0x8A no replacement - 0xFFFD, // 0x8B no replacement - 0xFFFD, // 0x8C no replacement - 0xFFFD, // 0x8D no replacement - 0xFFFD, // 0x8E no replacement - 0xFFFD, // 0x8F no replacement - 0xFFFD, // 0x90 no replacement - 0xFFFD, // 0x91 no replacement - 0xFFFD, // 0x92 no replacement - 0xFFFD, // 0x93 no replacement - 0xFFFD, // 0x94 no replacement - 0xFFFD, // 0x95 no replacement - 0xFFFD, // 0x96 no replacement - 0xFFFD, // 0x97 no replacement - 0xFFFD, // 0x98 no replacement - 0xFFFD, // 0x99 no replacement - 0xFFFD, // 0x9A no replacement - 0xFFFD, // 0x9B no replacement - 0xFFFD, // 0x9C no replacement - 0xFFFD, // 0x9D no replacement - 0xFFFD, // 0x9E no replacement - 0xFFFD, // 0x9F no replacement - 0x20AC, // 0xA0 EURO SIGN - 0x03D2, // 0xA1 GREEK CAPITAL LETTER UPSILON HOOK - 0x2032, // 0xA2 PRIME - 0x2264, // 0xA3 LESS THAN OR EQUAL TO - 0x2044, // 0xA4 FRACTION SLASH - 0x221E, // 0xA5 INFINITY - 0x0192, // 0xA6 LATIN SMALL LETTER SCRIPT F - 0x2663, // 0xA7 BLACK CLUB SUIT - 0x2666, // 0xA8 BLACK DIAMOND SUIT - 0x2665, // 0xA9 BLACK HEART SUIT - 0x2660, // 0xAA BLACK SPADE SUIT - 0x2194, // 0xAB LEFT RIGHT ARROW - 0x2190, // 0xAC LEFT ARROW - 0x2191, // 0xAD UP ARROW - 0x2192, // 0xAE RIGHT ARROW - 0x2193, // 0xAF DOWN ARROW - 0x00B0, // 0xB0 DEGREE SIGN - 0x00B1, // 0xB1 PLUS-OR-MINUS SIGN - 0x2033, // 0xB2 DOUBLE PRIME - 0x2265, // 0xB3 GREATER THAN OR EQUAL TO - 0x00D7, // 0xB4 MULTIPLICATION SIGN - 0x221D, // 0xB5 PROPORTIONAL TO - 0x2202, // 0xB6 PARTIAL DIFFERENTIAL - 0x2219, // 0xB7 BULLET (use BULLET operator, so normal font BULLET will not convert to Symbol BULLET) - 0x00F7, // 0xB8 DIVISION SIGN - 0x2260, // 0xB9 NOT EQUAL TO - 0x2261, // 0xBA IDENTICAL TO - 0x2248, // 0xBB ALMOST EQUAL TO - 0x2026, // 0xBC HORIZONTAL ELLIPSIS - 0xF8E6, // 0xBD VERTICAL ARROW EXTENDER - 0xF8E7, // 0xBE HORIZONTAL ARROW EXTENDER - 0x21B5, // 0xBF DOWN ARROW WITH CORNER LEFT - 0x2135, // 0xC0 FIRST TRANSFINITE CARDINAL - 0x2111, // 0xC1 BLACK-LETTER I - 0x211C, // 0xC2 BLACK-LETTER R - 0x2118, // 0xC3 SCRIPT P - 0x2297, // 0xC4 CIRCLED TIMES - 0x2295, // 0xC5 CIRCLED PLUS - 0x2205, // 0xC6 EMPTY SET - 0x2229, // 0xC7 INTERSECTION - 0x222A, // 0xC8 UNION - 0x2283, // 0xC9 SUPERSET OF - 0x2287, // 0xCA SUPERSET OF OR EQUAL TO - 0x2284, // 0xCB NOT A SUBSET OF - 0x2282, // 0xCC SUBSET OF - 0x2286, // 0xCD SUBSET OF OR EQUAL TO - 0x2208, // 0xCE ELEMENT OF - 0x2209, // 0xCF NOT AN ELEMENT OF - 0x2220, // 0xD0 ANGLE - 0x2207, // 0xD1 NABLA - 0x00AE, // 0xD2 REGISTERED TRADE MARK SIGN - 0x00A9, // 0xD3 COPYRIGHT SIGN - 0x2122, // 0xD4 TRADEMARK - 0x220F, // 0xD5 N-ARY PRODUCT - 0x221A, // 0xD6 SQUARE ROOT - 0x22C5, // 0xD7 DOT OPERATOR - 0x00AC, // 0xD8 NOT SIGN - 0x2227, // 0xD9 LOGICAL AND - 0x2228, // 0xDA LOGICAL OR - 0x21D4, // 0xDB LEFT RIGHT DOUBLE ARROW - 0x21D0, // 0xDC LEFT DOUBLE ARROW - 0x21D1, // 0xDD UP DOUBLE ARROW - 0x21D2, // 0xDE RIGHT DOUBLE ARROW - 0x21D3, // 0xDF DOWN DOUBLE ARROW - 0x25CA, // 0xE0 LOZENGE - 0x2329, // 0xE1 BRA - 0x00AE, // 0xE2 REGISTERED TRADE MARK SIGN - 0x00A9, // 0xE3 COPYRIGHT SIGN - 0x2122, // 0xE4 TRADEMARK - 0x2211, // 0xE5 N-ARY SUMMATION - 0x239B, // 0xE6 LEFT PAREN TOP - 0x239C, // 0xE7 LEFT PAREN EXTENDER - 0x239D, // 0xE8 LEFT PAREN BOTTOM - 0x23A1, // 0xE9 LEFT SQUARE BRACKET TOP - 0x23A2, // 0xEA LEFT SQUARE BRACKET EXTENDER - 0x23A3, // 0xEB LEFT SQUARE BRACKET BOTTOM - 0x23A7, // 0xEC LEFT CURLY BRACKET TOP - 0x23A8, // 0xED LEFT CURLY BRACKET MID - 0x23A9, // 0xEE LEFT CURLY BRACKET BOTTOM - 0x23AA, // 0xEF CURLY BRACKET EXTENDER - 0xFFFD, // 0xF0 no replacement - 0x232A, // 0xF1 KET - 0x222B, // 0xF2 INTEGRAL - 0x2320, // 0xF3 TOP HALF INTEGRAL - 0x23AE, // 0xF4 INTEGRAL EXTENDER - 0x2321, // 0xF5 BOTTOM HALF INTEGRAL - 0x239E, // 0xF6 RIGHT PAREN TOP - 0x239F, // 0xF7 RIGHT PAREN EXTENDER - 0x23A0, // 0xF8 RIGHT PAREN BOTTOM - 0x23A4, // 0xF9 RIGHT SQUARE BRACKET TOP - 0x23A5, // 0xFA RIGHT SQUARE BRACKET EXTENDER - 0x23A6, // 0xFB RIGHT SQUARE BRACKET BOTTOM - 0x23AB, // 0xFC RIGHT CURLY BRACKET TOP - 0x23AC, // 0xFD RIGHT CURLY BRACKET MID - 0x23AD, // 0xFE RIGHT CURLY BRACKET BOTTOM - 0xFFFD // 0xFF no replacement -}; - -/* Use this for debugging */ -#include <stdio.h> -void UC_log_message(char *text){ -FILE *fp; - fp=fopen("c:/temp/debug.txt","a"); - fprintf(fp,"%s",text); - fclose(fp); -} - - -//if any character is in the MS private use area (F020 through F0FF) subtract F000, for use with Symbol and Wingdings* from older software -void msdepua (uint32_t *text) -{ - while(*text){ - if(*text >= 0xF020 && *text <= 0xF0FF){ *text -= 0xF000; } - text++; - } -} - -//move characters up to MS private use area (F020 through F0FF) -void msrepua (uint16_t *text) -{ - while(*text){ - if(*text >= 0x20 && *text <= 0xFF){ *text += 0xF000; } - text++; - } -} - -// Returns the font classification code -int isNon(char *font){ -int retval; - if(!strcmp(font,"Symbol")){ - retval=CVTSYM; - } - else if(!strcmp(font,"Wingdings")){ - retval=CVTWDG; - } - else if(!strcmp(font,"ZapfDingbats")){ - retval=CVTZDG; - } - else { - retval=CVTNON; - } - return retval; -} - -// Returns the font name, given the classification code, or NULL -// The returned value must NOT be free'd -char *FontName(int code){ -char *cptr; -static char name_symbol[]="Symbol"; -static char name_wingdings[]="Wingdings"; -static char name_zapfdingbats[]="ZapfDingbats"; - switch(code){ - case CVTSYM: cptr=&name_symbol[0]; break; - case CVTWDG: cptr=&name_wingdings[0]; break; - case CVTZDG: cptr=&name_zapfdingbats[0]; break; - default: cptr=NULL; break; - } - return(cptr); -} - - -// Goes through the uint32_t string converting as needed. -int NonToUnicode(uint32_t *text, char *font){ -int retval; -unsigned int *convert_from=NULL; - retval=isNon(font); - switch(retval){ - case CVTSYM: convert_from=symbol_convert; break; - case CVTWDG: convert_from=wingdings_convert; break; - case CVTZDG: convert_from=dingbats_convert; break; - default: return(retval); //no conversion - } - while(*text){ - if(*text > 0xFF){ *text = 0xFFFD; } // out of range - else { *text = convert_from[*text]; } - text++; - } - return(retval); -} - -//returns 1 if tables are defines for UnicodeToNon translation -int CanUTN(void){ - if(from_unicode)return(1); - return(0); -} - -//translates from Unicode to some non unicode font until the target font changes. -//A target font change is like symbol -> wingdings, or symbol -> no translation -//returns the number of characters changed in ecount -//returns the enum value for the destination value in edest -void UnicodeToNon(uint16_t *text, int *ecount, int *edest){ -int count=0; -unsigned char target=0; - if(to_font){ - if(text && (target=to_font[*text])){ //There is actually something here to convert - while(*text && target==to_font[*text]){ - *text=from_unicode[*text] + (hold_pua ? 0xF000 : 0 ); - text++; - count++; - } - } - *ecount=count; - *edest=target; - } - else { // no translation tables, so change nothing and return - *ecount=0; - *edest=CVTNON; - } -} - -//Indicates the type of translation for a single character, Unicode to some non unicode -//returns the enum value for the destination value. -//If no translation tables are defined returns CVTNON (no conversions) -int SingleUnicodeToNon(uint16_t text){ - if(to_font){return(to_font[text]); } - else { return(CVTNON); } -} - -void table_filler(unsigned int *src, int code){ -unsigned int i; - for(i=0;i<0x100;i++){ - if(src[i] == 0xFFFD)continue; /* no mapping Unicode -> nonUnicode */ - if(src[i] == i)continue; /* no remapping of spaces back to spaces, for instance */ - from_unicode[src[i]] = i; - to_font[src[i]] = code; - } -} - -//possibly (re)generate the tables -void TableGen(bool new_symb,bool new_wing, bool new_zdng, bool new_pua){ -int i; - if(hold_symb != new_symb || hold_wing != new_wing - || hold_zdng != new_zdng || hold_pua != new_pua ){ // must (re)generate tables - if(!from_unicode){ // create arrays - from_unicode = (unsigned char *) calloc(0x10000,sizeof(char)); - to_font = (unsigned char *) calloc(0x10000,sizeof(char)); - // should check here for malloc error - } - hold_symb = new_symb; - hold_wing = new_wing; - hold_zdng = new_zdng; - hold_pua = new_pua; - for(i=0;i<0x10000;i++){ from_unicode[i] = to_font[i] = 0; } - if(hold_zdng)table_filler(&dingbats_convert[0],CVTZDG); - if(hold_wing)table_filler(&wingdings_convert[0],CVTWDG); - if(hold_symb)table_filler(&symbol_convert[0],CVTSYM); - } -} - -#ifdef __cplusplus -} -#endif diff --git a/src/libunicode-convert/unicode-convert.h b/src/libunicode-convert/unicode-convert.h deleted file mode 100644 index ac1795092..000000000 --- a/src/libunicode-convert/unicode-convert.h +++ /dev/null @@ -1,51 +0,0 @@ -/** @file - * @brief Enhanced Metafile Input/Output - */ -/* Authors: - * David Mathog <mathog@caltech.edu> - * - * Copyright (C) 2012 Authors - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef SEEN_UNICODE_CONVERT_H -#define SEEN_UNICODE_CONVERT_H -#include <stdlib.h> -#include <stdbool.h> -#include <stdint.h> - - enum cvt_to_font {CVTNON, CVTSYM, CVTZDG, CVTWDG}; - - void msdepua(uint32_t *text); //translate down from Microsoft Private Use Area - void msrepua(uint16_t *text); //translate up to Microsoft Private Use Area - int isNon(char *font); //returns one of the cvt_to_font enum values - char *FontName(int code); //returns the font name (or NULL) given the enum code - int NonToUnicode(uint32_t *text, char *font); //nonunicode to Unicode translation - int CanUTN(void); // 1 if tables exist for UnicodeToNon translation - int SingleUnicodeToNon(uint16_t text); //retuns the enum value for this translation - void UnicodeToNon(uint16_t *text, int *ecount, int *edest); //translate Unicode to NonUnicode - void TableGen(bool symb, bool wing, bool zdng, bool pua); - -#ifdef __cplusplus -} -#endif - -#endif /* SEEN_UNICODE_CONVERT_H */ - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : - - |
