0

我有这个问题,任何帮助将不胜感激。是否有 PHP 函数或库可以从字体文件中提取一些字形?

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

4

3 回答 3

0

您正在尝试制作子集字体,不是吗?嵌入式字体社区已经对这个问题进行了大量调查。

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

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

于 2010-11-25T06:12:28.233 回答
0

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

但两者都有相同的答案:

尝试使用 GD 或 ImageMagick 从字体文件中提取字形的图像,使用字体将该字符打印到图像中。不要像图像一样打开字体,按预期使用字体。然后,您可以以您想要的任何大小打印字形,并随心所欲地使用它。

于 2010-11-23T12:38:58.167 回答
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']

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

于 2019-07-04T13:55:46.340 回答