Unicode-Casing-Algorithmus
Unicode-Casing-Algorithmus

== Feststellen der Schreibweise ==
Um festzustellen, ob ein Text in einer bestimmten Schreibweise vorliegt, wird er in diese umgewandelt. Ändert er sich dabei nicht, so lag er bereits in dieser Schreibweise vor. Zur Vereinfachung steht zu jeder Schreibweise einschließlich des ''casefold'' eine Eigenschaft zur Verfügung, die angibt, ob sich das Zeichen ändert oder nicht, sodass nur noch für jedes Zeichen diese Eigenschaft getestet werden muss. Genau dann liegt ein Text in einer bestimmten Schreibweise vor, wenn keines seiner Zeichen sich bei der Umwandlung ändern würde.
Texte, die nur aus Zeichen bestehen, die wie Ziffern keine unterschiedliche Groß- oder Kleinschreibung besitzen, liegen nach dieser Definition in jeder Schreibweise vor. Um also zu überprüfen, ob ein Text vollständig in Kleinbuchstaben vorliegt, ist es sinnvoll, nicht nur zu prüfen, ob er sich nach dieser Definition in Kleinschreibung befindet. Zusätzlich sollte getestet werden, ob es eine Schreibweise gibt, die nicht zutrifft.
So liegen sowohl „UNICODE“ als auch „123“ in Großschreibung vor, nicht aber „Unicode“. Dies kann man entweder überprüfen, indem man die Umwandlungen vornimmt, oder indem man die Changes_When_Uppercased-Eigenschaft aller Zeichen betrachtet. Während bei den beiden ersten Zeichenketten diese für alle Zeichen falsch ist, hat die dritte Zeichenkette Buchstaben mit dieser Eigenschaft, nämlich das „n“ und alle folgenden. „UNICODE“ ist dabei eine echte Großschreibung, da das Wort nicht auch in Kleinschreibung vorliegt, diese wäre „unicode“. „123“ liegt dagegen in allen Schreibweisen vor, wie man durch die einzelnen Umwandlungen überprüfen kann, oder anhand der Changes_When_Casemapped-Eigenschaft. Diese gibt an, ob sich ein Zeichen bei irgendeiner Umwandlung ändert. Für die Ziffern ist sie also immer falsch, während sie bei lateinischen Buchstaben zutrifft.