ZPL - язык разметки, поэтому нет логики, которую вы действительно можете добавить к нему. Логика должна быть сделана в коде, который отправляет ZPL. Пример в Javascript будет выглядеть примерно так:
var listData = "Surimi Salad, Kanikama, Cream cheeseSurimi Salad, Kanikama, Cream cheese";
var fontwidth = 20;
var width = 300;
var lines = 3;
if (((listData.length * fontwidth)/width) > lines)
fontwidth = fontwidth - 5;
var zpl = "^XA^A0N," + fontwidth + "," + fontwidth + "^FB" + width + "," + lines + ",0,C^FD" + listData + "^FS^XZ";
Это не будет точно, так как большинство шрифтов имеют переменную ширину, но это приблизит вас к подгонке.