- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Unifont 包含标记、变体选择器和其他不可打印字符的字形。
例如在 https://unifoundry.com/pub/unifont/unifont-14.0.04/font-builds/unifont_upper-14.0.04.ttf 的末尾这些标签是什么(如 FontForge 中所示):
每个都有一个应该可打印的字形:
我想使用 Unifont 在带有 Pillow 的图像上绘制该字形。
from PIL import Image, ImageDraw, ImageFont
text = chr(0x2A6B2) + " " + chr(0x0E0026)
font = ImageFont.truetype("unifont_upper-14.0.04.ttf", size=64)
image1 = Image.new("RGB", (256, 64), "white")
draw1 = ImageDraw.Draw(image1)
draw1.text( (0 , 0), text, font=font, fill="black")
image1.save("test aa.png")
第一个字符(CJK 表意文字)绘制正确。但是标签字符是不可见的。
有没有办法让 Pillow 绘制出我在 FontForge 中看到的形状?
最佳答案
不幸的是,简短的回答似乎是“不,你不能”。
Pillow 通常使用 libraqm
来布置文本(即将 Unicode 字符串映射到字体中的字形,特别是 raqm_layout 函数。
该库反过来使用名为 harfbuzz
的库来进行文本整形。
你想要的标签字符,包括U+E0026,有Unicode default ignorable属性(property)。默认情况下,harfbuzz
不显示具有此属性的字符,而是用空白字形替换它们。但是可以使用标志来修改此行为:具体来说,调用 hb_buffer_set_flags与 HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES看起来它会实现你想要的,显示这些字符而不是将它们消隐。
问题是,libraqm
在 calls harfbuzz
时无法设置此标志。 - 它确实让你设置一些其他的标志,但不是这个 :(
为了实现你想要的,我想你必须使用一个较低级别的库——显然有 FreeType 和 harfbuzz
的 Python 绑定(bind),虽然我没有使用过,所以我可以'不要评论可能涉及多少痛苦。
关于python - 枕头 - 绘制文字标签字形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72893662/
Unifont 包含标记、变体选择器和其他不可打印字符的字形。 例如在 https://unifoundry.com/pub/unifont/unifont-14.0.04/font-builds/u
我想在图像中添加文本,例如“H”。然后,旋转文本。我尝试在 python 中使用 Pillow 6.0 模块来执行此操作。这是我的代码: import os from PIL import Image
我使用 Pillow (PIL) 6.0 并在图像中添加文字。我想把文字放在图片的中央。这是我的代码, import os import string from PIL import Image fr
我已经测试了计算并且数学是正确的(并考虑了字体的高度和宽度),但是在 Python 创建图像并将其放入 Photoshop 之后,文本的垂直和水平居中不是正确的。我应该用我的代码做些其他事情吗? fr
我想在 tkinter 的 Canvas 上使用图像,但我无法用 Pillow 打开图像。事实上,我的所有图像都与我的代码位于同一个文件夹中,但是当我放入“icon.png”时它不起作用。然后,当我输
我想在 tkinter 的 Canvas 上使用图像,但我无法用 Pillow 打开图像。事实上,我的所有图像都与我的代码位于同一个文件夹中,但是当我放入“icon.png”时它不起作用。然后,当我输
我有在图像上添加渐变的代码。 def st(path, gradient_magnitude=2.): im = Image.open(path) if im.mode != 'RGB
在我的 GAE 应用程序中,我尝试这样做: from PIL import Image 得到这个: Traceback (most recent call last): ... File "/
我有这个先决条件: CentOS 6.5 Python2.7 安装命令 ./configure --prefix=/usr/local --enable-unicode=ucs4;制作;进行安装; h
我正在尝试找到一种使用 Pillow 获取图像 channel 数的方法。这似乎相当微不足道,但我找不到它(简单的答案)。 我知道我可以用一个很小的开销来解决它,比如(2种可能性): 转换为 nump
我需要向图像添加透明渐变,如下图所示,我尝试过: def test(path): im = Image.open(path) if im.mode != 'RGBA':
我必须在图像上写一些文字。我用的是PIL,但是我无法在这张图片上设置特定的字体。我尝试使用下面的代码来做到这一点,但字体和字体大小似乎不受我的代码的影响。 PS:字体文件和python脚本在同一目录下
我有一个简单的脚本,它从图像 URL 列表中获取图像大小,但是当列表太大时它会太慢(例如:120 个 URL,运行可能需要 10 秒) def get_image_size(url): dat
我正在尝试使用 JPEG2000 从 pillow 保存图像,但得到了可怕的 OSError: encoder jpeg2k not available。 现在按照 pillow's docs 中的说
目标:最后的每一帧都应该有一个完整的 sudowoodo。任何不是 sudowoodo 的东西在 gif 中都应该是透明的(我也可以用白色)。我的最终目标是能够重新着色,所以我必须能够区分背景和口袋妖
我尝试使用的 Python 包仅适用于 3 channel 图像。如果我有一张灰度 PNG 图像,Pillow 的 Image.open() 自然会将其读取为单层图像。如何使用 Pillow 将 1
我正在使用 PIL 来旋转一些图像,我注意到输出文件要小得多,所以我尝试了一个测试:除了保存 exif 信息外,不对文件做任何事情(因为我知道 PIL 图像默认情况下不会保存exif 信息)。所以这是
我有一张图片,我正在使用 Django Forms 上传,它在变量中可用 InMemoryFile 我想要做的是让它渐进。 使图像渐进的代码 img = Image.open(source) img.
我正在尝试将 nxnx3 矩阵转换为 RGB 图像,其中矩阵中的每个空间都是 [R,G,B]。我以为这很容易,但我遇到了一个奇怪的错误。 我有这个图像:http://www.cs.brandeis.e
我正在尝试从 http 请求中获取 jpeg、gif 等,但出现错误。这是代码的一部分: def printimg(url): http = httppoolmgr() file =
我是一名优秀的程序员,十分优秀!