三次到二次bezier曲线转换
cu2qu的Python项目详细描述
cu2qu
这个库提供接受ufo对象(defcon字体)的函数 或robofab-rfonts),并将任何三次曲线转换为二次曲线。最多的 有用的函数可能是fonts_to_quadratic:
fromdefconimportFontfromcu2qu.ufoimportfonts_to_quadraticthin_font=Font('MyFont-Thin.ufo')bold_font=Font('MyFont-Bold.ufo')fonts_to_quadratic([thin_font,bold_font])
转换期间保证插值兼容性。如果不是的话 需要时,一次转换一种字体可能会产生更优化的结果:
forfontin[thin_font,bold_font]:fonts_to_quadratic([font])
某些字体可能需要与默认字体(0.001)不同的错误阈值 嗯)。这也可以由来电者提供:
fonts_to_quadratic([thin_font,bold_font],max_err_em=0.005)
forfontin[thin_font,bold_font]:fonts_to_quadratic([font],max_err_em=0.001)
fonts_to_quadratic可以打印报告曲线数的字符串 每种长度。例如 fonts_to_quadratic([font], dump_stats=True)可能会打印一些内容 例如:
3: 1000 4: 2000 5: 100
这意味着字体现在包含1000条曲线和三个点,2000 得了四分,一百分得了五分。给定多个字体,函数 将报告所有字体的总数。你也可以积累 通过提供您自己的报表字典来统计通话间隔:
stats={}forfontin[thin_font,bold_font]:fonts_to_quadratic([font],stats=stats)# "stats" will report combined statistics for both fonts
安装
与其他python包一样,您可以使用pip安装/升级cu2qu。
$ pip install --upgrade cu2qu
这将从python下载最新的稳定版本 包索引(PYPI)。
如果您希望修改源代码,可以克隆git存储库 从github并以--editable(或-e)模式安装:
$ git clone https://github.com/googlei18n/cu2qu
$ cd cu2qu
$ pip install --editable .
或者,您可以构建使用Cython的cu2qu的优化版本。 将python编译为c。这样创建的扩展模块比 是纯python的两倍。
当使用pip从pypi安装cu2qu时,只要有c编译器 可用时,cu2qu安装脚本将自动尝试构建 c/python扩展模块。如果编译因任何原因失败,则会出现错误 是打印出来的,cu2qu将作为纯python安装,没有经过优化的 分机。
如果已经克隆了git存储库,则不存在c源文件,并且 需要再生。为此,您需要安装最新的cython (像往常一样,pip install -U cython),然后使用全局选项 --with-cython调用setup.py脚本时。你也可以出口 一个CU2QU_WITH_CYTHON=1环境变量,如果您愿意的话。
例如,构建CU2QU扩展模块(即 源目录:
$ python setup.py --with-cython build_ext --inplace
从本地安装pip时,还可以传递--global-option。 源签出,例如:
$ pip install --global-option="--with-cython" -e .