提取字体字形

时间:2010-11-23 08:04:48

标签: php fonts glyph

我心中有这个问题,任何帮助都会受到赞赏。 是否有PHP函数或库可以从字体文件中提取一些字形?

编辑: 通过提取一些字形,我想根据提取的字形创建一个新的字体文件(因此它有较小的字节),或者只是获取字形并从中创建base64编码的字体数据,这样我就可以通过@ font-嵌入它了面对。我只想摆脱没有用的字形,这样可以更快地加载CSS(base64)或字体文件。

3 个答案:

答案 0 :(得分:0)

我可以通过两种方式理解你的问题。要么直接从图像文件中提取图像,要么想要将该字体作为图像中的文本进行打印。

但两者都有相同的答案:

尝试GD或ImageMagick使用字体从字体文件中提取字形图像,将该字符打印到图像中。不要像图像那样打开字体,按照预期使用字体。然后,您可以按照您想要的任何大小打印字形,然后根据需要使用它。

答案 1 :(得分:0)

你试图制作一个子集字体不是吗?嵌入式字体社区已经对此问题进行了大量调查。

即便如此,这里也没有明确的答案。上次我检查人们编写Perl / C程序,根据TTF / OTF规范从字体文件中提取二进制数据。

如果你使用拉丁字体,请不要兄弟因为它足够小。如果您使用像我这样的CJK字体,FontForge可以帮助您手动复制和粘贴格里夫。除此之外,您需要自己编写脚本/程序。

答案 2 :(得分:0)

我使用python做过一次: 这是代码段

def get_pdf_fontobjects(self, ):
    pdffile = self.pdffile
    pdf_font_objects = []
    p = subprocess.Popen(["pdffonts", pdffile], shell=False, stdout=subprocess.PIPE)
    for line in p.stdout:
        line = line.strip()
        g = re.search("^(\S+)\s.+?yes\s+(\d+)\s+(\d+)$", line)

        '''if g and g.group(1) in self.fonts2process:
            pdf_font_objects.append(g.group(2))'''

        if g:
            font_name = g.group(1)
            for font_pattern in self.fonts2process:
                if re.search(font_pattern, font_name):
                    pdf_font_objects.append(g.group(2))

    return pdf_font_objects

和font2process可以是字体名称的列表: fonts2process = ['Arial-Unicode-MS',                               'Shruti',                               'ArialUnicodeMS',                               'TT',                               'Raavi',                               'SolaimanLipi',                               'AnjaliOldLipi',                               'Vrinda',                               'Surekh',                               'AAAAAB + ArialUnicodeMS',                               'AAAAAG + VArialUnicodeMS',                               'DNCDIV + Tunga_00',                               'JGTFDM + Tunga,Bold_00',                               'Latha',                               'Mangal',                               'Surekh',                               'Gautami'                             ]

但是未经制造者许可使用某些字体是非法的*