unicode - 天城文中的连接字母是如何呈现的?

标签 unicode fonts text-rendering devanagari

考虑下图中的字母。

第一行显示字母本身,第二行对它们进行编号,第三行显示编码为三个十六进制 UFT-8 字节的 unicode 代码点。例如,字母 2 是 DEVANAGARI LETTER MA,代码点 0x92E(= 2350 十进制),编码为三个十六进制 UTF-8 字节:e0, a4, ae .

我的问题是关于特定连接字母的渲染,例如(1)。渲染系统如何处理这种渲染?我们通常输入此连接字母的方式是首先输入字母 2,然后输入字母 4(表示我们要将这个字母与下一个字母连接起来),然后输入字母 3。然后,渲染系统会考虑通过删除字母 2 中的垂直线并在此处覆盖字母 4 来加入操作。我不清楚所选字体中是否可以使用完整字母 2 及其垂直线删除半部分(以淡红色椭圆形显示)的字体。

有人可以解释一下这是如何工作的吗?

enter image description here

最佳答案

字体文件不仅仅是每个字母的一堆形状。它们包含规定字形行为方式的各种表格。

有:

  • 定位字形表
  • 替换字形表
  • 用于对字形进行分类并提供连字插入符号表的表格
  • 基线放置表格
  • ...

另请参阅:https://fontforge.github.io/gposgsub.html

需要哪些字体功能取决于书写系统(拉丁文、西里尔文、阿拉伯文、梵文)及其字形的行为方式。使用什么表取决于字体设计者和字体文件类型(设计什么以及可以存储什么)。显示哪些功能取决于字体渲染器(有时渲染器会忽略字体指令)。

回到你的问题。这是一个替代。到底发生了什么由字体文件本身的表中的信息描述。如果您确实想知道发生了什么,您必须在编辑器中打开字体并检查各个表格。我建议使用 FontForge(免费且免费)。

这个故事的寓意是,字体文件不仅是美观的字母形状,而且是软件的一部分。

关于unicode - 天城文中的连接字母是如何呈现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41686305/

相关文章:

c++ - ODBC SQL Server Unicode 错误?

c - 用于键盘映射的后台c程序

macos - 如何在 RStudio 中安装新字体?

c - 渲染的字体看起来比应有的更粗

string - Perl程序从十六进制值打印Unicode

mysql - 如何在mysql中正确存储和显示unicode

c# - 如何将两个字母的国家/地区代码转换为标记表情符号?

html - Chrome 中的 CSS 文本渲染问题

java - 如何转换孟加拉语 Unicode 数字?

tomcat - 使用tomcat时无法加载字体