Parece que la mejor manera de obtener la corrección es evitar que los programadores hagan "pirateo de cadenas" ... simplemente no está bien escribir su propia envoltura de palabras, guiones, conteo de palabras, justificación, movimiento del cursor, etc. Todos los marcos de interfaz de usuario modernos harán esto por usted en estos días.
Es decir, la abstracción con la que normalmente trabajaría es más un "objeto de visualización de párrafo", como para GTK:
http://library.gnome.org/devel/pango/stable/pango-Layout-Objects.html
en lugar de una cadena de grafemas, como:
http://library.gnome.org/devel/pango/stable/pango-Glyph-Storage.html
Para llegar a una cadena de glifos, necesita información que solo está disponible en el nivel de "vista", por lo que la mayoría de los usos de cadenas pueden no tener esta información. Por ejemplo, debe conocer la fuente, porque las fuentes pueden tener diferentes ligaduras.
Aparte de ese tipo de materia práctica, los glifos probablemente no sean lo que quieres.
En muchos contextos, desea utilizar los atributos Unicode adecuados, que se muestran en esta API, por ejemplo:
http://library.gnome.org/devel/pango/stable/pango-Text-Processing.html#PangoLogAttr
Como puede ver en esa estructura (que refleja los algoritmos Unicode), hacer varias cosas en los límites de glifos no es más correcto que hacerlo en los límites de los caracteres.
Estas dos especificaciones describen los algoritmos para encontrar diferentes tipos de límites:
Hacer el procesamiento de texto implica encontrar esos límites con los algoritmos y luego trabajar con los límites.
Si comienza a investigar qué tan difícil es manejar todos los idiomas correctamente, se dará cuenta rápidamente de que necesita una biblioteca que vea párrafos completos y los maneje correctamente. Windows, Mac, Linux (Qt y GTK) y Java vienen con facilidades para esto, además hay http://site.icu-project.org/ por ejemplo.
Al escribir aplicaciones web, desafortunadamente tienes que dejar que el navegador (probablemente ayudado por el sistema operativo) haga estas cosas, que yo sepa. Todo lo que puede hacer en JavaScript o en el lado del servidor es desordenarlo.
Tal vez resumiría la respuesta como: la mayor parte de la manipulación de cadenas en texto en lenguaje natural está rota, por lo que no tiene mucho sentido preocuparse por la clase de cadenas, aparte de tener una sin métodos ;-)