Answers:
从基础开始,所有内容都基于US-ASCII,它是7位代码,在集合中具有128个代码点,编号为十六进制00到7F或十进制0-127。它映射到控制代码,英文字母数字和基本标点符号
为此,将1位添加为8位代码(字节),可以再得到128个代码点或扩展ASCII。
早期需要使用字符集/代码页来更改映射到字符的高128位代码点的方式,以覆盖您希望表示的特定语言的字母。这对于大多数西欧语言来说相当有效。ISO 8859-1 / Latin-1是此类字符集的示例。另一个是Windows-1252,它从ISO 8859-1进行了更改,以帮助它涵盖更多或不同的字符。
具有更复杂字符集的语言(如中文,日语和韩语)超出了256个代码点集的功能,并使用双字节代码来表示它们。
Unicode UTF-8是一种多字节字符编码方案(1-4字节),向后兼容ISO 8859-1 / Latin-1(前128个字符)。它有超过一百万个代码点的空间,这意味着每个代码点实际上都可以代表一个字符,这与扩展ASCII的混搭不同,这意味着一个代码点可以映射到不同的字符,具体取决于字符集/代码页/编码。
字体是映射到代码点并在视觉上表示字符的字形。字体的内容取决于最初要覆盖的语言。您可以使用“ 字符映射表”查看字体中包含哪些字形。
Unicode字体不一定涵盖所有代码点,您需要查看它们打算在何处使用。例如,在Windows 7中,启动“ 角色图”并在Calibri中查看角色,然后将其与Ebrima,Meiryo和Raavi进行比较。请注意,它们有很大的不同,因为每个人都是针对不同的地理区域量身定制的。
对于Unicode字体和Windows-1252字符集,Windows使用映射表将Windows-1252转换为与ISO 8859-1不匹配的Unicode,以实现“最佳匹配”方案,其中Windows-1252字符中的某些字符设置可能不会显示。
字符集是字符的集合,每个字符都分配有一个数字。
众所周知的字符集是ASCII。这是一组128个字符,编号从0到127。这些数字都可以用7位表示(因此它是7位字符集)
大多数(但不是全部)其他字符集都包含具有相同编号的ASCII集。与ASCII不同的字符集示例包括EBCDIC。在ASCII上也有欧洲变体,在某些位置具有不同的字符(例如,包括£)
大型字符集(例如Unicode)具有超过一百万个字符,每个字符需要三个或四个字节才能适应已分配给字符的大量数字。相反,他们使用的系统允许将该数字“编码”为一个,两个,三个或更多字节。使用UTF-8编码方案时,与ASCII字符相同的字符碰巧用单个字节编码,且字节值与ASCII中的字节值相同。
在文件中存储文本时,将使用上述编码。
字体是一组字符的视觉表示(即形状)的特定设计。这些形状称为字形。字体的一个字符可能有多个字形(请考虑“ a”)。它可能具有称为连字的成对字符的字形(例如“ ff”或“ fi”)。因此,在字体中,为其设计了字形的字符集通常与众所周知的字符集中的字符集不同(字体通常不包含用于ASCII控制字符的字形)。
在计算机的上下文中,字体是指包含根据某些编号方案(通常与任何众所周知的字符集中的编号不同)排序的字形的文件。从历史上看,有一些位图字体代表一种特定的字体大小(以像素或点为单位)。当前,大多数字体使用数学曲线来描述字形,因此可以缩放以表示任何大小的字体。
显示文本文件时,必须告知(或猜测)文件中使用的编码。然后它将使用不同的编号(例如Unicode的16位变体)来表示内存中的文本,然后它将使用字体文件中的信息将内部表示映射到字体文件中使用的编号(编码)。
字体是否必须支持每种字符编码?
不,我什至不知道有没有。
那意味着他们将在其中拥有每个可以想象的角色。我们用来支持西方文化编码(拉丁语)的最常见字体。
还是字符编码必须支持每种字体?
字符编码不以某种方式“支持”任何东西,因此,这实际上是错误的查看方式。
Unicode字体是什么意思?它们是仅支持Unicode的字体,而不支持Windows-1252吗?
Unicode是一种标准(或者至少正在尝试成为一种标准),它支持大量字符,因此使许多编码成为其自身的子集。Windows 1252或CP1252是一种编码,其中包含拉丁字符和一些中欧字符。其中大多数也被unicode“覆盖”。CP1252也几乎涵盖了所有unicode字体。