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.

questionAnswers(5)

yourAnswerToTheQuestion