Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Русский язык в Nuklear

  • Автор темы Автор темы Neils
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
15 Апр 2020
Сообщения
324
Реакции
80
Привет, нужна помощь в локализации Nuklear. Нашел один сайт в интернете по этому поводу, но что то не получается, выходит ошибка. Вот хотел попросить помощи у знающих людей)
Ошибка: warning C4090: инициализация: разные квалификаторы const
Снимок.JPG
 
инициализация: разные квалификаторы const
nk_font_cyrillic_glyph_ranges возвращает const nk_rune*, т.е. массив который нельзя изменять.
Ты присваиваешь их к nk_rune* range, поэтому выдает ошибку, замени на const nk_rune* range.
 
nk_font_cyrillic_glyph_ranges возвращает const nk_rune*, т.е. массив который нельзя изменять.
Ты присваиваешь их к nk_rune* range, поэтому выдает ошибку, замени на const nk_rune* range.
Спасибо большое!
 
А локализировать русский язык в Nuklear получилось?
В nuklear (как и в imgui) тебе просто нужно указать исходный шрифт.
В популярных шрифтах уже куча глифов для всех возможных языков, и кириллица в том числе, все они описаны в векторном формате (т.е. их можно растягивать без потери качества, т.к. это геометрические формулы).
Дальше шрифт загружается в память и передается растеризатору (stb_truetype/FreeType), который отрисует тебе символы определенных размеров в атлас, но растеризовать все глифы было бы очень дорого, поэтому ты указываешь в конфиге какие диапазоны глифов тебе нужны, в случае русских nk_font_cyrillic_glyph_ranges() возвращает тебе латиницу + кириллицу.
 
Не помогают эти глифы. А через nk_font_cyrillic_glyph_ranges() ничего не работает. Только через
if (nk_button_label(ctx, u8"Кнопка")).
А для качества шрифта впринципе, есть настройки. Но русский текст все-равно выглядит хуже, чем английский.
 
Не помогают эти глифы. А через nk_font_cyrillic_glyph_ranges() ничего не работает. Только через
if (nk_button_label(ctx, u8"Кнопка")).
Без nk_font_cyrillic_glyph_ranges это не может работать априори, потому что у тебя в шрифте не будет русских символов(глифов), и вместо каждого из них будет "?".
При этом диапазоны глифов нужно выставлять непосредственно перед сборкой атласа шрифтов.
А nk_button_label вообще вызывается в цикле отрисовки, и естественно там нужно писать u8 потому что весь текст в imgui/nuklear в UTF-8, это очевидно и написано в любой issue по кириллице на гитхабе.
Насчет качества, imgui поддерживает растеризацию через FreeType библиотеку, не знаю как насчет nuklear, хотя это и изначально паста imgui, имхо она поддерживается хуже.
А стандартный растеризатор stb_truetype (который вшит в nuklear_font.c) достаточно ограничен, его писал син баррет как можно компактнее, и там нет например поддержки хинтинга (улучшений когда размер шрифта маленький), это не было реализовано из-за патентов, а сейчас он уже меньше ею занимается.
В общем, мой совет перейти на imgui, не вижу смысла писать софты на C либе, которая уже не развивается, и комуна у нее беднее.
 
Я точно не помню, но смысл в том, что все должно было работать с nk_font_cyrillic_glyph_ranges(), но выдавало ??. Только через u8 удалось поставить русский текст, хотя, предполагалось без использования u8 все должно было работать.
 
Назад
Сверху Снизу