Киви неправильно отображает (бенгальский) символ Юникода
В настоящее время я работаю над настольным приложением Kivy, но столкнулся с проблемой при попытке отобразить символы Unicode на бенгальском языке в метке и тексте кнопки моего приложения. Каждый раз я получаю результат, как на изображении ниже. Я пробовал разные шрифты, такие как SolaimanLipi.ttf, kalpurush.ttf, NikoshBAN.ttf, но все равно не повезло. Я использую ПК с Windows. Тот же текст в том же шрифте правильно отображается за пределами Kivy; он отлично работает во всех текстовых редакторах, а также, чтобы убедиться, что я тестировал его в настольном приложении Java Swing.
Кто-нибудь может описать, в чем проблема? Что я могу сделать, чтобы решить эту проблему?
Ожидаемый результат:
Программный вывод:
#-- coding: utf-8 --
from kivy.base import runTouchApp
from kivy.lang import Builder
runTouchApp(Builder.load_string("""
#:import sp kivy.metrics.sp
Label:
text: 'সকালে'
font_size: sp(50)
font_name: "SolaimanLipi.ttf"
"""))
2 ответа
Текст Unicode можно преобразовать в текст Bijoy (ANSI) и легко использовать в Kivy с помощью
[font]
тег такой:
text = "[font=font/SutonnyMJ]Avwg evsjvq K_v ewj[/font] means I speak Bangla"
Этот репозиторий содержит код и инструкции, связанные с преобразованием Unicode в Bijoy (ANSI) в Kivy. Не идеальное решение, но большинство приложений удовлетворит их потребности.
В Kivy есть ошибка, которая открыта с 2014 года (!) - https://github.com/kivy/kivy/issues/2669
Насколько я понимаю обсуждение и текущий статус, разработчик все еще ищет решение.
Такие языки, как тамильский, требуют изменения, а этот процесс не поддерживается нашими текущими поставщиками. Я работаю над новым поставщиком текста, использующим Pango в качестве опции для обеспечения этой поддержки в Linux (и, возможно, OSX).
Это (с 2017 года) тоже кажется актуальным, но также несколько устаревшим: https://github.com/kivy/kivy/issues/4902