Python枕头和字体转换

时间:2018-01-17 15:02:42

标签: python-3.x pillow

我刚刚在覆盆子pi上安装了python枕头5。它安装得很好,工作正常。

我遇到的问题是找到一个pilfont.py文件。

我有几个我需要转换的bdf字体,并一直在网上搜索如何执行此操作。 我发现的所有信息都指向了pilfont实用程序,但我无法在pi上找到它。

任何人都可以指出我的方向是正确的,我知道如何使用它来转换字体,只是无法激活它。

欢呼声

2 个答案:

答案 0 :(得分:1)

似乎你通过pip3安装了枕头5。我自己也这样做了,它没有包括pilfont实用程序。甚至没有在枕头git中找到文件。没有找到弃用的信息。因此,我建议使用此解决方法:

创建一个空目录并更改为它。 现在:

apt-get download python3-pil

下载包括pilfont枕头4在内的raspbian包裹。这不会安装包。

接下来提取下载的deb软件包。文件名可能有所不同:

 ar -x python3-pil_4.0.0-4.deb

之后你有一些文件,你需要提取的是data.tar.xz:

tar -xvf data.tar.xz

这会给你./usr/bin/pilfont

现在您可以将其复制到/ usr / bin /

sudo cp ./usr/bin/pilfont /usr/bin/pilfont

之后,您可以删除下载的存档及其提取的内容。

答案 1 :(得分:1)

至少从2018年10月起,由于软件包不包含pilfont实用程序,因此先前的答案不再有效。但是事实证明,您不需要花费时间寻找外部实用程序,因为pilfont只是您在短短几分钟内即可重新创建的非常简单的脚本。

这是我自己的“ pilfont实用程序”,它将当前目录中的所有.bdf和.pcf字体转换为.pil和.pbm:

#!/usr/bin/env python
# Author: Peter Samuel Anttila
# License: The Unlicense <http://unlicense.org, October 16 2018>
from PIL import BdfFontFile
from PIL import PcfFontFile
import os
import glob

font_file_paths = []
current_dir_path = os.path.dirname(os.path.abspath(__file__))
font_file_paths.extend(glob.glob(current_dir_path+"/*.bdf"))
font_file_paths.extend(glob.glob(current_dir_path+"/*.pcf"))

for font_file_path in font_file_paths:    
    try:
        with open(font_file_path,'rb') as fp:
            # despite what the syntax suggests, .save(font_file_path) won't 
            # overwrite your .bdf files, it just creates new .pil and .pdm
            # files in the same folder
            if font_file_path.lower().endswith('.bdf'):
                p = BdfFontFile.BdfFontFile(fp)
                p.save(font_file_path)
            elif font_file_path.lower().endswith('.pcf'):
                p = PcfFontFile.PcfFontFile(fp)
                p.save(font_file_path)
            else:
                # sanity catch-all
                print("Unrecognized extension.")
    except (SyntaxError,IOError) as err:
        print("File at '"+str(font_file_path)+"' could not be processed.")
        print("Error: " +str(err))

对于期限紧迫的人: 您不需要该实用程序。只需使用以下代码即可自行转换:

with open(font_file_path,'rb') as fp:
    p = BdfFontFile.BdfFontFile(fp) #PcfFontFile if you're reading PCF files
    # won't overwrite, creates new .pil and .pdm files in same dir
    p.save(font_file_path)

如果文件不能作为BDF或PCF文件读取,则会抛出SyntaxError和/或IOError。