- 11.1.1 Вывод символов на экран
- Читайте также
- Вывод на экран текстовых строк
- Экран
- Экран
- Экран
- Определение класса символов и преобразование символов
- Вывод картинки на экран
- Пример 17-4. Вывод многострочных сообщений с подавлением символов табуляции
- Экран
- Экран загрузки
- 3.1.5. Вывод на экран содержимого crontab–файла
- 18.5.2. Вывод на экран строки списка
- Экран
- Экран
- Как вывести строки на языке Си в Linux
11.1.1 Вывод символов на экран
Обычно (если не считать управляющих комбинаций) код нажатой клавиши либо записывается в файл, либо соответствующий символ отображается на экране. В файл, разумеется, записываются последовательности байтов, а не символы как таковые, но и они в конечном итоге предназначены для прочтения человеком, а человек воспринимает только изображения печатных знаков на экране или в распечатке.
Работа экранного драйвера текстового режима основана на использовании 16 битовой кодировки символов UNICODE (UCS2). Изображение каждого символа, соответствующего любому двухбайтовому коду кодировки UNICODE, представляется матрицей из нолей и единиц размером 8 столбцов на H строк (обычно H принимает значения 8, 14 или 16). Единица в этой матрице соответствует светящейся точке на экране, а ноль — затемненной точке. Каждая строка этой матрицы кодируется одним байтом. Совокупность таких матриц (точнее, их байтовых представлений) для всех символов UNICODE образует таблицу экранного шрифта (Screen Font Map — SFM). Файл, в котором хранится такая таблица, может содержать шрифт одного размера по высоте (H) или шрифты нескольких размеров.
Сам экранный драйвер может работать в одном из двух режимов: режиме UTF или байтовом режиме. Выбор режима определяется приложением, которое обращается к этому драйверу для вывода символов на экран.
В режиме UTF последовательности байтов, получаемые от приложения для отображения на экране консоли, преобразуются по алгоритму UTF в коды UNICODE. После такого преобразования драйвер экрана обращается к загруженной в память таблице экранного шрифта (SFM) за соответствующим данному коду изображением символа.
В байтовом режиме драйвер экрана использует дополнительную таблицу — таблицу перекодировки символов (Application Charset Map или кратко ACM) для преобразования получаемых от приложения последовательностей байтов в коды UNICODE. Эта таблица зависит от кодировки символов, применяемой приложением. В дальнейшем драйвер экрана, как и в режиме UTF, обращается к таблице экранного шрифта (SFM) для того, чтобы извлечь из нее изображение нужного символа.
Для того, чтобы определить, работает ли виртуальная консоль в режиме UTF или в байтовом режиме, можно воспользоваться скриптом vt-is-UTF8, а для переключения режимов работы виртуальной консоли служат два скрипта: unicode_start и unicode_stop.
В ядре Linux отведено место для хранения четырех таблиц перекодировки ACM. Первые три таблицы определяют 437 кодовую страницу IBM (cp437), таблицу для набора символов терминала DEC VT100 (vt100) и таблицу для набора символов ISO latin1 (iso01). Эти три таблицы встроены в ядро и никогда не меняются. В качестве четвертой таблицы перекодировки в ядре может быть записана таблица перекодировки, выбранная пользователем.
Консольный драйвер Linux позволяет для каждой виртуальной консоли определить (с помощью команды charset) две ссылки (в документации их называют «сокетами») на таблицы перекодировки ACM. Эти две ссылки обозначаются как G0 и G1, причем для каждого виртуального терминала значения, присвоенные этим ссылкам, выбираются независимо. Однако, хотя ссылки G0 и G1 задаются независимо для каждого виртуального терминала, выбор таблицы перекодировки, определяемой каждой ссылкой, можно производить только из четырех таблиц, записанных в ядре. Поэтому реально все терминалы используют одну и ту же пользовательскую таблицу ACM. То есть, вы можете задать для tty1 использование G0=cp437 и G1=vt10 0, а для tty2 использование G0=iso01 и G1=user1 (определяемая пользователем кодировка), но не можете сделать так, что в одно и то же время tty1 использует таблицу user1, а tty2 использует таблицу user2.
Команда consolechars используется для изменения ACM, так же как и для задания шрифта и ассоциированной с ним таблицы SFM. С помощью команды consolechars можно считать консольный шрифт (таблицу экранного шрифта SFM) 8xH из файла и загрузить его в память, а также сохранить в файле шрифт, загруженный в память. Эта же команда служит для загрузки в ядро таблицы перекодировки, а также позволяет переопределить ссылки G0 и G1.
В качестве одной из опций команды consolechars при загрузке экранного шрифта из файла может быть задан размер шрифта по вертикали H. Значение H должно считываться из файла шрифта. Однако файлы некоторых форматов (в частности, файлы, содержащие только битовые образы символов) не содержат прямого указания на этот размер. В таком случае значение опции -H вычисляется исходя из размера файла (обычно -H 8, -H 14 или -H 16). Поскольку в настоящее время Linux не позволяет программно переключать режим работы дисплея, то выбор подходящего значения H в зависимости от установленного разрешения экрана полностью возлагается на пользователя.
В заключение отметим еще, что файлы с экранными шрифтами по умолчанию располагаются в каталоге /usr/lib/kbd/consolefonts/, а каталог /usr/lib/kbd/consoletrans/ используется для хранения как таблиц ACM, так и SFM.
В графическом режиме нет разбиения экрана на знакоместа, изображение любого символа можно вывести практически в любую позицию экрана. Изображения символов для конкретного набора символов составляют шрифт. Шрифты хранятся в файлах, которые принято называть файлами шрифтов. Вывод символов того или иного шрифта на экран организуется с помощью специального сервера шрифтов. Поэтому проблема русификации графического режима сводится к выбору русифицированного шрифта. Вопрос о том, что такое шрифты и как работает сервер шрифтов, подробно рассмотрен ниже в разд. 11.4.
Читайте также
Вывод на экран текстовых строк
Вывод на экран текстовых строк Сформированные в сценарии строки текста можно выводить в стандартный выходной поток (в консольном режиме) или в графическое диалоговое окно несколькими способами:? с помощью метода Echo объекта WScript;? с помощью методов Write и WriteLine объекта
Экран
Экран Как и в предыдущих версиях операционной системы Windows, компонент Экран используется для управления экраном монитора, а именно – для настройки отображения на нем информации. Здесь можно менять разрешение экрана, размер шрифта, задействовать или отключать технологию
Экран
Экран Запрет запуска апплета «Экран»Чтобы запретить запуск апплета Экран в Панели управления, создайте ключ °NoDispCPL° типа DWORD и установите его равным 1 в разделе HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesSystemПри попытке запуска апплета «Экрана» выдается сообщение, что системный
Экран
Экран Щелкните правой кнопкой мыши на свободном от значков месте Рабочего стола и выберите пункт Свойства. Откроется окно Свойства: Экран.Разрешение Перейдите в этом окне на вкладку Параметры (рис. 3.8) и, прежде чем устанавливать разрешение экрана, нажмите кнопку
Определение класса символов и преобразование символов
Определение класса символов и преобразование символов Функция Краткое описание isalnum проверка на букву или цифру isalpha проверка на букву isascii проверка на символ из набора кодировки ASCII iscntrl проверка на управляющий символ isdigit проверка на десятичную
Вывод картинки на экран
Вывод картинки на экран При запуске программа загружает из ресурсов картинку. Теперь надо вывести изображение на экран. Для этого нужно воспользоваться событием Paint, как показано в листинге 11.3.Листинг 11.3private void Form1_Paint(object sender, PaintEventArgs e) < e.Graphics.DrawImage(cheeseImage, 0, 0);>После
Пример 17-4. Вывод многострочных сообщений с подавлением символов табуляции
Пример 17-4. Вывод многострочных сообщений с подавлением символов табуляции #!/bin/bash# То же, что и предыдущий сценарий, но. # Символ «-«, начинающий строку-ограничитель встроенного документа: <<-# подавляет вывод символов табуляции, которые могут встречаться в теле
Экран
Экран Экран – средство вывода изображения, его выбор всегда субъективен, поэтому надо смотреть вживую, одними техническими описаниями тут не отделаешься.Оптимальная яркость должна совпадать с яркостью листа бумаги, тогда глазам не придется постоянно перестраиваться
Экран загрузки
Экран загрузки Хотя вы всегда должны стремиться, чтобы размер готового файла был минимальным, у вас наверняка будут ролики, загрузка которых займет больше, чем несколько секунд при работе через модем. Если игра имеет размер в сотни килобайт, у некоторых пользователей ее
3.1.5. Вывод на экран содержимого crontab–файла
3.1.5. Вывод на экран содержимого crontab–файла Для вывода на экран содержимого crontab–файла предназначена команда crontab -l:$ crontab -l#(davecron installed on Tue Kay 4 13:07:43 1999)#вывод текущей даты на экран#каждые 15 минут между 18:00 и 6:000,15,30,45 18-06 * * * /bin/echo «date» > /dev/consoleВот как легко можно создать
18.5.2. Вывод на экран строки списка
18.5.2. Вывод на экран строки списка Ниже приводится цикл for, список которого содержит строку значений «orange red blue grey». Для каждой переменной указана команда echo, в качестве параметра имя_переменной указывается loop. Команда echo с помощью части $LOOP выводит на экран каждое значение
Экран
Экран Практически всю почти 30-летнюю историю в ноутбуках использовались экраны на жидких кристаллах (такие экраны еще называют основанными на TFT-матрицах). Это необходимо для максимального уменьшения размеров компьютера. Однако если раньше главной целью ноутбука было
Экран
Экран Начиная работать в операционной системе, которую никто до вас не настраивал, вы со временем изменяете ее внешний вид в соответствии со своими предпочтениями. Этот процесс условно можно назвать персонализацией. Частично он был описан в гл. 10, когда я рассказывал, как
Как вывести строки на языке Си в Linux
Вывод строки на языке Си в Linux может быть выполнен несколькими способами. Рассмотрим некоторые из них.
- Используя функцию printf()
Функция printf() является одной из наиболее часто используемых функций в Си и используется для вывода данных на консоль. Для вывода строки на консоль с помощью printf() используется спецификатор формата %s, который указывает, что следующий аргумент является строкой. Вот пример кода:
В этом примере функция printf() используется для вывода строки «Hello, world!» на консоль, за которой следует символ новой строки ‘\n’.
- Используя функцию puts()
Функция puts() также используется для вывода строк на консоль. Она не требует спецификатора формата, поскольку она принимает только один аргумент — строку. Кроме того, она автоматически добавляет символ новой строки в конец выводимой строки. Вот пример кода:
- Используя функцию fwrite()
Функция fwrite() используется для записи блоков данных в файлы и может также использоваться для вывода строк на консоль. Вот пример кода:
Этот пример кода выводит строку «Hello, world!» на консоль, используя функцию fwrite(). Сначала строка записывается в массив символов, а затем функция fwrite() записывает этот массив в поток stdout (консольный вывод).
В общем, для вывода строки на языке Си в Linux можно использовать различные функции, такие как printf(), puts() и fwrite(). Каждая из них имеет свои особенности, но все они выполняют одну и ту же задачу — вывод строки на консоль.
Большое количество книг по всем языкам программирования ты можешь найти в канале — Библиотека
Подписывайся и прокачивай свои навыки!