<p>这是这个老问题的最新答案。在</p>
<p>问题似乎是PIL和Pillow将剪辑呈现文本的边缘。这通常显示在尾随的宽字符和decenter上(比如'y's)。这也可以出现在一些字体的顶部。这至少已经有十年了。无论调用<code>text()</code>的图像的大小,都会发生这种情况。冲突似乎是选择边界矩形为“字体大小*数字字符”而不是“我实际需要呈现的任何内容”,这在堆栈的深处出现(<code>_imagingft.c</code>)。解决这个问题会导致其他问题,比如逐字排列文本。在</p>
<p>一些解决方案包括:</p>
<ul>
<li>在字符串末尾附加一个空格。<code>im.text(xy, my_text + ' ', ...)</code></li>
<li>对于高度问题,获取文本的宽度(<code>font.getsize()</code>),然后呈现文本,再加上一个良好的升序和降序,将呈现的文本剪切到第一个报告的宽度和第二个实际高度。在</li>
<li>使用其他库,如<a href="https://pypi.org/project/aggdraw/" rel="nofollow noreferrer">AggDraw</a>或<a href="https://pypi.org/project/pyvips/" rel="nofollow noreferrer">pyvips</a>。在</li>
</ul>
<p>这在各种问题<a href="https://stackoverflow.com/questions/1933766/fonts-clipping-with-pil">fonts clipping with PIL</a>,<a href="https://stackoverflow.com/questions/13821882/pil-cuts-off-top-of-letters">PIL cuts off top of letters</a>,<a href="https://stackoverflow.com/questions/49155546/properly-render-text-with-a-given-font-in-python-and-accurately-detect-its-bound">Properly render text with a given font in Python and accurately detect its boundaries</a>中都有引用。这些问题涉及相同的基本问题,但不是重复的</p>