windows - Windows“符号”或 WGL4 字体代码指向 UNICODE 映射?
问题描述
我们使用一些 OCR,如 PDF 到 Word 转换器,这是我们能找到的最好的,但它使用符号字体表,例如,度数符号显示为代码点 U+F0B0,这不是一个有效的 UNICODE 点,但它映射到正确的 UNICODE 度码点 U+00B0。事实上,除了一个符号字体字形之外,所有的符号字体字形都有一个正确的 UNICODE 字符,但我正在拉扯我的头发,没有找到任何可以显示简单映射的表格。
这个页面http://www.alanwood.net/demos/symbol.html几乎有它,但它实际上并没有显示符号字体代码点,而是依赖于其他一些映射,坦率地说,我不明白全部。同一个站点有相关页面,但我找不到 F0B0 引用的学位。
我找到了这些特殊字体到旧 groff 缩写的 groff 映射,这是我能得到的最好的,我可以在 symbol.map 中找到F0B0到缩写“de”的映射,然后我可以在text.map中找到从 00B0 到“de”的映射。因此,如果我要将这两个文件重塑为关系表,然后加入缩写,我想我可以创建一个映射。
但令我震惊的是,以前没有人必须这样做?任何人?
解决方案
嗯,我想我并没有要求关于所有可能的符号字体的第一原则的论文,不,我要求的是 Windows“符号”字体、WGL4 代码页或我认为的任何“单型符号”字体那是。
所以这是我从我在问题中指出的这些 groff 字体缩写映射生成映射所做的:
wget https://opensource.apple.com/source/groff/groff-39/groff/font/devlj4/generate/symbol.map
sed -e '/^#/d' -e '/^ *$/d' -e 's/[\t ][\t ]*/|/g' symbol.map |cut -d\| -f2,3 |sort -t\| -k2 >symbol.map.dat
wget https://opensource.apple.com/source/groff/groff-39/groff/font/devlj4/generate/text.map
sed -e '/^#/d' -e '/^ *$/d' -e 's/[\t ][\t ]*/|/g' text.map |cut -d\| -f2,3 |sort -t\| -k2 >text.map.dat
wget https://opensource.apple.com/source/groff/groff-39/groff/font/devlj4/generate/special.map
sed -e '/^#/d' -e '/^ *$/d' -e 's/[\t ][\t ]*/|/g' special.map |cut -d\| -f2,3 |sort -t\| -k2 >special.map.dat
cat text.map.dat special.map.dat |sort -t\| -k2 > unicode.map.dat
join -t\| -1 2 -2 2 symbol.map.dat unicode.map.dat
然后我从中创建一个 XML 映射表,我在我的 XSLT 中使用它:
join -t\| -1 2 -2 2 symbol.map.dat unicode.map.dat |sed -e 's~\([^|]*\)|\([^|]*\)|\([^|]*\)~<a abb="\1" sym="\&#x\2;" uni="\&#x\3;"/>~'
这会创建:
<a abb="" sym="" uni="≃"/>
<a abb="!" sym="" uni="!"/>
<a abb="!=" sym="" uni="≠"/>
<a abb="#" sym="" uni="#"/>
<a abb="%" sym="" uni="%"/>
<a abb="&" sym="" uni="&"/>
<a abb="(" sym="" uni="("/>
<a abb=")" sym="" uni=")"/>
<a abb="**" sym="" uni="∗"/>
<a abb="*A" sym="" uni="A"/>
<a abb="*B" sym="" uni="B"/>
<a abb="*C" sym="" uni="Ξ"/>
<a abb="*D" sym="" uni="∆"/>
<a abb="*E" sym="" uni="E"/>
<a abb="*F" sym="" uni="Φ"/>
<a abb="*G" sym="" uni="Γ"/>
<a abb="*H" sym="" uni="Θ"/>
<a abb="*I" sym="" uni="I"/>
<a abb="*K" sym="" uni="K"/>
<a abb="*L" sym="" uni="Λ"/>
<a abb="*M" sym="" uni="M"/>
<a abb="*N" sym="" uni="N"/>
<a abb="*O" sym="" uni="O"/>
<a abb="*P" sym="" uni="Π"/>
<a abb="*Q" sym="" uni="Ψ"/>
<a abb="*R" sym="" uni="P"/>
<a abb="*S" sym="" uni="Σ"/>
<a abb="*T" sym="" uni="T"/>
<a abb="*U" sym="" uni="Υ"/>
<a abb="*W" sym="" uni="Ω"/>
<a abb="*X" sym="" uni="X"/>
<a abb="*Y" sym="" uni="H"/>
<a abb="*Z" sym="" uni="Z"/>
<a abb="*a" sym="" uni="α"/>
<a abb="*b" sym="" uni="β"/>
<a abb="*c" sym="" uni="ξ"/>
<a abb="*d" sym="" uni="δ"/>
<a abb="*e" sym="" uni=""/>
<a abb="*f" sym="" uni="φ"/>
<a abb="*g" sym="" uni="γ"/>
<a abb="*h" sym="" uni="θ"/>
<a abb="*i" sym="" uni="ι"/>
<a abb="*k" sym="" uni="κ"/>
<a abb="*l" sym="" uni="λ"/>
<a abb="*m" sym="" uni="μ"/>
<a abb="*n" sym="" uni="ν"/>
<a abb="*o" sym="" uni="ο"/>
<a abb="*p" sym="" uni="π"/>
<a abb="*q" sym="" uni="ψ"/>
<a abb="*r" sym="" uni="ρ"/>
<a abb="*s" sym="" uni="σ"/>
<a abb="*t" sym="" uni="τ"/>
<a abb="*u" sym="" uni="υ"/>
<a abb="*w" sym="" uni="ω"/>
<a abb="*x" sym="" uni="χ"/>
<a abb="*y" sym="" uni="η"/>
<a abb="*z" sym="" uni="ζ"/>
<a abb="+-" sym="" uni="±"/>
<a abb="+f" sym="" uni="ϕ"/>
<a abb="+h" sym="" uni="ϑ"/>
<a abb="+p" sym="" uni="ϖ"/>
<a abb="," sym="" uni=","/>
<a abb="->" sym="" uni="→"/>
<a abb="." sym="" uni="."/>
<a abb="/" sym="" uni="/"/>
<a abb="/_" sym="" uni="∠"/>
<a abb="0" sym="" uni="0"/>
<a abb="1" sym="" uni="1"/>
<a abb="2" sym="" uni="2"/>
<a abb="3" sym="" uni="3"/>
<a abb="3d" sym="" uni="∴"/>
<a abb="4" sym="" uni="4"/>
<a abb="5" sym="" uni="5"/>
<a abb="6" sym="" uni="6"/>
<a abb="7" sym="" uni="7"/>
<a abb="8" sym="" uni="8"/>
<a abb="9" sym="" uni="9"/>
<a abb=":" sym="" uni=":"/>
<a abb=";" sym="" uni=";"/>
<a abb="<" sym="" uni="<"/>
<a abb="<-" sym="" uni="←"/>
<a abb="<=" sym="" uni="≤"/>
<a abb="<>" sym="" uni="↔"/>
<a abb="=" sym="" uni="="/>
<a abb="==" sym="" uni="≡"/>
<a abb="=~" sym="" uni="≅"/>
<a abb=">" sym="" uni=">"/>
<a abb=">=" sym="" uni="≥"/>
<a abb="?" sym="" uni="?"/>
<a abb="AN" sym="" uni="∧"/>
<a abb="Ah" sym="" uni="ℵ"/>
<a abb="CL" sym="" uni="♣"/>
<a abb="CR" sym="" uni="↵"/>
<a abb="DI" sym="" uni="♦"/>
<a abb="Eu" sym="" uni="€"/>
<a abb="HE" sym="" uni="♥"/>
<a abb="Im" sym="" uni="ℑ"/>
<a abb="OR" sym="" uni="∨"/>
<a abb="Re" sym="" uni="ℜ"/>
<a abb="SP" sym="" uni="♠"/>
<a abb="[" sym="" uni="["/>
<a abb="]" sym="" uni="]"/>
<a abb="_" sym="" uni="_"/>
<a abb="ap" sym="" uni="~"/>
<a abb="arrowvertbt" sym="" uni="⇓"/>
<a abb="arrowverttp" sym="" uni="⇑"/>
<a abb="c*" sym="" uni="⊗"/>
<a abb="c+" sym="" uni="⊕"/>
<a abb="ca" sym="" uni="∩"/>
<a abb="cu" sym="" uni="∪"/>
<a abb="da" sym="" uni="↓"/>
<a abb="de" sym="" uni="°"/>
<a abb="di" sym="" uni="÷"/>
<a abb="es" sym="" uni="∅"/>
<a abb="f/" sym="" uni="∕"/>
<a abb="fa" sym="" uni="∀"/>
<a abb="fm" sym="" uni="′"/>
<a abb="gr" sym="" uni="∇"/>
<a abb="hA" sym="" uni="⇔"/>
<a abb="ib" sym="" uni="⊆"/>
<a abb="if" sym="" uni="∞"/>
<a abb="integral" sym="" uni="∫"/>
<a abb="ip" sym="" uni="⊇"/>
<a abb="lA" sym="" uni="⇐"/>
<a abb="la" sym="" uni="〈"/>
<a abb="lz" sym="" uni="◇"/>
<a abb="mi" sym="" uni="−"/>
<a abb="mo" sym="" uni="∈"/>
<a abb="mu" sym="" uni="×"/>
<a abb="nb" sym="" uni="⊄"/>
<a abb="nm" sym="" uni="∉"/>
<a abb="no" sym="" uni="¬"/>
<a abb="pd" sym="" uni="∂"/>
<a abb="pl" sym="" uni="+"/>
<a abb="pp" sym="" uni="⊥"/>
<a abb="product" sym="" uni="∏"/>
<a abb="pt" sym="" uni="∝"/>
<a abb="rA" sym="" uni="⇒"/>
<a abb="ra" sym="" uni="〉"/>
<a abb="sb" sym="" uni="⊂"/>
<a abb="sd" sym="" uni="″"/>
<a abb="sp" sym="" uni="⊃"/>
<a abb="st" sym="" uni="∍"/>
<a abb="sum" sym="" uni="∑"/>
<a abb="te" sym="" uni="∃"/>
<a abb="ts" sym="" uni="ς"/>
<a abb="u2026" sym="" uni="…"/>
<a abb="u2320" sym="" uni="⌠"/>
<a abb="u2321" sym="" uni="⌡"/>
<a abb="ua" sym="" uni="↑"/>
<a abb="wp" sym="" uni="℘"/>
<a abb="~=" sym="" uni="≈"/>
或者我还可以创建这些无效 UNICODE 点的查找字符串和位置匹配的正确 UNICODE 点的字符串:
join -t\| -1 2 -2 2 symbol.map.dat unicode.map.dat |sed -e 's~\([^|]*\)|\([^|]*\)|\([^|]*\)~\1|\&#x\2;|\&#x\3;~' > symbol-unicode.map.dat
echo '<a sym="'$(cut -d\| -f2 symbol-unicode.map.dat |tr -d '\n')'" uni="'$(cut -d\| -f3 symbol-unicode.map.dat |tr -d '\n')'"/>'
这给了我:
<a sym=""
uni="≃!≠#%&()∗ABΞ∆EΦΓΘIKΛMNOΠΨPΣTΥΩXHZαβξδφγθικλμνοπψρστυωχηζ±ϕϑϖ,→./∠0123∴456789:;<←≤↔=≡≅>≥?∧ℵ♣↵♦€♥ℑ∨ℜ♠[]_~⇓⇑⊗⊕∩∪↓°÷∅∕∀′∇⇔⊆∞∫⊇⇐〈◇−∈×⊄∉¬∂+⊥∏∝⇒〉⊂″⊃∍∑∃ς…⌠⌡↑℘≈">
顺便说一句,Stack Exchange 平台有一件有趣的事情,我可以向您展示我在这里拥有的符号,首先是坏的,它们可能会全部显示为框,除非您调整本地 CSS style="font-family: 'Symbol';"
:
梯图 后期
现在是UNIICODE字符串:
≃!≠#%&()∗ABΞΔEΦΓΘIKΛMNOΠΨPΣTΥΩXHZαβξδφγθικλμνοπψρστυωχηζ±φϑϖ,→./∠0123∴456789:;<←≤↔=≡≅>≥?∧ℵ♣↵ℜ℠€♥[ℑ∨℄ℜ℠♥] ~⇓⇑⊗⊕∩∪↓°÷∅∕∀′∇⇔⊆∞∫⊇⇐〈◇−∈×⊄∉¬∂+⊥∏∝⇒〉⊂″⊃∍∑∃ς…⌠⌡↑℘≈
很整洁。
也许它可以帮助其他需要快速实用解决方案的人在同样的问题上苦苦挣扎。别客气。
推荐阅读
- python - Python SQLAlchemy 插入
- java - 如何在项目列表枚举上执行百分比?
- mysql - 插入或更新到没有主键的表
- python - Python对象的坐标
- javascript - Fetch POST 无法将正文作为 JSON 传递
- python - 使用 Django 管理面板添加数据时出错
- groovy - 如何使用 Artifactory 的校验和 API 获取工件文件的 URI,其中多个工件具有相同的 SHA-1 / SHA-256 值,也就是文件的内容
- uiswitch - 多个 UISwitches 打开/关闭
- string - string - Python 3.5 需要写一个类似字节的对象,而不是'str'
- properties - 这部分不会变色