From 9900b88419abc1bf8f29c856f620fbbfda358d1c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 23 Jan 2021 15:35:10 +0000 Subject: Convert symbols in supported fonts to corresponding Unicode characters --- .../zwobble/mammoth/internal/docx/Dingbats.java | 1081 ++++++++++++++++++++ .../internal/docx/StatefulBodyXmlReader.java | 34 +- 2 files changed, 1113 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/zwobble/mammoth/internal/docx/Dingbats.java (limited to 'src/main/java/org') diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/Dingbats.java b/src/main/java/org/zwobble/mammoth/internal/docx/Dingbats.java new file mode 100644 index 0000000..abb14ee --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/internal/docx/Dingbats.java @@ -0,0 +1,1081 @@ +package org.zwobble.mammoth.internal.docx; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import static org.zwobble.mammoth.internal.util.Maps.lookup; + +public class Dingbats { + public static Optional findDingbat(String font, int codePoint) { + return lookup(dingbats, font + "_" + codePoint); + } + + // Generated by https://github.com/mwilliamson/dingbat-to-unicode + + private static final Map dingbats = new HashMap<>(); + + static { + dingbats.put("Symbol_32", 32); + dingbats.put("Symbol_33", 33); + dingbats.put("Symbol_34", 8704); + dingbats.put("Symbol_35", 35); + dingbats.put("Symbol_36", 8707); + dingbats.put("Symbol_37", 37); + dingbats.put("Symbol_38", 38); + dingbats.put("Symbol_39", 8717); + dingbats.put("Symbol_40", 40); + dingbats.put("Symbol_41", 41); + dingbats.put("Symbol_42", 42); + dingbats.put("Symbol_43", 43); + dingbats.put("Symbol_44", 44); + dingbats.put("Symbol_45", 8722); + dingbats.put("Symbol_46", 46); + dingbats.put("Symbol_47", 47); + dingbats.put("Symbol_48", 48); + dingbats.put("Symbol_49", 49); + dingbats.put("Symbol_50", 50); + dingbats.put("Symbol_51", 51); + dingbats.put("Symbol_52", 52); + dingbats.put("Symbol_53", 53); + dingbats.put("Symbol_54", 54); + dingbats.put("Symbol_55", 55); + dingbats.put("Symbol_56", 56); + dingbats.put("Symbol_57", 57); + dingbats.put("Symbol_58", 58); + dingbats.put("Symbol_59", 59); + dingbats.put("Symbol_60", 60); + dingbats.put("Symbol_61", 61); + dingbats.put("Symbol_62", 62); + dingbats.put("Symbol_63", 63); + dingbats.put("Symbol_64", 8773); + dingbats.put("Symbol_65", 913); + dingbats.put("Symbol_66", 914); + dingbats.put("Symbol_67", 935); + dingbats.put("Symbol_68", 916); + dingbats.put("Symbol_69", 917); + dingbats.put("Symbol_70", 934); + dingbats.put("Symbol_71", 915); + dingbats.put("Symbol_72", 919); + dingbats.put("Symbol_73", 921); + dingbats.put("Symbol_74", 977); + dingbats.put("Symbol_75", 922); + dingbats.put("Symbol_76", 923); + dingbats.put("Symbol_77", 924); + dingbats.put("Symbol_78", 925); + dingbats.put("Symbol_79", 927); + dingbats.put("Symbol_80", 928); + dingbats.put("Symbol_81", 920); + dingbats.put("Symbol_82", 929); + dingbats.put("Symbol_83", 931); + dingbats.put("Symbol_84", 932); + dingbats.put("Symbol_85", 933); + dingbats.put("Symbol_86", 962); + dingbats.put("Symbol_87", 937); + dingbats.put("Symbol_88", 926); + dingbats.put("Symbol_89", 936); + dingbats.put("Symbol_90", 918); + dingbats.put("Symbol_91", 91); + dingbats.put("Symbol_92", 8756); + dingbats.put("Symbol_93", 93); + dingbats.put("Symbol_94", 8869); + dingbats.put("Symbol_95", 95); + dingbats.put("Symbol_96", 8254); + dingbats.put("Symbol_97", 945); + dingbats.put("Symbol_98", 946); + dingbats.put("Symbol_99", 967); + dingbats.put("Symbol_100", 948); + dingbats.put("Symbol_101", 949); + dingbats.put("Symbol_102", 966); + dingbats.put("Symbol_103", 947); + dingbats.put("Symbol_104", 951); + dingbats.put("Symbol_105", 953); + dingbats.put("Symbol_106", 981); + dingbats.put("Symbol_107", 954); + dingbats.put("Symbol_108", 955); + dingbats.put("Symbol_109", 956); + dingbats.put("Symbol_110", 957); + dingbats.put("Symbol_111", 959); + dingbats.put("Symbol_112", 960); + dingbats.put("Symbol_113", 952); + dingbats.put("Symbol_114", 961); + dingbats.put("Symbol_115", 963); + dingbats.put("Symbol_116", 964); + dingbats.put("Symbol_117", 965); + dingbats.put("Symbol_118", 982); + dingbats.put("Symbol_119", 969); + dingbats.put("Symbol_120", 958); + dingbats.put("Symbol_121", 968); + dingbats.put("Symbol_122", 950); + dingbats.put("Symbol_123", 123); + dingbats.put("Symbol_124", 124); + dingbats.put("Symbol_125", 125); + dingbats.put("Symbol_126", 126); + dingbats.put("Symbol_160", 8364); + dingbats.put("Symbol_161", 978); + dingbats.put("Symbol_162", 8242); + dingbats.put("Symbol_163", 8804); + dingbats.put("Symbol_164", 8260); + dingbats.put("Symbol_165", 8734); + dingbats.put("Symbol_166", 402); + dingbats.put("Symbol_167", 9827); + dingbats.put("Symbol_168", 9830); + dingbats.put("Symbol_169", 9829); + dingbats.put("Symbol_170", 9824); + dingbats.put("Symbol_171", 8596); + dingbats.put("Symbol_172", 8592); + dingbats.put("Symbol_173", 8593); + dingbats.put("Symbol_174", 8594); + dingbats.put("Symbol_175", 8595); + dingbats.put("Symbol_176", 176); + dingbats.put("Symbol_177", 177); + dingbats.put("Symbol_178", 8243); + dingbats.put("Symbol_179", 8805); + dingbats.put("Symbol_180", 215); + dingbats.put("Symbol_181", 8733); + dingbats.put("Symbol_182", 8706); + dingbats.put("Symbol_183", 8226); + dingbats.put("Symbol_184", 247); + dingbats.put("Symbol_185", 8800); + dingbats.put("Symbol_186", 8801); + dingbats.put("Symbol_187", 8776); + dingbats.put("Symbol_188", 8230); + dingbats.put("Symbol_189", 9168); + dingbats.put("Symbol_190", 9135); + dingbats.put("Symbol_191", 8629); + dingbats.put("Symbol_192", 8501); + dingbats.put("Symbol_193", 8465); + dingbats.put("Symbol_194", 8476); + dingbats.put("Symbol_195", 8472); + dingbats.put("Symbol_196", 8855); + dingbats.put("Symbol_197", 8853); + dingbats.put("Symbol_198", 8709); + dingbats.put("Symbol_199", 8745); + dingbats.put("Symbol_200", 8746); + dingbats.put("Symbol_201", 8835); + dingbats.put("Symbol_202", 8839); + dingbats.put("Symbol_203", 8836); + dingbats.put("Symbol_204", 8834); + dingbats.put("Symbol_205", 8838); + dingbats.put("Symbol_206", 8712); + dingbats.put("Symbol_207", 8713); + dingbats.put("Symbol_208", 8736); + dingbats.put("Symbol_209", 8711); + dingbats.put("Symbol_210", 174); + dingbats.put("Symbol_211", 169); + dingbats.put("Symbol_212", 8482); + dingbats.put("Symbol_213", 8719); + dingbats.put("Symbol_214", 8730); + dingbats.put("Symbol_215", 8901); + dingbats.put("Symbol_216", 172); + dingbats.put("Symbol_217", 8743); + dingbats.put("Symbol_218", 8744); + dingbats.put("Symbol_219", 8660); + dingbats.put("Symbol_220", 8656); + dingbats.put("Symbol_221", 8657); + dingbats.put("Symbol_222", 8658); + dingbats.put("Symbol_223", 8659); + dingbats.put("Symbol_224", 9674); + dingbats.put("Symbol_225", 12296); + dingbats.put("Symbol_226", 174); + dingbats.put("Symbol_227", 169); + dingbats.put("Symbol_228", 8482); + dingbats.put("Symbol_229", 8721); + dingbats.put("Symbol_230", 9115); + dingbats.put("Symbol_231", 9116); + dingbats.put("Symbol_232", 9117); + dingbats.put("Symbol_233", 9121); + dingbats.put("Symbol_234", 9122); + dingbats.put("Symbol_235", 9123); + dingbats.put("Symbol_236", 9127); + dingbats.put("Symbol_237", 9128); + dingbats.put("Symbol_238", 9129); + dingbats.put("Symbol_239", 9130); + dingbats.put("Symbol_240", 63743); + dingbats.put("Symbol_241", 12297); + dingbats.put("Symbol_242", 8747); + dingbats.put("Symbol_243", 8992); + dingbats.put("Symbol_244", 9134); + dingbats.put("Symbol_245", 8993); + dingbats.put("Symbol_246", 9118); + dingbats.put("Symbol_247", 9119); + dingbats.put("Symbol_248", 9120); + dingbats.put("Symbol_249", 9124); + dingbats.put("Symbol_250", 9125); + dingbats.put("Symbol_251", 9126); + dingbats.put("Symbol_252", 9131); + dingbats.put("Symbol_253", 9132); + dingbats.put("Symbol_254", 9133); + dingbats.put("Webdings_32", 32); + dingbats.put("Webdings_33", 128375); + dingbats.put("Webdings_34", 128376); + dingbats.put("Webdings_35", 128370); + dingbats.put("Webdings_36", 128374); + dingbats.put("Webdings_37", 127942); + dingbats.put("Webdings_38", 127894); + dingbats.put("Webdings_39", 128391); + dingbats.put("Webdings_40", 128488); + dingbats.put("Webdings_41", 128489); + dingbats.put("Webdings_42", 128496); + dingbats.put("Webdings_43", 128497); + dingbats.put("Webdings_44", 127798); + dingbats.put("Webdings_45", 127895); + dingbats.put("Webdings_46", 128638); + dingbats.put("Webdings_47", 128636); + dingbats.put("Webdings_48", 128469); + dingbats.put("Webdings_49", 128470); + dingbats.put("Webdings_50", 128471); + dingbats.put("Webdings_51", 9204); + dingbats.put("Webdings_52", 9205); + dingbats.put("Webdings_53", 9206); + dingbats.put("Webdings_54", 9207); + dingbats.put("Webdings_55", 9194); + dingbats.put("Webdings_56", 9193); + dingbats.put("Webdings_57", 9198); + dingbats.put("Webdings_58", 9197); + dingbats.put("Webdings_59", 9208); + dingbats.put("Webdings_60", 9209); + dingbats.put("Webdings_61", 9210); + dingbats.put("Webdings_62", 128474); + dingbats.put("Webdings_63", 128499); + dingbats.put("Webdings_64", 128736); + dingbats.put("Webdings_65", 127959); + dingbats.put("Webdings_66", 127960); + dingbats.put("Webdings_67", 127961); + dingbats.put("Webdings_68", 127962); + dingbats.put("Webdings_69", 127964); + dingbats.put("Webdings_70", 127981); + dingbats.put("Webdings_71", 127963); + dingbats.put("Webdings_72", 127968); + dingbats.put("Webdings_73", 127958); + dingbats.put("Webdings_74", 127965); + dingbats.put("Webdings_75", 128739); + dingbats.put("Webdings_76", 128269); + dingbats.put("Webdings_77", 127956); + dingbats.put("Webdings_78", 128065); + dingbats.put("Webdings_79", 128066); + dingbats.put("Webdings_80", 127966); + dingbats.put("Webdings_81", 127957); + dingbats.put("Webdings_82", 128740); + dingbats.put("Webdings_83", 127967); + dingbats.put("Webdings_84", 128755); + dingbats.put("Webdings_85", 128364); + dingbats.put("Webdings_86", 128363); + dingbats.put("Webdings_87", 128360); + dingbats.put("Webdings_88", 128264); + dingbats.put("Webdings_89", 127892); + dingbats.put("Webdings_90", 127893); + dingbats.put("Webdings_91", 128492); + dingbats.put("Webdings_92", 128637); + dingbats.put("Webdings_93", 128493); + dingbats.put("Webdings_94", 128490); + dingbats.put("Webdings_95", 128491); + dingbats.put("Webdings_96", 11156); + dingbats.put("Webdings_97", 10004); + dingbats.put("Webdings_98", 128690); + dingbats.put("Webdings_99", 11036); + dingbats.put("Webdings_100", 128737); + dingbats.put("Webdings_101", 128230); + dingbats.put("Webdings_102", 128753); + dingbats.put("Webdings_103", 11035); + dingbats.put("Webdings_104", 128657); + dingbats.put("Webdings_105", 128712); + dingbats.put("Webdings_106", 128745); + dingbats.put("Webdings_107", 128752); + dingbats.put("Webdings_108", 128968); + dingbats.put("Webdings_109", 128372); + dingbats.put("Webdings_110", 11044); + dingbats.put("Webdings_111", 128741); + dingbats.put("Webdings_112", 128660); + dingbats.put("Webdings_113", 128472); + dingbats.put("Webdings_114", 128473); + dingbats.put("Webdings_115", 10067); + dingbats.put("Webdings_116", 128754); + dingbats.put("Webdings_117", 128647); + dingbats.put("Webdings_118", 128653); + dingbats.put("Webdings_119", 9971); + dingbats.put("Webdings_120", 10680); + dingbats.put("Webdings_121", 8854); + dingbats.put("Webdings_122", 128685); + dingbats.put("Webdings_123", 128494); + dingbats.put("Webdings_124", 9168); + dingbats.put("Webdings_125", 128495); + dingbats.put("Webdings_126", 128498); + dingbats.put("Webdings_128", 128697); + dingbats.put("Webdings_129", 128698); + dingbats.put("Webdings_130", 128713); + dingbats.put("Webdings_131", 128714); + dingbats.put("Webdings_132", 128700); + dingbats.put("Webdings_133", 128125); + dingbats.put("Webdings_134", 127947); + dingbats.put("Webdings_135", 9975); + dingbats.put("Webdings_136", 127938); + dingbats.put("Webdings_137", 127948); + dingbats.put("Webdings_138", 127946); + dingbats.put("Webdings_139", 127940); + dingbats.put("Webdings_140", 127949); + dingbats.put("Webdings_141", 127950); + dingbats.put("Webdings_142", 128664); + dingbats.put("Webdings_143", 128480); + dingbats.put("Webdings_144", 128738); + dingbats.put("Webdings_145", 128176); + dingbats.put("Webdings_146", 127991); + dingbats.put("Webdings_147", 128179); + dingbats.put("Webdings_148", 128106); + dingbats.put("Webdings_149", 128481); + dingbats.put("Webdings_150", 128482); + dingbats.put("Webdings_151", 128483); + dingbats.put("Webdings_152", 10031); + dingbats.put("Webdings_153", 128388); + dingbats.put("Webdings_154", 128389); + dingbats.put("Webdings_155", 128387); + dingbats.put("Webdings_156", 128390); + dingbats.put("Webdings_157", 128441); + dingbats.put("Webdings_158", 128442); + dingbats.put("Webdings_159", 128443); + dingbats.put("Webdings_160", 128373); + dingbats.put("Webdings_161", 128368); + dingbats.put("Webdings_162", 128445); + dingbats.put("Webdings_163", 128446); + dingbats.put("Webdings_164", 128203); + dingbats.put("Webdings_165", 128466); + dingbats.put("Webdings_166", 128467); + dingbats.put("Webdings_167", 128366); + dingbats.put("Webdings_168", 128218); + dingbats.put("Webdings_169", 128478); + dingbats.put("Webdings_170", 128479); + dingbats.put("Webdings_171", 128451); + dingbats.put("Webdings_172", 128450); + dingbats.put("Webdings_173", 128444); + dingbats.put("Webdings_174", 127917); + dingbats.put("Webdings_175", 127900); + dingbats.put("Webdings_176", 127896); + dingbats.put("Webdings_177", 127897); + dingbats.put("Webdings_178", 127911); + dingbats.put("Webdings_179", 128191); + dingbats.put("Webdings_180", 127902); + dingbats.put("Webdings_181", 128247); + dingbats.put("Webdings_182", 127903); + dingbats.put("Webdings_183", 127916); + dingbats.put("Webdings_184", 128253); + dingbats.put("Webdings_185", 128249); + dingbats.put("Webdings_186", 128254); + dingbats.put("Webdings_187", 128251); + dingbats.put("Webdings_188", 127898); + dingbats.put("Webdings_189", 127899); + dingbats.put("Webdings_190", 128250); + dingbats.put("Webdings_191", 128187); + dingbats.put("Webdings_192", 128421); + dingbats.put("Webdings_193", 128422); + dingbats.put("Webdings_194", 128423); + dingbats.put("Webdings_195", 128377); + dingbats.put("Webdings_196", 127918); + dingbats.put("Webdings_197", 128379); + dingbats.put("Webdings_198", 128380); + dingbats.put("Webdings_199", 128223); + dingbats.put("Webdings_200", 128385); + dingbats.put("Webdings_201", 128384); + dingbats.put("Webdings_202", 128424); + dingbats.put("Webdings_203", 128425); + dingbats.put("Webdings_204", 128447); + dingbats.put("Webdings_205", 128426); + dingbats.put("Webdings_206", 128476); + dingbats.put("Webdings_207", 128274); + dingbats.put("Webdings_208", 128275); + dingbats.put("Webdings_209", 128477); + dingbats.put("Webdings_210", 128229); + dingbats.put("Webdings_211", 128228); + dingbats.put("Webdings_212", 128371); + dingbats.put("Webdings_213", 127779); + dingbats.put("Webdings_214", 127780); + dingbats.put("Webdings_215", 127781); + dingbats.put("Webdings_216", 127782); + dingbats.put("Webdings_217", 9729); + dingbats.put("Webdings_218", 127784); + dingbats.put("Webdings_219", 127783); + dingbats.put("Webdings_220", 127785); + dingbats.put("Webdings_221", 127786); + dingbats.put("Webdings_222", 127788); + dingbats.put("Webdings_223", 127787); + dingbats.put("Webdings_224", 127772); + dingbats.put("Webdings_225", 127777); + dingbats.put("Webdings_226", 128715); + dingbats.put("Webdings_227", 128719); + dingbats.put("Webdings_228", 127869); + dingbats.put("Webdings_229", 127864); + dingbats.put("Webdings_230", 128718); + dingbats.put("Webdings_231", 128717); + dingbats.put("Webdings_232", 9413); + dingbats.put("Webdings_233", 9855); + dingbats.put("Webdings_234", 128710); + dingbats.put("Webdings_235", 128392); + dingbats.put("Webdings_236", 127891); + dingbats.put("Webdings_237", 128484); + dingbats.put("Webdings_238", 128485); + dingbats.put("Webdings_239", 128486); + dingbats.put("Webdings_240", 128487); + dingbats.put("Webdings_241", 128746); + dingbats.put("Webdings_242", 128063); + dingbats.put("Webdings_243", 128038); + dingbats.put("Webdings_244", 128031); + dingbats.put("Webdings_245", 128021); + dingbats.put("Webdings_246", 128008); + dingbats.put("Webdings_247", 128620); + dingbats.put("Webdings_248", 128622); + dingbats.put("Webdings_249", 128621); + dingbats.put("Webdings_250", 128623); + dingbats.put("Webdings_251", 128506); + dingbats.put("Webdings_252", 127757); + dingbats.put("Webdings_253", 127759); + dingbats.put("Webdings_254", 127758); + dingbats.put("Webdings_255", 128330); + dingbats.put("Wingdings_32", 32); + dingbats.put("Wingdings_33", 128393); + dingbats.put("Wingdings_34", 9986); + dingbats.put("Wingdings_35", 9985); + dingbats.put("Wingdings_36", 128083); + dingbats.put("Wingdings_37", 128365); + dingbats.put("Wingdings_38", 128366); + dingbats.put("Wingdings_39", 128367); + dingbats.put("Wingdings_40", 128383); + dingbats.put("Wingdings_41", 9990); + dingbats.put("Wingdings_42", 128386); + dingbats.put("Wingdings_43", 128387); + dingbats.put("Wingdings_44", 128234); + dingbats.put("Wingdings_45", 128235); + dingbats.put("Wingdings_46", 128236); + dingbats.put("Wingdings_47", 128237); + dingbats.put("Wingdings_48", 128448); + dingbats.put("Wingdings_49", 128449); + dingbats.put("Wingdings_50", 128462); + dingbats.put("Wingdings_51", 128463); + dingbats.put("Wingdings_52", 128464); + dingbats.put("Wingdings_53", 128452); + dingbats.put("Wingdings_54", 8987); + dingbats.put("Wingdings_55", 128430); + dingbats.put("Wingdings_56", 128432); + dingbats.put("Wingdings_57", 128434); + dingbats.put("Wingdings_58", 128435); + dingbats.put("Wingdings_59", 128436); + dingbats.put("Wingdings_60", 128427); + dingbats.put("Wingdings_61", 128428); + dingbats.put("Wingdings_62", 9991); + dingbats.put("Wingdings_63", 9997); + dingbats.put("Wingdings_64", 128398); + dingbats.put("Wingdings_65", 9996); + dingbats.put("Wingdings_66", 128399); + dingbats.put("Wingdings_67", 128077); + dingbats.put("Wingdings_68", 128078); + dingbats.put("Wingdings_69", 9756); + dingbats.put("Wingdings_70", 9758); + dingbats.put("Wingdings_71", 9757); + dingbats.put("Wingdings_72", 9759); + dingbats.put("Wingdings_73", 128400); + dingbats.put("Wingdings_74", 9786); + dingbats.put("Wingdings_75", 128528); + dingbats.put("Wingdings_76", 9785); + dingbats.put("Wingdings_77", 128163); + dingbats.put("Wingdings_78", 128369); + dingbats.put("Wingdings_79", 127987); + dingbats.put("Wingdings_80", 127985); + dingbats.put("Wingdings_81", 9992); + dingbats.put("Wingdings_82", 9788); + dingbats.put("Wingdings_83", 127778); + dingbats.put("Wingdings_84", 10052); + dingbats.put("Wingdings_85", 128326); + dingbats.put("Wingdings_86", 10014); + dingbats.put("Wingdings_87", 128328); + dingbats.put("Wingdings_88", 10016); + dingbats.put("Wingdings_89", 10017); + dingbats.put("Wingdings_90", 9770); + dingbats.put("Wingdings_91", 9775); + dingbats.put("Wingdings_92", 128329); + dingbats.put("Wingdings_93", 9784); + dingbats.put("Wingdings_94", 9800); + dingbats.put("Wingdings_95", 9801); + dingbats.put("Wingdings_96", 9802); + dingbats.put("Wingdings_97", 9803); + dingbats.put("Wingdings_98", 9804); + dingbats.put("Wingdings_99", 9805); + dingbats.put("Wingdings_100", 9806); + dingbats.put("Wingdings_101", 9807); + dingbats.put("Wingdings_102", 9808); + dingbats.put("Wingdings_103", 9809); + dingbats.put("Wingdings_104", 9810); + dingbats.put("Wingdings_105", 9811); + dingbats.put("Wingdings_106", 128624); + dingbats.put("Wingdings_107", 128629); + dingbats.put("Wingdings_108", 9899); + dingbats.put("Wingdings_109", 128318); + dingbats.put("Wingdings_110", 9724); + dingbats.put("Wingdings_111", 128911); + dingbats.put("Wingdings_112", 128912); + dingbats.put("Wingdings_113", 10065); + dingbats.put("Wingdings_114", 10066); + dingbats.put("Wingdings_115", 128927); + dingbats.put("Wingdings_116", 10731); + dingbats.put("Wingdings_117", 9670); + dingbats.put("Wingdings_118", 10070); + dingbats.put("Wingdings_119", 11049); + dingbats.put("Wingdings_120", 8999); + dingbats.put("Wingdings_121", 11193); + dingbats.put("Wingdings_122", 8984); + dingbats.put("Wingdings_123", 127989); + dingbats.put("Wingdings_124", 127990); + dingbats.put("Wingdings_125", 128630); + dingbats.put("Wingdings_126", 128631); + dingbats.put("Wingdings_127", 9647); + dingbats.put("Wingdings_128", 127243); + dingbats.put("Wingdings_129", 10112); + dingbats.put("Wingdings_130", 10113); + dingbats.put("Wingdings_131", 10114); + dingbats.put("Wingdings_132", 10115); + dingbats.put("Wingdings_133", 10116); + dingbats.put("Wingdings_134", 10117); + dingbats.put("Wingdings_135", 10118); + dingbats.put("Wingdings_136", 10119); + dingbats.put("Wingdings_137", 10120); + dingbats.put("Wingdings_138", 10121); + dingbats.put("Wingdings_139", 127244); + dingbats.put("Wingdings_140", 10122); + dingbats.put("Wingdings_141", 10123); + dingbats.put("Wingdings_142", 10124); + dingbats.put("Wingdings_143", 10125); + dingbats.put("Wingdings_144", 10126); + dingbats.put("Wingdings_145", 10127); + dingbats.put("Wingdings_146", 10128); + dingbats.put("Wingdings_147", 10129); + dingbats.put("Wingdings_148", 10130); + dingbats.put("Wingdings_149", 10131); + dingbats.put("Wingdings_150", 128610); + dingbats.put("Wingdings_151", 128608); + dingbats.put("Wingdings_152", 128609); + dingbats.put("Wingdings_153", 128611); + dingbats.put("Wingdings_154", 128606); + dingbats.put("Wingdings_155", 128604); + dingbats.put("Wingdings_156", 128605); + dingbats.put("Wingdings_157", 128607); + dingbats.put("Wingdings_158", 8729); + dingbats.put("Wingdings_159", 8226); + dingbats.put("Wingdings_160", 11037); + dingbats.put("Wingdings_161", 11096); + dingbats.put("Wingdings_162", 128902); + dingbats.put("Wingdings_163", 128904); + dingbats.put("Wingdings_164", 128906); + dingbats.put("Wingdings_165", 128907); + dingbats.put("Wingdings_166", 128319); + dingbats.put("Wingdings_167", 9642); + dingbats.put("Wingdings_168", 128910); + dingbats.put("Wingdings_169", 128961); + dingbats.put("Wingdings_170", 128965); + dingbats.put("Wingdings_171", 9733); + dingbats.put("Wingdings_172", 128971); + dingbats.put("Wingdings_173", 128975); + dingbats.put("Wingdings_174", 128979); + dingbats.put("Wingdings_175", 128977); + dingbats.put("Wingdings_176", 11216); + dingbats.put("Wingdings_177", 8982); + dingbats.put("Wingdings_178", 11214); + dingbats.put("Wingdings_179", 11215); + dingbats.put("Wingdings_180", 11217); + dingbats.put("Wingdings_181", 10026); + dingbats.put("Wingdings_182", 10032); + dingbats.put("Wingdings_183", 128336); + dingbats.put("Wingdings_184", 128337); + dingbats.put("Wingdings_185", 128338); + dingbats.put("Wingdings_186", 128339); + dingbats.put("Wingdings_187", 128340); + dingbats.put("Wingdings_188", 128341); + dingbats.put("Wingdings_189", 128342); + dingbats.put("Wingdings_190", 128343); + dingbats.put("Wingdings_191", 128344); + dingbats.put("Wingdings_192", 128345); + dingbats.put("Wingdings_193", 128346); + dingbats.put("Wingdings_194", 128347); + dingbats.put("Wingdings_195", 11184); + dingbats.put("Wingdings_196", 11185); + dingbats.put("Wingdings_197", 11186); + dingbats.put("Wingdings_198", 11187); + dingbats.put("Wingdings_199", 11188); + dingbats.put("Wingdings_200", 11189); + dingbats.put("Wingdings_201", 11190); + dingbats.put("Wingdings_202", 11191); + dingbats.put("Wingdings_203", 128618); + dingbats.put("Wingdings_204", 128619); + dingbats.put("Wingdings_205", 128597); + dingbats.put("Wingdings_206", 128596); + dingbats.put("Wingdings_207", 128599); + dingbats.put("Wingdings_208", 128598); + dingbats.put("Wingdings_209", 128592); + dingbats.put("Wingdings_210", 128593); + dingbats.put("Wingdings_211", 128594); + dingbats.put("Wingdings_212", 128595); + dingbats.put("Wingdings_213", 9003); + dingbats.put("Wingdings_214", 8998); + dingbats.put("Wingdings_215", 11160); + dingbats.put("Wingdings_216", 11162); + dingbats.put("Wingdings_217", 11161); + dingbats.put("Wingdings_218", 11163); + dingbats.put("Wingdings_219", 11144); + dingbats.put("Wingdings_220", 11146); + dingbats.put("Wingdings_221", 11145); + dingbats.put("Wingdings_222", 11147); + dingbats.put("Wingdings_223", 129128); + dingbats.put("Wingdings_224", 129130); + dingbats.put("Wingdings_225", 129129); + dingbats.put("Wingdings_226", 129131); + dingbats.put("Wingdings_227", 129132); + dingbats.put("Wingdings_228", 129133); + dingbats.put("Wingdings_229", 129135); + dingbats.put("Wingdings_230", 129134); + dingbats.put("Wingdings_231", 129144); + dingbats.put("Wingdings_232", 129146); + dingbats.put("Wingdings_233", 129145); + dingbats.put("Wingdings_234", 129147); + dingbats.put("Wingdings_235", 129148); + dingbats.put("Wingdings_236", 129149); + dingbats.put("Wingdings_237", 129151); + dingbats.put("Wingdings_238", 129150); + dingbats.put("Wingdings_239", 8678); + dingbats.put("Wingdings_240", 8680); + dingbats.put("Wingdings_241", 8679); + dingbats.put("Wingdings_242", 8681); + dingbats.put("Wingdings_243", 11012); + dingbats.put("Wingdings_244", 8691); + dingbats.put("Wingdings_245", 11009); + dingbats.put("Wingdings_246", 11008); + dingbats.put("Wingdings_247", 11011); + dingbats.put("Wingdings_248", 11010); + dingbats.put("Wingdings_249", 129196); + dingbats.put("Wingdings_250", 129197); + dingbats.put("Wingdings_251", 128502); + dingbats.put("Wingdings_252", 10003); + dingbats.put("Wingdings_253", 128503); + dingbats.put("Wingdings_254", 128505); + dingbats.put("Wingdings 2_32", 32); + dingbats.put("Wingdings 2_33", 128394); + dingbats.put("Wingdings 2_34", 128395); + dingbats.put("Wingdings 2_35", 128396); + dingbats.put("Wingdings 2_36", 128397); + dingbats.put("Wingdings 2_37", 9988); + dingbats.put("Wingdings 2_38", 9984); + dingbats.put("Wingdings 2_39", 128382); + dingbats.put("Wingdings 2_40", 128381); + dingbats.put("Wingdings 2_41", 128453); + dingbats.put("Wingdings 2_42", 128454); + dingbats.put("Wingdings 2_43", 128455); + dingbats.put("Wingdings 2_44", 128456); + dingbats.put("Wingdings 2_45", 128457); + dingbats.put("Wingdings 2_46", 128458); + dingbats.put("Wingdings 2_47", 128459); + dingbats.put("Wingdings 2_48", 128460); + dingbats.put("Wingdings 2_49", 128461); + dingbats.put("Wingdings 2_50", 128203); + dingbats.put("Wingdings 2_51", 128465); + dingbats.put("Wingdings 2_52", 128468); + dingbats.put("Wingdings 2_53", 128437); + dingbats.put("Wingdings 2_54", 128438); + dingbats.put("Wingdings 2_55", 128439); + dingbats.put("Wingdings 2_56", 128440); + dingbats.put("Wingdings 2_57", 128429); + dingbats.put("Wingdings 2_58", 128431); + dingbats.put("Wingdings 2_59", 128433); + dingbats.put("Wingdings 2_60", 128402); + dingbats.put("Wingdings 2_61", 128403); + dingbats.put("Wingdings 2_62", 128408); + dingbats.put("Wingdings 2_63", 128409); + dingbats.put("Wingdings 2_64", 128410); + dingbats.put("Wingdings 2_65", 128411); + dingbats.put("Wingdings 2_66", 128072); + dingbats.put("Wingdings 2_67", 128073); + dingbats.put("Wingdings 2_68", 128412); + dingbats.put("Wingdings 2_69", 128413); + dingbats.put("Wingdings 2_70", 128414); + dingbats.put("Wingdings 2_71", 128415); + dingbats.put("Wingdings 2_72", 128416); + dingbats.put("Wingdings 2_73", 128417); + dingbats.put("Wingdings 2_74", 128070); + dingbats.put("Wingdings 2_75", 128071); + dingbats.put("Wingdings 2_76", 128418); + dingbats.put("Wingdings 2_77", 128419); + dingbats.put("Wingdings 2_78", 128401); + dingbats.put("Wingdings 2_79", 128500); + dingbats.put("Wingdings 2_80", 128504); + dingbats.put("Wingdings 2_81", 128501); + dingbats.put("Wingdings 2_82", 9745); + dingbats.put("Wingdings 2_83", 11197); + dingbats.put("Wingdings 2_84", 9746); + dingbats.put("Wingdings 2_85", 11198); + dingbats.put("Wingdings 2_86", 11199); + dingbats.put("Wingdings 2_87", 128711); + dingbats.put("Wingdings 2_88", 10680); + dingbats.put("Wingdings 2_89", 128625); + dingbats.put("Wingdings 2_90", 128628); + dingbats.put("Wingdings 2_91", 128626); + dingbats.put("Wingdings 2_92", 128627); + dingbats.put("Wingdings 2_93", 8253); + dingbats.put("Wingdings 2_94", 128633); + dingbats.put("Wingdings 2_95", 128634); + dingbats.put("Wingdings 2_96", 128635); + dingbats.put("Wingdings 2_97", 128614); + dingbats.put("Wingdings 2_98", 128612); + dingbats.put("Wingdings 2_99", 128613); + dingbats.put("Wingdings 2_100", 128615); + dingbats.put("Wingdings 2_101", 128602); + dingbats.put("Wingdings 2_102", 128600); + dingbats.put("Wingdings 2_103", 128601); + dingbats.put("Wingdings 2_104", 128603); + dingbats.put("Wingdings 2_105", 9450); + dingbats.put("Wingdings 2_106", 9312); + dingbats.put("Wingdings 2_107", 9313); + dingbats.put("Wingdings 2_108", 9314); + dingbats.put("Wingdings 2_109", 9315); + dingbats.put("Wingdings 2_110", 9316); + dingbats.put("Wingdings 2_111", 9317); + dingbats.put("Wingdings 2_112", 9318); + dingbats.put("Wingdings 2_113", 9319); + dingbats.put("Wingdings 2_114", 9320); + dingbats.put("Wingdings 2_115", 9321); + dingbats.put("Wingdings 2_116", 9471); + dingbats.put("Wingdings 2_117", 10102); + dingbats.put("Wingdings 2_118", 10103); + dingbats.put("Wingdings 2_119", 10104); + dingbats.put("Wingdings 2_120", 10105); + dingbats.put("Wingdings 2_121", 10106); + dingbats.put("Wingdings 2_122", 10107); + dingbats.put("Wingdings 2_123", 10108); + dingbats.put("Wingdings 2_124", 10109); + dingbats.put("Wingdings 2_125", 10110); + dingbats.put("Wingdings 2_126", 10111); + dingbats.put("Wingdings 2_128", 9737); + dingbats.put("Wingdings 2_129", 127765); + dingbats.put("Wingdings 2_130", 9789); + dingbats.put("Wingdings 2_131", 9790); + dingbats.put("Wingdings 2_132", 11839); + dingbats.put("Wingdings 2_133", 10013); + dingbats.put("Wingdings 2_134", 128327); + dingbats.put("Wingdings 2_135", 128348); + dingbats.put("Wingdings 2_136", 128349); + dingbats.put("Wingdings 2_137", 128350); + dingbats.put("Wingdings 2_138", 128351); + dingbats.put("Wingdings 2_139", 128352); + dingbats.put("Wingdings 2_140", 128353); + dingbats.put("Wingdings 2_141", 128354); + dingbats.put("Wingdings 2_142", 128355); + dingbats.put("Wingdings 2_143", 128356); + dingbats.put("Wingdings 2_144", 128357); + dingbats.put("Wingdings 2_145", 128358); + dingbats.put("Wingdings 2_146", 128359); + dingbats.put("Wingdings 2_147", 128616); + dingbats.put("Wingdings 2_148", 128617); + dingbats.put("Wingdings 2_149", 8901); + dingbats.put("Wingdings 2_150", 128900); + dingbats.put("Wingdings 2_151", 10625); + dingbats.put("Wingdings 2_152", 9679); + dingbats.put("Wingdings 2_153", 9675); + dingbats.put("Wingdings 2_154", 128901); + dingbats.put("Wingdings 2_155", 128903); + dingbats.put("Wingdings 2_156", 128905); + dingbats.put("Wingdings 2_157", 8857); + dingbats.put("Wingdings 2_158", 10687); + dingbats.put("Wingdings 2_159", 128908); + dingbats.put("Wingdings 2_160", 128909); + dingbats.put("Wingdings 2_161", 9726); + dingbats.put("Wingdings 2_162", 9632); + dingbats.put("Wingdings 2_163", 9633); + dingbats.put("Wingdings 2_164", 128913); + dingbats.put("Wingdings 2_165", 128914); + dingbats.put("Wingdings 2_166", 128915); + dingbats.put("Wingdings 2_167", 128916); + dingbats.put("Wingdings 2_168", 9635); + dingbats.put("Wingdings 2_169", 128917); + dingbats.put("Wingdings 2_170", 128918); + dingbats.put("Wingdings 2_171", 128919); + dingbats.put("Wingdings 2_172", 128920); + dingbats.put("Wingdings 2_173", 11049); + dingbats.put("Wingdings 2_174", 11045); + dingbats.put("Wingdings 2_175", 9671); + dingbats.put("Wingdings 2_176", 128922); + dingbats.put("Wingdings 2_177", 9672); + dingbats.put("Wingdings 2_178", 128923); + dingbats.put("Wingdings 2_179", 128924); + dingbats.put("Wingdings 2_180", 128925); + dingbats.put("Wingdings 2_181", 128926); + dingbats.put("Wingdings 2_182", 11050); + dingbats.put("Wingdings 2_183", 11047); + dingbats.put("Wingdings 2_184", 9674); + dingbats.put("Wingdings 2_185", 128928); + dingbats.put("Wingdings 2_186", 9686); + dingbats.put("Wingdings 2_187", 9687); + dingbats.put("Wingdings 2_188", 11210); + dingbats.put("Wingdings 2_189", 11211); + dingbats.put("Wingdings 2_190", 11200); + dingbats.put("Wingdings 2_191", 11201); + dingbats.put("Wingdings 2_192", 11039); + dingbats.put("Wingdings 2_193", 11202); + dingbats.put("Wingdings 2_194", 11043); + dingbats.put("Wingdings 2_195", 11042); + dingbats.put("Wingdings 2_196", 11203); + dingbats.put("Wingdings 2_197", 11204); + dingbats.put("Wingdings 2_198", 128929); + dingbats.put("Wingdings 2_199", 128930); + dingbats.put("Wingdings 2_200", 128931); + dingbats.put("Wingdings 2_201", 128932); + dingbats.put("Wingdings 2_202", 128933); + dingbats.put("Wingdings 2_203", 128934); + dingbats.put("Wingdings 2_204", 128935); + dingbats.put("Wingdings 2_205", 128936); + dingbats.put("Wingdings 2_206", 128937); + dingbats.put("Wingdings 2_207", 128938); + dingbats.put("Wingdings 2_208", 128939); + dingbats.put("Wingdings 2_209", 128940); + dingbats.put("Wingdings 2_210", 128941); + dingbats.put("Wingdings 2_211", 128942); + dingbats.put("Wingdings 2_212", 128943); + dingbats.put("Wingdings 2_213", 128944); + dingbats.put("Wingdings 2_214", 128945); + dingbats.put("Wingdings 2_215", 128946); + dingbats.put("Wingdings 2_216", 128947); + dingbats.put("Wingdings 2_217", 128948); + dingbats.put("Wingdings 2_218", 128949); + dingbats.put("Wingdings 2_219", 128950); + dingbats.put("Wingdings 2_220", 128951); + dingbats.put("Wingdings 2_221", 128952); + dingbats.put("Wingdings 2_222", 128953); + dingbats.put("Wingdings 2_223", 128954); + dingbats.put("Wingdings 2_224", 128955); + dingbats.put("Wingdings 2_225", 128956); + dingbats.put("Wingdings 2_226", 128957); + dingbats.put("Wingdings 2_227", 128958); + dingbats.put("Wingdings 2_228", 128959); + dingbats.put("Wingdings 2_229", 128960); + dingbats.put("Wingdings 2_230", 128962); + dingbats.put("Wingdings 2_231", 128964); + dingbats.put("Wingdings 2_232", 128966); + dingbats.put("Wingdings 2_233", 128969); + dingbats.put("Wingdings 2_234", 128970); + dingbats.put("Wingdings 2_235", 10038); + dingbats.put("Wingdings 2_236", 128972); + dingbats.put("Wingdings 2_237", 128974); + dingbats.put("Wingdings 2_238", 128976); + dingbats.put("Wingdings 2_239", 128978); + dingbats.put("Wingdings 2_240", 10041); + dingbats.put("Wingdings 2_241", 128963); + dingbats.put("Wingdings 2_242", 128967); + dingbats.put("Wingdings 2_243", 10031); + dingbats.put("Wingdings 2_244", 128973); + dingbats.put("Wingdings 2_245", 128980); + dingbats.put("Wingdings 2_246", 11212); + dingbats.put("Wingdings 2_247", 11213); + dingbats.put("Wingdings 2_248", 8251); + dingbats.put("Wingdings 2_249", 8258); + dingbats.put("Wingdings 3_32", 32); + dingbats.put("Wingdings 3_33", 11104); + dingbats.put("Wingdings 3_34", 11106); + dingbats.put("Wingdings 3_35", 11105); + dingbats.put("Wingdings 3_36", 11107); + dingbats.put("Wingdings 3_37", 11110); + dingbats.put("Wingdings 3_38", 11111); + dingbats.put("Wingdings 3_39", 11113); + dingbats.put("Wingdings 3_40", 11112); + dingbats.put("Wingdings 3_41", 11120); + dingbats.put("Wingdings 3_42", 11122); + dingbats.put("Wingdings 3_43", 11121); + dingbats.put("Wingdings 3_44", 11123); + dingbats.put("Wingdings 3_45", 11126); + dingbats.put("Wingdings 3_46", 11128); + dingbats.put("Wingdings 3_47", 11131); + dingbats.put("Wingdings 3_48", 11133); + dingbats.put("Wingdings 3_49", 11108); + dingbats.put("Wingdings 3_50", 11109); + dingbats.put("Wingdings 3_51", 11114); + dingbats.put("Wingdings 3_52", 11116); + dingbats.put("Wingdings 3_53", 11115); + dingbats.put("Wingdings 3_54", 11117); + dingbats.put("Wingdings 3_55", 11085); + dingbats.put("Wingdings 3_56", 11168); + dingbats.put("Wingdings 3_57", 11169); + dingbats.put("Wingdings 3_58", 11170); + dingbats.put("Wingdings 3_59", 11171); + dingbats.put("Wingdings 3_60", 11172); + dingbats.put("Wingdings 3_61", 11173); + dingbats.put("Wingdings 3_62", 11174); + dingbats.put("Wingdings 3_63", 11175); + dingbats.put("Wingdings 3_64", 11152); + dingbats.put("Wingdings 3_65", 11153); + dingbats.put("Wingdings 3_66", 11154); + dingbats.put("Wingdings 3_67", 11155); + dingbats.put("Wingdings 3_68", 11136); + dingbats.put("Wingdings 3_69", 11139); + dingbats.put("Wingdings 3_70", 11134); + dingbats.put("Wingdings 3_71", 11135); + dingbats.put("Wingdings 3_72", 11140); + dingbats.put("Wingdings 3_73", 11142); + dingbats.put("Wingdings 3_74", 11141); + dingbats.put("Wingdings 3_75", 11143); + dingbats.put("Wingdings 3_76", 11151); + dingbats.put("Wingdings 3_77", 11149); + dingbats.put("Wingdings 3_78", 11150); + dingbats.put("Wingdings 3_79", 11148); + dingbats.put("Wingdings 3_80", 11118); + dingbats.put("Wingdings 3_81", 11119); + dingbats.put("Wingdings 3_82", 9099); + dingbats.put("Wingdings 3_83", 8996); + dingbats.put("Wingdings 3_84", 8963); + dingbats.put("Wingdings 3_85", 8997); + dingbats.put("Wingdings 3_86", 9251); + dingbats.put("Wingdings 3_87", 9085); + dingbats.put("Wingdings 3_88", 8682); + dingbats.put("Wingdings 3_89", 11192); + dingbats.put("Wingdings 3_90", 129184); + dingbats.put("Wingdings 3_91", 129185); + dingbats.put("Wingdings 3_92", 129186); + dingbats.put("Wingdings 3_93", 129187); + dingbats.put("Wingdings 3_94", 129188); + dingbats.put("Wingdings 3_95", 129189); + dingbats.put("Wingdings 3_96", 129190); + dingbats.put("Wingdings 3_97", 129191); + dingbats.put("Wingdings 3_98", 129192); + dingbats.put("Wingdings 3_99", 129193); + dingbats.put("Wingdings 3_100", 129194); + dingbats.put("Wingdings 3_101", 129195); + dingbats.put("Wingdings 3_102", 129104); + dingbats.put("Wingdings 3_103", 129106); + dingbats.put("Wingdings 3_104", 129105); + dingbats.put("Wingdings 3_105", 129107); + dingbats.put("Wingdings 3_106", 129108); + dingbats.put("Wingdings 3_107", 129109); + dingbats.put("Wingdings 3_108", 129111); + dingbats.put("Wingdings 3_109", 129110); + dingbats.put("Wingdings 3_110", 129112); + dingbats.put("Wingdings 3_111", 129113); + dingbats.put("Wingdings 3_112", 9650); + dingbats.put("Wingdings 3_113", 9660); + dingbats.put("Wingdings 3_114", 9651); + dingbats.put("Wingdings 3_115", 9661); + dingbats.put("Wingdings 3_116", 9664); + dingbats.put("Wingdings 3_117", 9654); + dingbats.put("Wingdings 3_118", 9665); + dingbats.put("Wingdings 3_119", 9655); + dingbats.put("Wingdings 3_120", 9699); + dingbats.put("Wingdings 3_121", 9698); + dingbats.put("Wingdings 3_122", 9700); + dingbats.put("Wingdings 3_123", 9701); + dingbats.put("Wingdings 3_124", 128896); + dingbats.put("Wingdings 3_125", 128898); + dingbats.put("Wingdings 3_126", 128897); + dingbats.put("Wingdings 3_128", 128899); + dingbats.put("Wingdings 3_129", 11205); + dingbats.put("Wingdings 3_130", 11206); + dingbats.put("Wingdings 3_131", 11207); + dingbats.put("Wingdings 3_132", 11208); + dingbats.put("Wingdings 3_133", 11164); + dingbats.put("Wingdings 3_134", 11166); + dingbats.put("Wingdings 3_135", 11165); + dingbats.put("Wingdings 3_136", 11167); + dingbats.put("Wingdings 3_137", 129040); + dingbats.put("Wingdings 3_138", 129042); + dingbats.put("Wingdings 3_139", 129041); + dingbats.put("Wingdings 3_140", 129043); + dingbats.put("Wingdings 3_141", 129044); + dingbats.put("Wingdings 3_142", 129046); + dingbats.put("Wingdings 3_143", 129045); + dingbats.put("Wingdings 3_144", 129047); + dingbats.put("Wingdings 3_145", 129048); + dingbats.put("Wingdings 3_146", 129050); + dingbats.put("Wingdings 3_147", 129049); + dingbats.put("Wingdings 3_148", 129051); + dingbats.put("Wingdings 3_149", 129052); + dingbats.put("Wingdings 3_150", 129054); + dingbats.put("Wingdings 3_151", 129053); + dingbats.put("Wingdings 3_152", 129055); + dingbats.put("Wingdings 3_153", 129024); + dingbats.put("Wingdings 3_154", 129026); + dingbats.put("Wingdings 3_155", 129025); + dingbats.put("Wingdings 3_156", 129027); + dingbats.put("Wingdings 3_157", 129028); + dingbats.put("Wingdings 3_158", 129030); + dingbats.put("Wingdings 3_159", 129029); + dingbats.put("Wingdings 3_160", 129031); + dingbats.put("Wingdings 3_161", 129032); + dingbats.put("Wingdings 3_162", 129034); + dingbats.put("Wingdings 3_163", 129033); + dingbats.put("Wingdings 3_164", 129035); + dingbats.put("Wingdings 3_165", 129056); + dingbats.put("Wingdings 3_166", 129058); + dingbats.put("Wingdings 3_167", 129060); + dingbats.put("Wingdings 3_168", 129062); + dingbats.put("Wingdings 3_169", 129064); + dingbats.put("Wingdings 3_170", 129066); + dingbats.put("Wingdings 3_171", 129068); + dingbats.put("Wingdings 3_172", 129180); + dingbats.put("Wingdings 3_173", 129181); + dingbats.put("Wingdings 3_174", 129182); + dingbats.put("Wingdings 3_175", 129183); + dingbats.put("Wingdings 3_176", 129070); + dingbats.put("Wingdings 3_177", 129072); + dingbats.put("Wingdings 3_178", 129074); + dingbats.put("Wingdings 3_179", 129076); + dingbats.put("Wingdings 3_180", 129078); + dingbats.put("Wingdings 3_181", 129080); + dingbats.put("Wingdings 3_182", 129082); + dingbats.put("Wingdings 3_183", 129081); + dingbats.put("Wingdings 3_184", 129083); + dingbats.put("Wingdings 3_185", 129176); + dingbats.put("Wingdings 3_186", 129178); + dingbats.put("Wingdings 3_187", 129177); + dingbats.put("Wingdings 3_188", 129179); + dingbats.put("Wingdings 3_189", 129084); + dingbats.put("Wingdings 3_190", 129086); + dingbats.put("Wingdings 3_191", 129085); + dingbats.put("Wingdings 3_192", 129087); + dingbats.put("Wingdings 3_193", 129088); + dingbats.put("Wingdings 3_194", 129090); + dingbats.put("Wingdings 3_195", 129089); + dingbats.put("Wingdings 3_196", 129091); + dingbats.put("Wingdings 3_197", 129092); + dingbats.put("Wingdings 3_198", 129094); + dingbats.put("Wingdings 3_199", 129093); + dingbats.put("Wingdings 3_200", 129095); + dingbats.put("Wingdings 3_201", 11176); + dingbats.put("Wingdings 3_202", 11177); + dingbats.put("Wingdings 3_203", 11178); + dingbats.put("Wingdings 3_204", 11179); + dingbats.put("Wingdings 3_205", 11180); + dingbats.put("Wingdings 3_206", 11181); + dingbats.put("Wingdings 3_207", 11182); + dingbats.put("Wingdings 3_208", 11183); + dingbats.put("Wingdings 3_209", 129120); + dingbats.put("Wingdings 3_210", 129122); + dingbats.put("Wingdings 3_211", 129121); + dingbats.put("Wingdings 3_212", 129123); + dingbats.put("Wingdings 3_213", 129124); + dingbats.put("Wingdings 3_214", 129125); + dingbats.put("Wingdings 3_215", 129127); + dingbats.put("Wingdings 3_216", 129126); + dingbats.put("Wingdings 3_217", 129136); + dingbats.put("Wingdings 3_218", 129138); + dingbats.put("Wingdings 3_219", 129137); + dingbats.put("Wingdings 3_220", 129139); + dingbats.put("Wingdings 3_221", 129140); + dingbats.put("Wingdings 3_222", 129141); + dingbats.put("Wingdings 3_223", 129143); + dingbats.put("Wingdings 3_224", 129142); + dingbats.put("Wingdings 3_225", 129152); + dingbats.put("Wingdings 3_226", 129154); + dingbats.put("Wingdings 3_227", 129153); + dingbats.put("Wingdings 3_228", 129155); + dingbats.put("Wingdings 3_229", 129156); + dingbats.put("Wingdings 3_230", 129157); + dingbats.put("Wingdings 3_231", 129159); + dingbats.put("Wingdings 3_232", 129158); + dingbats.put("Wingdings 3_233", 129168); + dingbats.put("Wingdings 3_234", 129170); + dingbats.put("Wingdings 3_235", 129169); + dingbats.put("Wingdings 3_236", 129171); + dingbats.put("Wingdings 3_237", 129172); + dingbats.put("Wingdings 3_238", 129174); + dingbats.put("Wingdings 3_239", 129173); + dingbats.put("Wingdings 3_240", 129175); + } +} diff --git a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java index 0cf141e..366cf16 100644 --- a/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java +++ b/src/main/java/org/zwobble/mammoth/internal/docx/StatefulBodyXmlReader.java @@ -15,8 +15,7 @@ import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.zwobble.mammoth.internal.docx.ReadResult.EMPTY_SUCCESS; -import static org.zwobble.mammoth.internal.docx.ReadResult.success; +import static org.zwobble.mammoth.internal.docx.ReadResult.*; import static org.zwobble.mammoth.internal.docx.Uris.uriToZipEntryName; import static org.zwobble.mammoth.internal.util.Iterables.lazyFilter; import static org.zwobble.mammoth.internal.util.Iterables.tryGetLast; @@ -93,6 +92,8 @@ class StatefulBodyXmlReader { return success(new Text("\u2011")); case "w:softHyphen": return success(new Text("\u00ad")); + case "w:sym": + return readSymbol(element); case "w:br": return readBreak(element); @@ -359,6 +360,35 @@ class StatefulBodyXmlReader { ); } + private ReadResult readSymbol(XmlElement element) { + Optional font = element.getAttributeOrNone("w:font"); + Optional charValue = element.getAttributeOrNone("w:char"); + if (font.isPresent() && charValue.isPresent()) { + Optional dingbat = Dingbats.findDingbat(font.get(), Integer.parseInt(charValue.get(), 16)); + + if (!dingbat.isPresent() && Pattern.matches("F0..", charValue.get())) { + dingbat = Dingbats.findDingbat(font.get(), Integer.parseInt(charValue.get().substring(2), 16)); + } + + if (dingbat.isPresent()) { + return ReadResult.success(new Text(codepointToString(dingbat.get()))); + } + } + return emptyWithWarning( + "A w:sym element with an unsupported character was ignored: char " + + charValue.orElse("null") + " in font " + font.orElse("null") + ); + } + + public String codepointToString(int codePoint) { + if (Character.isBmpCodePoint(codePoint)) { + return String.valueOf((char) codePoint); + } else { + return String.valueOf(Character.highSurrogate(codePoint)) + + Character.lowSurrogate(codePoint); + } + } + private ReadResult readBreak(XmlElement element) { String breakType = element.getAttributeOrNone("w:type").orElse("textWrapping"); switch (breakType) { -- cgit v1.2.3