字符集和操作系统中的字体有什么区别?

时间:2013-01-08 14:02:58

标签: fonts operating-system character

我想知道操作系统中的字符集和字体有什么区别吗? 。我知道字符集将字符集映射到它们的整数值,但是当字体进入场景时我会感到模糊。我想知道他们是如何相关的?

2 个答案:

答案 0 :(得分:5)

字符集是从无符号整数到抽象字符的映射。例如,在Ascii字符集中,数字103(十进制; 67(十六进制))映射到拉丁字母小写字母g。在逻辑层面,字符集不需要与计算机有任何关系(尽管该概念在信息技术中具有明显的实际意义)

现代意义上的字体是用于呈现(显示)特定形状的字符的计算机代码,作为特定的字形。

在内部,字体使用字形索引,但也使用基于字符集的索引编号。当使用字体来呈现字母g时,它在字符集内部由其编号表示,并且该数字用于在字体中找出它的字形。也就是说,字符编号被映射到字形编号。 (如果文本的字符集与字体编码中使用的字符集不同,则需要在此之前执行字符集之间的额外转换。)

这通常通过将字体描述为由字符数索引的字形数组来简化:索引(例如103)用于拾取第103个虚拟框,其中包含字形(对于字符g)。虽然有助于获得一个基本的想法,但这实在是过于简单化了。在许多字体中,字母g有两个或多个字形(例如单循环形式和双循环形式,或普通形式和小资本形式),但其中一个是默认字形和其他字形表格需要使用特殊工具进行选择。

答案 1 :(得分:2)

字体文件包含将字符(通过字符的“索引”)映射到可显示的矢量或位图数据的信息。请阅读http://v1.jontangerine.com/log/2008/08/typeface--font以获得更好的概述。

字符集 - 参见例如http://www.iana.org/assignments/character-sets/character-sets.xml不涉及键盘,它是从索引(整数)到字符的映射(概念,而不是特定的字形)。

您描述的内容名为keymap(afaik)。

我认为这应该足以达到你的目的,如果你愿意,可以给你一些深入研究的指示。

<强>更新 神奇的链条(可能有点朦胧,我没有研究它,请修复你发现的任何错误):

您按键盘上的某个键 - 触发中断,这是键事件。我不知道键盘和计算机之间的线路协议,但我想这只是每个键一个字节,类似于0..127用于按键,而-1 ..- 128用于按键。

您的操作系统从键盘接收中断并更新其内部状态,汇总按下的ctrl / shift / alt修饰符等信息,...键盘布局知识(键映射)和你使用的 charset 被考虑在内,所以你得到一个角色(例如“a”+“shift”的关键事件 - &gt;“A”,这很容易。但你也可以输入一些东西比如“Ä”,它不包含在每个字符集中,并且不包含在每个键盘上。现在你知道哪个角色被按下了。但这不是你可以展示的东西 - 它只是一个概念(见下一步)。

如果没有热键处理程序或诸如此类的东西拦截你的密钥并且它进入你的应用程序,它需要知道要向屏幕或打印机绘制什么。 “A”并不完全相同,如果你拿两个手写的,它们可能看起来不同。 字体用于绘制或打印代表字符的内容 - 字符的图像。对于大多数用户和大多数程序, font 包含字符的外观,包含生成数据的数据的文件以及所有变体,例如常规粗体斜体上限及其组合。

类型专家(我不是一个,只是一个发烧友)并不喜欢缺乏distinguation。

字体是一系列字体变种(见上文),存储在字体文件中,其中包含的描述性数据字形(具有特定外观的字符)。该字体还可能包含字距(字符之间的距离),暗示(有关如何以特定尺寸显示它的细节),替代(替代字形)对于一个字母)和连字(如何将一组字符组合成一个字形。不同的字体文件格式(truetype,开放类型,所有这些网络字体格式)具有不同的功能。

单个分辨率的位图字体如果没有以原始位图的多个显示,则看起来很糊涂。有矢量字体包含其轮廓的数学描述,可以扩展到您喜欢的任何分辨率,并且可能看起来仍然清晰(这是提示可能很重要的地方。并且清晰,抗锯齿,亚像素抗锯齿)。

字体可按其外观进行分类:比例(“i”比“m”更小)vs 等宽(每个字形具有相同的宽度), sans serif vs serif 。当它们具有某些相似性时,它们被归类为字体系列怪诞断裂符号签名,......

这就是我现在所拥有的一切,我可能没有把一切都弄好。但这是一个开始。有关详细信息,请将任何粗体粘贴到您最喜欢的搜索引擎中亲爱的读者,如果你发现了一个错误:我很感激评论,并会更新。

相关问题