os caracteres ingleses no aparecen al ingresar texto con fuentes Urdu en Swing

Esto es similar ami propia pregunta anterior, pero esa solución no funcionó aquí. Como se mencionó en la pregunta anterior, estoy trabajando en una aplicación multiplataforma (Windows / Ubuntu) que tiene que transcribir el inglés a uno de los varios idiomas indios oficiales. La aplicación tiene un método de entrada personalizado, y al escribir en inglés y presionar la barra espaciará el texto escrito en el idioma local específico. Urdu es diferente de los demás en ser de derecha a izquierda, como el árabe / hebreo. Logré encontrar una fuente Urdu con licencia abierta que tiene glifos en inglés y urdu, pero cuando escribo caracteres en inglés, no aparece nada.

No entiendo si se trata de un problema de pintura de fuentes o está relacionado con el método de entrada. Hasta ahora, si deshabilito el método de entrada personalizado InputMethod.dispatchEvent()) para este idioma, puedo ver el texto en inglés (pero, por supuesto, no se realiza ninguna transcripción).

Mis conclusiones:

Cambie la fuente a una de las fuentes árabes integradas de Windows: el mismo resultado.En lugar de usarComponentOrientation para alinear el texto en el campo de texto, usésetHorizontalAlignment para cuando el local es Urdu. Mismo resultado. Descompiló el proveedor de método de entrada predeterminado del JDK en Windows sun.awt.windows.WInputMethod). Aquí veo ladispatchEvent() realiza una llamada nativa al sistema operativo para manejar IME. No puedo hacer eso aquí.Encontróun IM personalizado para hebreo - mi versión dedispatchEvent() es esencialmente lo mismo. Pasó por el código deJTextField en Eclipse: no pude encontrar nada enAbstractDocument y subclases. LosAbstractDocument.insertUpdate() El método comprueba y actualiza el ingreso de texto bidireccional, pero no había nada más significativo.

No puedo entender qué sucede después de ladispatchEvent() llamada. Los caracteres se están registrando, es decir, el motor de transliteración puede detectar los caracteres escritos y procesarlos, pero simplemente no aparecen en la pantalla.

Solución alternativa

Si dejo que la orientación del campo de texto sea la misma que para los idiomas normales de izquierda a derecha, puedo ver el texto en inglés. Sin embargo, esto no sería aceptable para un usuario que habla urdu.

¿Alguien me puede apuntar en la dirección correcta

Respuestas a la pregunta(1)

Su respuesta a la pregunta