基于Python的OpenType COLRv1字体渲染器,具有多个后端。
项目描述
BlackRenderer
BlackRenderer是Python基于的OpenType COLR字体渲染器,具有多个后端。它支持新的COLRv1格式以及旧的COLR格式。它完全支持变量字体,包括变量COLRv1数据。
功能
- 这是一个名为"blackrenderer"的Python库
- 这是一个名为"blackrenderer"的命令行工具
- 渲染单个字符或文本字符串
- 支持多个图形后端
- Skia
- Cairo
- CoreGraphics (macOS)
- SVG
- 轮廓提取器
- 边界框计算器
- 支持多种输出格式
- .png
- .svg
- 它使用fonttools解析COLRv1数据
- "blackrenderer"工具是一个类似于"hb-view"的命令行应用程序,具有可切换的后端。它使用HarfBuzz进行形状
工具使用示例
BlackRenderer附带一个类似于hb-view的命令行工具,可以按以下方式使用
$ blackrenderer font.ttf ABC🤩 output.png --font-size=100
库使用示例
有一个用于渲染文本字符串的高级函数
from blackrenderer.render import renderText
renderText("myfont.ttf", "ABC", "output.png") # or "output.svg"
完整的renderText()
签名是
def renderText(
fontPath,
textString,
outputPath,
*,
fontSize=250,
margin=20,
features=None,
variations=None,
backendName=None,
)
为了有更多的控制,库公开了两个主要部分:BlackRendererFont类和一组后端类。每个后端提供一个Canvas类。在绘制字符时,您将Canvas实例传递给BlackRendererFont实例。大多数后端还有一个Surface类,这是一个通用便利类,用于为特定框生成位图(或SVG文档)的画布。以下是一个最小示例
from blackrenderer.font import BlackRendererFont
from blackrenderer.backends import getSurfaceClass
brFont = BlackRendererFont("my_colr_font.ttf")
glyphName = "A"
boundingBox = brFont.getGlyphBounds(glyphName)
surfaceClass = getSurfaceClass("skia")
surface = surfaceClass()
with surface.canvas(boundingBox)
brFont.drawGlyph(glyphName, canvas)
surface.saveImage("image.png")
Canvas对象支持以下转换方法
canvas.translate(dx, dy)
canvas.scale(sx, sy)
canvas.transform((xx, yx, xy, yy, dx, dy))
使用上下文管理器进行保存/恢复
with canvas.savedState():
canvas.scale(0.3)
...draw stuff...
安装
如果您已设置Python 3环境,那么您需要做的就是
$ pip install blackrenderer
安装以贡献/设置环境
已安装 Python 3.7 或更高版本。
打开终端。
进入项目仓库目录。
创建虚拟环境
$ python3 -m venv venv --prompt=black-renderer
激活 venv
$ source venv/bin/activate
(您需要为每个新的终端会话激活虚拟环境。)
升级 pip
$ pip install --upgrade pip
安装需求
$ pip install -r requirements.txt
$ pip install -r requirements-dev.txt
以可编辑模式安装 blackrenderer
$ pip install -e .
运行测试
$ pytest
维护者:如何发布
要创建一个版本,创建一个带有注释的 git 标签,标签格式为:v1.2.3,其中 1、2 和 3 分别代表主版本号、次版本号和补丁版本号。您可以通过添加 "aN" 或 "bN" 或 "rc" 来标记 alpha、beta 或 "发布候选" 版本。例如:v1.2.3、v1.2.3b2、v1.2.3a4、v1.2.3rc。
注释标签的消息应包含发布说明。
然后使用 "git push --follow-tags" 来触发发布机器人。示例会话
$ git tag -a v1.2.3 -m "v1.2.3 -- fixed issue #12345"
$ git push --follow-tags
此过程将创建 GitHub 版本,并将包上传到 PyPI。
项目详情
下载文件
下载适用于您平台文件的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
blackrenderer-0.6.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 639e30d2ddd080e90780e45130ac202c5f4f5180db5d6c48f61a222d58560952 |
|
MD5 | c1efe804e734d51ad602d3cd6ec013eb |
|
BLAKE2b-256 | c548d011ddc69f332b36cb3364985f77bcec942150c7bb82212c8a2d1fa67d09 |
blackrenderer-0.6.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d0fb4d38eba0f0b03cd57098954d71554beb81bc71a846d27bb642519fe37db7 |
|
MD5 | 1aa29aba87f492402ba6c5e3fb6c7e6f |
|
BLAKE2b-256 | b1ba2a68b13333008f019fd881d938c7d8bb5c62e06282ff608b7ee842e6910f |