将TrueType字体(TTF)中的字符(字形)转储到位图中

jpa*_*kal 5 bitmap truetype

我有一个由一堆图标,我想呈现为单个位图(GIF,PNG,等等)在Web上使用其自定义TrueType字体(TTF).你认为这是一项简单的任务,但显然不是吗?这里有大量与TTF相关的软件:

http://cg.scs.carleton.ca/~luc/ttsoftware.html

但它是所有不同级别的"不是我想要的",断开链接和/或很难在现代Ubuntu盒子上编译 - 例如.dumpglyphs(C++)和ttfgif(C)由于隐藏的缺失依赖性而无法编译.有任何想法吗?

YOU*_*YOU 8

试试PILImageDrawImageFont模块

代码就是这样的

import Image, ImageFont, ImageDraw

im = Image.new("RGB", (800, 600))

draw = ImageDraw.Draw(im)

# use a truetype font
font = ImageFont.truetype("path/to/font/Arial.ttf", 30)

draw.text((0, 0), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", font=font)

# remove unneccessory whitespaces if needed
im=im.crop(im.getbbox())

# write into file
im.save("img.png")
Run Code Online (Sandbox Code Playgroud)


jbg*_*jbg 6

其他答案的更简洁、更可靠的版本(为我删除了一些字形的一部分):

\n\n
import string\n\nfrom PIL import Image, ImageFont\n\n\npoint_size = 16\nfont = ImageFont.truetype("font.ttf", point_size)\n\nfor char in string.lowercase:\n    im = Image.Image()._new(font.getmask(char))\n    im.save(char + ".bmp")\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有兴趣知道是否有更好的方法从返回的 ImagingCore 对象构造 PIL 图像font.getmask()

\n