Настройка шрифтов в Linux RT

Создание приложений, библиотек, инсталляторов
Ответить
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2244
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 30 раз
Поблагодарили: 30 раз

Настройка шрифтов в Linux RT

Сообщение Borjomy_1 »

Есть условная Десктоп-система (одноплатник x86-64), на котором установлена Linux RT x64, со включенным Embedded UI. Разработка производится на Windows машине под LV2020. Проект удивительным образом без проблем перекомпилировал на Linux RT, и он работает, будучи загружен на одноплатник. Русские шрифты на этой системе есть, так как прописал русскую клавиатуру и в редакторе Mousepad можно писать тексты на русском. Попутно, кстати был создан console.conf. Очевидно, что символы UTF-8 отображаются без проблем. Но есть проблема передних панелей приложения на LabView, в которых шрифт, как мы знаем, отображается в кодировке win-1251, а запускается это все под Linux RT, в оболочке, если не ошибаюсь, X11. В результате русские символы отображаются в кодировке типа ISO-8859-1 (гласные и согласные с диакритическими знаками)

У кого-нибудь есть решение заставить рисовать переднюю панель приложения шрифтом, отображающим русские символы в win-кодировке?
Artem.spb

Activity Автор
professor
professor
Сообщения: 3496
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 54 раза
Поблагодарили: 185 раз
Контактная информация:

Re: Настройка шрифтов в Linux RT

Сообщение Artem.spb »

Borjomy_1 писал(а): 05 сен 2023, 15:12 LabView, в которых шрифт, как мы знаем, отображается в кодировке win-1251
Разве это так?
По-моему я видел FP функций, и при переносе нужно переписывать тексты.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5526
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 32 раза
Поблагодарили: 98 раз

Re: Настройка шрифтов в Linux RT

Сообщение IvanLis »

Я всегда ручками перебирал, но если есть желание, то я вижу только один путь (но гарантировать ничего не могу), изменить в настройках системы Locale.
Установка CP1251 locale в Linux
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2244
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 30 раз
Поблагодарили: 30 раз

Re: Настройка шрифтов в Linux RT

Сообщение Borjomy_1 »

Artem.spb писал(а): 05 сен 2023, 17:12
Borjomy_1 писал(а): 05 сен 2023, 15:12 LabView, в которых шрифт, как мы знаем, отображается в кодировке win-1251
Разве это так?
По-моему я видел FP функций, и при переносе нужно переписывать тексты.
Названия контролов и тексты отображаются в кодировке win-1251 (среде разработки под Windows). Мало того, русские символы не отображаются, пока в настройках "Язык и региональные стандарты" не будет указан "Язык программ, не поддерживающих Юникод".
IvanLis писал(а): 05 сен 2023, 19:05 Я всегда ручками перебирал, но если есть желание, то я вижу только один путь (но гарантировать ничего не могу), изменить в настройках системы Locale.
Установка CP1251 locale в Linux
К сожалению, из Linux RT locale, как команда, отсутствует. На АстраЛинукс (как донор) данный метод установки CP1251 не работает. Расширенный режим вывода показывает тотальные ошибки
Artem.spb

Activity Автор
professor
professor
Сообщения: 3496
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 54 раза
Поблагодарили: 185 раз
Контактная информация:

Re: Настройка шрифтов в Linux RT

Сообщение Artem.spb »

Borjomy_1 писал(а): 06 сен 2023, 14:07 Названия контролов и тексты отображаются в кодировке win-1251 (среде разработки под Windows). Мало того, русские символы не отображаются, пока в настройках "Язык и региональные стандарты" не будет указан "Язык программ, не поддерживающих Юникод".
Это же всё про винду.
Разве линукс тем же страдает?
Я думал, он берёт код символа и трактует его по своей кодировке. Откуда ему известно, кто создавал эти тексты?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2244
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 30 раз
Поблагодарили: 30 раз

Re: Настройка шрифтов в Linux RT

Сообщение Borjomy_1 »

