当前位置: 技术问答>linux和unix
字符显示的原理
来源: 互联网 发布时间:2016-08-08
本文导语: 操作系统里字符是怎么通过编码转换成显示器里出现的图像的?这个图像存储在什么地方?是什么格式的?如果是图片那是矢量图么?还有,如果字体只是一个一个的图片,那像WORD这种软件是怎么平滑地调整字体的...
操作系统里字符是怎么通过编码转换成显示器里出现的图像的?这个图像存储在什么地方?是什么格式的?如果是图片那是矢量图么?还有,如果字体只是一个一个的图片,那像WORD这种软件是怎么平滑地调整字体的排版的呢?我的意思是,我觉得字体如果是图那也应该是一种特殊的可以调整具体显示细节的图片吧?
我之所以想起这个问题是因为我想做一个考试打小抄时把小抄转换成一种容易读懂的编码的程序,方便我以后打小抄。我知道这些东西做这个程序基本是用不上的,但是我突然很想知道这些细节。
我之所以想起这个问题是因为我想做一个考试打小抄时把小抄转换成一种容易读懂的编码的程序,方便我以后打小抄。我知道这些东西做这个程序基本是用不上的,但是我突然很想知道这些细节。
|
OS可能只是维护了一个视频缓冲区,按照约定的格式排满如1024x768的像素信息,最后由驱动程序将其转换为视频信号
那像WORD这种软件是怎么平滑地调整字体的排版的呢
-------------
这是更高层次的问题,不是OS解决的。理论上只要OS提供一个画点的api,应用程序就能利用这个api构建出魔兽这样精彩的显示效果
那像WORD这种软件是怎么平滑地调整字体的排版的呢
-------------
这是更高层次的问题,不是OS解决的。理论上只要OS提供一个画点的api,应用程序就能利用这个api构建出魔兽这样精彩的显示效果
|
字体文件有两种,一种是点阵字符,用点阵描述的图形图像,"二"这个字是用1010表示的,如果是1,当前点就填充
还有一种是ttf文件,你可以打开C:WindowsFonts里面,系统的字体全部在里面,ttf的字体是矢量图形,笔画是用几个点描述的,几个点用贝塞尔曲线描绘.字体文件的格式很复杂,我只是看过一个java解析的应用程序.
另外字符编码是另外一回事,比如一个"二"字,你可以用utf-8编码存储,那么会占用8+8+8=24位是3个字节,如果用到是utf-8会占用两个字节,如果是gb2312那么也是16位1010的二进制代码,也就是2个字节,譬如gb2312可以表示6000个中文字体,每个字体是一个编码,"二"的编码是3b,5f(例子,没有查过)那么根据gb2312的区位,可以到点阵字符字体库里面找偏移量,反正就是找到这个字的"形状描述的数据",根据这个数据,画出点阵字符
ttf的矢量字体也是一样的,只是用了数学计算,画出这些笔画数据.
中文的显示比较复杂,英文只有26个字母,8859_1是最早的拉丁语系字符集,呵呵原理都是编码隐射.
很多乱码问题,就是字符集惹得祸,java里面都是8859_1和unicode这两种编码.统一的,呵呵