Простите мой идиотский вопрос, но я не могу найти ни одного удовлетворительного ответа в Интернете. Я имею в виду, что мы можем видеть символ «X», отображаемый на экране прямо со стартового экрана ПК. Но как компьютер узнает, что битовые комбинации переведены в «x»? Кто дает такие определения? Это BIOS, ОС, процессор, драйвер дисплея или приложения?
Кто обучает ЦП «азбуке»?
Ответы (1)
Это зависит от того, в какой момент и с какой операционной системой и на каком оборудовании. Для Linux на текущем x86 ПК рабочий стол:
Во время ранней загрузки он использует драйвер VGA (и BIOS также имеет некоторые ограниченные функции отображения). IIRC, исходные карты VGA имели некоторое ПЗУ, содержащее шрифт фиксированной ширины, и оно все еще используется (в некотором режиме совместимости).
IIRC, видеокарты имеют ПЗУ для BIOS и исходного шрифта VGA. Но это используется только во время BIOS или в процессе ранней загрузки.
Но в большинстве случаев рабочий стол Linux использует свой X11 сервер Xorg. Сервер управляет шрифтами и отображает их с помощью графики видеокарта (которая часто имеет GPU), возможно, скопировав соответствующие битовые карты. протокол X11 знает о шрифтах, но сегодня большинство приложений используют клиентскую часть Xft.
Будущая архитектура Wayland будет иметь шрифты на стороне клиента.
Вы можете посмотреть на OsDev, там есть несколько связанных страниц.
Низкоуровневые графические библиотеки, такие как libSDL или OpenGL (или Xlib) имеет функции для рисовать текст произвольным шрифтом, например XDrawText изначально или XftDrawString
с Xft.
Наборы инструментов графического пользовательского интерфейса высокого уровня, такие как Qt или Gtk предоставляет виджеты с отображением текста, как правило, около их цикл событий.
В кровавых подробностях все сложно и зависит от аппаратного обеспечения (и, к сожалению, некоторые производители видеокарт, например Nvidia- не публикуйте спецификацию своего оборудования, поэтому оно должно быть обратным проектированием). Вот почему вы используете операционную систему, которая предоставит вам некоторую абстракцию для кода.