Perl6 gebautet hat Unicode-Unterstützung, mit nativer Uni und NFC/NFD/NFKC/NFKD normalisierte Typen.
Was ich vage verstehe, ist, dass die Unicode :: GCString :: columns-Methode Ostasia Sprache Zeilenunterbrechungsunterstützung bestimmt. 合 besteht aus 2 "Silben" (sie nennen es "Graphem-Cluster") übereinander, also 2 Spalten.
Das hat Perl6 intern (auf der MoarVM-Ebene) Zugriff auf die Unicode-Datenbank, wo die Zeilenumbruch-Eigenschaften gespeichert werden, aber meines Wissens ist derzeit kein Modul wie Unicode :: UCD verfügbar, um die East_Asian_Width-Eigenschaften verfügbar zu machen für etwas wie einen Unicode :: GCString.
Auf der anderen Seite sieht die Konvertierung von Unicode :: LineBreak in Perl6 einfach genug aus, indem Sie über NativeCall auf die Sombok-Bibliothek zugreifen.
Upvoted, weil Reini das Schlüsselwort tut - das zu tun, was nötig ist, um dieses Problem sinnvoll zu lösen. Ich poste diesen Kommentar zuerst, um die Dinge auszugleichen, die ich als nächstes sagen werde. – raiph
Ein Graphem ist, was ein Mensch normalerweise einen Charakter nennen würde. Also ist one ein Graphem, nicht zwei. Daher gibt 'say". ".chars.say 'mit einem kürzlichen Rakudo 1 zurück. – raiph
Die der Funktion der Spalten zugrunde liegende Funktion ist" das Konzept einer inhärenten Breite eines [ostasiatischen] Zeichens. Diese Breite nimmt entweder an von zwei Werten: schmal oder breit. " (von http://www.unicode.org/reports/tr11/tr11-29.html) – raiph