Skip to main content

CFFI binding for fontconfig

This package try to be a complete python binding for fontconfig.

This package contains two modules: the low level _fontconfig, that matches the C APIs, and fc, that is an higher abstraction over it.

The C API:

int FcGetVersion(void);

in _fontconfig:

_fontconfig.FcGetVersion()

in fc:

fc.get_version()

Installation

This package requires the enum34 package. Install it via pypi:

$ pip install enum34

or use your distribution’s package:

$ apt-get install python-enum34

To compile the _fontconfig extension, the following C headers are required:

#include <fontconfig/fontconfig.h>
#include <fontconfig/fcfreetype.h>
#include <ft2build.h>
#include FT_FREETYPE_H  // usually <freetype/freetype.h>

and the package cffi. In Debian the following packages are enough:

$ apt-get install python-cffi libfontconfig1-dev libfreetype6-dev

Finally, to install the package itself:

$ pip install fontconfig

_fontconfig module

The module _fontconfig exports few simbols to test the capabilities of the underlying library. These are:

  • PYFC_HAS_DirCacheRescan

  • PYFC_HAS_FcRange

Usage:

>>> import _fontconfig
>>> print _fontconfig.lib.FcGetVersion()
21100
>>> _fontconfig.lib.FcInit()  # init the library
1
>>> config = _fontconfig.lib.FcConfigGetCurrent()
>>> sl = _fontconfig.lib.FcConfigGetConfigDirs(config)
>>> while True:
...  s = _fontconfig.lib.FcStrListNext(sl)
...  if not s:
...   break
...  print _fontconfig.ffi.string(s)  # doctest: +ELLIPSIS
...
/usr/share/fonts
/usr/X11R6/lib/X11/fonts
/usr/local/share/fonts
...
>>> _fontconfig.lib.FcStrListDone(sl)

fc module

The fc module would be an higher abstraction moudule but it is still uncomplete.

Usage:

The same snippet as above:

>>> import fc
>>> fc.get_version()  # fontconfig's version
(2, 11, 0)
>>> fc.init()
>>> config = fc.FcConfig.get_current()
>>> config.get_config_dirs()  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
['/usr/share/fonts', '/usr/X11R6/lib/X11/fonts',
'/usr/local/share/fonts', ...]

Few more examples:

>>> fc.__version__  # python library's version
'0.1'
>>> pattern = config.get_fonts(fc.SetName.system)[0]
>>> pattern.name_unparse()  # doctest: +ELLIPSIS
'21 Kilobyte Salute:...'
>>> config.get_font_dirs()  # doctest: +ELLIPSIS +NORMALIZE_WHITESPACE
['/usr/share/fonts', '/usr/X11R6/lib/X11/fonts',
'/usr/local/share/fonts', ...]
>>> pat = fc.FcPattern.name_parse("dejavu serif")
>>> for font in config.font_list(pat, [fc.PropertyName.file]):
...  print(font.name_unparse())  # doctest: +ELLIPSIS
...
:file=/usr/share/fonts/truetype/dejavu/DejaVuSerif-BoldItalic.ttf
:file=/usr/share/fonts/truetype/dejavu/DejaVuSerifCondensed.ttf
...

Metadata

Release files for fontconfig 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fontconfig 0.1
File Size Uploaded
fontconfig-0.1.zip 122.0 kB Details

Release files / fontconfig-0.1.zip

Download URL fontconfig-0.1.zip
Size 122.0 kB
Tags Source
SHA-256 checksum
How to use checksums
35bebcee549445497f3f5b21893f4901739a56ac4209df33c9e1df450efcce98
BLAKE2b-256 checksum
How to use checksums
d1010a1ce055ab89acd13050fe9b0833be3ce8a0a07ec5450ddf1d1812016a3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page