Artem.spb писал(а): 06 сен 2023, 19:20
Borjomy_1 писал(а): 06 сен 2023, 14:07 Названия контролов и тексты отображаются в кодировке win-1251 (среде разработки под Windows). Мало того, русские символы не отображаются, пока в настройках "Язык и региональные стандарты" не будет указан "Язык программ, не поддерживающих Юникод".
Это же всё про винду.
Разве линукс тем же страдает?
Я думал, он берёт код символа и трактует его по своей кодировке. Откуда ему известно, кто создавал эти тексты?
Так подскажите, как Linux, получая 8битный символ из приложения, которое в принципе не знает, что такое UTF-8, должно понять, из какой он кодовой таблицы? В данном случае надо прописать локаль, для начала. В идеале желательно прописать кодовую таблицу cp-1251 в локаль L1, которая установлена по умолчанию в Linux RT
Artem.spb

Activity Автор
professor
professor
Сообщения: 3496
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 54 раза
Поблагодарили: 185 раз
Контактная информация:

Re: Настройка шрифтов в Linux RT

Сообщение Artem.spb »

Borjomy_1 писал(а): 06 сен 2023, 23:47 Так подскажите, как Linux, получая 8битный символ из приложения, которое в принципе не знает, что такое UTF-8, должно понять, из какой он кодовой таблицы?
Это к Ивану, я понятия не имею :D
Пару лет назад модернизировал проект, где в контроллере под linux прям интерфейс был. Но на английском. Заказчик, естественно, захотел русифицировать.
В итоге поставили комп, а контроллер лишили интерморды. Но там всё сводилось к тому, что иначе придётся пересобирать ядро. Нафиг-нафиг :crazy:
ujin1
adviser
adviser
Сообщения: 239
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 19 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Настройка шрифтов в Linux RT

Сообщение ujin1 »

Artem.spb писал(а): 07 сен 2023, 00:02 Но там всё сводилось к тому, что иначе придётся пересобирать ядро. Нафиг-нафиг :crazy:
Изначально была семибитная таблица символов ASCII у англоязычных программистов
После начала распространения UNIX, DOS добавили в код восьмой бит и его выделили под региональные кодировки.
Встречал первоисточник истории развития кодировок, сейчас вряд ли найду
https://stackoverflow.com/questions/257 ... t-or-8-bit
Появились всякие CP-866, KOI-8R. С распространением Windows появилась Win-1251.
Здесь есть немного https://wiki.iarduino.ru/page/encoding-arduino/
Но это все были однобайтные кодировки. С помощью этих кодировок можно было использовать параллельно только 2 языка английский основной и какой нибудь один дополнительный.
Английский так же остался в пределах 7 бит старший 0 и дополнительная кодировка с старшим битом = 1
Далее в Unix системах попытались навести порядок и ввели кодировку UTF-8 а затем UTF-16.
Самая веселая кодировка UTF-8. В ней символы могут быть и однобайтные и двухбайтные (в UTF-16 все двухбайтные).
Значение символа в UTF-8 зависит не только от значения но и от последовательности значений.
В смеси английских и региональных символов при убирании одного байта (в UTF-8) весь текст может стать нечитаемым.
Таким образом программа, в нашем случае LabVIEW, должна откуда-то узнать в какой кодировке текст.
В шрифтах тоже несколько стандартов, где символы тоже представлены несколькими наборами таблиц.
Какой символ какому символу сопоставить в таблице шрифта?
В основе NI Linux RT OpenEmbedded framework. Кодовая таблица UTF-8. Шрифты ttf содержат кириллические символы.
Соответственно все дело в LabVIEW, которая интерпретирует строку только как кодировку латиница.
Так как текст весь однобайтовый LabVIEW кодам 0x80-0xFF из шрифтов сопоставляет символы с из таблицы соответствующей латинице. И скорее всего сопоставляет не LabVIEW а отображение шрифтов в рабочем столе XFCE.
Настройка локали LabVIEW в файле /etc/natinst/share/ni-rt.ini

Код: Выделить всё

[Supported Locales]
enlish="L1"
Настройка шрифтов LabVIEW в файле /etc/natinst/share/lvrt.conf

Код: Выделить всё

appFont="paratype-pt sans" 12
Шрифты в папке /usr/share/fonts/X11/TTF
Есть как раз несколько PTS**.ttf что соответствует paratype-pt sans
Осталось изменить шрифт подставив в таблицу шрифта другие символы и посмотреть что будет.

И да кстати перекомпиляция ядра не поможет. Так как в ядре все есть. Кодировка UTF-8, шрифты с поддержкой кирилицы.
Изображение
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2244
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 30 раз
Поблагодарили: 30 раз

Re: Настройка шрифтов в Linux RT

Сообщение Borjomy_1 »

ujin1 писал(а): 07 сен 2023, 05:40 Настройка локали LabVIEW в файле /etc/natinst/share/ni-rt.ini

Код: Выделить всё

[Supported Locales]
enlish="L1"
Это вторая часть решения, спасибо.
Первая часть - установить русскую локаль штатным способом через localedef. Пока при вызове этой функции ошибки, хотя пустой каталог ru-RU.cp1251 создается
Artem.spb

Activity Автор
professor
professor
Сообщения: 3496
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 54 раза
Поблагодарили: 185 раз
Контактная информация:

Re: Настройка шрифтов в Linux RT

Сообщение Artem.spb »

ujin1 писал(а): 07 сен 2023, 05:40 И да кстати перекомпиляция ядра не поможет. Так как в ядре все есть. Кодировка UTF-8, шрифты с поддержкой кирилицы.
viewtopic.php?p=84817#p84817
ujin1
adviser
adviser
Сообщения: 239
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 19 раз
Поблагодарили: 38 раз
Контактная информация:

Re: Настройка шрифтов в Linux RT

Сообщение ujin1 »

Artem.spb писал(а): 07 сен 2023, 15:07 viewtopic.php?p=84817#p84817
По ссылке на форум NI там есть в обсуждении:
"One approach would be to do what I'd posted above: rebuild the image to have UTF-8 support and to install Russian locales"
"Один из подходов — сделать то, что я написал выше: перестроить образ, чтобы он поддерживал UTF-8"
Это обсуждение от 2016 года. Новое ядро уже поддерживает UTF-8
Имеющиеся локали в системе

Код: Выделить всё

admin@H1AZ1:~# locale -a
C
CP932
CP936
en_US
en_US.iso88591
en_US.utf8
ja_JP.windows31j
L1
POSIX
zh_CN.cp936
admin@H1AZ1:~# uname -a
Linux H1AZ1 5.15.113-rt64 #1 SMP PREEMPT_RT Thu Jun 22 07:07:39 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
admin@H1AZ1:~#
текущая локаль

Код: Выделить всё

admin@H1AZ1:~# locale
LANG=L1
LC_CTYPE="L1"
LC_NUMERIC="L1"
LC_TIME="L1"
LC_COLLATE="L1"
LC_MONETARY="L1"
LC_MESSAGES="L1"
LC_PAPER="L1"
LC_NAME="L1"
LC_ADDRESS="L1"
LC_TELEPHONE="L1"
LC_MEASUREMENT="L1"
LC_IDENTIFICATION="L1"
LC_ALL=
Далее я поменял локаль в файле /etc/natinst/share/ni-rt.ini

Код: Выделить всё

admin@H1AZ1:~#locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
Это ничего не дает и шрифты остаются те же.
Судя по тому, что я встречал в интернете локали можно доустановить дополнительно. Возможно они генерируются при сборке ядра
На сегодняшний момент в системе локалей ru_RU.utf8, CP866, WIN1251 нет. В репозитории NI не искал.
Изображение
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2244
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 30 раз
Поблагодарили: 30 раз

Re: Настройка шрифтов в Linux RT

Сообщение Borjomy_1 »

Что касается поддержки UTF-8 на Linux RT. Писать долго, но она полностью отсутствует при выводе символов на экранные формы, в отличие от платформы Windows. Притом, что установка русской клавиатуры приводит к тому, что в текстовом редакторе Mousepad можно писать по-русски. Дело не в локалях.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Создание приложений»