TextElement, Grapheme, Rune, Character
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 23.10.21 19:59
Оценка:
Существует ли в C# нормальная библиотека для работы с текстами?

Меня совсем не волнуют накладные расходы. Если надо, чтобы символ в памяти занимал 32 бита — пусть занимает, мне не жалко (да хоть 32 байта — пофиг совершенно).
Хотелось бы простое API, в котором один символ (например буква "а́" под ударением) был бы представлен одним объектом (или структурой) C#.
Можно с именем System.Text.GraphemeCluster.

Простое в том смысле, чтобы позиции для рисования считались просто.
Чтобы как в китайском языке: "иероглиф это всё, что может влезть на квадратик 1см*1см"
(даже если это "вид дракона в полёте")
Отредактировано 23.10.2021 21:23 Эйнсток Файр . Предыдущая версия . Еще …
Отредактировано 23.10.2021 20:48 Эйнсток Файр . Предыдущая версия .
Отредактировано 23.10.2021 20:46 Эйнсток Файр . Предыдущая версия .
Re: TextElement, Grapheme, Rune, Character
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.10.21 08:20
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

А чем MeasureText в разных вариациях не подходит?
https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.forms.textrenderer.measuretext?view=netcore-3.1

Опять же, C# это еще и Андроид, и яблоко и Xamarin.Forms сейчас выйдет MAUI
и солнце б утром не вставало, когда бы не было меня
Re: TextElement, Grapheme, Rune, Character
От: Vladek Россия Github
Дата: 24.10.21 20:01
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Меня совсем не волнуют накладные расходы. Если надо, чтобы символ в памяти занимал 32 бита — пусть занимает, мне не жалко (да хоть 32 байта — пофиг совершенно).

ЭФ>Хотелось бы простое API, в котором один символ (например буква "а́" под ударением) был бы представлен одним объектом (или структурой) C#.
ЭФ>Можно с именем System.Text.GraphemeCluster.

https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-encoding-introduction#grapheme-clusters
Re[2]: TextElement, Grapheme, Rune, Character
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 24.10.21 21:59
Оценка:
V> https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-encoding-introduction#grapheme-clusters

Мне не нужно определение Grapheme Cluster из стандарта Unicode.
Мне нужен отдельный класс в готовом виде,
объекты которого я мог бы использовать, а так же строки из них.

А так мне надо самому сделать класс, включить туда переменную-член string,
вычитать туда grapheme cluster через функцию, затем посчитать размеры через другую функцию,
потом закешировать, и после всего этого у меня всё ещё не будет строк из этих объектов...
Re[3]: TextElement, Grapheme, Rune, Character
От: Vladek Россия Github
Дата: 25.10.21 11:56
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

V>> https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-encoding-introduction#grapheme-clusters


ЭФ>Мне не нужно определение Grapheme Cluster из стандарта Unicode.

ЭФ>Мне нужен отдельный класс в готовом виде,
ЭФ>объекты которого я мог бы использовать, а так же строки из них.

Так они же там перечислены!
Re: TextElement, Grapheme, Rune, Character
От: karbofos42 Россия  
Дата: 25.10.21 12:08
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Существует ли в C# нормальная библиотека для работы с текстами?


Что такое "работа с текстами"?
Парсинг, вывод на экран, вёрстка,...?
Re[4]: TextElement, Grapheme, Rune, Character
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 25.10.21 12:51
Оценка:
V> Так они же там перечислены!

Нет, там перечислена пара вспомогательных классов.
Класса для "GraphemeCluster" нет, и строк из объектов такого типа тоже нет.
Re[5]: TextElement, Grapheme, Rune, Character
От: Vladek Россия Github
Дата: 26.10.21 05:32
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

V>> Так они же там перечислены!


ЭФ>Нет, там перечислена пара вспомогательных классов.

ЭФ>Класса для "GraphemeCluster" нет, и строк из объектов такого типа тоже нет.

What looks like one character might result from a combination of multiple code points, so a more descriptive term that is often used in place of "character" is grapheme cluster. The equivalent term in .NET is text element.


https://docs.microsoft.com/en-us/dotnet/api/system.globalization.stringinfo.gettextelementenumerator?view=net-5.0

Текстовый элементы из этого перечислителя — это подстроки из оригинальной строки, которые вместе являются кластером.
Re[6]: TextElement, Grapheme, Rune, Character
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 26.10.21 06:32
Оценка:
V> это подстроки

Ну я рад. Я так и сказал, что такую "подстроку", которая тоже строка,
нужно будет хранить в качестве образца. И её размеры. И понадобится под такое хранение отдельный объект.
Отредактировано 26.10.2021 6:33 Эйнсток Файр . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.