All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.26.1 - 2026-01-09
- Fix Windows compatibility by removing
cursesdependency. (by @seproDev)
0.26.0 - 2026-01-09
- Add
Python 3.14support. - Improve
Windowscompatibility. - Update
featuresdata. (by @seproDev in #239) - Update
axisdata. (by @seproDev in #235) - Update
unicode-blocks.jsonandunicode-scripts.jsondata. - Bump requirements and
pre-commithooks.
0.25.0 - 2025-06-11
- Add
Python 3.13support. - Drop
Python 3.8andPython 3.9support. - Reset file pointer when saving to fileobject.
- Fix typing issues.
- Update
unicode-blocks.jsonandunicode-scripts.jsondata. - Bump requirements and
pre-commithooks.
0.24.0 - 2024-08-05
- Add
get_svgmethod. - Add
is_colormethod. - Improve
is_monospacemethod accuracy by addingthresholdoption. - Bump requirements.
0.23.1 - 2024-07-08
- Fix
get_formatwith.otffonts withCFF2table. - Bump requirements and
pre-commithooks
0.23.0 - 2024-06-23
- Add
get_family_classificationandset_family_classificationmethods. - Improve
slugifyutility function. - Bump requirements and
pre-commithooks.
0.22.0 - 2024-05-14
- Add
is_monospacemethod. - Add
mypytopre-commit. - Fix
pyprojectRuffconf warnings. - Bump requirements and
pre-commithooks.
0.21.0 - 2024-03-07
- Add type hints.
- Add vertical metrics keys available as class properties.
- Improve code quality.
- Bump requirements and
pre-commithooks.
0.20.0 - 2024-01-29
- Add more vertical metrics:
units_per_em,y_max,y_min,ascent,descent,line_gap,typo_ascender,typo_descender,typo_line_gap,cap_height,x_height,win_ascent,win_descent.
0.19.0 - 2024-01-28
- Add
get_vertical_metricsandset_vertical_metricsmethods. (#150)
0.18.0 - 2024-01-06
- Add
sanitizemethod. - Enforce keyword arguments usage.
- Use custom exceptions.
0.17.2 - 2023-12-18
- Fix possible
TypeError: '<' not supported between instances of 'NoneType' and 'int'.
0.17.1 - 2023-12-18
- Add
get_variable_instance_by_style_namemethod. - Increase tests coverage.
0.17.0 - 2023-12-13
- Add
Python 3.12support. - Add
get_family_name/set_family_namemethods. - Add
get_filenamemethod. - Add
get_style_name/set_style_namemethods. - Add
save_variable_instancesmethod. #116 - Update
renamemethod: renamestyle_flagsargument toupdate_style_flags. - Update
savemethod: output font filename is generated usingget_filenamemethod when target path is a directory. - Update
to_staticmethod: add support toupdate_names(default True) andupdate_style_flags(default True) arguments. - Update
to_staticmethod: setitalicstyle flag based onital/slntcoordinates values. - Fix
get_variable_instance_closest_to_coordinates: if coordinates do not specify some axes, axes default value is used for lookup. - Fix
to_staticmethod: preventinplaceoption override. - Use
Ruffformatter instead ofBlackandisort. - Bump requirements (
fonttools,pillowandpython-fsutil).
0.16.0 - 2023-09-19
- Add
Font.from_collectionclass method. #49 - Allow initialisation from
fontbro.Font/fontTools.ttLib.TTFontobjects. - Fix error when calling
clonemethod on aFontobject created using a fileobject. #118 - Bump requirements.
0.15.0 - 2023-08-28
- Allow instantiation with file objects. (by @fcurella in #103)
- Add
save_to_file_objectmethod. (by @fcurella in #103) - Bump requirements (
fonttools,coverage,pre-commitandtox).
0.14.15 - 2023-07-31
- Bump requirements (
fonttools,pillowandtox).
0.14.14 - 2023-06-05
- Allow
filepathof typepathib.Pathin constructor. #83 (#84) - Add possibility to create static instance by using
style_nameinstead ofcoordinates. #82 (#85) - Strip whitespace when
slugifystring. - Move
get_euclidean_distancefunction tofontbro.mathmodule. - Bump
fonttools[pathops,unicode,woff]from4.39.3to4.39.4. (#79) - Update
pre-commithooks. (#80)
0.14.13 - 2023-05-02
- Fix
Font Bakeryerror: "Verify that each group of fonts with the same nameID 1 has maximum of 4 fonts".
0.14.12 - 2023-05-02
- Fix
Font Bakeryerror: "font name does not begin with the font family name".
0.14.11 - 2023-05-02
- Fix renaming legacy name records 1 and 2.
0.14.10 - 2023-04-24
- Revert "Fix
family_namename record renaming."
0.14.9 - 2023-04-18
- Calculate Euclidean distance between dicts.
0.14.8 - 2023-04-17
- Fix
family_namerenaming. - Fix
toxtest command. - Replace
flake8withRuff. - Switch from
setup.cfgtopyproject.toml. - Bump
fonttools[pathops,unicode,woff]from4.39.2to4.39.3. (#68) - Bump
pillowfrom9.4.0to9.5.0. (#71)
0.14.7 - 2023-03-24
- Improve
full_namerenaming using name records IDs 16 and 17. #62 (#66)
0.14.6 - 2023-03-21
- Accept axis coordinates
dictwithdefaultinto_sliced_variablemethod. #63 - Update unique identifier name record when renaming font. #62
- Upgrade syntax for
Python >= 3.8. - Set max line length to
88. - Add
flake8-bugbeartopre-commit. - Run
flake8also on tests files. - Bump requirements.
0.14.5 - 2023-01-29
- Fix
get_image()crash on Windows. (by @seproDev in #53) - Correctly center text in
get_image(). (by @seproDev in #53) - Fix
AttributeErroringet_features(). #50 (by @seproDev in #53) - Set
unicode_namedefault toNone. #51 (by @seproDev in #53)
0.14.4 - 2023-01-12
- Automatically update unicode data once a month.
- Update
unicode-blocks.jsonandunicode-scripts.jsondata. - Fix unformatted string in
get_charactersmethod.
0.14.3 - 2023-01-12
- Bump
python-fsutilrequirement.
0.14.2 - 2023-01-11
- Add
ignore_blankoption toget_charactersandget_characters_countmethods. - Fix
Pillowtextsizemethod deprecation warning. - Bump requirements.
0.14.1 - 2023-01-03
- Update unicode data.
0.14.0 - 2023-01-03
- Drop
Python 3.7support. - Add
setup.cfg(setuptoolsdeclarative syntax) generated usingsetuptools-py2cfg. - Add
pyupgradetopre-commitconfig. - Bump requirements and actions.
- Pin test requirements.
0.13.0 - 2022-12-14
- Add
Python 3.11support. - Replace
str.formatwithf-strings. - Remove encoding pragma.
- Remove
python setup.py testusage. - Bump requirements and actions.
0.12.0 - 2022-10-21
- Add
pre-commit. - Add
get_glyphsandget_glyphs_countmethods. - Fix PostScript name allowed characters (keep only printable ASCII subset).
0.11.2 - 2022-09-19
- Add
lazyoption support to constructor. - Fix subfamily name (name ID 2) renaming (lower case -> title case).
- Fix Pillow deprecation warning.
- Update requirements.
0.11.1 - 2022-07-05
- Updated
renamefor generating thefull_namecombiningfamily_nameandsubfamily_name.
0.11.0 - 2022-06-30
- Added
set_style_flags_by_subfamily_namemethod. - Added
style_flags=Trueoption torenamemethod. - Updated
get_features_tagsmethod for checking also theGPOStable.
0.10.4 - 2022-06-29
- Improved renaming according to RIBBI.
0.10.3 - 2022-06-29
- Fixed
renamesubfamily name when there areRegularandItalicin the same name.
0.10.2 - 2022-06-28
- Fixed style flags on save according to subfamily name.
0.10.1 - 2022-06-28
- Improved renaming according to RIBBI.
- Fixed
renamesubfamily name error.
0.10.0 - 2022-06-28
- Improved renaming according to RIBBI.
- Updated style flags on save according to subfamily name.
0.9.1 - 2022-06-07
- Updated
subsetdefault options.
0.9.0 - 2022-06-07
- Added possibility to pass subsetter options via kwargs in
subsetmethod. - Updated docstrings.
0.8.0 - 2022-05-08
- Added
clonemethod. - Added
get_fingerprint_matchmethod. - Added
get_versionmethod. - Removed
matchmethod.
0.7.0 - 2022-04-29
- Added
get_fingerprintmethod. - Added
get_imagemethod. - Added
get_italic_anglemethod. - Added
matchmethod. - Refactored
get_weightandget_widthmethods. - Updated unicode blocks and scripts data.
- Updated requirements.
0.6.0 - 2022-02-21
- Added
closemethod. - Added possibility to use
Fontclass as context manager.
0.5.0 - 2022-01-26
- Improved
subsetunicodesarg to support also list ofintcodepoints. - Moved features and unicode data to json files.
- Moved
parse_unicodesto the subset module and made it a public re-usable function. - Updated
python-fsutilrequirement version to0.6.0.
0.4.0 - 2022-01-12
- Added more informations to characters returned by
get_charactersmethod. - Added
get_unicode_block_by_nameandget_unicode_script_by_namemethods. - Improved
subsetunicodes parsing. - Renamed
unimodule tounicodedata.
0.3.0 - 2022-01-11
- Added
get_unicode_blocksmethod. - Added
get_unicode_scriptsmethod. - Changed
get_nameandset_nameto read/write both Mac and Windows IDs. - Fixed hardcoded class name in
__str__method. - Fixed
setup.pywarning and updated totoxconfiguration. - Removed
get_scriptsmethod. - Removed
get_scripts_by_charactersclass method. - Replaced single quotes
'with double quotes"(Black formatting).
0.2.3 - 2021-12-09
- Added
get_scripts_by_charactersclass method. - Fixed
TypeErrorraised on save after renaming. - Fixed
get_nameandset_namelangID parameter. - Improved
subsetunicodes string parsing. - Replaced Travis CI with Github Workflow.
- Formatted code with Black.
0.2.2 - 2021-11-25
- Fixed
renamemethod to raise aValueErrorwhen the computed PostScript name exceeds the allowed max-length (63). - Fixed
to_sliced_variablewhen axes coordinates are passed as dict doesn't contain 'min' or 'max' keys. - Changed
get_variable_axesandget_variable_instancesreturned dicts keys from camelCase to snake_keys. - Changed
get_variable_instancesmethod return value. - Reduced return calls in
get_formatmethod. - Improved tests.
0.2.1 - 2021-11-19
- Fixed width axis tag name.
0.2.0 - 2021-11-19
- Added
get_features_tagsmethod. - Added
get_style_flagandset_style_flagmethods. - Added support to
'condensed','extended'and'shadow'style flags. - Added
renamemethod.
0.1.0 - 2021-11-18
- Released
python-fontbro.