На другом форуме подсказали, надо вот так писать:
так работает, выводится символ копирайта.
По логике вещей можно предположить следующее, echo передаёт в ядро число, а ядро воспринимает это как число-код юникода, так как локаль установлена в utf8, потом по таблице перекодировке (которая расположена в файле шрифта) ищет соответствие и выводит соответствующий символ.
В таблице перекодировки, которая расположена в файле шрифта, в первой строке, получается для первого символа - первого знакоместа:
В шрифте это символ копирайта.
Непонятно вот что, я ведь для echo явно в шестнадцатиричном виде указывал на него - x00, но почему то так не работает. Получается что x00 воспринимается как юникод....?
*** Добавлено: 07.04.2019 22:09:12 ***
bormant пишет:речь о диапазоне 0xB0-0xDF
Спасибо за информацию.
Кое что прояснилось:
Все символы можно посмотреть командой:
Или раскрыть файл шрифта:
gunzip font.psf.gz # разархивирую файл со шрифтом
psfgettable font.psf font.table # вынимаю из него таблицу перекодировки, если локаль utf8 то таблица перекодировки будет для юникода
psf2txt font.psf font.txt # преобразовываю файл шрифта в текстовый вид, этот файл можно редактировать в текстовом редакторе, что именно редактировать можно догадаться по содержимому этого файла
Если кому интересно, то после редактирования шрифта можно всё собрать в обратном порядке:
txt2psf newfont.txt newfont.psf # создаём новый файл шрифта
mv newfont.psf newfont1.psf # переименовываем файл шрифта
psfaddtable newfont1.psf font.table newfont.psf # записываем таблицу перекодировки в новый фал шрифта, таблицу перекодировки то же можно отредактировать - это текстовый файл
gzip newfont.psf # архивируем файл шрифта
setfont newfont.psf.gz # записываем наш новый шрифт в знакогенератор, теперь будет работать этот шрифт
Там где в шрифте элементы псевдографики, (имеются ввиду ячейки знакогенератора) наверное сам знакогенератор продолжает изображение копируя последний столбец, поэтому символы псевдографики изображаются непрерывными. Остальные символы будут разделены полоской шириной в один столбец. Поэтому если нужно создать свои символы псевдографики или какие нибудь изображения, то в файле шрифта менять нужно именно эти ячейки.
И выводить, как подсказали на другом форуме, можно так:
где:
код юникода, можно посмотреть в вынутом файле таблицы перекодировки, например:
выведет первый символ - копирайт, это в шрифте которые у меня, в другом шрифте может быть и другой символ.
Остались невыясненными следующие вопросы:
Как изменить в чистой текстовой консоли количество выводимых строк и столбцов, без перезагрузки, из самой консоли?
Ведь есть режимы 40х25, 160х50 и т.д.
Для этого есть команда:
resizecons 160x50
resizecons: resizecons: не удалось найти файл видеорежима 160х50
Вроде как надо - поставить svgalib, который принесет restoretextmode, который сгенерит файл 80x25, который...
Дистрибутив у меня devuan - это ветка от debian без systemd.
В нём в репозиториях svgalib нет. Скачал deb пакет и попытался из него использовать restoretextmode, но оказалось что нет библиотеки svgalib, её поставить так и не удалось.
Может этот файл можно создать вручную в текстовом редакторе?
Второй вопрос как изменить количество выводимых столбцов и строк в фреймбуфере, не прибегая к загрузке шрифта разрешением 16х32
fbset не подходит, так как:
например у меня 1024х768, удалось выставить и реальные и виртуальные размеры 640х400, но сам размер знакоместа не изменился, в результате стало использоваться приблизительно пол экрана с размерами знакоместа такими какими они были ранее при 1024х768.