我有一个由一堆图标,我想呈现为单个位图(GIF,PNG,等等)在Web上使用其自定义TrueType字体(TTF).你认为这是一项简单的任务,但显然不是吗?这里有大量与TTF相关的软件:
http://cg.scs.carleton.ca/~luc/ttsoftware.html
但它是所有不同级别的"不是我想要的",断开链接和/或很难在现代Ubuntu盒子上编译 - 例如.dumpglyphs(C++)和ttfgif(C)由于隐藏的缺失依赖性而无法编译.有任何想法吗?
代码就是这样的
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)
其他答案的更简洁、更可靠的版本(为我删除了一些字形的一部分):
\n\nimport 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")\nRun Code Online (Sandbox Code Playgroud)\n\n我有兴趣知道是否有更好的方法从返回的 ImagingCore 对象构造 PIL 图像font.getmask()。