Pillow/docs/releasenotes/8.0.0.rst
nulano 3de972cc3e add release notes for text rendering improvements
(cherry picked from commit 1e9dfb5b7c9fc80f40544260286c0c5955f6a88e)
2020-10-12 17:37:27 +01:00

154 lines
5.2 KiB
ReStructuredText

8.0.0
-----
Backwards Incompatible Changes
==============================
Python 3.5
^^^^^^^^^^
Pillow has dropped support for Python 3.5, which reached end-of-life on 2020-09-13.
im.offset
^^^^^^^^^
``im.offset()`` has been removed, call :py:func:`.ImageChops.offset()` instead.
Image.fromstring, im.fromstring and im.tostring
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* ``Image.fromstring()`` has been removed, call :py:func:`.Image.frombytes()` instead.
* ``im.fromstring()`` has been removed, call :py:meth:`~PIL.Image.Image.frombytes()` instead.
* ``im.tostring()`` has been removed, call :py:meth:`~PIL.Image.Image.tobytes()` instead.
ImageCms.CmsProfile attributes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Some attributes in :py:class:`PIL.ImageCms.CmsProfile` have been removed:
======================== ===================================================
Removed Use instead
======================== ===================================================
``color_space`` Padded :py:attr:`~.CmsProfile.xcolor_space`
``pcs`` Padded :py:attr:`~.CmsProfile.connection_space`
``product_copyright`` Unicode :py:attr:`~.CmsProfile.copyright`
``product_desc`` Unicode :py:attr:`~.CmsProfile.profile_description`
``product_description`` Unicode :py:attr:`~.CmsProfile.profile_description`
``product_manufacturer`` Unicode :py:attr:`~.CmsProfile.manufacturer`
``product_model`` Unicode :py:attr:`~.CmsProfile.model`
======================== ===================================================
API Changes
===========
ImageDraw.text: stroke_width
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Fixed issue where passing ``stroke_width`` with a non-zero value
to :py:meth:`.ImageDraw.text` would cause the text to be offset by that amount.
ImageDraw.text: anchor
^^^^^^^^^^^^^^^^^^^^^^
The ``anchor`` parameter of :py:meth:`.ImageDraw.text` has been implemented.
Use this parameter to change the position of text relative to the
specified ``xy`` point. See :ref:`text-anchors` for details.
Add MIME type to PsdImagePlugin
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"image/vnd.adobe.photoshop" is now registered as the
:py:class:`.PsdImagePlugin.PsdImageFile` MIME type.
API Additions
=============
Image.open: add formats parameter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Added a new ``formats`` parameter to :py:func:`.Image.open`:
* A list or tuple of formats to attempt to load the file in.
This can be used to restrict the set of formats checked.
Pass ``None`` to try all supported formats. You can print the set of
available formats by running ``python -m PIL`` or using
the :py:func:`PIL.features.pilinfo` function.
ImageOps.autocontrast: add mask parameter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:py:func:`.ImageOps.autocontrast` can now take a ``mask`` parameter:
* Histogram used in contrast operation is computed using pixels within the mask.
If no mask is given the entire image is used for histogram computation.
ImageOps.autocontrast cutoffs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Previously, the ``cutoff`` parameter of :py:func:`.ImageOps.autocontrast` could only
be a single number, used as the percent to cut off from the histogram on the low and
high ends.
Now, it can also be a tuple ``(low, high)``.
ImageDraw.regular_polygon
^^^^^^^^^^^^^^^^^^^^^^^^^
A new method :py:meth:`.ImageDraw.regular_polygon`, draws a regular polygon of ``n_sides``, inscribed in a ``bounding_circle``.
For example ``draw.regular_polygon(((100, 100), 50), 5)``
draws a pentagon centered at the point ``(100, 100)`` with a polygon radius of ``50``.
ImageDraw.text: embedded_color
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The methods :py:meth:`.ImageDraw.text` and :py:meth:`.ImageDraw.multiline_text`
now support fonts with embedded color data.
To render text with embedded color data, use the parameter ``embedded_color=True``.
Support for CBDT fonts requires FreeType 2.5 compiled with libpng.
Support for COLR fonts requires FreeType 2.10.
SBIX and SVG fonts are not yet supported.
ImageDraw.textlength
^^^^^^^^^^^^^^^^^^^^
Two new methods :py:meth:`.ImageDraw.textlength` and :py:meth:`.FreeTypeFont.getlength`
were added, returning the exact advance length of text with 1/64 pixel precision.
These can be used for word-wrapping or rendering text in parts.
ImageDraw.textbbox
^^^^^^^^^^^^^^^^^^
Three new methods :py:meth:`.ImageDraw.textbbox`, :py:meth:`.ImageDraw.multiline_textbbox`,
and :py:meth:`.FreeTypeFont.getbbox` return the bounding box of rendered text.
These functions accept an ``anchor`` parameter, see :ref:`text-anchors` for details.
Security
========
TODO
Other Changes
=============
ImageDraw.text and ImageDraw.multiline_text
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Fixed multiple issues in methods :py:meth:`.ImageDraw.text` and :py:meth:`.ImageDraw.multiline_text`
sometimes causing unexpected text alignment issues.
The ``align`` parameter of :py:meth:`.ImageDraw.multiline_text` now gives better results in some cases.
TrueType fonts with embedded bitmaps are now supported.
Error for large BMP files
^^^^^^^^^^^^^^^^^^^^^^^^^
Previously, if a BMP file was too large, an ``OSError`` would be raised. Now,
``DecompressionBombError`` is used instead, as Pillow already uses for other formats.