将TrueType字形转换为PNG图像?

时间:2013-06-17 07:24:51

标签: linux bitmap rendering command-line-interface true-type-fonts

是否有命令行工具将字形从TTF文件转换为PNG(或其他一些位图图像格式)?

如果没有现成的命令行工具,您将如何从C ++,Perl,Python或Ruby中的一个或者在Ubuntu框中轻松找到它?

5 个答案:

答案 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)

Python3

由于没有人真正解决为 C++、Python、Ruby 或 Perl 指定的部分,这里是 Python3 方式。我已尝试进行描述,但您可以根据需要简化工作。

要求:PIL(枕头)

PILImageDrawImageFont 模块

# 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}")