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.
Source Distribution
File details
Details for the file fontconfig-0.1.zip
.
File metadata
- Download URL: fontconfig-0.1.zip
- Upload date:
- Size: 122.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35bebcee549445497f3f5b21893f4901739a56ac4209df33c9e1df450efcce98 |
|
MD5 | cd798e5696a9542fd0ee801061c77f4b |
|
BLAKE2b-256 | d1010a1ce055ab89acd13050fe9b0833be3ce8a0a07ec5450ddf1d1812016a3a |