Doğruluğu elde etmenin en iyi yolu, programcıların "dize hackleme" yapmasını engellemektir ... kendi sözcük kaydırma, tireleme, kelime sayısı, gerekçe, imleç hareketi, vb rutinleri yazmak sorun değil. Tüm modern UI çerçeveleri bu günlerde sizin için yapacak.
Yani, genellikle üzerinde çalışacağınız soyutlama, GTK gibi daha çok bir "paragraf görüntüleme nesnesidir":
http://library.gnome.org/devel/pango/stable/pango-Layout-Objects.html
http://library.gnome.org/devel/pango/stable/pango-Glyph-Storage.html gibi bir grafik dizesi yerine
Bir glif dizisine ulaşmak için yalnızca "görünüm" düzeyinde kullanılabilen bilgilere ihtiyacınız vardır, bu nedenle dizelerin çoğu kullanımı bu bilgiye sahip olmayabilir. Örneğin, yazı tipini bilmeniz gerekir, çünkü yazı tipleri farklı bitişik harflere sahip olabilir.
Bu tür pratik maddelerin yanı sıra, glifler muhtemelen istediğiniz şey değildir.
Birçok bağlamda, bu API'da gösterilen uygun Unicode niteliklerini kullanmak istersiniz, örneğin:
http://library.gnome.org/devel/pango/stable/pango-Text-Processing.html#PangoLogAttr
Bu yapıdan görebileceğiniz gibi (Unicode algoritmalarını yansıtan), glif sınırlarında çeşitli şeyler yapmak, karakter sınırlarında yapmaktan daha doğru değildir.
Bu iki özellik, farklı sınır türleri bulmak için algoritmaları açıklar:
Metin işlemeyi yapmak algoritmalarla bu sınırları bulmayı ve sonra sınırlarla çalışmayı içerir.
Tüm dilleri doğru bir şekilde ele almanın ne kadar zor olduğunu araştırmaya başlarsanız, tüm paragraflara bakan ve doğru şekilde işleyen bir kütüphaneye ihtiyacınız olduğunu çok hızlı bir şekilde fark edeceksiniz. Windows, Mac, Linux (Qt ve GTK) ve Java'nın hepsi bunun için olanaklarla birlikte gelir, örneğin http://site.icu-project.org/ var .
Web uygulamaları yazarken maalesef, bildiğim kadarıyla tarayıcının (muhtemelen işletim sisteminin yardımcı olduğu) bu şeyleri yapmasına izin vermelisiniz. JavaScript veya sunucu tarafında yapabileceğiniz tek şey karışıklıktır.
Belki de cevabı şöyle özetleyebilirim: doğal dil metni üzerindeki çoğu dize manipülasyonu bozuldu, bu yüzden dize sınıfı hakkında endişelenecek çok fazla nokta yok, belki de üzerinde yöntem olmayan bir tane olması ;-)