以下粗体部分标注不后向兼容的改动。
- Bump pillow from
>= 8.1.1, < 9
to>= 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
UserWarning
whileworker > 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
ValueError
raised byhandwrite
to prevent dead loop in some corner cases - 完善文档
- 将黑色作为
template
的缺省颜色 - 字体宽度从由
font_size
决定改为由每个字符自己的信息决定 - 将
lambda c: False
作为is_half_char
的缺省值 - 将是否在常见非开头字符集中作为
is_end_char
的缺省值