+# This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
+#
 import PIL.Image
 import PIL.ImageDraw
 
 def text_with_tracking(draw, tracking, pos, text, fill=None, font=None):
     x, y = pos
     for c in text:
-        width = font.getsize(c)[0]
+        # TODO: adjust for kerning?
+        width = font.getlength(c)
         draw.text((x, y), c, fill=fill, font=font)
         x += width + tracking
 
     def find_grouping(self, groups, ngroups, glue):
         best = None
         best_var = None
+        if not groups:
+            return []
 
         mean = sum(g[0] for g in groups) + (len(groups) - ngroups) * glue
         if mean > self.width * ngroups: