Настройка шрифтов в Linux RT
-
- doctor
- Сообщения: 2244
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 30 раз
- Поблагодарили: 30 раз
Настройка шрифтов в Linux RT
Есть условная Десктоп-система (одноплатник 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-кодировке?
У кого-нибудь есть решение заставить рисовать переднюю панель приложения шрифтом, отображающим русские символы в win-кодировке?
-
- professor
- Сообщения: 3496
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 54 раза
- Поблагодарили: 185 раз
- Контактная информация:
Re: Настройка шрифтов в Linux RT
Разве это так?
По-моему я видел FP функций, и при переносе нужно переписывать тексты.
-
IvanLis
- guru
- Сообщения: 5526
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 32 раза
- Поблагодарили: 98 раз
Re: Настройка шрифтов в Linux RT
Я всегда ручками перебирал, но если есть желание, то я вижу только один путь (но гарантировать ничего не могу), изменить в настройках системы Locale.
Установка CP1251 locale в Linux
Установка CP1251 locale в Linux
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- doctor
- Сообщения: 2244
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 30 раз
- Поблагодарили: 30 раз
Re: Настройка шрифтов в Linux RT
Названия контролов и тексты отображаются в кодировке win-1251 (среде разработки под Windows). Мало того, русские символы не отображаются, пока в настройках "Язык и региональные стандарты" не будет указан "Язык программ, не поддерживающих Юникод".
К сожалению, из Linux RT locale, как команда, отсутствует. На АстраЛинукс (как донор) данный метод установки CP1251 не работает. Расширенный режим вывода показывает тотальные ошибкиIvanLis писал(а): ↑05 сен 2023, 19:05 Я всегда ручками перебирал, но если есть желание, то я вижу только один путь (но гарантировать ничего не могу), изменить в настройках системы Locale.
Установка CP1251 locale в Linux
-
- professor
- Сообщения: 3496
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 54 раза
- Поблагодарили: 185 раз
- Контактная информация:
Re: Настройка шрифтов в Linux RT
Это же всё про винду.
Разве линукс тем же страдает?
Я думал, он берёт код символа и трактует его по своей кодировке. Откуда ему известно, кто создавал эти тексты?
-
- doctor
- Сообщения: 2244
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 30 раз
- Поблагодарили: 30 раз
Re: Настройка шрифтов в Linux RT
Так подскажите, как Linux, получая 8битный символ из приложения, которое в принципе не знает, что такое UTF-8, должно понять, из какой он кодовой таблицы? В данном случае надо прописать локаль, для начала. В идеале желательно прописать кодовую таблицу cp-1251 в локаль L1, которая установлена по умолчанию в Linux RT
-
- professor
- Сообщения: 3496
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 54 раза
- Поблагодарили: 185 раз
- Контактная информация:
Re: Настройка шрифтов в Linux RT
Это к Ивану, я понятия не имею
Пару лет назад модернизировал проект, где в контроллере под linux прям интерфейс был. Но на английском. Заказчик, естественно, захотел русифицировать.
В итоге поставили комп, а контроллер лишили интерморды. Но там всё сводилось к тому, что иначе придётся пересобирать ядро. Нафиг-нафиг
-
- adviser
- Сообщения: 239
- Зарегистрирован: 06 ноя 2020, 15:37
- Версия LabVIEW: 19
- Благодарил (а): 19 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Настройка шрифтов в Linux RT
Изначально была семибитная таблица символов 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"
Код: Выделить всё
appFont="paratype-pt sans" 12
Есть как раз несколько PTS**.ttf что соответствует paratype-pt sans
Осталось изменить шрифт подставив в таблицу шрифта другие символы и посмотреть что будет.
И да кстати перекомпиляция ядра не поможет. Так как в ядре все есть. Кодировка UTF-8, шрифты с поддержкой кирилицы.
-
- doctor
- Сообщения: 2244
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 30 раз
- Поблагодарили: 30 раз
Re: Настройка шрифтов в Linux RT
Это вторая часть решения, спасибо.ujin1 писал(а): ↑07 сен 2023, 05:40 Настройка локали LabVIEW в файле /etc/natinst/share/ni-rt.iniКод: Выделить всё
[Supported Locales] enlish="L1"
Первая часть - установить русскую локаль штатным способом через localedef. Пока при вызове этой функции ошибки, хотя пустой каталог ru-RU.cp1251 создается
-
- adviser
- Сообщения: 239
- Зарегистрирован: 06 ноя 2020, 15:37
- Версия LabVIEW: 19
- Благодарил (а): 19 раз
- Поблагодарили: 38 раз
- Контактная информация:
Re: Настройка шрифтов в Linux RT
По ссылке на форум 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=
Код: Выделить всё
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 не искал.
-
- doctor
- Сообщения: 2244
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 30 раз
- Поблагодарили: 30 раз
Re: Настройка шрифтов в Linux RT
Что касается поддержки UTF-8 на Linux RT. Писать долго, но она полностью отсутствует при выводе символов на экранные формы, в отличие от платформы Windows. Притом, что установка русской клавиатуры приводит к тому, что в текстовом редакторе Mousepad можно писать по-русски. Дело не в локалях.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 4 Ответы
- 1581 Просмотры
-
Последнее сообщение ujin1
-
- 30 Ответы
- 5499 Просмотры
-
Последнее сообщение FredP
-
- 7 Ответы
- 3153 Просмотры
-
Последнее сообщение ujin1
-
- 3 Ответы
- 648 Просмотры
-
Последнее сообщение dadreamer
-
- 0 Ответы
- 459 Просмотры
-
Последнее сообщение Pavel Krivozubov