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
...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.