Impossível colocar um zero depois de um aleph?

143

Eu e um amigo estávamos brincando sobre aleph. Ao tentar digitar א 0 (mudar esses 2 caracteres), eles mudaram-se! Qualquer seqüência de símbolos não interrompe esse efeito. Por que isso acontece?

Tente digitá-los com 0 e א invertidos (c & p para א):

א 0

א - 0

א \\\ 0

א -. / 0

Palavras, no entanto, separam-nas

א foobar 0

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

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

    
por Gman Smith 31.07.2017 / 08:18

7 respostas

111

'א', 'HEBREW LETTER ALEF' (U + 05D0) a classe BIDI (bidirecional) "da 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 nenhuma direcionalidade específica atribuída a eles, e assim 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 precedente, como ditam as regras bidirecionais complexas do Unicode.

Você tem várias opções para contornar 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 zero com a direcionalidade da esquerda para a direita, como '〇', 'NÚMERO IDEOGRÁFICO ZERO' (U + 3007) .

  3. A maneira mais limpa é usar o 'LEFT-TO-RIGHT MARK' ( U + 200E) ( Wikipedia ) depois do aleph: "א 0". Esse é um caractere de largura zero invisível que é definido para ter direcionalidade da esquerda para a direita. Assim, tem o mesmo efeito no algoritmo de layout de texto bidirecional do que inserir, digamos, uma letra latina da esquerda para a direita após o א, exceto que nenhuma letra visível aparecerá lá.

por 31.07.2017 / 12:48
198

O Aleph ( U + 05D0 ) é uma letra hebraica e o hebraico é escrito da direita para a esquerda, de modo que o Unicode o atribui a classe bidirecional "da direita para a esquerda". (Veja Unicode TR9: Algoritmo Bidirecional para mais detalhes.)

As letras latinas são, naturalmente, "da esquerda para a direita". No entanto, zero ( U + 0030 ) está na classe bidirecional "Número Europeu", que é um fraco class - enquanto o LtR por padrão, ele pode mudar para RtL se houver um caractere "strong" da Direita para a Esquerda antes dele. (Veja Tipos de caracteres bidirecionais e Resolvendo Tipos Fracos no TR9.)

Como resultado, as direções de antes e após são trocadas por toda a palavra - se você colocar o zero 'antes', ele será exibido à direita ; se você escrever o zero depois de "aleph", ele aparecerá à esquerda.

    
por 31.07.2017 / 08:39
20

Talvez, uma maneira melhor de conseguir isso seria:

echo -e "\u200F0א"

E a referência obrigatória xkcd link

    
por 02.08.2017 / 13:27
14

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

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

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

    
por 31.07.2017 / 08:36
14

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

Oquevocêestávendoetambémsetornaaparentesevocêtentarmarcarocaractereemsuapergunta,équeohebraicoéescritodadireitaparaaesquerdae(comoo0estádiretamenteconectado)otextoétratadodadireitaparaaesquerda(emvezdaesquerdaparaadireita).

VejaosegundoexemploparaoproblemaqueoFirefox(domeulado)temcomumaseleçãoclara.

    
por 31.07.2017 / 08:43
3
 א 0 0 א 0-א א -0

O problema é onde você faz isso e a implementação. Para obter o comportamento do número hebraico all , 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 propósito do Unicode. O aleph como operador matemático pode parecer o mesmo em alguns conjuntos de caracteres, mas é um personagem completamente diferente do hebraico aleph, tanto no contexto quanto no modo como será analisado. Por exemplo, um computador / falante nativo de 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 não recebem a mesma codificação direcional dos caracteres alfa. Assim, ironicamente, os números em si, enquanto aparentemente deveriam ser independentes de um conjunto de caracteres / direcionalidade, assumem qualquer direcionalidade unicode da letra precedente. Assim, em um documento hebraico - os números tornam-se "hebraicos", ou seja, direcionalmente como hebraico. Considerando um documento em inglês-latim, as letras hebraicas podem ser confundidas e confundidas por causa da falta de direcionalidade atribuída ao parágrafo.

    
por 06.08.2017 / 19:00
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 a pergunta no título "impossível para ...?")

    
por 02.08.2017 / 11:44

Tags