新闻中心

字宽不同又有字距调整时换行怎样计算:规则练习第21例

2026-11-09

等字符数量的文字不一定等宽,相邻字符还可能有专门的间距调整。按固定字数切行,会让一些行超过边界,另一些行留下不必要的空白。

模型只使用A至E五种符号,每种有固定前进宽度,指定相邻对额外减去一个间距值。逐字尝试加入当前行,宽度超过上限才在该字之前换行;每行第一个字没有来自上一行的字距调整。

本例输入与约定

原串ABDAAABEADAECCEBBACDCEBEABBEAE;各符号宽度{'A': 4, 'B': 10, 'C': 5, 'D': 4, 'E': 10},成对间距{'DE': -2, 'BC': -3, 'DC': -1, 'CD': -2, 'DA': -3},行宽上限21。

完整计算记录

行号 | 内容 | 实际宽度 | 剩余空间 1 | ABDA | 19 | 2 2 | AAB | 18 | 3 3 | EADA | 19 | 2 4 | ECC | 20 | 1 5 | EB | 20 | 1 6 | BACD | 21 | 0 7 | CE | 15 | 6 8 | BE | 20 | 1 9 | AB | 14 | 7 10 | BE | 20 | 1 11 | AE | 14 | 7

表中编号仅用于识别本例的元素。读取一个结果时,应先核对它对应的输入、处理顺序和边界约定;布尔值表示条件是否成立,空集合表示没有符合要求的对象,不应把这些字段混成同一种数值。

复核方法与适用范围

完整保留原符号顺序和数量,行宽要重新从行首计算。若一行后面还有字符,把那个字符追加到这一行应当超过上限,否则说明换行过早。单字本身在本例中都能放进一行。

这不是完整字体排版器,未处理词语边界、标点禁则、组合字符或从右向左文字。真实文字测量应依赖字体和排版规则;这里只展示变宽字符与成对间距如何共同影响贪心换行。

练习时可以先独立计算最前面的一步,再检查最后的整体不变量。若结论不同,应保留各步记录,定位第一处差异;只调整最终数字会掩盖规则理解上的问题。改变输入后也要重新演算,而不是照抄这一例的输出。

准备好开始吧,它既快速又简单。