是否有命令行工具将字形从TTF文件转换为PNG(或其他一些位图图像格式)?
如果没有现成的命令行工具,您将如何从C ++,Perl,Python或Ruby中的一个或者在Ubuntu框中轻松找到它?
答案 0 :(得分:9)
可能部分重复How can I convert TTF glyphs to .png files on the Mac for free?
imagemagick可以满足此类请求,在Mac / Linux / Windows上运行正常。 : - )
convert -background none -fill black -font font.ttf -pointsize 300 label:"Z" z.png
如果需要批量转换,也许你可以考虑使用一个名为ttf2png的小ruby脚本。
答案 1 :(得分:1)
PIL为此提供API,但它易于使用。获得PIL图像后,即可将其导出。
答案 2 :(得分:1)
wget http://sid.ethz.ch/debian/ttf2png/ttf2png-0.3.tar.gz
tar xvzf ttf2png-0.3.tar.gz
cd ttf2png-0.3 && make
./ttf2png ttf2png -l 11 -s 18 -e -o test.png /path/to/your/font.ttf
eog test.png&
答案 3 :(得分:1)
正如@imcaspar所建议的,但我需要它将ttf字体中的图标转换为具有ios集成特定大小的png
convert -background none -font my-icons-font.ttf -fill black -size "240x240" label:"0" +repage -depth 8 icon0@1x.png
其中" 0"是为我的任何图标映射的字符。额外的选项允许我将所有角色(图标)正确生成为使用常规命令裁剪的部分(+ repage -depth完成工作)
答案 4 :(得分:0)
由于没有人真正解决为 C++、Python、Ruby 或 Perl 指定的部分,这里是 Python3 方式。我已尝试进行描述,但您可以根据需要简化工作。
PIL 的 ImageDraw 和 ImageFont 模块
# pip install Pillow
from PIL import Image, ImageFont, ImageDraw
# use a truetype font (.ttf)
# font file from fonts.google.com (https://fonts.google.com/specimen/Courier+Prime?query=courier)
font_path = "fonts/Courier Prime/"
font_name = "CourierPrime-Regular.ttf"
out_path = font_path
font_size = 16 # px
font_color = "#000000" # HEX Black
# Create Font using PIL
font = ImageFont.truetype(font_path+font_name, font_size)
# Copy Desired Characters from Google Fonts Page and Paste into variable
desired_characters = "ABCČĆDĐEFGHIJKLMNOPQRSŠTUVWXYZŽabcčćdđefghijklmnopqrsštuvwxyzž1234567890‘?’“!”(%)[#]{@}/&\<-+÷×=>®©$€£¥¢:;,.*"
# Loop through the characters needed and save to desired location
for character in desired_characters:
# Get text size of character
width, height = font.getsize(character)
# Create PNG Image with that size
img = Image.new("RGBA", (width, height))
draw = ImageDraw.Draw(img)
# Draw the character
draw.text((-2, 0), str(character), font=font, fill=font_color)
# Save the character as png
try:
img.save(out_path + str(ord(character)) + ".png")
except:
print(f"[-] Couldn't Save:\t{character}")