JavaScript: como verificar se o caractere é RTL?
Como posso verificar programaticamente se o navegador trata algum caractere como RTL em JavaScript?
Talvez criando algum DIV transparente e olhando onde o texto é colocado?
Um pouco de contexto. O Unicode 5.2 adicionou o suporte ao alfabeto Avestan. Portanto, se o navegador tiver suporte a Unicode 5.2, ele tratará caracteres como U + 10B00 como RTL (atualmente, apenas o Firefox). Caso contrário, ele trata esses caracteres como LTR, porque esse é o padrão.
Como faço para verificar isso programaticamente? Estou escrevendo um script de entrada do Avestan e quero substituir a direção bidirecional se o navegador for muito burro. Mas, se o navegador suportar Unicode, as configurações de bidi não devem ser substituídas (pois isso permitirá misturar Avestan e Cirílico).
Eu atualmente faço isso:
var ua = navigator.userAgent.toLowerCase();
if (ua.match('webkit') || ua.match('presto') || ua.match('trident')) {
var input = document.getElementById('orig');
if (input) {
input.style.direction = 'rtl';
input.style.unicodeBidi = 'bidi-override';
}
}
Mas, obviamente, isso tornaria o script menos utilizável depois que o Chrome e o Opera iniciam o suporte ao Unicode 5.2.