Я придумал свое собственное решение, которое я считаю приемлемым.
Я сделал так, чтобы текст был сделан большим, например, в 3 раза больше его размера, а затем изменил его размер с помощью сглаживания, а не 100% идеально, но это чертовски лучше, чем по умолчанию, и не требует cairo или pango.
например,
image = Image.new("RGBA", (600,150), (255,255,255))
draw = ImageDraw.Draw(image)
font = ImageFont.truetype("resources/HelveticaNeueLight.ttf", fontsize)
draw.text((10, 0), txt, (0,0,0), font=font)
img_resized = image.resize((188,45), Image.ANTIALIAS)
и вы в конечном итоге получите этот результат,
, что намного лучше, чем то, что я получал раньше с тем же шрифтом.