2016-04-24 15 views
0

Sehr einfache Frage zu verstehen, aber vielleicht nicht einfach zu beantworten.Wie viele Unicode-Codepunkte können im Ergebnis einer Falzoperation nicht angezeigt werden?

Es gibt 0x110000 verschiedene Codepunkte in Unicode.

"Fall falten" ist eine verlustbehaftete Operation, die man an einer Zeichenkette ausführen kann, um eine Darstellung dieser Zeichenkette zu erhalten, die für einen Vergleich mit anderen Zeichenketten ohne Berücksichtigung der Groß- und Kleinschreibung geeignet ist. Dies ist analog in Englisch, um alle Ihre Zeichenketten in Kleinbuchstaben zu ändern, bevor Sie sie sortieren (so dass alle, die mit Großbuchstaben beginnen, nicht an der Vorderseite enden!), Außer die Groß-/Kleinschreibung funktioniert nicht mit Respekt zu den Fallregeln einer beliebigen Sprache (und es ist daher nur für interne Operationen geeignet, nicht für Benutzer angezeigt).

Es gibt bestimmte Codepunkte (glaube ich), die in keiner Fall-gefalteten Zeichenfolge angezeigt werden. Ich möchte so genau wie möglich wissen, wie viele davon vorhanden sind.

Antwort

1

Es gibt mehrere Versionen des Fallfaltungsalgorithmus (und der Algorithmus kann für verschiedene Sprachen/Kontexte angepasst werden), aber wenn der Algorithmus wie im Unicode-Standard angegeben verwendet wird: Jeder Codepunkt, der eine Zuordnung in CaseFolding.txt (mit mindestens ein C Status, und entweder S oder F) kann nicht in einer Fall-gefalteten Zeichenfolge angezeigt werden.

Bei Vergleichen, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird, werden Zeichen mit einer NFKC-Normalisierungsform oder die Default_Ignorable_Code_Point-Eigenschaft ebenfalls ersetzt und können nicht angezeigt werden. Dies ist die Menge der Zeichen mit einer NFKC_Casefold Zuordnung in DerivedNormalizationProps.txt - insgesamt 10.146 Codestellen.