将MathematicalPI符号名称转换为Unicode

时间:2012-11-02 02:44:57

标签: pdf unicode

我正在处理PDF文件,并希望尽可能将字符转换为Unicode。 MathematicalPI系列字符集似乎使用它们自己的符号名称(例如“H11001”)。通过探索,我构建了一个表(对于MathematicalPI-One),如:

    <chars>
        <char charname="H11001" codepoint16="0X2B" codepoint="43" unicodeName="PLUS"/>
        <char charname="H11002" codepoint16="0x2D" codepoint="45" unicodeName="MINUS"/>
        <char charname="H11003" codepoint16="0XD7" codepoint="215" unicodeName="MULTIPLICATION SIGN"/> 
         <char charname="H11005" codepoint16="0X3D" codepoint="61" unicodeName="EQUALS"/>
    </char> 

任何人都可以指向我这样的现有翻译表(理想情况下适用于所有MathematicalPI集)。 [我不想要图形显示字形,因为这意味着每个字母必须被查找为Unicode等效字符。]

此外,似乎有一个类似的符号资源,其中的charnames的形式为C223(版权所有)。有关此的任何信息将不胜感激。

更新: 我需要的东西远远超出@ user1808924的答案 - 我已经编译了自己的(部分)翻译表,所以它当然可以构建一个。可以下载并显示MathematicalPI中的字形列表(可能数百个),并通过Unicode规范进行等效(对于大多数人,我认为有明确的等价)。一个令人满意的答案可能包括一个包含数百个等价的表格或一个明确的声明,这将违反字体创建者的版权。

更新:在@minopret和@Miguel之间,当然可以构建映射。 MathPi集很好地定义了 - 几百个 - 并且shapecatcher可以很容易地以图形方式找到最好的字形。映射不是确定的(即使用Adobe的标记),但它是值得的。我怀疑会出现两种不同的字形基本相同的情况,因此视觉映射不起作用 - 例如是等边三角形INCREMENT还是GREEK CAPITAL LETTER DELTA?

我怀疑我个人会完成一个完整的表 - 我不知道一些符号是什么意思。但我希望生成一个用于科学技术医学(STM)出版的子集。

@ user1808924我注意到你在SO的第一天回答了这个问题。通常会提供赏金问题(如本例所示),以解决难以解决的问题,但很难找到答案。除非您具备该领域的专业知识,否则提供意见或猜测通常没有用。

4 个答案:

答案 0 :(得分:4)

我认为根本没有这样的翻译表。

在我看来MathematicalPI字体系列是合成字体系列,它是通过从一些较大的未知集合中选择元素的子集而创建的 ad hoc MathematicalPI字体系列的 raison d'être似乎是简单代数运算符(加号,减号,乘法,除法)和等号的表示。 charnames(即H1100X)似乎是工件,因为它们在代码点值之后没有排序(例如,等号是最后一个)。

通过查看可用数据,我可以建议缺少的H11004 charname应该对应于除法运算符。但是,无法预测它是否应该由Unicode“solidus”字符(即。U+002F),“division sign”字符(即。U+00F7)或其他内容来表示。

答案 1 :(得分:3)

以下是我在Adobe Forums网站上发布的内容:

我可能错了,但我认为没有正式的对应表。

使用六种Type 1字体和由它们制作的OpenType字体,我汇编了两个显示所有字形的PDF。它们旁边是字形名称(对于Type 1字体)和Unicode值(对于OpenType字体)。如果您交叉引用这两个PDF,您应该能够组合您正在寻找的相关列表。

Mathematical Pi

希望这有帮助。

米格尔

答案 2 :(得分:2)

以下是Adobe的Miguel Sousa在其Typography forum message中提供的最佳信息:

对于它的价值和总结我在这个答案的评论中添加的信息,这是我之前能够找到的,除此之外。

