fontToolspackages are hard dependencies.
WARNING: The font support has changed drastically in this version.
If you directly use the
ezdxf.tools.fonts module, your code will break.
We apologize for the inconvenience. To use the previous version, pin the
to v1.0.3 in your
Font rendering using
matplotlib has been replaced by
fontTools. It is now faster and
more accurate. However, the convenient multi-platform support provided by
must now be handled by
ezdxf, and it may not work as smoothly as with
The available fonts on a system are cached in the
which defaults to
~/.cache/ezdxf. Please note that this cache will not be updated
automatically if you add or remove fonts.
To update the font cache, use the following command:
For more information on this topic, please refer to this link.
We've added new support for measuring and rendering
Shape fonts are the basic stroke fonts commonly found in CAD applications. None of these
fonts are included in
ezdxf due to licensing restrictions or the restrictive licensing
.lff fonts used in LibreCAD.
As there is no universal way to find these fonts, you will need to create a config file
and add the font directories where these fonts are located to the
For more information on config files, please read this link.
On Linux, you can add symbolic links to these directories in the
Don't forget to update the font cache when adding new font directories!
We've introduced new backends to the
drawing add-on, allowing you to export DXF content
as SVG, PDF, PNG, PLT/HPGL2, and simplified DXF files.
The new SVG backend is a native implementation and does not require the
package. It creates smaller files and supports the new page layout features introduced
in this version.
The new PDF and PNG backends require the
PyMuPdf package, offering faster rendering
and support for the new page layout features compared to the
The PLT/HPGL2 backend creates plot files for raster plotters. It's a native implementation and does not require additional packages. CAUTION: The output of this backend is only tested with a plot file viewer and not on real hardware!
The DXF backend creates a flattened DXF file with only these DXF primitives: POINT, LINE, LWPOLYLINE, SPLINE, HATCH.
We've added a new tutorial for using these new backends and the new page layout features.
hpgl2 add-on provides tools to process and convert HPGL/2 plot files. You can use
hpgl command in the launcher to view and convert plot files via a PyQt GUI:
For more information, please refer to the docs.
We've introduced a new
ezdxf.xref module to improve the handling of external references
and the import of resources. This module serves as a replacement for the
add-on but has a completely different API.
If you have any comments, ideas, or suggestions, please feel free to post them in the discussion forum on GitHub.
See you sometime, take care, stay healthy!
Matplotlibrequires oriented outer paths and holes to draw correct filled paths
PyMuPDFdeprecated method names, requires
PyMuPDF1.20.0 or newer
drawingadd-on for these backends:
drawingadd-on for these backends:
numpyv1.25 has stopped providing Python 3.8 binary wheels on PyPI
\M+cxxxxin table names
ezdxf.tools.fontsmodule your code will break, sorry! Pin the
ezdxfversion to v1.0.3 in your
requirements.txtfile to use the previous version!
numpyis a hard dependency, requires Python version >= 3.8
fontToolsis a hard dependency
ezdxf.xrefnew core module to manage XREFs and load resources from DXF files
ezdxf.addons.hpgl2add-on to convert HPGL/2 plot files to DXF, SVG, PDF, PNG
ezdxf hpglcommand to view and/or convert HPGL/2 plot files to various formats: DXF, SVG, PDF, PNG
DXFbackends for the
drawingadd-on, these backends do not need additional libraries to work
PyMuPdfbackend for the
drawingadd-on, support for PDF, PNG, PPM and PBM export
BackgroundPolicyconfiguration settings for the
drawingadd-on to change/override foreground- and background color by the frontend
TextPolicyconfiguration settings for the
drawingadd-on, render text as solid filling, outline path, replace text by (filled) rectangles or ignore text at all
ezdxf.entities.acad_table_to_block()function, converts a
ACAD_TABLEentity to an
ACADProxyEntity.explode()method, to explode
ACAD_PROXY_ENTITYinto proxy graphic entities
ezdxf.fontsincluding a big refactoring
weightattribute is an int value (0-1000),
stretchis renamed to
widthand is now also an int value (1-9)
matplotlibfont support module by
use_matplotlib- is not needed anymore
font_cache_directory- is not needed anymore
drawingadd-on and text measurement is done by the
BackendInterfaceand all derived backends support only 2D shapes
Pillowbackend and the
MTEXT/MLEADERinline commands "absolute text height" at transformation
dimclrdcolor for dimension arrow blocks