Impossível colocar um zero depois de um aleph?

144

Eu e um amigo estávamos brincando sobre aleph's. Ao tentar digitar א 0 (alterne esses 2 caracteres), eles trocaram eles mesmos! Qualquer sequência de símbolos não interrompe esse efeito. Por que é isso!??

Tente digitar estes com 0 e א invertidos (c & p para א):

א 0

א - 0

א \\\ 0

א -. / 0

Palavras no entanto separá-los

א foobar 0

Estou no arch linux e ainda não testei isso em nenhum outro sistema operacional

EDIT: número não precisa ser zero. Funciona com números, mas não com letras.

Gman Smith
fonte
14
À primeira vista, pensei que você era louco. Acontece que é simplesmente um artefato de como diferentes direções de idioma são usadas. Ótima pergunta!
6
Para escrever texto em hebraico, essa ordem faz sentido. Caso contrário, seria muito chato digitar coisas como ב-5 דקות(em 5 minutos).
Ugoren
7
@jamesqf: E tem um, veja o post de IllidanS4.
grawity
28
@jamesqf, existem letras hebraicas no Unicode para escrever hebraico. E ouso dizer que há mais de nós que escrevemos hebraico (7 milhões ou mais) do que aqueles que escrevem sobre cardinalidades definidas.
Ugoren
27
@ugoren, em alguns aspectos, existem 130 mil matemáticos , mas, na verdade, a matemática é a linguagem universal, então há realmente ℵ₀.
Julio

Respostas:

111

'א', 'HEBREW LETTER ALEF' (U + 05D0) possui a classe BIDI (bidirecional) "Direita para a esquerda [R]", porque o hebraico é tradicionalmente escrito da direita para a esquerda. Os dígitos, por outro lado, não têm uma direcionalidade específica atribuída a eles; portanto, todo o pedaço de aleph e zero é interpretado como sendo da direita para a esquerda. Nesse caso, o caractere a seguir pode não estar necessariamente localizado à direita do caractere anterior, como ditam as regras bidirecionais bastante complexas do Unicode.

Você tem várias opções para solucionar esse problema.

  1. Você pode usar 'ℵ', 'ALEF SYMBOL' (U + 2135) . É um símbolo e tem a propriedade da esquerda para a direita: ℵ0.

  2. Em vez do dígito usual 0, você pode usar um caractere do tipo zero com direcionalidade da esquerda para a direita, como '〇', 'NÚMERO IDEOGRÁFICO ZERO' (U + 3007) .

  3. A maneira mais limpa é usar o caractere 'ESQUERDA PARA A DIREITA' (U + 200E) ( Wikipedia ) após o aleph: "א 0". Esse é um caractere invisível de largura zero, definido para ter direcionalidade da esquerda para a direita. Portanto, ele tem o mesmo efeito no algoritmo de layout de texto bidirecional que a inserção, digamos, de uma letra latina da esquerda para a direita após o א, exceto que nenhuma letra visível aparecerá lá.

IllidanS4
fonte
69
Em um contexto matemático (que eu espero que seja), U + 2135 é o caractere correto a ser usado.
cmbuckley
10
Você precisa ter cuidado com as substituições - onde você as coloca no texto, é importante removê-las (usando o caractere "formatação pop direcional" U+202C) quando o contexto em que você deseja que elas operem seja concluído.
J ...
4
Além disso, os caracteres "substituir" são um exagero, "a incorporação" é suficiente para este caso de uso. Há também uma nova classe chamada "isolate", sem saber qual é a diferença nessa situação.
Random832
4
Eu recomendo trocar 2 e 3.
wizzwizz4
10
@ Random832 Todos esses são um exagero. Tudo o que você realmente precisa é de uma marca da esquerda para a direita (U + 200E) entre o alef e o zero. Dessa forma, você também não precisa de caracteres "pop" extras.
Ilmari Karonen
198

Aleph ( U + 05D0 ) é uma letra hebraica e o hebraico é escrito da direita para a esquerda; portanto, o Unicode atribui a ele a classe bidirecional "Da direita para a esquerda". (Consulte Unicode TR9: algoritmo bidirecional para obter mais detalhes.)

As letras latinas são obviamente "da esquerda para a direita". No entanto, zero ( U + 0030 ) está na classe bidirecional "Número Europeu", que é uma classe fraca - enquanto o LtR, por padrão, pode mudar para RtL se houver um caractere "forte" da direita para a esquerda antes dele. (Consulte Tipos de caracteres bidirecionais e Resolução de tipos fracos em TR9.)

Como resultado, as instruções de antes e depois são trocadas pela palavra inteira - se você colocar o zero 'antes', ele aparecerá à direita; se você escrever o zero 'depois' aleph, ele aparecerá à esquerda.

