是否有人知道用户键入文本时会根据字形形状自动计算字符字距的算法?
我的意思不是简单地计算超前宽度或类似宽度,而是分析字形的形状以估计字符之间的视觉上最佳距离。例如,如果我们在一行中依次排列三个字符,则尽管字符形状不同,但中间字符应SEEM位于行的中心。一个示例启发了即时调整功能:
即时调整示例:
在上面的图像中a
似乎太正确了。应该移动的一定量的走向T
,以便它似乎是在中部T
和g
。该算法应该检查的形状T
和a
(可能还有其他的字母也可以),并决定多少a
必须向左移位。该一定数量是算法应计算的东西-无需检查字体的可能字距对。
我正在考虑编写一个使用手绘字体的javascript(+ svg + html)程序,其中许多缺少字距调整对。文本字段将是可编辑的,并且可以包含多种字体的文本。我认为,在这种情况下,即时字距调整可能是确保文本均流的一种方法。
编辑:对此的一个起点可能是使用svg字体,因此很容易获得路径值。在svg字体中,路径是通过以下方式定义的:
<glyph glyph-name="T" unicode="T" horiz-adv-x="1251" d="M531 0v1293h
-483v173h1162v-173h-485v-1293h-194z"/>
<glyph glyph-name="a" unicode="a" horiz-adv-x="1139" d="M828 131q-100 -85
-192.5 -120t-198.5 -35q-175 0 -269 85.5t-94 218.5q0 78 35.5 142.5t93
103.5t129.5 59q53 14 160 27q218 26 321 62q1 37 1 47q0 110 -51 155q-69 61
-205 61q-127 0 -187.5 -44.5t-89.5 -157.5l-176 24q24 113 79 182.5t159
107t241 37.5 q136 0 221 -32t125 -80.5t56 -122.5q9 -46 9 -166v-240q0
-251 11.5 -317.5t45.5 -127.5h-188q-28 56 -36 131zM813 533q-98 -40 -294
-68q-111 -16 -157 -36t-71 -58.5t-25 -85.5q0 -72 54.5 -120t159.5 -48q104
0 185 45.5t119 124.5q29 61 29 180v66z"/>
算法(或javascript代码)应以某种方式检查这些路径并确定它们之间的最佳距离。