Juntei-me à lista de discussão do Unicode para propor uma adição ao Unicode que seria uma solução em casos como este. Uma das respostas que recebi foi esta:
(Eu:) O problema é que essa substituição é feita (pelo que sei) fora de qualquer contexto de renderização, quando o texto é apenas uma sequência de códigos de caracteres. Não é razoável saber a direção do texto. Às vezes, é completamente impossível, se a direção do texto depender de um contexto que não está disponível no momento da substituição.
O acima é estritamente falando impreciso. Qualquer renderização de texto séria hoje em dia requer um motor de modelagem, como o HarfBuzz, e a ligação de “-” para “→” seria feita por tal modelador em cooperação com uma fonte que suporta ligaturas. O motor de modelagem está ciente do contexto bidi e do script do texto que ele modela, então, em princípio, poderia espelhar a seta.
Eles estão falando sobre algo como isto: GitHub - tonsky/FiraCode: Free monospaced font with programming ligatures
Considere mudar para a abordagem de ligatura em vez de substituição cega de caracteres. Outra vantagem discutível seria que, ao copiar e colar, o texto ainda seria “-” em vez de uma seta.
Eu não olhei os detalhes técnicos de como implementar isso, deixarei isso para você se você optar por usar esta solução.
Editar: bem, sem surpresa, o Fira Text em particular não foi projetado com RTL em mente, então a renderização está errada - mas pelo menos está apontando na direção certa! https://fonts.google.com/specimen/Fira+Code?preview.text=A%20->%20B,%20א%20->%20ב
Firefox:
Não tenho certeza se existe hoje uma fonte que faça isso corretamente e suporte explicitamente RTL/bidi.
