Skip to content

Releases: CyberAgent/fontconfig-py

Release 1.0.2

14 Apr 05:27
68bf95e

Choose a tag to compare

  • Add automated release tooling (#70)
  • docs: add section on configuring fontconfig search paths (#60)

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

23 Dec 02:38

Choose a tag to compare

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

10 Dec 09:49

Choose a tag to compare

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 .abi3 suffix 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

08 Dec 02:47

Choose a tag to compare

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-py

Wheels are available for:

  • Linux: x86_64, ARM64
  • macOS: Universal2 (Intel + Apple Silicon)

Thanks

Special thanks to all contributors and users!

Release 0.3.1

08 Dec 00:20

Choose a tag to compare

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

26 Nov 06:49
9392d0f

Choose a tag to compare

Added

  • New high-level API functions aligned with fontconfig core operations:
    • match() - Find the single best matching font (wraps FcFontMatch)
    • sort() - Get fonts sorted by match quality (wraps FcFontSort)
    • list() - List all matching fonts (wraps FcFontList)
  • 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 of match(), sort(), or list()
    • A DeprecationWarning is now raised when using query()
    • The function remains fully functional for backward compatibility

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, and fc-list CLI tools
  • Added migration guide from query() to new functions

Release 0.2.1

25 Nov 10:16

Choose a tag to compare

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 _FcSetName enum import warning

Documentation

  • Expanded usage documentation with comprehensive examples
  • Improved API documentation and usage patterns

Installation

pip install fontconfig-py==0.2.1

Full Changelog

See CHANGELOG.md for complete release history.

Full Changelog: v0.2.0...v0.2.1

v0.2.0

19 Nov 09:06
89e025b

Choose a tag to compare

What's Changed

Full Changelog: 0.1.3...v0.2.0

v0.1.3 release

15 Aug 02:39
e9518e9

Choose a tag to compare

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

New Contributors

Full Changelog: 0.1.2...0.1.3

0.1.2

04 Sep 12:36

Choose a tag to compare

What's Changed

Full Changelog: 0.1.1...0.1.2