Fil*_*unc 5 opentype directwrite ligature
使用来自IDWriteTextLayout的HitTestTextPosition样式API 我没有设法在"ti","ffi"或其他带有Calibri等字体的连字中正确处理文本位置.它总是在结束之后或之前返回位置,如t | i或f | f | i.
使用DirectWrite API在连线内部进行插入符号移动的推荐方法是什么?
如果您打开了 GSUB 替代品,那么...没有“内部”位置吗?
\nOpentype GSUB 连字是代码点序列的单个字形替换,而不是“多个字形,混合在一起”。它们实际上是不同的、单个字形、单个边界框以及用于光标放置/对齐的单个左侧和右侧轴承。如果您有文本A + E并且字体具有连字替换,可以将其变成\xd3\x94then 并启用连字,该代码序列中实际上只有两个光标位置:|\xd3\x94和\xd3\x94|。你不能把光标放在“中间”,因为没有“中间”;它是一个单一的、原子的、不可分割的元素。
对于诸如、、 、、、或 之类f.的连字也是如此:这些是在 GSUB 打开时成形的单个字形。这实际上是应该发生的事情:启用 GSUB 连字意味着您明确希望呈现文本\xe2\x80\x94用于所有意图和目的\xe2\x80\x94,因为具有用于多对一替换的原子字形,例如转动完整短语“\xd8\xb5\xd9\x84\xd9\x89\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\xd9 \x88\xd8\xb9\xd9\x84\xd9\x89\xd8\xa2\xd9\x84\xd9\x87\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\xe2\x80\x8e",以及它的变体,变成单个字形 \xef\xb7\xba。\xef\xac\x80\xef\xac\x81\xef\xac\x82\xef\xac\x83\xef\xac\x84\xef\xac\x85
如果您想使用基本代码点序列(这样,如果您有文本,f + f + i则不会将其转换为\xef\xac\x83),您将需要在禁用 OpenType 功能的情况下加载字体liga。
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |