FIF Bindings for FontCongig
fontconfig的Python项目详细描述
这个包试图成为fontconfig的完整python绑定。
这个包包含两个模块:低级_fontconfig,即 与c api和fc匹配,后者是更高的抽象。
C API:
int FcGetVersion(void);
在_fontconfig:
_fontconfig.FcGetVersion()
在fc:
fc.get_version()
安装
此包需要enum34包。通过pypi安装:
$ pip install enum34
或者使用分发包:
$ apt-get install python-enum34
要编译_fontconfig扩展,下面的c头是 必需:
#include<fontconfig/fontconfig.h> #include<fontconfig/fcfreetype.h> #include<ft2build.h> #includeFT_FREETYPE_H // usually <freetype/freetype.h>
还有包裹cffi。在Debian中,以下软件包就足够了:
$ apt-get install python-cffi libfontconfig1-dev libfreetype6-dev
最后,要安装软件包本身:
$ pip install fontconfig
_fontconfig模块
模块_fontconfig导出几个simbol来测试功能 基础库的。这些是:
- PYFC_HAS_DirCacheRescan
- PYFC_HAS_FcRange
用法:
>>> import_fontconfig>>> print_fontconfig.lib.FcGetVersion()21100 >>> _fontconfig.lib.FcInit()# init the library1 >>> config=_fontconfig.lib.FcConfigGetCurrent()>>> sl=_fontconfig.lib.FcConfigGetConfigDirs(config)>>> whileTrue:... s=_fontconfig.lib.FcStrListNext(sl)... ifnots:... 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模块
fc模块将是更高的抽象模块,但它仍然是 不完整。
用法:
与上面相同的片段:
>>> importfc>>> 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', ...]
再举几个例子:
>>> 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")>>> forfontinconfig.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 ...