识别任意文本中的外语字体

时间:2012-04-17 10:07:15

标签: fonts

某些背景:在梵文字体中,相同的字符代码可以直观地表示为不同的字符。在一种字体中,“10”可以在视觉上表示为“A”,而在另一种字体中,“10”可以在视觉上表示为“B”。因此,如果我选择文本并更改字体,那么字符也会发生变化。有趣的是,键盘上的按钮也是如此。按一个字体中的'A'将显示'A',而在另一个字体中按'A'将显示'B'。

我想要做的是,识别粘贴到我的软件中的某些文字中使用的字体,这样当字体改变时,我可以编程方式改变字符意味着同样的事情新字体。

关于如何解决这个问题的任何指示?

1 个答案:

答案 0 :(得分:1)

对于非Unicode字体,实现此目的的唯一方法是了解每种字体的映射。这是有问题的,因为即使有a non-Unicode encoding standard,许多梵文/印地语字体都会忽略它或进行修改和添加,导致上面描述的情况(例如,一个字体中的键'A'可能对应于形状' म'而另一种字体中的'A'形状为'क'......只是理论上的例子。)

至少有一个conversion tool可以帮到你,但最终归结为将输入字体专用编码转换为输出字体专用编码。如果您为每个特定于字体的映射都有一个特定于字体的Unicode映射,那么您可以使用Unicode作为中介并转换为/从任何字体的方案转换...有些东西如下:

font         font-specific code    Unicode
----         ------------------    -------
MyFont       0001                  U+0021
MyFont       0002                  U+0022
...
MyOtherFont  00F1                  U+0021
MyOtherFont  00F2                  U+0022
...

使用这些映射的完整数据库,您可以很容易地将“MyFont”中设置的文本翻译为“MyOtherFont”的文本。

当然,如果可能的话,最佳替代方案是将字体和文本转换为Unicode,但是......但这可能是不可能的。

相关问题