CTAN和“加州大学圣地亚哥分校数学”成员的“mathalfa”包的创建者Michael Sharpe在this archive file中对数学Pi进行了TeX定义。我成功地猜到me.com上过时的文件位置已移至他的大学网站。 “.vf”文件将Mathematical Pi的字符映射到TeX数学代码点。它们是二进制的。映射数据是使用作为TeX发行版的一部分的工具“vftovp”转储到可读文本的一部分。执行该转储后,我们发现映射的字符是:

mathpibb: 'hyphen-minus' 0-9 A-Z a-z
mathpical: percent 'hyphen-minus' A-Z
mathpifrak: 'hyphen-minus' 0-9 A-Z a-z
mh2s: A-Z

这样就解释了包名“mathalfa”。他只承担了使用字母和数字的任务,但几乎没有。我们必须查看上面的文件以获取符号的映射。

我认为MathPi的部分内容,例如MathPi 1的希腊字母,使用与Adobe Symbol相同的编码,这里记录了http://unicode.org/Public/MAPPINGS/VENDORS/ADOBE/symbol.txt

尝试将符号映射到Unicode时,找到Unicode点的好方法是在屏幕上绘制字形:http://shapecatcher.com

答案 3 :(得分:1)

FWIW我当前的映射表(来自阅读使用MathPI创建的文档,是:

<codePoint name="H9251" unicode="U+03B1" unicodeName="GREEK LOWERCASE LETTER ALPHA"/>
<codePoint name="H9252" unicode="U+03B2" unicodeName="GREEK LOWERCASE LETTER BETA"/>
<codePoint name="H9253" unicode="U+03B3" unicodeName="GREEK SMALL LETTER GAMMA"/>
<codePoint name="H9254" unicode="U+03B4" unicodeName="GREEK SMALL LETTER DELTA"/>
<codePoint name="H9255" unicode="U+03B5" unicodeName="GREEK SMALL LETTER EPSILON"/>
<codePoint name="H9256" unicode="U+03B6" unicodeName="GREEK SMALL LETTER ZETA"/>
<codePoint name="H9257" unicode="U+03B7" unicodeName="GREEK SMALL LETTER ETA"/>
<codePoint name="H9258" unicode="U+03B8" unicodeName="GREEK SMALL LETTER THETA"/>
<codePoint name="H9259" unicode="U+03B9" unicodeName="GREEK SMALL LETTER IOTA"/>
<codePoint name="H9260" unicode="U+03BA" unicodeName="GREEK SMALL LETTER KAPPA"/>
<codePoint name="H9261" unicode="U+03BB" unicodeName="GREEK SMALL LETTER LAMBDA"/>
<codePoint name="H9262" unicode="U+03BC" unicodeName="GREEK LOWERCASE LETTER MU"/>

<codePoint name="H11001" unicode="U+002B" decimal="43" unicodeName="PLUS"/>
<codePoint name="H11002" unicode="U+002D" decimal="45" unicodeName="MINUS"/>
<codePoint name="H11003" unicode="U+00D7" decimal="215" unicodeName="MULTIPLICATION SIGN"/> 
<codePoint name="H11005" unicode="U+003D" decimal="61" unicodeName="EQUALS"/> 
<codePoint name="H11011" unicode="U+007E" decimal="126" unicodeName="TILDE"/> 
<codePoint name="H11021" unicode="U+003C" decimal="60" unicodeName="LESS" htmlName="lt"/> 
<codePoint name="H11022" unicode="U+003E" decimal="62" unicodeName="" htmlName="gt"/> 
<codePoint name="H11032" unicode="U+0027" decimal="39" unicodeName="APOSTROPHE" htmlName="apos"/> 
<codePoint name="H11034" unicode="U+00B0" decimal="176" unicodeName="DEGREE SIGN" htmlName="deg"/> 

<codePoint name="H11554" unicode="U+00B7" decimal="183" unicodeName="MIDDLE DOT"/>