在 Swing 中使用印度语输入法输入文本时不显示英文字符

发布于 2024-11-10 14:34:59 字数 599 浏览 2 评论 0原文

我正在开发一个应用程序,它接受英语文本并使用自定义的第 3 方 API 将音译为印度语(受支持的几种语言之一)。该应用程序针对 Windows XP/7 和 Ubuntu。 我们使用自定义输入法来加载所需的印度语字体,并使用它渲染文本。此外,用户还可以通过输入英语并按空格来纠正音译文本(类似于 Google Transliterate 的工作方式)。

问题是,使用某些印度字体时,输入英语会显示空框字符(即使实际输入的字符已被检测到并相应地音译)。

我使用了 Ubuntu 附带的 ttf-indic-fonts-0.5.0 字体包,并且能够替换其中的一些。对于其他人,如果我从 Windows 复制相应的字体(我正在 Windows 7 上开发它),那么所有问题都可以解决。

但是,我们无法通过我们的应用程序重新分发 Windows 字体,并且需要一个开放的替代方案。

除了尝试找到替代字体之外,我们是否还做错了什么或需要检查什么,以确保在使用印度字体时可以在 JTextField 中键入英文字符?

举个例子 - 从上面提到的 Ubuntu 软件包中,旁遮普语的 lohit_pa.ttf 字体就有这个问题。如果我复制旁遮普语的默认 Windows 字体 (raavi.ttf),则它可以正常工作。

I'm working on an application that accepts text in English and performs transliteration with a custom 3rd party API into an Indic language (one of several that are supported). The application is targeted at Windows XP/7 and Ubuntu.
We use a custom input method that loads the required Indic font, and uses it render text. Also, the user can correct the transliterated text by typing in English and pressing space (similar to how Google Transliterate works).

The problem is that with certain Indic fonts, typing in English shows up empty box characters (even though the actual characters typed are detected and transliterated accordingly).

I have used the ttf-indic-fonts-0.5.0 font pack that comes with Ubuntu, and was able to substitute some of them. For the others, if I copy the corresponding font from Windows (I'm developing this on Windows 7) then all problems are solved.

However, we cannot redistribute Windows fonts with our application and want an open alternative.

Other than trying to find a substitute font, is there anything else that we're doing wrong, or need to check, to make sure that English characters can be typed in a JTextField when an Indic font is being used?

As an example - from the Ubuntu package mentioned above, the lohit_pa.ttf font for Punjabi has this problem. If I copy the default Windows font for Punjabi (raavi.ttf) then it works fine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

未央 2024-11-17 14:34:59

我找到了解决问题的方法。我在 Windows 上安装了字体(打开字体,单击安装)并使用字符映射表浏览内容。这些字体仅具有相关语言的字形,而不是英语。
我使用 FontForge 来合并两种字体。 (Fontforge 的作者不再提供二进制文件 - 但如果您有权访问 Ubuntu,则可以从存储库安装它。如果您只有 Windows,则没有这样的运气)。
之后,我就可以再次输入英文了。

I found a solution to the problem. I installed the fonts on Windows (open the font, click install) and browsed the contents using Character Map. These fonts only have glyphs for the language in question, not English.
I used FontForge to merge the 2 fonts. (Fontforge's author doesn't provide binaries anymore - but if you have access to Ubuntu you can install it from the repository. No such luck if you only have Windows).
After this, I'm able to type in English again.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文