文本模式

文本模式是计算机的一种显示模式，其内容直接以字符为单位（而非像素）显示。通常情况下，文本模式下的屏幕被划分为等大的矩形单元格，每个单元格内可以显示一个字符；这与所有点可寻址（APA）模式或其他图形模式中以像素为单位的显示形成了对比。文本模式的应用程序通过命令行界面或其他文本界面与用户进行交互，这些程序中所使用的许多字符集内还包含了一些有限的半图形字符，它们可以用于绘制方框、按钮等基本图形以突出显示内容或模拟GUI程序中的小部件。IBM的代码页437就是一个典型的文本模式字符集。
替代=VGA下显示的代码页737|缩略图|VGA下显示的代码页737

 历史 
使用文本模式的视频输出在1970年初开始流行，得益于文本模式，使用视频输出的终端开始取代电传打字机作为计算机使用中的输出设备。

 优点 
与图形模式相比，文本模式的优势在于更低的内存消耗和更快的显示速度。在上世纪70年代时，计算机为了存储屏幕上的每个像素所需要安装的内存在成本上高的惊人，因此出现了称为帧缓冲器的设备。早期的帧缓冲器是独立于计算机外的设备，除了其连接的显示器的巨大费用外，自身也需要数千美元来购置。虽然对仅需要简单图形的程序来说使用矢量显示技术比使用帧缓冲器更经济，但许多程序（如数据库程序）中快速高效地显示内容更加重要，因此帧缓冲器得以在市场上留存。

文本模式通过专用的显示硬件来将每行文本从字符重新渲染成像素，再由阴极射线扫描到屏幕上，从而避免了昂贵的内存问题；正因此，显示硬件也仅需要存储一行文本（甚至更少）像素的内存空间即可完成显示功能，在计算机的屏幕缓冲区中也只存储了底层的文本字符（因此得名“文本模式”），只有屏幕上完整地出现了代表这些字符的实际像素。

例如，使用文本模式时显示 80 x 25 个字符仅需要2000个字节作为缓冲；相比之下使用图形模式在单色显示器上显示 80 x 25 个字符需要高达16000个字节。按照现代计算机的标准来看约等于16KB的内存似乎微不足道，但考虑到在1977年发布的Apple II电脑也仅有4KB的内存，16KB的内存便显得过于庞大和昂贵。

文本模式的另一个优点就是它在使用远程终端时对带宽的要求较低。因此，当使用文本模式连接到远程终端时，屏幕更新的速度必然比使用图形模式的远程终端要快得多，因为远程服务器仅需为文本模式的终端传输几十个字节，而对图形模式的终端则需要传输整个屏幕的位图图像。

 自定义字符集 
由于可以重新定义字符集中字符的图案，有时文本模式程序和图形模式程序的边界会很模糊，大多数制作优秀的程序会灵活应用自定义字符集来为用户显示按钮、图标甚至鼠标指针等元素。在电子游戏中，使用文本模式渲染对游戏操作很有用，因为与面向像素的渲染相比，玩家可以更及时地操作并获得反馈。

 常见的文本模式 
IBM PC兼容机根据所用显示适配器的不同一般都兼容多种文本模式，部分常见的文本模式如下表所示：
+分辨率（字符）字符大小（像素）图像分辨率（像素）色彩模式显示适配器80×259×14720×350仅黑白双色MDA、大力神40×258×8320×20016色CGA、EGA80×258×8640×20016色CGA、EGA80×258×14640×35016色EGA80×438×8640×35016色EGA80×259×16720×40016色VGA80×308×16640×48016色VGA80×509×8720×40016色VGA80×6016色VESA兼容高级VGA132×2516色VESA兼容高级VGA132×4316色VESA兼容高级VGA132×5016色VESA兼容高级VGA132×6016色VESA兼容高级VGA
MDA模式下的文本可以用加粗、下划线、翻转和闪烁来进行强调。

大多数显示适配器都向后兼容，例如EGA支持所有MDA和CGA模式，VGA支持MDA、CGA和EGA模式。

目前，DOS环境和Windows的控制台中最常使用的文本模式为16色80×25。这种模式几乎与所有IBM PC兼容机兼容。此外还存在几种VGA文本模式，如80×43和80×50，但很少使用；也存在40列的文本模式，但除了演示或非常旧的硬件外几乎毫无用处。

VESA兼容高级VGA的字符大小和图形分辨率依制造商不同而不同。在这些显示适配器的文本模式中，如果程序希望使用第二个扩展字符集（即将可显示的图形字符数由256个扩展到512个），那么将会使可显示的颜色从16种减半为8种。

除了上述的显示适配器外，有的显示适配器（如S3）支持可以自定义的超大文本模式，如100×37甚至160×120。

 现代应用 
许多现代的控制台程序仍然保持着文本模式的显示风格，在计算机编程中尤为常见。此外，现代操作系统中仍拥有模拟文本模式的组件，例如Windows中的命令提示符、Powershell和Linux和macOS中的终端等。

 参考文献 

*