Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fonts OpenType GPOS LookupType 8-跳过标记_Fonts_Truetype_Opentype - Fatal编程技术网

Fonts OpenType GPOS LookupType 8-跳过标记

Fonts OpenType GPOS LookupType 8-跳过标记,fonts,truetype,opentype,Fonts,Truetype,Opentype,我试图理解“بڑ”(乌尔都语-Unicode 15761681)的字体呈现 GSUB表将字符串转换为glyphs[6074604711651]。我可以检测到第一个标志符号下第二个标志符号的正确锚点连接。但我找不到合适的GSUB子表,它会将第三个glyph放置在第一个glyph的顶部。这里,左边一个是正确的,右边一个是我的程序目前所做的 另外,我不太理解GSUB的LookupType 8。一些LookupTable可以具有包含位8-ignoreMarks的LookupFlags。在匹配回溯、输入

我试图理解“بڑ”(乌尔都语-Unicode 15761681)的字体呈现

GSUB表将字符串转换为glyphs[6074604711651]。我可以检测到第一个标志符号下第二个标志符号的正确锚点连接。但我找不到合适的GSUB子表,它会将第三个glyph放置在第一个glyph的顶部。这里,左边一个是正确的,右边一个是我的程序目前所做的


另外,我不太理解GSUB的LookupType 8。一些LookupTable可以具有包含位8-ignoreMarks的LookupFlags。在匹配回溯、输入和前瞻序列时,是否应考虑这些标志,即跳过标记?匹配和应用LookupType 8的具体机制是什么?

两个标记(小tah和“beh”点)的定位是通过在GPOS表的标记定位(“标记”)功能中进行查找来完成的,该功能在应用GSUB规则后应用。只有GSUB才能获得正确的最终定位。必须处理GPO(在GSUB之后)

至于ignoreMarks标志:该标志并不特定于GSUB LookupType8。任何查找(GSUB或GPO)都可以设置此标志。为了匹配上下文,它告诉布局引擎忽略所考虑序列中的标记。这允许仅使用序列的“根”字形定义替换上下文,因此,如果上下文规则是
abc
,则使用ignoreMarks标志集的查找将匹配
abc
abc
abc

它在这种字体中起作用,因为首先将两个输入字符分解(在GSUB中)为一系列base+标记图示符,然后重新组合(也在GSUB中),然后定位标记(在GPO中)


(顺便提一句:为什么你要自己做文本布局,而不是使用现有的布局引擎,如HarfBuzz或其他操作系统内置的引擎?

你100%想在上面而不是在这里问这个问题。OpenType编程是一个非常利基的主题,typedrawers.com上几乎有所有致力于打造OpenType规范本身的人,他们都知道你在问什么,能够给你一个比几乎任何人都能给你的更详细的答案。嗨,我正在制作一个照片编辑器www.Photopea.com,它在浏览器中工作,每天有10万人使用。遗憾的是,Javascript中没有OpenType布局引擎,所以我不得不自己创建一个名为Typr.js的引擎。它已经很先进了,但随着我的照片编辑器的扩展,我不得不逐渐添加缺少的部分(如呈现乌尔都语等)。那么你能告诉我,哪个查找表负责重新定位“微小的b”吗?“标记”功能提到了15条查找记录,我无法与它们中的任何一条匹配:(看看GPOS lookupList index#20。这是由“标记”功能引用的查找,该功能定位点和小tah(“tiny b”)。它实际上是一个标记到连字的查找(GPOS lookupType 5)哦,看看哪个声称是HarfBuzz的JavaScript实现(通过Emscripten)。听起来这个项目需要一些帮助,而最难的部分(OpenType布局逻辑)已经完成了。当然。实际上,StackOverflow上的一些人也知道这些东西;-)