gravidade
fonte
14
Esse é um problema extremamente comum em vários editores de texto e sites ao digitar em hebraico - imagino que seja verdade também em outros idiomas da direita para a esquerda. É certamente ficou melhor ao longo do tempo, mas imagine tentando escrever um problema palavra - mudança e para trás entre as palavras hebraicas (como personagem aleph) e números (como a 0 personagem) repetidamente ...
Jake
3
@Walt A maioria dos livros que eu vi são do tipo "imersão", que usam hebraico extremamente simples, mas praticamente todo hebraico. Pode parecer contra-intuitivo usar um idioma para ensinar o idioma, mas permite um acúmulo mais orgânico de habilidades linguísticas. Você pode ver uma transliteração ou tradução em linha (algo como lh4.ggpht.com/-_Vc8TUDwznQ/UlhaLFjnrGI/AAAAAAAAAzQk/_zm4BMC0aLw/… - "Shalom Kita Aleph" = "Olá, primeira série")
Jake
11
@ Jake Ah, isso faz sentido. A única língua estrangeira que realmente aprendi foi o latim; nossos livros didáticos costumavam ser principalmente ingleses, com um único pedaço de texto em latim para decifrar cada capítulo, até que todo o formato da classe passou de "aprenda latim" para "traduzir todo esse poema épico, um pouco de cada vez, ao longo de o ano escolar".
23817 Tin Man
5
@ Walt: Eu acho que pode haver um mal-entendido. Se eu digitar uma palavra latina (LTR), depois uma palavra hebraica (RTL) e outra palavra latina, posso livremente tê-las todas em uma frase, e somente a palavra hebraica renderiza RTL. Tudo foi projetado para caber facilmente na mesma frase. O problema é que o número 0é usado pelos idiomas LTR e RTL e, portanto, o software segue a mesma direção da letra anterior. Se segue caracteres LTR, é LTR. Se segue letras RTL, é RTL. Também há substituições para trocá-lo. fileformat.info/info/unicode/char/202d/index.htm
Mooing Duck
4
O zero não está se tornando RTL - ainda é LTR, e uma sequência de dígitos será exibida da esquerda para a direita, mesmo com o hebraico, mas os níveis de incorporação interagem de maneira que o zero apareça à esquerda do Caractere hebraico que o precede em ordem de memória. (Unicode bidirecionalidade é complicado.)
user2357112
20

Talvez, uma maneira melhor de conseguir isso seja:

echo -e "\u200F0א"

E a referência obrigatória xkcd https://xkcd.com/1137/

LTR

wvxvw
fonte
14

É perfeitamente possível ter um zero na frente, como mostra o exemplo a seguir, feito no Notepad ++.

Alef com 0

O que você está vendo e também fica aparente se você tentar marcar o caractere em sua pergunta é que o hebraico é escrito da direita para a esquerda e (como o 0 está diretamente conectado) o texto é tratado da direita para a esquerda (em vez de para a esquerda). para a direita).

Veja o segundo exemplo para o problema que o Firefox (do meu lado) tem com uma seleção clara.

Firefox selecionando um texto da direita para a esquerda

Seth
fonte
17
Este é um péssimo conselho, porque ele joga com a ordem de personagem real para obter uma ordem visual específica. As outras respostas explicam por que isso ocorre e algumas incluem a maneira correta de lidar com isso (as marcas de substituição e de direção explícitas).
Dranon
8
Você poderia apontar onde estou incluindo algum tipo de conselho? Estou apenas mostrando um exemplo do que acontece, que é realmente possível ter um número de sufixo e fornecendo informações sobre o porquê disso acontece.
Seth
13

O hebraico é escrito da direita para a esquerda - isso faz com que o caractere aleph carregue as informações, que o próximo caractere deve ser impresso à esquerda dele.

Se você verificar o seu documento em hexadecimal (ou mover o cursor pelo texto com as teclas de seta em um editor adequado), notará que você chega primeiro ao alpeh e depois ao dígito.

Ou seja: A suposição "próximo caractere == caractere à direita" não é válida.

Eugen Rieck
fonte
3
א 0 0 א 0-א--0

A questão é onde você faz isso e a implementação. Para obter o comportamento do número hebraico, todos os caracteres devem estar na direcionalidade da direita para a esquerda. Em HTML / CSS, isso é:

<p style="direction:rtl"> א0 0א 0-א א-0 </p>

No sistema operacional, o hebraico e a bidirecionalidade devem estar ativados.

As soluções alternativas, sugerindo o uso de outros caracteres como substitutos, anulam o objetivo do Unicode. O aleph como operador matemático pode parecer o mesmo em alguns conjuntos de caracteres, mas é um caractere totalmente diferente do aleph hebraico, tanto no contexto quanto em como será analisado. Por exemplo, um falante / computador nativo do hebraico não o processará corretamente se usado em conjunto com uma palavra hebraica. Números e caracteres não alfa são um problema quando eles próprios não recebem a mesma codificação direcional que os caracteres alfa. Assim, ironicamente, os próprios números, embora aparentemente devam ser independentes de um conjunto de caracteres / direcionalidade, assumem qualquer direcionalidade unicode da letra anterior. Assim, em um documento hebraico - os números se tornam 'hebraizados', isto é, direcionalmente, como o hebraico. Considerando que um documento inglês-latino,

Danny F
fonte
O OP estava tentando usar aleph como operador numérico, não?
grawity
Bem, não ficou claro no post. Em qualquer caso, a direcionalidade não deve ser relevante. O Aleph é usado na notação de conjunto e tem uma designação de séries infinita e infinita. Deve ser direcionado da esquerda para a direita, pois toda a matemática é da esquerda para a direita, independentemente do idioma que você está usando. No entanto, usar aleph como um caractere em hebraico é definido direcionalmente da direita para a esquerda.
Danny F
2

É possível:

א 0

א - 0

א \\ 0

א -. / 0

א foobar 0

(Esta resposta não respondeu "por que isso", como já foi respondida por outros. Mas responde à pergunta no título "impossível de ...?")

user23013
fonte
7
Mas também não responde COMO, e é quase inútil.
NH.