Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Операционные системы > Linux (Ubuntu, Debian, Red Hat, CentOS, Mint)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 06.04.2019, 03:09   #1
v4567
Форумчанин
 
Регистрация: 06.07.2008
Сообщений: 88
Репутация: 39
По умолчанию и снова консоль 80х25

Извиняюсь за надоедливость.
В чистой (не эмулятор терминала, загрузился передав ядру параметр nomodeset) буквенноцифровай консоли 80х25 (без фреймбуфера!) загрузил командой setfont шрифты, в ascii первый символ идёт NUL, потом SOH и т. д.
В моих же шрифтах первым идёт символ копирайта - "С" в кружке, далее идут то же вполне печатные символы.
По команде showconsolefont они все прекрасно выводятся на консоль, все 256 символов.
Далее попытался вывести первый символ копирайта командой echo:
Код:

echo -e "\x00"

Но вывелось пустое место, при помощи такого вывода, выводятся: латиница, кириллица, цифры, а вот символы псевдографики вывести не удалось, вместо символов псевдографики выводится ромбик.
Я не пойму почему так?
И как можно вывести символы из командной строки, которые есть в шрифте.
Некоторые спросят меня, зачем мне это когда есть графика, отвечаю. Хотел написать небольшую игру на баше и в шрифтах сделать некоторые изображения, комбинируя которые можно кое что нарисовать. Я понимаю что в эмуляторе, да и во фреймбуфере это работать не будет, но я просто хотел попробовать как у меня это получится в чистой консоли. Ведь линукс для людей, всё можно настроить, подправить исходники и вот тут сразу споткнулся казалось бы в простом. А теперь уже даже интересно почему echo не выводить некоторые символы из шрифта, при этом showconsolefont прекрасно выводит все символы которые есть в шрифте.
И ещё, если при изменении шрифта не записать таблицу перекодировки для юникода, то кириллица не выведется, вместо неё будут вопросительные знаки. Ну откуда в чистой консоли может фигурировать юникод?
Последний момент, неужели нет никакого способа как можно поменять количество столбцов и строк во фреймбуфере, уменьшив их количество при этом увеличив размеры знакоместа, кроме как записывая в виртуальный знакогенератор шрифт размерами 16х32? Команда fbset меняет разрешение, например с 1024х768 на 640х400 но при этом размер знакоместа не меняется, он как был маленьким так и останется, в результате начинает использоваться пол экрана, а вторая половина не используется.
v4567 вне форума   Ответить с цитированием
Старый 07.04.2019, 23:34   #2
v4567
Форумчанин
 
Регистрация: 06.07.2008
Сообщений: 88
Репутация: 39
По умолчанию

Кое что прояснилось:
Все символы можно посмотреть командой:
Код:

showconsolefont

Или раскрыть файл шрифта:
Код:

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  # записываем наш новый шрифт в знакогенератор, теперь будет работать этот шрифт

Там где в шрифте элементы псевдографики, (имеются ввиду ячейки знакогенератора) наверное сам знакогенератор продолжает изображение копируя последний столбец, поэтому символы псевдографики изображаются непрерывными. Остальные символы будут разделены полоской шириной в один столбец. Поэтому если нужно создать свои символы псевдографики или какие нибудь изображения, то в файле шрифта менять нужно именно эти ячейки.

И выводить, как подсказали на другом форуме, можно так:
Код:

echo -e "\u......"

где:
Код:

\u......

код юникода, можно посмотреть в вынутом файле таблицы перекодировки, например:

Код:

echo -e "\ua9"

выведет первый символ - копирайт, это в шрифте которые у меня, в другом шрифте может быть и другой символ.

Остались невыясненными следующие вопросы:

Как изменить в чистой текстовой консоли количество выводимых строк и столбцов, без перезагрузки, из самой консоли?
Ведь есть режимы 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.
v4567 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Re: из консоли вернуть разрешение 80х25 v4567 Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 3 05.04.2019 00:09
Снова я и снова геморрой, только уже с многопоточностью FleXik Общие вопросы Delphi 26 07.07.2013 16:48
И снова SQL Impuls1989 БД в Delphi 3 13.03.2010 23:46
MDIChild снова и снова... Siber_Dec Общие вопросы Delphi 2 13.12.2009 04:24
и снова Mdi Баламут Общие вопросы Delphi 1 28.11.2006 08:03


09:54.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru