phu*_*clv 10 bios characters ms-dos text-mode japanese
我见过很多日文和中文的文本模式 BIOS 设置屏幕。最近我什至看到了日语版的 Windows XP 设置。MS-DOS 也有日文版本。真正的 DOS 模式,而不是 Windows 命令提示符!
通常,文本模式屏幕的大小为80x25。由于日文字符是正常拉丁字符宽度的两倍,因此屏幕上最多可以同时显示的日文字符数约为 1000 个,因此我们需要2000 个码点来显示字符的左右部分.
由于默认文本模式只能显示 256 个字符,但前 128 个用于 ASCII,因此可用的仅限于高 128 个码位。如果需要,我们可以通过减少颜色数量将其扩展到 512,但这仍然无法支持足够的代码点用于显示。我一直想知道他们是如何设法用如此有限的字符数来显示大字符集的。
Linux 中的文本模式似乎使用图形模式驱动程序,因为它可以显示 Unicode 并且有更多的颜色。但我无法解释它们在 MS-DOS 和 BIOS 设置屏幕中是如何做到的。
文字模式也有韩文!
正常的“80x25 字符”模式实际上是 720x350 像素(意味着每个字符单元格是 9 像素宽 x 14 像素高)。双宽字符模式(“40x25”)可以通过将每一列加倍以节省视频内容内存(将所需的视频内容内存量减少一半)来简单地将其插入到更大的宽度,或者使用额外的字形内存和相同的将字符单元增加到 18*14 像素的视频内容内存量。
很早的时候(我认为它是在引入EGA时完成的),IBM PC 的文本显示模式中添加了对用户定义字符字形的支持。
IBM PC 的普通文本模式只是一个特定地址的连续 4000 字节的视频内容 RAM。这些被读取为一个字节的字符属性(最初是闪烁、粗体、下划线等;后来重新用于前景色和背景色以及闪烁/突出显示,因此在文本模式下限制为 16 种颜色)和描述字符的一个字节被显示。为每个字符字节值显示的实际字形存储在别处。
这意味着只要你可以在任何时候在屏幕上凑成 256 个不同的字形,并且每个字形都可以表示为一个 9x14 的一位位图,你可以简单地替换内存中的字形,使字符显示不同. 在某种程度上,这是mode con codepage select
在 DOS 上所做的一部分。这是相对微不足道的。
如果您需要超过 256 个不同的字形,但可以忍受屏幕上减少的字形数量,您可以使用具有双倍宽度(18 像素宽)字形的 40x25 方案。假设视频内容 RAM 的总量是固定的,并且假设您可以增加字形位图内存,您可以使用每四个字节中的两个字节来表示一个屏幕上的字形,这样您就可以访问 2^16 = 65,536 个不同的字形(包括空白字形)。如果你觉得大胆,你甚至可以跳过第二个属性字节,它可以让你访问 2^24 ~ 16.7M 不同的字形。这两种方法都依赖于特殊的软件支持,但硬件和固件部分应该很容易做到。18x14 一位像素的 65,536 个字形相当于大约 2 MiB,这是当时相当大但并非不可逾越的内存量。
基本的美国英语至少需要 62 个专用字形(数字 0-9,大小写字母 AZ),因此如果您还希望能够同时显示美国英语文本,则可以使用 180-190 个字形时间和每个字形 8 位。如果您可以在没有同步美国英语支持的情况下生活(您可能会选择在资源受限的环境(例如早期的 IBM PC 架构)中进行这种支持),您就可以访问全部字形。
通过一些技巧,您也可以混合和匹配这两种方案。
我不知道它实际上是如何完成的,但这两个都是可行的方案,用于如何以文本模式将字符数特别有限的“花哨”字母显示到普通的 IBM PC 屏幕上,我只需坐在前面就可以想出Stack Exchange 一会儿。完全有可能有额外的图形模式使这在实践中更容易。
另外,请记住文本模式和显示文本的图形模式之间的区别。如果您处于图形模式,也许通过普遍支持的 VESA,就绘制字符字形而言,您是自己的,但您在如何绘制它们方面也有更多的自由。例如,我很确定 Windows NT(Windows XP 所属的产品系列)的基于文本的部分使用图形模式来显示文本,包括 Windows NT 4.0 启动屏幕和 BSOD。
归档时间: |
|
查看次数: |
5153 次 |
最近记录: |