以下粗体部分标注不后向兼容的改动。
- Bump pillow from
>= 8.1.1, < 9to>= 8.3.2, < 10. - Drop Python3.6 support, add Python3.10 support.
- 移除Template.font_size参数,字体大小改为使用Template.font.size承载。
- 依赖变更
pillow >= 8.1.1, < 9 - 【试验特性】新增Template.features,支持额外特性配置,目前支持特性:网格布局。
- 提供对Python3.9的支持
- 停止对Python3.5的支持
- Pillow的依赖范围修改为
>= 8.0.0, < 9。
- 优化API文档:适配pydoc,提供更详细的概述,以及给出各异常触发条件的明确描述。
- Pillow的依赖范围修改为
>= 6.2.1, < 8。 - 提供更详细的异常错误信息。
- 优化性能。
- 微调排版算法。
- 新增对Python3.8的官方支持。
- 新增对换行符CR(
\r)和CRLF(\r\n)的支持。 - 修改Handright库docstring的描述。
- 更新作者信息。
- 优化function annotations。
- 类
Template添加release_font_resource和__repr__方法,__slots__属性。
- 为模板类
Template添加新方法get_size()。
- 将项目名由
PyLf改为Handright,包名由pylf改为handright。
- 为
line_spacing提供缺省值,取值font_size。
本次大更新重构了接口,但核心算法并未改变。
- 创建模板类
Template,用于管理模板相关参数。 - 修改
handwrite()的接口,使其接收Template类的实例。 - 将
handwrite2()合并入handwrite() - 废除参数
worker,并添加新参数mapper。 - 移除参数
is_half_char_fn以及相对应的常量DEFAULT_HALF_CHARS - 将参数
is_end_char_fn替换为新参数end_chars,废除常量DEFAULT_END_CHARS。 - 将参数
color替换为新参数fill - 取消背景图片的
mode限制,提供对全部mode的支持。 - 移除CLI工具
- 停止对PyPy的官方支持
- 取消
seed必须以keyword形式传入的限制 - 创建PyLf的基异常类
Error,并将LayoutError改为直接继承自该异常类。 - 创建新异常类
BackgroundTooLargeError
- Pillow版本限制放宽至
>= 5, < 7
- 修复已知的bug
- 细微优化function annotation
- 提供对PyPy的官方支持
- 每行最大字符数限制由80改为120。
- 修复在某些边界条件下,换行和换页过早的问题。
- 将
LICENSE.txt嵌入到二进制发行版中。
- 将Pyyaml版本限制改为
>= 3.13, < 5 - 轻微提升性能。
- 硬编码CLI工具的程序名。
- 为简单的手写任务推出CLI工具。请尝试在命令行中运行
pylf --help。 - 添加新常量
DEFAULT_HALF_CHARS和DEFAULT_END_CHARS
- Issue
UserWarningwhileworker > multiprocessing.cpu_count() - 完善文档
本次更新是多个不后向兼容的小更新与其余更新的集合。
- 添加异常类
pylf.LayoutError,当传入有关排版的参数不合理,程序无法根据这些参数进行排版时取代原异常ValueError抛出。 - 使用typing描述接口,提供对mypy的支持。
- 当背景图片的
mode不是1,L,RGB和RGBA之一时,将抛出NotImplementedError。 - 当
worker == 1时,改为使用单线程算法。 text的类型改为仅可以为str- 修复当使用非灰度背景,设置字体颜色为彩色时,生成图片中字迹为灰色的漏洞。
- 修复异常信息中的bug,并使异常信息更友好
- 去除示例代码中的
freeze_support()。 worker改为可为None,此时worker取默认值。- 提供更恰当的参数检查
- Local multiprocessing context is used.
- 细微修改示例代码
- 大幅提升生成图片只有一张时的性能
本版本使用了全新的扰动算法,在消除之前扰动算法弊端的同时,使生成图片达到了令人惊艳的逼真效果。其次,本版本对接口做了重新设计,使得接口的易用性和可读性更高,但也不可避免地破坏了后向兼容性。另外,为了对打印更加友好,废除了抗锯齿特性。因此为了获得与之前同等或更高的效果,您需要使用更高分辨率的背景图片或对原来的背景图片进行适当的放大处理。
- 使用全新扰动算法,废除旧扰动算法相关参数
alpha,添加新扰动算法相关参数perturb_x_sigma、perturb_y_sigma和perturb_theta_sigma,详情请看API文档。 - 取消对Python3.4的支持
- 大幅调整
template2的内部结构,详情请看API文档。 - 参数
line_spacing的含义由相邻两行的间隙(某行字的上端与其上一行字的下端的距离)改为相邻两行的间距(某行字的上端与其上一行字的上端的距离);并移除其默认值,使之不再是可选参数。 - 参数
is_half_char和is_end_char分别改名为is_half_char_fn和is_end_char_fn。 - 移除参数
box,取而代之以新参数margin来限定手写区域, 详情请看API文档。 - 废除参数
worker可为非正数的特性,但默认值保持不变。 - 废除抗锯齿特性,移除可选参数
anti_aliasing。 handwrite()和handwrite2()的可选参数(即:worker和seed)改为强制以keyword的形式传入- 为使排版更合理,调整竖直方向上的排版方式。由
margin["top"] + font_size + GAP + ... + font_size + GAP + margin["bottom"]的方式改为margin["top"] + GAP +font_size + ... + GAP + font_size + margin["bottom"]的方式,其中GAP为相邻两行字间的间隙宽度。 - 增加
word_spacing必须大于-font_size // 2的限制。 - 添加参数检查,提供更友好的异常信息。
- 提供更详尽的文档。
- 参数
seed的类型由必须为int改为可为任一hashable。 - 提供参数
color对所有Pillow Color Name的支持。 - 完善文档
- 轻微提升
handwrite()和handwrite2()的性能
- 移除source distribution中的
docs文件夹 - 提供对Python3.7的支持,为此依赖项由
pillow >= 5.0.0, < 6改为pillow >= 5.2.0, < 6。
- 函数
handwrite和handwrite2添加新可选参数seed,使得在设置了seed的情况下,结果具有可重复性。 - docstring改为Google风格。
- 添加对Python3.4的支持。
- 取消Python版本必须小于3.7的限制(但目前尚不对Python3.7及以上版本做任何官方支持)。
- 提供对pydoc更好的支持。
- 所有Python源文件显式标注为使用UTF-8编码。
- 添加安装依赖项
setuptools>=38.6.0 - description改为README.md的内容
- 修复当
template['font_size'] == 0时触发ZeroDivisionError的漏洞
- 修复
setup.py中的细微问题
- 轻微提高当
worker大于生成图片数时的性能 - 轻微提高在使用
is_end_char默认参数下的性能
- 将所需Python版本由
>=3.5, <3.8改为>=3.5, <3.7, 以解决PyLf依赖项Pillow无法在某些平台上安装的问题。
- 添加
pylf.handwrite2,以使得满足背景图片需周期性变化的需求。详情请参阅 Reference。 - 改进下采样算法,使得在打开抗锯齿的情况下有更好的性能。注意:在同样的参数下(排除了随机性),该新版本生成的图片与上一版本生成的图片并不会严格完全相同,但是人眼难以察觉出该区别。
本版本对核心算法做了大幅改动,一方面使得效果更为逼真,另一方面使得性能得到大幅提升而内存占用大幅降低;但也使得接口发生了不兼容的改动。同时,本次更新也使得接口易用性得到大幅的提高。
template中的参数color由tuple类型改为特定格式的str- 废除
template中的参数x_amplitude、y_amplitude、x_wavelength、y_wavelength、x_lambd和y_lambd - 将依赖项由
pillow >= 4.3.0改为5.0.0 <= pillow < 6 - 将
font_size / 256作为template中font_size_sigma、word_spacing_sigma和line_spacing_sigma参数的缺省值 template添加新的参数alpha- 大幅提高性能,大幅减少内存占用
- 将
line_spacing的含义改为两临近行间的间隙(即上一行字的下端和下一行字的上端的距离)的大小(以像素为单位),并将font_size // 5作为其缺省值 - 完善文档
- 将
0作为word_spacing的缺省值 - 修复当生成图片数超过
worker时文字出现大范围重叠的漏洞。
- fix #2
- 改进算法使得参数
text可为iterable
- Add
ValueErrorraised byhandwriteto prevent dead loop in some corner cases - 完善文档
- 将黑色作为
template的缺省颜色 - 字体宽度从由
font_size决定改为由每个字符自己的信息决定 - 将
lambda c: False作为is_half_char的缺省值 - 将是否在常见非开头字符集中作为
is_end_char的缺省值