Re[15]: Как написать редактор текстов на C#?
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.11.22 22:57
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>Эти TextElements — это то (последовательности CodePoint-ов),

ЭФ>что шрифт должен удачно отрендерить как единый объект.
ЭФ>Можно было бы назвать его даже RenderingElement.

ЭФ>Если в коде файла три буквы 'f', 'f', 'i' в виде трёх кодепоинтов,

ЭФ>то сами они никак не склеятся в один кодепоинт с кодом 0xFB03.
Сами — не склеятся. Но у вас же нет цели самостоятельно нормализовывать все композиции? Всегда можно выполнить декомпозицию и определить границы TextElement по классу unicode chars.
ЭФ>И это не фича UTF-16, а
ЭФ>прямо в Unicode есть такой codepoint — https://unicodemap.org/details/0xFB03/index.html
Ну всё верно. Я же вас спрашивал с самого начала — хотите ли вы декомпозировать лигатуры, или вас устроит удаление всей лигатуры целиком?

ЭФ>Вы предлагаете полагаться на систему (и АПИ) рендеринга,

ЭФ>чтобы о таких штуках знала она, но не знал я.
Нет, я предлагаю не это. Я предлагаю для внутреннего представления текста использовать дерево. В самом низу этого дерева пусть лежат последовательности символов в такой кодировке, которая удобна для передачи в платформенные функции отображения — например, UTF-16. А узлами дерева будут собственно TextElement, Word, Line. Детали по-прежнему зависят от того, что вы хотите написать. Пока что мы ничего не знаем, кроме того, что вы хотите уметь работать с ударениями (для которых, вообще говоря, достаточно выучить ровно один combining diacritic character) в кириллице и смайликами.

ЭФ>Мне мешает так поступить:

ЭФ>1) незнание того, как этот рендеринг в точности работает
ЭФ>и как на него влиять (для этого, вероятно, надо редактировать определение шрифта);
ЭФ>2) незнание АПИ.
Без знания АПИ и понимания того, как работает рендеринг, вы всё равно ничего не напишете.
ЭФ>Если же я делаю свой конфиг, то в нём я дублирую эту информацию понятным мне способом.
ЭФ>Мне кажется, что это будет быстрее и проще,
ЭФ>чем изучать все хитросплетения существующих реализаций.
Нет, это будет медленнее и сложнее.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.