检查系统是否存在字体Python(与操作系统无关)

问题描述 投票:0回答:2

我已经看到了一些关于如何通过不同模块检索字体列表的答案,例如在 matlab 或 Tkinter 中,但我不想包含像那些庞大的库来解决我当前仅检索此列表的问题。

背景:我正在开发一个html到pdf系统,它在OSX和ubuntu服务器上运行,所以答案不能只是单个操作系统实现

TL;DR: python 中是否有任何轻型模块/库可以让我检索托管服务器上现有字体的列表?

python
2个回答
3
投票

我编写了一个脚本来验证是否安装了 Helvetica Neue 和 Courier:

def verify_fonts_are_installed_for_statements():
    import subprocess
    from os import path
    potential_locations = [
        '/usr/bin/fc-list',
        '/usr/sbin/fc-list',
        '/usr/local/sbin/fc-list',
        '/usr/local/bin/fc-list',
    ]
    valid_path = None
    for file_path in potential_locations:
        if path.exists(file_path):
            valid_path = file_path
            break
    if valid_path is None:
        raise IOError('could not find fc-list to verify fonts exist.')

    cmd = [valid_path]
    output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]

    if 'Helvetica Neue' not in output:
        raise FontNotInstalledException('Helvetica Neue')
    if 'Courier' not in output:
        raise FontNotInstalledException('Courier')

    log.debug('Courier and Helvetica Neue were found to be installed.')

0
投票

我发现的最优雅的方式:

from matplotlib.font_manager import get_font_names
def font_exists(name):
    return name in get_font_names()
© www.soinside.com 2019 - 2024. All rights reserved.