Releases: CyberAgent/fontconfig-py
Release 1.0.2
Infrastructure
- deps(deps-dev): update mypy requirement from >=1.18.2 to >=1.20.1 (#66)
- deps(deps-dev): update cython requirement from >=3.0.0 to >=3.2.4 (#67)
- deps(deps-dev): update pytest requirement from >=8.0 to >=9.0.3 (#68)
- Bump pytest from 8.4.1 to 9.0.3 in the uv group across 1 directory (#69)
- deps(deps-dev): update sphinx requirement from >=7.0 to >=8.1.3 (#64)
- deps(deps-dev): update sphinx-rtd-theme requirement from >=3.0 to >=3.1.0 (#65)
- deps(deps-dev): update ruff requirement from >=0.4 to >=0.15.10 (#63)
- deps(deps-dev): update setuptools requirement from >=61.0 to >=82.0.1 (#62)
- ci(deps): bump pypa/cibuildwheel from 3.4.0 to 3.4.1 (#61)
- Bump requests from 2.32.4 to 2.33.0 in the uv group across 1 directory (#59)
- ci(deps): bump pypa/cibuildwheel from 3.3.1 to 3.4.0 (#58)
- Bump urllib3 from 2.5.0 to 2.6.3 (#57)
- ci(deps): bump actions/download-artifact from 7 to 8 (#56)
- ci(deps): bump actions/upload-artifact from 6 to 7 (#55)
- ci(deps): bump pypa/cibuildwheel from 3.3.0 to 3.3.1 (#54)
Release 1.0.1
Summary
This patch release includes package metadata improvements and documentation updates since v1.0.0.
Changed
- Add PyPI package classifiers for development status, topics, and Python versions (#52)
- Add package keywords for improved discoverability (#52)
- Consolidate development dependencies to dependency-groups format (#51)
Documentation
- Update security policy to clarify v1.0+ support (#50)
- Add community standards documentation (CODE_OF_CONDUCT, CONTRIBUTING, SECURITY) (#46)
- Reorganize documentation by topics for better navigation (#45)
- Expand README with fontconfig explanation (#44)
- Clarify bundled dependencies in NOTICE (#46)
- Update release process to require pull requests (CLAUDE.md, CONTRIBUTING.md)
Infrastructure
- Transfer copyright to CyberAgent, Inc. (#42)
- Fix workflow permissions for code scanning (#43)
- Update GitHub Actions dependencies (checkout v6, upload-artifact v6, download-artifact v7) (#47-49)
Full Changelog: v1.0.0...v1.0.1
Release 1.0.0 - Python Limited API Support
Breaking Changes
- Dropped Python 3.9 support (EOL as of October 2025)
- Minimum Python version is now 3.10
Changed
- Build wheels using Python Limited API (Stable ABI) for forward compatibility
- Single abi3 wheel now supports Python 3.10, 3.11, 3.12, 3.13, 3.14+
- Distribution size reduced by ~75% (3 wheels instead of 12+)
- Performance impact: < 5% for typical font queries
- Upgraded cibuildwheel to v3.3.0
Technical
- Enabled
Py_LIMITED_API=0x030A0000(Python 3.10) in Cython build - Wheels use
.abi3suffix for Stable ABI guarantee - Requires Cython ≥3.0.0 and setuptools ≥61.0
This release brings significant improvements to distribution efficiency and forward compatibility by adopting Python's Limited API. A single abi3 wheel per platform now supports all future Python versions (3.10+), reducing distribution size by 75% and eliminating the need to rebuild for new Python releases.
Release 0.4.0
fontconfig-py v0.4.0
What's New
Pythonic CharSet Support
This release adds comprehensive Pythonic support for CharSet, making it a first-class collection type in fontconfig-py.
New CharSet methods:
- Factory:
CharSet.from_string(),CharSet.from_codepoints() - Modification:
add(),discard() - Inspection:
__len__(),__contains__(),__iter__(),__eq__(),__repr__() - Utility:
copy()
Example:
import fontconfig
# Create CharSet from string
charset = fontconfig.CharSet.from_string("Hello")
# Use in queries
fonts = fontconfig.list(properties={"charset": charset})
# Check character membership
if ord('H') in charset:
print("Contains 'H'")Enhanced Documentation
Added 800+ lines of beginner-friendly documentation including:
- Cookbook with 8 common font search patterns
- Error handling and edge cases guide
- Comprehensive CharSet usage examples
- Pattern syntax reference
Changes
See the full CHANGELOG for detailed information about all changes in this release.
Installation
pip install fontconfig-pyWheels are available for:
- Linux: x86_64, ARM64
- macOS: Universal2 (Intel + Apple Silicon)
Thanks
Special thanks to all contributors and users!
Release 0.3.1
What's Changed
Fixed
- Fixed TypeError when using single integer/float values for range properties (#36)
fontconfig.match(properties={"weight": 200})now works correctly- Single int/float values are automatically converted to ranges [value, value]
- Matches the behavior of pattern strings like
:weight=200
Changed
- Implemented single-source versioning from
__init__.py
Documentation
- Updated README with modern API examples and improved structure
Full Changelog: v0.3.0...v0.3.1
Release 0.3.0
Added
- New high-level API functions aligned with fontconfig core operations:
match()- Find the single best matching font (wrapsFcFontMatch)sort()- Get fonts sorted by match quality (wrapsFcFontSort)list()- List all matching fonts (wrapsFcFontList)
- Properties dict parameter support for all new functions (alternative to pattern strings)
- Custom config parameter support for all high-level functions
- Comprehensive test coverage for new API functions
Deprecated
query()function is now deprecated in favor ofmatch(),sort(), orlist()- A
DeprecationWarningis now raised when usingquery() - The function remains fully functional for backward compatibility
- A
Changed
- Restructured usage documentation with clear guidance on choosing the right function
- Added examples for all three new high-level functions
- Updated documentation to show equivalents to
fc-match,fc-match -s, andfc-listCLI tools - Added migration guide from
query()to new functions
Release 0.2.1
Release 0.2.1
This patch release includes bug fixes and documentation improvements.
What's Changed
Fixed
- Fixed fontconfig build paths and added Homebrew check for macOS compatibility
- Fixed
_FcSetNameenum import warning
Documentation
- Expanded usage documentation with comprehensive examples
- Improved API documentation and usage patterns
Installation
pip install fontconfig-py==0.2.1Full Changelog
See CHANGELOG.md for complete release history.
Full Changelog: v0.2.0...v0.2.1
v0.2.0
v0.1.3 release
Release 0.1.3 changes license terms from MIT to MIT AND FTL for bundled freetype binary. Functionality remains the same from 0.1.2.
What's Changed
- Update CI dependencies by @dependabot[bot] in #21
- Migrate from poetry to uv and fix build issues by @kyamagu in #23
- Fix license for bundled freetype by @kyamagu in #24
New Contributors
- @dependabot[bot] made their first contribution in #21
Full Changelog: 0.1.2...0.1.3