是否可以找到等效的 X/Y 坐标,以便使用 ZPL 2 使用 ^FO 和 ^FT 命令在同一位置打印一些文本

Is it possible to find equivalent X/Y coordinates in order to print some text at the same position using both ^FO as well as ^FT command using ZPL 2

我正在尝试找出是否有可能将 X/Y 坐标从 ^FO 命令转换为等效的 ^FT 坐标标签中文本的位置不会改变。

我看到这两个命令之间的唯一区别是 position 是当我们使用 ^FO 命令时,文本将从指定的 X/Y 坐标从上到下打印,而使用 ^FT 命令将从指定坐标从下到上打印它(参见下面的示例)。

ZPL代码:

^XA
^CI0
^FT100,50^A0N,50,50^FDSAMPLE TEXT^FS
^FO100,50^A0N,50,50^FDSAMPLE TEXT^FS
^XZ

输出:

现在,如果我想在标签中的相同位置精确地打印文本,那么我将需要调整 Y 坐标值,但我无法找出可以用来完成相同操作的任何公式。

我已经尝试设置 ^FT 命令的 Y 坐标 = ^FO 命令的 Y 坐标 + 高度(在上述情况下为 50 + 50 = 100),但这不是似乎可以解决问题。

如有任何想法,我们将不胜感激。

I have tried setting the Y-coordinate of ^FT command = Y-coordinate of ^FO command + height

这个方法大体上是正确的,但是你加的太多了。您正在添加字符单元格的整个高度(即 ^A0,50 中的 50 的意思),而 ^FT 工作在字体的基线之外,并且基线不在字符的底部细胞。你需要自己计算它在哪里。

正如 ZPL manual 在第 1413 页上告诉您的那样,对于比例字体 (^A0),基线高度为 3 * 单元格高度 / 4。您的单元格高度为 50,因此您可以37.5。这是您应该添加到 ^FO Y 坐标的内容。

^XA
^CI0
^FT100,87^A0N,50,50^FDSAMPLE TEXT^FS
^FO100,50^A0N,50,50^FDSAMPLE TEXT^FS
^XZ

作为对@GSerg 回答的补充,在这种特殊情况下(字体 A0),以下公式似乎有效(即,将字体高度的 75% 添加到 FT y坐标以获得对齐的FO y坐标):

yFO = yFT + (font height in dots * .75)

这也适用于其他一些字体,但不是全部,因此可能需要对比例进行一些调整。 这是您可以使用打印机或 Labelary 进行测试的示例代码:

^XA
^CI0

^FT10,50^A0N,20,20^FDFT 50^FS
^FT10,65^A0N,20,20^FDFT 65^FS
^FO70,50^A0N,20,20^FDFO 50^FS

^FT10,50^A0N,40,40^FDFT 50^FS
^FT10,80^A0N,40,40^FDFT 80^FS
^FO200,50^A0N,40,40^FDFO 50^FS

^FT10,50^A0N,50,50^FDFT 50^FS
^FT10,87^A0N,50,50^FDFT 87^FS
^FO200,50^A0N,50,50^FDFO 50^FS

^XZ

为了更好地查看,只保留 3 行块,因为这会同时显示 3 个结果。