三次到二次bezier曲线转换

cu2qu的Python项目详细描述


Build StatusPyPI VersionCoverage

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 .

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java提高机器学习Rest服务性能   java反转字符的字符串顺序,并使用构造函数将其放入LinkedList   继承为什么Java不支持在方法签名中添加“throws”?   执行DDL alter table if exists任务时发生java错误。城市   java在eclipse中使用CREATETXT并打包在jar中   java AES256与3DES 256密钥检测   具有两个相同类型字段的java JPA实体   java Webapp日志记录设置被忽略   java KeyEventDispatcher可以在一个应用程序中工作,但不能在另一个应用程序中工作   带有Swing和OpenJDK的java PinchZoom   未涉及java AspectJ注释切入点(对于任何注释类型)   java如何在FuseBAI中获取日志文件详细信息   java在Linux上将wstring转换为jstring