Сохранение символа и его вывод на экран, вся цепочка процесса
Сколько не читаю статьи, никак не могу "въехать", я опишу, как вижу "мир", а вы, пожалуйста, напишите, где неправильно и как правильно. Большое вам спасибо!
Я открываю текстовый редактор, нажимаю клавишу на клавиатуре. Контроллер клавиатуры отправляет процессору код нажатой клавиши. Операционная система передает этот код в текстовый редактор. Текстовый редактор определяет какая кодировка выбрана в операционной системе. Далее коду нажатой клавиши сопоставляется значение символа в текущей кодировке операционной системы. Например, код клавиши - 100, в кодировке windows-1251 он соответствует двоичному коду 00010100. Далее текстовый редактор обращается к операционной системе, чтобы та отобразила этот самый символ с кодом 00010100. Операционная система смотрит какой выбран шрифт, открывает файл шрифта, внутри же файла шрифта также имеется своя внутренняя кодировка, в которой код символа соотносится с глифом(изображением). Это изображение и выводится на экран. Чёрт, ну вот бесит, что нигде не нашел подробное описание того процесса, который я описал, только так как есть на самом деле. Помоги, пожалуйста, дайте ссылку, если знаете, где прочесть подробно про этот процесс ввода символа, его сохранение с использованием кодировок, а далее вывод на экран с использованием файлов шрифтов, или расскажите своими словами, если вам не в тяготу. Очень буду благодарен, уже устал, ну фиг где есть нормальная информация... |
Нет не так.
Контроллер клавиатуры возвращает не код нажатой клавиши, а код определяющий нажатую клавишу в наборе, так называемый скан-код. Код же символа соответствующий нажатой клавише формируется драйвером устройства. У файлов шрифтов нет никакой внутренней кодировки, эти файлы описывают представление символа на экране, при этом есть растровые описания и векторные (ttf-шрифт). Код символа плюс кодовая страница набора (то что определяет язык ввода), это адрес в файле шрифта, по которому и находится матрица описываемая этот символ, то есть задается обычное смещение. Текстовый редактор ничего не спрашивает у ОС по поводу отображения и вывода символа на экран. Все это производится драйверами, работа которых базируется на получении/перехватах соответствующих прерываний как аппаратных так и программных. В итоге описание этого символа попадает в графическую карту и рисуется на экране. А текстовый редактор занят глобальными задачами - хранить позицию символа на экране, каким стилем его написать и т.п. Если бы он контролировал весь процесс от нажатия клавиши до отображения на экране, то скорость "печатания" в редакторе была бы один символ в минуту. Вкратце так, а полностью весь процесс очень сложный. |
Часовой пояс GMT +3, время: 18:14. |