Me he unido a la lista de correo de Unicode para proponer una adición a Unicode que sería una solución en casos como este. Una de las respuestas que recibí fue esta:
(Yo:) El problema es que este reemplazo se realiza (por lo que sé) fuera de cualquier contexto de renderizado, cuando el texto es solo una secuencia de códigos de caracteres. No es razonable saber en qué dirección va el texto. A veces es completamente imposible, si la dirección del texto depende de un contexto que no está disponible en el momento del reemplazo.
Lo anterior es estrictamente inexacto. Cualquier renderizado de texto serio hoy en día requiere un motor de modelado, como HarfBuzz, y la ligadura de “-” a “→” sería realizada por dicho modelador en cooperación con una fuente que soporte ligaduras. El motor de modelado es consciente del contexto bidi y del script del texto que modela, por lo que en principio podría reflejar la flecha.
Están hablando de algo como esto: GitHub - tonsky/FiraCode: Free monospaced font with programming ligatures
Considere cambiar al enfoque de ligaduras en lugar de un reemplazo ciego de caracteres. Otra ventaja discutible sería que, al copiar y pegar, el texto seguiría siendo “-” en lugar de una flecha.
No he investigado los detalles técnicos de cómo implementar esto, eso se lo dejo a usted si decide utilizar esta solución.
Editar: bueno, como era de esperar, Fira Text en particular no está diseñado teniendo en cuenta RTL, por lo que el renderizado es incorrecto, ¡pero al menos apunta en la dirección correcta! https://fonts.google.com/specimen/Fira+Code?preview.text=A%20->%20B,%20א%20->%20ב
Firefox:
No estoy seguro de si existe hoy en día una fuente que haga esto correctamente y que soporte explícitamente RTL/bidi.
