Нет не так.
Контроллер клавиатуры возвращает не код нажатой клавиши, а код определяющий нажатую клавишу в наборе, так называемый скан-код. Код же символа соответствующий нажатой клавише формируется драйвером устройства.
У файлов шрифтов нет никакой внутренней кодировки, эти файлы описывают представление символа на экране, при этом есть растровые описания и векторные (ttf-шрифт).
Код символа плюс кодовая страница набора (то что определяет язык ввода), это адрес в файле шрифта, по которому и находится матрица описываемая этот символ, то есть задается обычное смещение.
Текстовый редактор ничего не спрашивает у ОС по поводу отображения и вывода символа на экран. Все это производится драйверами, работа которых базируется на получении/перехватах соответствующих прерываний как аппаратных так и программных.
В итоге описание этого символа попадает в графическую карту и рисуется на экране. А текстовый редактор занят глобальными задачами - хранить позицию символа на экране, каким стилем его написать и т.п. Если бы он контролировал весь процесс от нажатия клавиши до отображения на экране, то скорость "печатания" в редакторе была бы один символ в минуту.
Вкратце так, а полностью весь процесс очень сложный.
Последний раз редактировалось laimas, 21.03.2015 в 02:02.
|