Created
May 26, 2015 08:10
-
-
Save ptsefton/1ce30879e9cfef289356 to your computer and use it in GitHub Desktop.
Generate JSON mapping table from Windows Symbol and wingdings fonts to HTML entities via Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Generates a lookup table in JSON format to map characters from Wingdings and Symbol font to unicode. | |
Eg, this fragment of HTML <font face="Symbol"></font>Laughs<font face="Symbol"></font>. | |
Which should render like this: [Laughs] | |
Uses the data in this mapping table found here: https://github.com/juanmf/sfPlugins/blob/master/reportPlugin/doc/Word2XSLTRenderingFO.xsl | |
""" | |
table = u""" | |
<my:recoding-table font="Symbol"> | |
<my:char code="!" value="21" altvalue="F021" entity="!"/> <!--EXCLAMATION MARK--> | |
<my:char code=""" value="22" altvalue="F022" entity="∀"/> <!--FOR ALL--> | |
<my:char code="#" value="23" altvalue="F023" entity="#"/> <!--NUMBER SIGN--> | |
<my:char code="$" value="24" altvalue="F024" entity="∃"/> <!--THERE EXISTS--> | |
<my:char code="%" value="25" altvalue="F025" entity="%"/> <!--PERCENT SIGN--> | |
<my:char code="&" value="26" altvalue="F026" entity="&"/> <!--AMPERSAND--> | |
<my:char code="'" value="27" altvalue="F027" entity="∍"/> <!--SMALL CONTAINS AS MEMBER--> | |
<my:char code="(" value="28" altvalue="F028" entity="("/> <!--LEFT PARENTHESIS--> | |
<my:char code=")" value="29" altvalue="F029" entity=")"/> <!--RIGHT PARENTHESIS--> | |
<my:char code="*" value="2A" altvalue="F02A" entity="∗"/> <!--ASTERISK OPERATOR--> | |
<my:char code="+" value="2B" altvalue="F02B" entity="+"/> <!--PLUS SIGN--> | |
<my:char code="," value="2C" altvalue="F02C" entity=","/> <!--COMMA--> | |
<my:char code="-" value="2D" altvalue="F02D" entity="−"/> <!--MINUS SIGN--> | |
<my:char code="." value="2E" altvalue="F02E" entity="."/> <!--FULL STOP--> | |
<my:char code="/" value="2F" altvalue="F02F" entity="/"/> <!--SOLIDUS--> | |
<my:char code="0" value="30" altvalue="F030" entity="0"/> <!--DIGIT ZERO--> | |
<my:char code="1" value="31" altvalue="F031" entity="1"/> <!--DIGIT ONE--> | |
<my:char code="2" value="32" altvalue="F032" entity="2"/> <!--DIGIT TWO--> | |
<my:char code="3" value="33" altvalue="F033" entity="3"/> <!--DIGIT THREE--> | |
<my:char code="4" value="34" altvalue="F034" entity="4"/> <!--DIGIT FOUR--> | |
<my:char code="5" value="35" altvalue="F035" entity="5"/> <!--DIGIT FIVE--> | |
<my:char code="6" value="36" altvalue="F036" entity="6"/> <!--DIGIT SIX--> | |
<my:char code="7" value="37" altvalue="F037" entity="7"/> <!--DIGIT SEVEN--> | |
<my:char code="8" value="38" altvalue="F038" entity="8"/> <!--DIGIT EIGHT--> | |
<my:char code="9" value="39" altvalue="F039" entity="9"/> <!--DIGIT NINE--> | |
<my:char code=":" value="3A" altvalue="F03A" entity=":"/> <!--COLON--> | |
<my:char code=";" value="3B" altvalue="F03B" entity=";"/> <!--SEMICOLON--> | |
<my:char code="<" value="3C" altvalue="F03C" entity="<"/> <!--LESS-THAN SIGN--> | |
<my:char code="=" value="3D" altvalue="F03D" entity="="/> <!--EQUALS SIGN--> | |
<my:char code=">" value="3E" altvalue="F03E" entity=">"/> <!--GREATER-THAN SIGN--> | |
<my:char code="?" value="3F" altvalue="F03F" entity="?"/> <!--QUESTION MARK--> | |
<my:char code="@" value="40" altvalue="F040" entity="≅"/> <!--APPROXIMATELY EQUAL TO--> | |
<my:char code="A" value="41" altvalue="F041" entity="Α"/> <!--GREEK CAPITAL LETTER ALPHA--> | |
<my:char code="B" value="42" altvalue="F042" entity="Β"/> <!--GREEK CAPITAL LETTER BETA--> | |
<my:char code="C" value="43" altvalue="F043" entity="Χ"/> <!--GREEK CAPITAL LETTER CHI--> | |
<my:char code="D" value="44" altvalue="F044" entity="Δ"/> <!--GREEK CAPITAL LETTER DELTA--> | |
<my:char code="E" value="45" altvalue="F045" entity="Ε"/> <!--GREEK CAPITAL LETTER EPSILON--> | |
<my:char code="F" value="46" altvalue="F046" entity="Φ"/> <!--GREEK CAPITAL LETTER PHI--> | |
<my:char code="G" value="47" altvalue="F047" entity="Γ"/> <!--GREEK CAPITAL LETTER GAMMA--> | |
<my:char code="H" value="48" altvalue="F048" entity="Η"/> <!--GREEK CAPITAL LETTER ETA--> | |
<my:char code="I" value="49" altvalue="F049" entity="Ι"/> <!--GREEK CAPITAL LETTER IOTA--> | |
<my:char code="J" value="4A" altvalue="F04A" entity="ϑ"/> <!--GREEK THETA SYMBOL--> | |
<my:char code="K" value="4B" altvalue="F04B" entity="Κ"/> <!--GREEK CAPITAL LETTER KAPPA--> | |
<my:char code="L" value="4C" altvalue="F04C" entity="Λ"/> <!--GREEK CAPITAL LETTER LAMDA--> | |
<my:char code="M" value="4D" altvalue="F04D" entity="Μ"/> <!--GREEK CAPITAL LETTER MU--> | |
<my:char code="N" value="4E" altvalue="F04E" entity="Ν"/> <!--GREEK CAPITAL LETTER NU--> | |
<my:char code="O" value="4F" altvalue="F04F" entity="Ο"/> <!--GREEK CAPITAL LETTER OMICRON--> | |
<my:char code="P" value="50" altvalue="F050" entity="Π"/> <!--GREEK CAPITAL LETTER PI--> | |
<my:char code="Q" value="51" altvalue="F051" entity="Θ"/> <!--GREEK CAPITAL LETTER THETA--> | |
<my:char code="R" value="52" altvalue="F052" entity="Ρ"/> <!--GREEK CAPITAL LETTER RHO--> | |
<my:char code="S" value="53" altvalue="F053" entity="Σ"/> <!--GREEK CAPITAL LETTER SIGMA--> | |
<my:char code="T" value="54" altvalue="F054" entity="Τ"/> <!--GREEK CAPITAL LETTER TAU--> | |
<my:char code="U" value="55" altvalue="F055" entity="Υ"/> <!--GREEK CAPITAL LETTER UPSILON--> | |
<my:char code="V" value="56" altvalue="F056" entity="ς"/> <!--GREEK SMALL LETTER FINAL SIGMA--> | |
<my:char code="W" value="57" altvalue="F057" entity="Ω"/> <!--GREEK CAPITAL LETTER OMEGA--> | |
<my:char code="X" value="58" altvalue="F058" entity="Ξ"/> <!--GREEK CAPITAL LETTER XI--> | |
<my:char code="Y" value="59" altvalue="F059" entity="Ψ"/> <!--GREEK CAPITAL LETTER PSI--> | |
<my:char code="Z" value="5A" altvalue="F05A" entity="Ζ"/> <!--GREEK CAPITAL LETTER ZETA--> | |
<my:char code="[" value="5B" altvalue="F05B" entity="["/> <!--LEFT SQUARE BRACKET--> | |
<my:char code="\" value="5C" altvalue="F05C" entity="∴"/> <!--THEREFORE--> | |
<my:char code="]" value="5D" altvalue="F05D" entity="]"/> <!--RIGHT SQUARE BRACKET--> | |
<my:char code="^" value="5E" altvalue="F05E" entity="⊥"/> <!--UP TACK--> | |
<my:char code="_" value="5F" altvalue="F05F" entity="_"/> <!--LOW LINE--> | |
<my:char code="`" value="60" altvalue="F060" entity="‾"/> <!--radical extender # corporate char--> | |
<my:char code="a" value="61" altvalue="F061" entity="α"/> <!--GREEK SMALL LETTER ALPHA--> | |
<my:char code="b" value="62" altvalue="F062" entity="β"/> <!--GREEK SMALL LETTER BETA--> | |
<my:char code="c" value="63" altvalue="F063" entity="χ"/> <!--GREEK SMALL LETTER CHI--> | |
<my:char code="d" value="64" altvalue="F064" entity="δ"/> <!--GREEK SMALL LETTER DELTA--> | |
<my:char code="e" value="65" altvalue="F065" entity="ε"/> <!--GREEK SMALL LETTER EPSILON--> | |
<my:char code="f" value="66" altvalue="F066" entity="φ"/> <!--GREEK SMALL LETTER PHI--> | |
<my:char code="g" value="67" altvalue="F067" entity="γ"/> <!--GREEK SMALL LETTER GAMMA--> | |
<my:char code="h" value="68" altvalue="F068" entity="η"/> <!--GREEK SMALL LETTER ETA--> | |
<my:char code="i" value="69" altvalue="F069" entity="ι"/> <!--GREEK SMALL LETTER IOTA--> | |
<my:char code="j" value="6A" altvalue="F06A" entity="ϖ"/> <!--GREEK PHI SYMBOL--> | |
<my:char code="k" value="6B" altvalue="F06B" entity="κ"/> <!--GREEK SMALL LETTER KAPPA--> | |
<my:char code="l" value="6C" altvalue="F06C" entity="λ"/> <!--GREEK SMALL LETTER LAMDA--> | |
<my:char code="m" value="6D" altvalue="F06D" entity="μ"/> <!--GREEK SMALL LETTER MU--> | |
<my:char code="n" value="6E" altvalue="F06E" entity="ν"/> <!--GREEK SMALL LETTER NU--> | |
<my:char code="o" value="6F" altvalue="F06F" entity="ο"/> <!--GREEK SMALL LETTER OMICRON--> | |
<my:char code="p" value="70" altvalue="F070" entity="π"/> <!--GREEK SMALL LETTER PI--> | |
<my:char code="q" value="71" altvalue="F071" entity="θ"/> <!--GREEK SMALL LETTER THETA--> | |
<my:char code="r" value="72" altvalue="F072" entity="ρ"/> <!--GREEK SMALL LETTER RHO--> | |
<my:char code="s" value="73" altvalue="F073" entity="σ"/> <!--GREEK SMALL LETTER SIGMA--> | |
<my:char code="t" value="74" altvalue="F074" entity="τ"/> <!--GREEK SMALL LETTER TAU--> | |
<my:char code="u" value="75" altvalue="F075" entity="υ"/> <!--GREEK SMALL LETTER UPSILON--> | |
<my:char code="v" value="76" altvalue="F076" entity="ϖ"/> <!--GREEK PI SYMBOL--> | |
<my:char code="w" value="77" altvalue="F077" entity="ω"/> <!--GREEK SMALL LETTER OMEGA--> | |
<my:char code="x" value="78" altvalue="F078" entity="ξ"/> <!--GREEK SMALL LETTER XI--> | |
<my:char code="y" value="79" altvalue="F079" entity="ψ"/> <!--GREEK SMALL LETTER PSI--> | |
<my:char code="z" value="7A" altvalue="F07A" entity="ζ"/> <!--GREEK SMALL LETTER ZETA--> | |
<!--<my:char code="{" value="7B" altvalue="F07B" entity="{"/>--> <!--LEFT CURLY BRACKET--> | |
<my:char code="{{" value="7B" altvalue="F07B" entity="{{"/> <!--LEFT CURLY BRACKET--> | |
<my:char code="|" value="7C" altvalue="F07C" entity="|"/> <!--VERTICAL LINE--> | |
<!--<my:char code="}" value="7D" altvalue="F07D" entity="}"/>--> <!--RIGHT CURLY BRACKET--> | |
<my:char code="}}" value="7D" altvalue="F07D" entity="}}"/> <!--RIGHT CURLY BRACKET--> | |
<my:char code="~" value="7E" altvalue="F07E" entity="∼"/> <!--TILDE OPERATOR--> | |
<my:char code=" " value="A0" altvalue="F0A0" entity="€"/> <!--EURO SIGN--> | |
<my:char code="¡" value="A1" altvalue="F0A1" entity="ϒ"/> <!--GREEK UPSILON WITH HOOK SYMBOL--> | |
<my:char code="¢" value="A2" altvalue="F0A2" entity="′"/> <!--PRIME # minute--> | |
<my:char code="£" value="A3" altvalue="F0A3" entity="≤"/> <!--LESS-THAN OR EQUAL TO--> | |
<my:char code="¤" value="A4" altvalue="F0A4" entity="⁄"/> <!--FRACTION SLASH--> | |
<my:char code="¥" value="A5" altvalue="F0A5" entity="∞"/> <!--INFINITY--> | |
<my:char code="¦" value="A6" altvalue="F0A6" entity="ƒ"/> <!--LATIN SMALL LETTER F WITH HOOK--> | |
<my:char code="§" value="A7" altvalue="F0A7" entity="♣"/> <!--BLACK CLUB SUIT--> | |
<my:char code="¨" value="A8" altvalue="F0A8" entity="♦"/> <!--BLACK DIAMOND SUIT--> | |
<my:char code="©" value="A9" altvalue="F0A9" entity="♥"/> <!--BLACK HEART SUIT--> | |
<my:char code="ª" value="AA" altvalue="F0AA" entity="♠"/> <!--BLACK SPADE SUIT--> | |
<my:char code="«" value="AB" altvalue="F0AB" entity="↔"/> <!--LEFT RIGHT ARROW--> | |
<my:char code="¬" value="AC" altvalue="F0AC" entity="←"/> <!--LEFTWARDS ARROW--> | |
<my:char code="­" value="AD" altvalue="F0AD" entity="↑"/> <!--UPWARDS ARROW--> | |
<my:char code="®" value="AE" altvalue="F0AE" entity="→"/> <!--RIGHTWARDS ARROW--> | |
<my:char code="¯" value="AF" altvalue="F0AF" entity="↓"/> <!--DOWNWARDS ARROW--> | |
<my:char code="°" value="B0" altvalue="F0B0" entity="°"/> <!--DEGREE SIGN--> | |
<my:char code="±" value="B1" altvalue="F0B1" entity="±"/> <!--PLUS-MINUS SIGN--> | |
<my:char code="²" value="B2" altvalue="F0B2" entity="″"/> <!--DOUBLE PRIME # second--> | |
<my:char code="³" value="B3" altvalue="F0B3" entity="≥"/> <!--GREATER-THAN OR EQUAL TO--> | |
<my:char code="´" value="B4" altvalue="F0B4" entity="×"/> <!--MULTIPLICATION SIGN--> | |
<my:char code="µ" value="B5" altvalue="F0B5" entity="∝"/> <!--PROPORTIONAL TO--> | |
<my:char code="¶" value="B6" altvalue="F0B6" entity="∂"/> <!--PARTIAL DIFFERENTIAL--> | |
<my:char code="·" value="B7" altvalue="F0B7" entity="•"/> <!--BULLET--> | |
<my:char code="¸" value="B8" altvalue="F0B8" entity="÷"/> <!--DIVISION SIGN--> | |
<my:char code="¹" value="B9" altvalue="F0B9" entity="≠"/> <!--NOT EQUAL TO--> | |
<my:char code="º" value="BA" altvalue="F0BA" entity="≡"/> <!--IDENTICAL TO--> | |
<my:char code="»" value="BB" altvalue="F0BB" entity="≈"/> <!--ALMOST EQUAL TO--> | |
<my:char code="¼" value="BC" altvalue="F0BC" entity="…"/> <!--HORIZONTAL ELLIPSIS--> | |
<my:char code="½" value="BD" altvalue="F0BD" entity="⏐"/> <!--VERTICAL LINE EXTENSION (for arrows) # for Unicode 4.0 and later--> | |
<my:char code="¾" value="BE" altvalue="F0BE" entity="⎯"/> <!--HORIZONTAL LINE EXTENSION (for arrows) # for Unicode 3.2 and later--> | |
<my:char code="¿" value="BF" altvalue="F0BF" entity="↵"/> <!--DOWNWARDS ARROW WITH CORNER LEFTWARDS--> | |
<my:char code="À" value="C0" altvalue="F0C0" entity="ℵ"/> <!--ALEF SYMBOL--> | |
<my:char code="Á" value="C1" altvalue="F0C1" entity="ℑ"/> <!--BLACK-LETTER CAPITAL I--> | |
<my:char code="Â" value="C2" altvalue="F0C2" entity="ℜ"/> <!--BLACK-LETTER CAPITAL R--> | |
<my:char code="Ã" value="C3" altvalue="F0C3" entity="℘"/> <!--SCRIPT CAPITAL P--> | |
<my:char code="Ä" value="C4" altvalue="F0C4" entity="⊗"/> <!--CIRCLED TIMES--> | |
<my:char code="Å" value="C5" altvalue="F0C5" entity="⊕"/> <!--CIRCLED PLUS--> | |
<my:char code="Æ" value="C6" altvalue="F0C6" entity="∅"/> <!--EMPTY SET--> | |
<my:char code="Ç" value="C7" altvalue="F0C7" entity="∩"/> <!--INTERSECTION--> | |
<my:char code="È" value="C8" altvalue="F0C8" entity="∪"/> <!--UNION--> | |
<my:char code="É" value="C9" altvalue="F0C9" entity="⊃"/> <!--SUPERSET OF--> | |
<my:char code="Ê" value="CA" altvalue="F0CA" entity="⊇"/> <!--SUPERSET OF OR EQUAL TO--> | |
<my:char code="Ë" value="CB" altvalue="F0CB" entity="⊄"/> <!--NOT A SUBSET OF--> | |
<my:char code="Ì" value="CC" altvalue="F0CC" entity="⊂"/> <!--SUBSET OF--> | |
<my:char code="Í" value="CD" altvalue="F0CD" entity="⊆"/> <!--SUBSET OF OR EQUAL TO--> | |
<my:char code="Î" value="CE" altvalue="F0CE" entity="∈"/> <!--ELEMENT OF--> | |
<my:char code="Ï" value="CF" altvalue="F0CF" entity="∉"/> <!--NOT AN ELEMENT OF--> | |
<my:char code="Ð" value="D0" altvalue="F0D0" entity="∠"/> <!--ANGLE--> | |
<my:char code="Ñ" value="D1" altvalue="F0D1" entity="∇"/> <!--NABLA--> | |
<my:char code="Ò" value="D2" altvalue="F0D2" entity="®"/> <!--REGISTERED SIGN # serif--> | |
<my:char code="Ó" value="D3" altvalue="F0D3" entity="©"/> <!--COPYRIGHT SIGN # serif--> | |
<my:char code="Ô" value="D4" altvalue="F0D4" entity="™"/> <!--TRADE MARK SIGN # serif--> | |
<my:char code="Õ" value="D5" altvalue="F0D5" entity="∏"/> <!--N-ARY PRODUCT--> | |
<my:char code="Ö" value="D6" altvalue="F0D6" entity="√"/> <!--SQUARE ROOT--> | |
<my:char code="×" value="D7" altvalue="F0D7" entity="."/> <!--DOT OPERATOR--> | |
<my:char code="Ø" value="D8" altvalue="F0D8" entity="¬"/> <!--NOT SIGN--> | |
<my:char code="Ù" value="D9" altvalue="F0D9" entity="∧"/> <!--LOGICAL AND--> | |
<my:char code="Ú" value="DA" altvalue="F0DA" entity="∨"/> <!--LOGICAL OR--> | |
<my:char code="Û" value="DB" altvalue="F0DB" entity="⇔"/> <!--LEFT RIGHT DOUBLE ARROW--> | |
<my:char code="Ü" value="DC" altvalue="F0DC" entity="⇐"/> <!--LEFTWARDS DOUBLE ARROW--> | |
<my:char code="Ý" value="DD" altvalue="F0DD" entity="⇑"/> <!--UPWARDS DOUBLE ARROW--> | |
<my:char code="Þ" value="DE" altvalue="F0DE" entity="⇒"/> <!--RIGHTWARDS DOUBLE ARROW--> | |
<my:char code="ß" value="DF" altvalue="F0DF" entity="⇓"/> <!--DOWNWARDS DOUBLE ARROW--> | |
<my:char code="à" value="E0" altvalue="F0E0" entity="⋄"/> <!--DIAMOND OPERATOR--> | |
<my:char code="á" value="E1" altvalue="F0E1" entity="〈"/> <!--LEFT ANGLE BRACKET--> | |
<my:char code="â" value="E2" altvalue="F0E2" entity="®"/> <!--REGISTERED SIGN # sans serif--> | |
<my:char code="ã" value="E3" altvalue="F0E3" entity="©"/> <!--COPYRIGHT SIGN # sans serif--> | |
<my:char code="ä" value="E4" altvalue="F0E4" entity="™"/> <!--TRADE MARK SIGN # sans serif--> | |
<my:char code="å" value="E5" altvalue="F0E5" entity="∑"/> <!--N-ARY SUMMATION--> | |
<my:char code="æ" value="E6" altvalue="F0E6" entity="⎛"/> <!--LEFT PARENTHESIS UPPER HOOK # for Unicode 3.2 and later--> | |
<my:char code="ç" value="E7" altvalue="F0E7" entity="⎜"/> <!--LEFT PARENTHESIS EXTENSION # for Unicode 3.2 and later--> | |
<my:char code="è" value="E8" altvalue="F0E8" entity="⎝"/> <!--LEFT PARENTHESIS LOWER HOOK # for Unicode 3.2 and later--> | |
<my:char code="é" value="E9" altvalue="F0E9" entity="⎡"/> <!--LEFT SQUARE BRACKET UPPER CORNER # for Unicode 3.2 and later--> | |
<my:char code="ê" value="EA" altvalue="F0EA" entity="⎢"/> <!--LEFT SQUARE BRACKET EXTENSION # for Unicode 3.2 and later--> | |
<my:char code="ë" value="EB" altvalue="F0EB" entity="⎣"/> <!--LEFT SQUARE BRACKET LOWER CORNER # for Unicode 3.2 and later--> | |
<my:char code="ì" value="EC" altvalue="F0EC" entity="⎧"/> <!--LEFT CURLY BRACKET UPPER HOOK # for Unicode 3.2 and later--> | |
<my:char code="í" value="ED" altvalue="F0ED" entity="⎨"/> <!--LEFT CURLY BRACKET MIDDLE PIECE # for Unicode 3.2 and later--> | |
<my:char code="î" value="EE" altvalue="F0EE" entity="⎩"/> <!--LEFT CURLY BRACKET LOWER HOOK # for Unicode 3.2 and later--> | |
<my:char code="ï" value="EF" altvalue="F0EF" entity="⎪"/> <!--CURLY BRACKET EXTENSION # for Unicode 3.2 and later--> | |
<my:char code="ð" value="F0" altvalue="F0F0" entity=""/> <!--Apple logo--> | |
<my:char code="ñ" value="F1" altvalue="F0F1" entity="〉"/> <!--RIGHT ANGLE BRACKET--> | |
<my:char code="ò" value="F2" altvalue="F0F2" entity="∫"/> <!--INTEGRAL--> | |
<my:char code="ó" value="F3" altvalue="F0F3" entity="⌠"/> <!--TOP HALF INTEGRAL--> | |
<my:char code="ô" value="F4" altvalue="F0F4" entity="⎮"/> <!--INTEGRAL EXTENSION # for Unicode 3.2 and later--> | |
<my:char code="õ" value="F5" altvalue="F0F5" entity="⌡"/> <!--BOTTOM HALF INTEGRAL--> | |
<my:char code="ö" value="F6" altvalue="F0F6" entity="⎞"/> <!--RIGHT PARENTHESIS UPPER HOOK # for Unicode 3.2 and later--> | |
<my:char code="÷" value="F7" altvalue="F0F7" entity="⎟"/> <!--RIGHT PARENTHESIS EXTENSION # for Unicode 3.2 and later--> | |
<my:char code="ø" value="F8" altvalue="F0F8" entity="⎠"/> <!--RIGHT PARENTHESIS LOWER HOOK # for Unicode 3.2 and later--> | |
<my:char code="ù" value="F9" altvalue="F0F9" entity="⎤"/> <!--RIGHT SQUARE BRACKET UPPER CORNER # for Unicode 3.2 and later--> | |
<my:char code="ú" value="FA" altvalue="F0FA" entity="⎥"/> <!--RIGHT SQUARE BRACKET EXTENSION # for Unicode 3.2 and later--> | |
<my:char code="û" value="FB" altvalue="F0FB" entity="⎦"/> <!--RIGHT SQUARE BRACKET LOWER CORNER # for Unicode 3.2 and later--> | |
<my:char code="ü" value="FC" altvalue="F0FC" entity="⎫"/> <!--RIGHT CURLY BRACKET UPPER HOOK # for Unicode 3.2 and later--> | |
<my:char code="ý" value="FD" altvalue="F0FD" entity="⎬"/> <!--RIGHT CURLY BRACKET MIDDLE PIECE # for Unicode 3.2 and later--> | |
<my:char code="þ" value="FE" altvalue="F0FE" entity="⎭"/> <!--RIGHT CURLY BRACKET LOWER HOOK # for Unicode 3.2 and later--> | |
</my:recoding-table> | |
<!-- ============== --> | |
<!-- Wingdings font --> | |
<!-- ============== --> | |
<!-- 03/06/2006: Provided a comprehensive recoding table for many more Wingdings characters --> | |
<!-- Attention! If you use @code or @entity attribute value (also for searching), you should use only first character of attribute value! --> | |
<!-- In some cases value of attributes @code and @entity is doubled for compatibility reason. --> | |
<!-- See http://www.w3.org/TR/xslt#attribute-value-templates 7.6.2 Attribute Value Templates --> | |
<!-- It is an error if a right curly brace occurs in an attribute value template outside an expression without being followed by a second right curly brace. --> | |
<my:recoding-table font="Wingdings"> | |
<my:char code=""" value="22" altvalue="F022" entity="✂"/> | |
<my:char code="#" value="23" altvalue="F023" entity="✁"/> | |
<my:char code="(" value="28" altvalue="F028" entity="☎"/> | |
<my:char code="*" value="2A" altvalue="F02A" entity="✉"/> | |
<my:char code=">" value="3E" altvalue="F03E" entity="☢"/> | |
<my:char code="?" value="3F" altvalue="F03F" entity="✍"/> | |
<my:char code="A" value="41" altvalue="F041" entity="✌"/> | |
<my:char code="F" value="46" altvalue="F046" entity="☞"/> | |
<my:char code="L" value="4C" altvalue="F04C" entity="☹"/> | |
<my:char code="X" value="58" altvalue="F058" entity="✠"/> | |
<my:char code="Y" value="59" altvalue="F059" entity="✡"/> | |
<my:char code="Z" value="5A" altvalue="F05A" entity="☪"/> | |
<my:char code="[" value="5B" altvalue="F05B" entity="☯"/> | |
<my:char code="]" value="5D" altvalue="F05D" entity="☸"/> | |
<my:char code="R" value="52" altvalue="F052" entity="☼"/> | |
<my:char code="^" value="5E" altvalue="F05E" entity="♈"/> | |
<my:char code="_" value="5F" altvalue="F05F" entity="♉"/> | |
<my:char code="`" value="60" altvalue="F060" entity="♊"/> | |
<my:char code="a" value="61" altvalue="F061" entity="♋"/> | |
<my:char code="b" value="62" altvalue="F062" entity="♌"/> | |
<my:char code="c" value="63" altvalue="F063" entity="♍"/> | |
<my:char code="d" value="64" altvalue="F064" entity="♎"/> | |
<my:char code="e" value="65" altvalue="F065" entity="♏"/> | |
<my:char code="f" value="66" altvalue="F066" entity="♐"/> | |
<my:char code="g" value="67" altvalue="F067" entity="♑"/> | |
<my:char code="h" value="68" altvalue="F068" entity="♒"/> | |
<my:char code="i" value="69" altvalue="F069" entity="♓"/> | |
<my:char code="l" value="6C" altvalue="F06C" entity="●"/> | |
<my:char code="m" value="6D" altvalue="F06D" entity="❍"/> | |
<my:char code="n" value="6E" altvalue="F06E" entity="■"/> | |
<my:char code="o" value="6F" altvalue="F06F" entity="□"/> | |
<my:char code="q" value="71" altvalue="F071" entity="❑"/> | |
<my:char code="r" value="72" altvalue="F072" entity="❒"/> | |
<my:char code="v" value="76" altvalue="F076" entity="❖"/> | |
<my:char code="w" value="77" altvalue="F077" entity="◆"/> | |
<!--<my:char code="{" value="7B" altvalue="F07B" entity="❀"/>--> | |
<my:char code="{{" value="7B" altvalue="F07B" entity="❀"/> | |
<!--<my:char code="}" value="7D" altvalue="F07D" entity="❝"/>--> | |
<my:char code="}}" value="7D" altvalue="F07D" entity="❝"/> | |
<my:char code="~" value="7E" altvalue="F07E" entity="❞"/> | |
<my:char code="" value="81" altvalue="F081" entity="①"/> | |
<my:char code="‚" value="82" altvalue="F082" entity="②"/> | |
<my:char code="ƒ" value="83" altvalue="F083" entity="③"/> | |
<my:char code="„" value="84" altvalue="F084" entity="④"/> | |
<my:char code="…" value="85" altvalue="F085" entity="⑤"/> | |
<my:char code="†" value="86" altvalue="F086" entity="⑥"/> | |
<my:char code="‡" value="87" altvalue="F087" entity="⑦"/> | |
<my:char code="ˆ" value="88" altvalue="F088" entity="⑧"/> | |
<my:char code="‰" value="89" altvalue="F089" entity="⑨"/> | |
<my:char code="Š" value="8A" altvalue="F08A" entity="⑩"/> | |
<my:char code="Œ" value="8C" altvalue="F08C" entity="❶"/> | |
<my:char code="" value="8D" altvalue="F08D" entity="❷"/> | |
<my:char code="Ž" value="8E" altvalue="F08E" entity="❸"/> | |
<my:char code="" value="8F" altvalue="F08F" entity="❹"/> | |
<my:char code="" value="90" altvalue="F090" entity="❺"/> | |
<my:char code="‘" value="91" altvalue="F091" entity="❻"/> | |
<my:char code="’" value="92" altvalue="F092" entity="❼"/> | |
<my:char code="“" value="93" altvalue="F093" entity="❽"/> | |
<my:char code="”" value="94" altvalue="F094" entity="❾"/> | |
<my:char code="•" value="95" altvalue="F095" entity="❿"/> | |
<my:char code="Ÿ" value="9F" altvalue="F09F" entity="•"/> | |
<my:char code="¡" value="A1" altvalue="F0A1" entity="◌"/> | |
<my:char code="¤" value="A4" altvalue="F0A4" entity="◉"/> | |
<my:char code="¦" value="A6" altvalue="F0A6" entity="❍"/> | |
<my:char code="ª" value="AA" altvalue="F0AA" entity="✦"/> | |
<my:char code="«" value="AB" altvalue="F0AB" entity="★"/> | |
<my:char code="¬" value="AC" altvalue="F0AC" entity="✶"/> | |
<my:char code="­" value="AD" altvalue="F0AD" entity="✷"/> | |
<my:char code="®" value="AE" altvalue="F0AE" entity="✹"/> | |
<my:char code="¯" value="AF" altvalue="F0AF" entity="✵"/> | |
<my:char code="Õ" value="D5" altvalue="F0D5" entity="⌫"/> | |
<my:char code="Ö" value="D6" altvalue="F0D6" entity="⌦"/> | |
<my:char code="ï" value="EF" altvalue="F0EF" entity="⇦"/> | |
<my:char code="ð" value="F0" altvalue="F0F0" entity="⇨"/> | |
<my:char code="ñ" value="F1" altvalue="F0F1" entity="⇧"/> | |
<my:char code="ò" value="F2" altvalue="F0F2" entity="⇩"/> | |
<my:char code="û" value="FB" altvalue="F0FB" entity="✘"/> | |
<my:char code="ü" value="FC" altvalue="F0FC" entity="✓"/> | |
<my:char code="ý" value="FD" altvalue="F0FD" entity="☒"/> | |
<my:char code="þ" value="FE" altvalue="F0FE" entity="☑"/> | |
</my:recoding-table> | |
""" | |
from bs4 import BeautifulSoup | |
import json | |
soup = BeautifulSoup(table) | |
windows_font_map = {} | |
for f in soup.find_all('my:recoding-table'): | |
font = f.get('font') | |
windows_font_map[font] = {} | |
for map in f.find_all('my:char'): | |
alt = map.get('altvalue') | |
windows_font_map[font][alt] = {} | |
windows_font_map[font][alt]['code'] = map.get('code') | |
windows_font_map[font][alt]['value'] = map.get('value') | |
windows_font_map[font][alt]['entity'] = map.get('entity') | |
with open('windows_font_mapping.json', 'w') as outfile: | |
json.dump(windows_font_map, outfile) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment