Показать сообщение отдельно
  #2 (permalink)  
Старый 21.03.2015, 01:58
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

Вкратце так, а полностью весь процесс очень сложный.

Последний раз редактировалось laimas, 21.03.2015 в 02:02.
Ответить с цитированием