CFFI bindings for fontconfig
Project Description
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 ...
Release history Release notifications
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size & hash SHA256 hash help | File type | Python version | Upload date |
---|---|---|---|
fontconfig-0.1.zip (122.0 kB) Copy SHA256 hash SHA256 | Source | None | Jun 16, 2016 |