LINUX.ORG.RU
Ответ на: комментарий от Harald

короче, покажи кусочек своего кода, работающий со строками, чтоб более предметно рассуждать

Смысл, я давно отказался от wchar_t (выше я об этом писал), что вы хотите в моем коде увидеть.
Дабы упредить вопрос, зачем, скажу - у меня пользователь может ввести любой символ, который умеет его ОС и глиф которого есть в ttf. Атлас необходимых глифов строится динамически.

andreyu ★★★★★
()
Ответ на: комментарий от Macil

Не впихнешь. Дело не в размере.

Есть на это дело поговорка, она о размре члена.

Произвольный глиф не сводится к одному произвольному кодпоинту.

А к чему?

Так что процедура копания в массиве - жутко нетривиальная. А уж если на входе строка не нормализованная, то вплоть до сегфолтов.

В массиве чего? Массивы, они разные бывают.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Че и это в стандарте прописано?!

а вот это я не знаю, под мастдайкой такой костыль, вроде под linux тоже работает

shty ★★★★★
()
Ответ на: комментарий от andreyu

Произвольный глиф не сводится к одному произвольному кодпоинту.

А к чему?

глиф <: кодпоинт <: байт, где <: - много

В массиве чего?

В массиве кодпоинтов, кончено же.

Macil ★★★★★
()
Ответ на: комментарий от shty

а вот это я не знаю, под мастдайкой такой костыль, вроде под linux тоже работает

Значит все же костыль?
В Linux и без того wchar_t == 4 байта.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

у меня пользователь может ввести любой символ, который умеет его ОС и глиф которого есть в ttf. Атлас необходимых глифов строится динамически.

а как этот символ попадает в программу вообще? GUI на чем основан?

Harald ★★★★★
()
Ответ на: комментарий от Harald

а как этот символ попадает в программу вообще? GUI на чем основан?

Млин, ну у вас и вопросы. Как у ребенка без понятий. Попробую ответить. Символ попадает из: локализации (utf-8), из пользовательского ввода. Гуи свой (к чему этот вопрос вообще не понимаю). Для растеризаци используется freetype2.

andreyu ★★★★★
()
Ответ на: комментарий от Macil

Блин, 5 звезд отрастил, и спрашиваешь.

Я не растил.

x <: y означает «x состоит из многих y».

Странно, у нас для этого был иной символ.

Что такое кодпоинт, полагаю, вы не скажете?

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

http://icu-project.org/docs/papers/forms_of_unicode/#h0

Добавлю ещё то, что на одном codepoint может висеть несколько глифов (часто встречается в cjk-шрифтах, некоторые иероглифы рисуются по-разному в разных языках при том, что они на одном codepoint).

x3al ★★★★★
()
Ответ на: комментарий от debianist

А разве while(*buf++) недостаточно? ;/

(:) ранее так и делал, но в коде постоянно приходится пользоваться *buf-1 это не эстетично

sadavod
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.