gpt4 book ai didi

java - 在 Swing 中输入带有乌尔都语字体的文本时不显示英文字符

转载 作者:行者123 更新时间:2023-11-30 09:48:29 25 4
gpt4 key购买 nike

这类似于 my own previous question ,但该解决方案在这里不起作用。如前一个问题所述,我正在开发一个跨平台(Windows/Ubuntu)应用程序,该应用程序必须将英语音译成几种官方印度语言之一。该应用程序具有自定义输入法,输入英文并按空格会将输入的文本音译为特定的本地语言。乌尔都语与其他语言的不同之处在于从右到左,如阿拉伯语/希伯来语。我设法找到了 an open licensed Urdu font有英文和乌尔都语字形,但是当我用英文输入字符时,没有任何显示。

不知道是字体绘制的问题,还是输入法的问题。到目前为止,如果我禁用该语言的自定义输入法 (InputMethod.dispatchEvent() ),我就能看到英文文本(当然不会进行音译)。

我的发现:

  • 将字体更改为 Windows 内置的阿拉伯字体之一 - 结果相同。
  • 我没有使用 ComponentOrientation 来对齐文本字段中的文本,而是在语言环境为乌尔都语时使用了 setHorizo​​ntalAlignment。同样的结果。
  • 在 Windows 上反编译了 JDK 的默认输入法提供程序 (sun.awt.windows.WInputMethod)。在这里,我看到 dispatchEvent() 对操作系统进行本地调用以处理 IME。我不能在这里这样做。
  • 找到 a custom IM for Hebrew - 我的 dispatchEvent() 版本基本上是一样的。
  • 在 Eclipse 中单步执行 JTextField 的代码 - 在 AbstractDocument 和子类中找不到任何内容。 AbstractDocument.insertUpdate() 方法检查并更新双向文本输入,但没有其他重要内容。

我无法理解 dispatchEvent() 调用后发生了什么。正在注册字符,即音译引擎能够检测键入的字符并对其进行处理,但它们只是不显示在屏幕上。

解决方法

如果我让文本字段的方向与常规从左到右的语言相同,我可以看到英文文本。然而,这对于讲乌尔都语的用户来说是不能接受的。

有人能指出我正确的方向吗?

最佳答案

I set the locale to ur_IN.

遗憾的是,ur_IN 不在 supported locales 中;我只看到 en_INhi_IN。在example引用,我使用下面的代码得到下面的图像:

spinner.setLocale(new Locale("hi", "IN"));

JSpinnerTest Hindi

关于java - 在 Swing 中输入带有乌尔都语字体的文本时不显示英文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com