Показать не английский sh текст в живописном - PullRequest
0 голосов
/ 29 марта 2020

Я пытался показать персидский текст с помощью text primitive в приложении Sceni c, но Sceni c показывал некоторые поля с X внутри них! Я пытался использовать шрифт, но мне это не удалось.

Это мой код:

g
|> text("متن نمونه", t: {0, 700}, fill: :white, font: @font_hash)

Должен ли я создать проблему в GitHub или есть решение?

Спасибо за вашу помощь.

Обновление:

Я следовал инструкциям для пользовательских шрифтов для кэширования метрик шрифта (спасибо Алексей Матюшкин ), затем я есть другая проблема, показанная на этой картинке:

Wrong Persian form

Этот текст должен выглядеть следующим образом:

correct Persian form

В персидском языке некоторые буквы в слове могут соединяться с другими буквами. В этих случаях эти буквы отображаются другим символом. (Проблема здесь в том, что все буквы отображаются в отдельном формате. Кроме того, неправильное направление текста)

Например: правильное слово «Hello» - «سلام», но в тексте это так. отображается как "م‌ا‌ل‌س". Это похоже на отображение «Hello World» как «dlroW olleH»

Возможно, проблема заключается в кодировке, которую я не смог найти, чтобы попробовать UTF-8. Или это может быть направление текста ...

1 Ответ

0 голосов
/ 01 апреля 2020

Полностью понимаю проблему. Проблема в том, что механизм рендеринга шрифтов довольно прост c в настоящее время и не поддерживает справа налево, вверх-вниз, символьные кластеры, автоматические c лигатуры и др. c.

Упрощенный c рендеринг шрифта является одной из причин, по которой он <1.0. Хотелось бы отказаться от техники атласа персонажей старой школы, которую он использует в настоящее время, и перейти на что-то, основанное на GPU (Slug). Это значительно облегчит эти проблемы, но не очень совместимо с проектом с открытым исходным кодом. </p>

Если ваши потребности достаточно сильны, я мог бы добавить справа налево, но это не так просто.

...