添加字体后ZPL中TB指令文本无法换行的技术求助
解决ZPL文本块添加字体后自动换行失效的问题
这问题我之前调试ZPL标签时也踩过坑!核心原因是你把ZPL指令的执行顺序搞反了。
ZPL是按指令书写的先后顺序依次生效的:你原本先定义了文本块^TB,300,200,再设置字体^ADN,20,12,这时候文本块的换行计算逻辑已经用默认字体的字符宽度完成了,后续设置的新字体根本没被文本块识别到,自然不会自动换行。
修正后的代码
只需要把字体指令移到文本块指令的前面,让^TB基于你指定的字体来计算换行宽度:
^XA ^FO120,60^ADN,20,12^TB,300,200^FD1 puff pa morgonen, 1 puff pa kvallen. Inandas. Kortison ^FS ^XZ
额外说明
^ADN,20,12先定义字体(20号高度、12号宽度的Arial字体),之后的^TB,300,200会用这个字体的字符尺寸来判断:当文本宽度超过300点时自动换行,同时整个文本块的高度限制为200点,超出部分会被截断(如果需要显示全部内容,可以适当调大第二个参数值)。- 如果你需要强制手动换行,也可以在
^FD的文本里插入&符号(ZPL的换行转义符),不过自动换行的场景下调整指令顺序就足够解决问题了。
内容的提问来源于stack exchange,提问作者hellogoodnight




