我们知道代码点65代表A.有一对一的映射,因此很容易渲染.从字体文件中取符号A并进行渲染.
65 == A
Run Code Online (Sandbox Code Playgroud)
现在让我们考虑一下印地语.代码点0x0924代表?,再次易于映射.
0x0924 == ?
Run Code Online (Sandbox Code Playgroud)
但是,如果码点0x0924后面紧接着码点0x094d和0x0930它代表?和?分别表示不是这些3的组合中,而且新的符号???
0x0924 0x094d 0x0930 != ? ? ?
Run Code Online (Sandbox Code Playgroud)
但
0x0924 0x094d 0x0930 == ???
Run Code Online (Sandbox Code Playgroud)
我的问题是.
欢迎使用现代字体:它们不是您的想法."一个代码点映射到一个字母"的日子是20年前的样子,现代字体在过去的几十年里一直在做更多的事情.我将用OpenType字体解释这个问题(大多数人称之为"ttf"和"otf"字体.是的,它们都是OpenType字体),因为那是你最有可能使用的那种,在这种情况下:字体几乎可以控制所有内容,而您所依赖的文本引擎只是遵循其指示.
OpenType字体有一个"字符映射",它提供(所有)从输入字节代码到可用字形列表中某处的某些字形("形状")的简单一对一映射.
并且它们可以有多个映射,因为ASCII中的代码与某些Windows代码页中的代码,或Mac语言/编码对或Unicode(仅覆盖前127个字符的ASCII,甚至不完全相同)中的代码不同).
但是,将二进制代码映射到其他二进制代码非常简单.现代字体的真正力量,特别是OpenType,接下来会发生什么.
制作好的字体,甚至只是对它们进行编程(因此根本不考虑字体设计)是一项非常专业的工作.
| 归档时间: |
|
| 查看次数: |
1105 次 |
| 最近记录: |