2013-03-28 25 views
6

I miei test mi dicono che, a partire da Unicode 6.2, tutti i caratteri nelle decomposizioni di piena compatibilità hanno la proprietà NFD_Quick_Check = Yes.È già presente una stringa in una normale forma di compatibilità nella corrispondente forma canonica normale?

Questo mi porta a credere che isNFKD (x) implichi isNFD (x), e isNFKC (x) implica isNFC (x).

Le mie conclusioni sono corrette? E per quanto riguarda la stabilità? Queste implicazioni sono garantite per le future versioni dello standard Unicode?

risposta

1

Le vostre conclusioni sono corrette. Sezione Design Goals di Unicode allegato standard # 15 stati:

toNFKC(x) = toNFC(toNFKC(x)) 
toNFKD(x) = toNFD(toNFKD(x)) 

Per quanto riguarda la stabilità, questa terrà vero per le future versioni di Unicode se la stringa normalizzata non contiene punti di codice non assegnati.

+0

Sei mesi dopo! Grazie mille. Ora qualcuno può spiegarmi come diavolo mi è mancato? ;) –

0

ho trovato here seguenti che afferma:

In altre parole, la fase composizione di NFC e NFKC sono uguali -solo loro fase di decomposizione differisce, con NFKC applicando decomposizioni compatibilità.

Poi c'è anche questo:

Ci sono due forme di normalizzazione che si convertono in caratteri composti: il modulo C e Modulo di normalizzazione KC. La differenza tra questi dipende dal fatto che il testo risultante debba essere un equivalente canonico del testo originale non normalizzato o una equivalente equivalente al testo originale non normalizzato. (In NFKC e NFKD, un K è utilizzato per garantire la compatibilità per evitare confusione con il C che sta per composizione.) Entrambi i tipi di normalizzazione possono essere utili in diverse circostanze.

Nei primi tre figure, la forma NFKD è sempre la stessa come la forma NFD, e la forma NFKC è sempre uguale al modulo NFC, quindi per semplicità tali colonne sono omessi.

Questo è ciò che potrei scegliere dal testo che potrebbe far luce su almeno parte della domanda. Speranza che aiuta

C'è anche questo tavolo nella Wikipedia article:

NFD normalizzazione forma canonica di decomposizione: caratteri vengono decomposti dai equivalenza canonica, e più caratteri, che conciliano sono disposti in un ordine specifico.

NFC normalizzazione forma canonica Composizione: caratteri vengono decomposti e poi ricomposti dai equivalenza canonica.

NFKD Modulo di normalizzazione compatibilità decomposizione: caratteri vengono decomposti dalla compatibilità, e molteplici combinazioni di caratteri sono disposti in un ordine specifico.

NFKC Modulo di normalizzazione Compatibilità Composizione: personaggi sono decomposti dalla compatibilità, poi ricomposto da equivalenza canonica.

Guardando le spiegazioni di cosa sono queste cose, non penso che si possa concludere che l'una implica l'altra.La NFD si decompone per equivalenza canonica, mentre la NFKD è scomposta per compatibilità.

Nello stesso articolo afferma anche:

i criteri di equivalenza possono essere sia canonica (NF) o la compatibilità (NFK).

Per me questo significa che è canonico o compatibile. NFD e NFKD fanno cose diverse.


In questo implementation notes articolo afferma:

Per tutte le versioni, anche prima Unicode 4.1, il seguente criterio è seguito:

Una stringa normalizzato viene garantito come stabile; cioè, una volta normalizzato, una stringa viene normalizzata in base a tutte le future versioni di Unicode.