请原谅我的愚蠢问题,但我似乎无法从互联网上找到一个令人满意的答案。我的意思是我们可以在PC的开始屏幕上看到屏幕上显示的字符'X'。但计算机如何知道位模式转换为'x'?谁给出了这样的定义?它是BIOS,操作系统,CPU或显示驱动程序还是应用程序?
答案 0 :(得分:1)
取决于哪个时刻,operating system以及哪个硬件。对于当前x86 Linux桌面上的PC:
在早期启动时,它使用VGA驱动程序(BIOS也有一些有限的显示功能)。 IIRC,原始的VGA卡有一些包含固定宽度字体的ROM,并且仍在使用(在某些兼容模式下)。
IIRC,显卡有一个用于BIOS的ROM和它们的初始VGA字体。但这只在BIOS时间或早期启动过程中使用。
但大多数情况下,Linux桌面使用其X11服务器Xorg。服务器管理fonts,并使用图形video card(通常有GPU)显示它们,可能是通过复制相应的bitmaps。 X11 protocol了解字体,但今天大多数应用程序使用客户端Xft。
未来的Wayland架构会在客户端使用字体。
您可以查看OsDev,它有几个相关的页面。
libSDL或OpenGL(或Xlib)等低级图片库具有以任意字体绘制文字的功能,例如最初是XDrawText,或者是Xft的XftDrawString
。
Qt或Gtk等高级图形用户界面工具包可为widgets提供文字显示,通常围绕event loop。
在血腥的细节中,事情是复杂的和硬件特定的(可悲的是,一些显卡制造商 - 例如Nvidia - 没有公布他们硬件的规格 - 所以它需要是reverse engineered)。这就是您使用操作系统的原因,该操作系统将为您提供一些代码抽象。