一些背景:在梵文字体中,相同的字符代码可以在视觉上表示为不同的字符。在一种字体中,“10”可以在视觉上表示为“A”,而在另一种字体中,“10”可以在视觉上表示为“B”。因此,如果我选择文本并更改字体,那么字符也会更改。有趣的是,键盘上的按钮也是如此。在一种字体中按“A”将显示“A”,在另一种字体中按“A”将显示“B”。
我想要做的是,识别粘贴到我的软件中的某些文本中使用的字体,以便在更改字体时,我可以以编程方式更改字符以对新字体表示相同的含义。
关于如何解决这个问题的任何指示?
一些背景:在梵文字体中,相同的字符代码可以在视觉上表示为不同的字符。在一种字体中,“10”可以在视觉上表示为“A”,而在另一种字体中,“10”可以在视觉上表示为“B”。因此,如果我选择文本并更改字体,那么字符也会更改。有趣的是,键盘上的按钮也是如此。在一种字体中按“A”将显示“A”,在另一种字体中按“A”将显示“B”。
我想要做的是,识别粘贴到我的软件中的某些文本中使用的字体,以便在更改字体时,我可以以编程方式更改字符以对新字体表示相同的含义。
关于如何解决这个问题的任何指示?
对于非 Unicode 字体,实现这一点的唯一方法是了解每种字体的映射。这是有问题的,因为即使有一个非Unicode编码标准,许多梵文/印地文字体都会忽略它或进行修改和添加,导致您在上面描述的情况(例如,一种字体中的键'A'可能对应于形状'म' 而另一种字体中的'A' 具有'क' 的形状......只是理论示例)。
至少存在一种可以帮助您的转换工具,但最终归结为将输入字体特定编码转换为输出字体特定编码。如果对于每个特定于字体的映射,您有一个特定于 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,虽然……但这可能是不可能的。