Releases: xiaosuyyds/PowerText
Releases · xiaosuyyds/PowerText
v0.7.1
修复无法正常执行字体回退逻辑的bug
Full Changelog: 0.7.0...0.7.1
v0.7.0
⚠️ 破坏性变更 (Breaking Changes) - 迁移必读
- 协议变更:项目协议正式变更为 MPL-2.0。
- API 签名改动:
draw_text删除了has_emoji和emoji_source参数。Font构造函数的matcher回调函数,现在统一接收一个TypedDict对象SegmentDict。- 旧版:
lambda char: ... - 新版:
lambda data: data['text'] ...
- 旧版:
- 依赖变化:彻底移除了对
pilmoji的强依赖。Emoji 渲染现在通过将 Emoji 字体(如 Noto Color Emoji)作为常规Font对象加入fonts列表来实现。 - 子模块移除:现在移除了子模块local_emoji_source。
🚀 性能优化
- 智能换行算法:新增启发式换行预测算法。通过识别字符权重(区分宽窄字符)并结合线性探测,减少了处理长文本换行时的测量次数。
- 核心类引入
__slots__,减少对象内存开销。 - 其他缓存、方法优化,总体性能提升约20%~40%。
✨ 新功能
- 字体动态缩放:
Font类新增size属性。支持加载高分辨率字体后,在渲染时自动进行高质量的图像缩放(Resampling),解决了部分字体固定尺寸无法更改的问题。 - 全自动 cmap 提取:重新设计了字体字符映射表获取逻辑,现在能够自动识别并读取来自文件路径、
BytesIO或内存二进制数据的字体,极大增强了与 Web 框架及动态字体生成的兼容性。
Full Changelog: 0.6.0...0.7.0
v0.6.0
✨ 新功能
-
动态文本样式:
Font的matcher函数现在可以返回一个FontMatcherResult对象,从而为匹配到的文本片段动态应用样式。目前已支持动态color(颜色),可以轻松实现关键字高亮等功能。示例:
# 以前: matcher 只能返回 True/False Font(font, matcher=lambda text: text in ["T", "E"]) # 现在: matcher 可以为特定词语动态指定颜色 Font(font, matcher=lambda text: FontMatcherResult(color=(255, 0, 0)) if text == "e" else False)
📈 优化与改进
- 通过字体缓存提升性能: 当在不同的
Font对象中重复使用同一个字体文件时,由于增加了内部缓存,在部分场景下性能会更高。 - 内部代码重构: 核心渲染逻辑已重构为使用
dataclass,提高了代码的可维护性,并为未来的功能扩展做好了准备。
v0.5.0
支持wrap_indent功能,可以设置自动换行的缩进
v0.4.0
v0.3.1
修复list[dict]文本处理的bug
v0.3.0
支持字体回退与list[dict]格式的文本
v0.2.3
修复返回值错误
v0.2.2
为绘制文本函数添加返回值: 最后的x坐标与最后的y坐标
Full Changelog: 0.2.1...0.2.2
v0.2.1
修复文本渲染时的可能的类型错误,以及更改readme示例