请原谅我白痴的问题,但我似乎无法找到一个,甚至从互联网上令人满意的答案。 我的意思是,我们可以看到字符“X”显示在屏幕上直接从PC的启动画面。 但电脑怎么会知道的位模式转换为“X”? 谁给出了这样的定义? 难道是BIOS,操作系统,CPU或显示驱动程序或应用程序?
Answer 1:
这取决于在哪一刻,并与操作系统 ,并在其硬件。 对于Linux的一个当前的x86在PC桌面上:
在早期启动的时候,它使用VGA驱动程序(和BIOS也有一些有限的显示功能)。 IIRC,原VGA卡具有包含一个固定宽度的字体一些ROM,并且仍然使用(在某些兼容模式)。
IIRC,显卡拥有的BIOS和他们最初的VGA字体的ROM。 但是,这是在BIOS时间或在早期启动过程中只使用。
但大多数的时候,一个Linux桌面使用其X11服务器的Xorg 。 该服务器管理的字体 ,并使用图形显示它们的视频卡 (通常有一个GPU ),可能是通过复制适当的位图 。 在X11协议知道的字体,但今天大多数应用程序使用客户端的Xft 。
未来Wayland的架构会对客户端字体。
你可能看在OsDev ,它有几个相关的网页。
低级别的图形库,例如libSDL或OpenGL的 (或Xlib的 )具有功能于一身的任意字体绘制文本,如XDrawText原来,或XftDrawString
与Xft的。
像高级别的图形用户界面工具包的Qt或基于GTK提供窗口小部件文本显示,通常在他们的事件循环 。
在血淋淋的细节,事情是复杂的,具体的硬件(和可悲的是,一些显卡厂商-例如, Nvidia公司 -不要公布他们的硬件规格-因此它需要被反向工程 )。 这就是为什么你使用的操作系统将提供你一些抽象的代码上。
文章来源: Who Teaches the CPU 'A..B..C'?