2015-07-21 50 views
0

我已经看到了一些关于如何通过不同的模块,如matlab或Tkinter检索字体列表的答案,但我不想包括这样一个巨大的库解决我目前刚刚检索这个列表的问题。检查系统,如果字体存在Python(操作系统不可知)

背景:我工作的HTML到PDF的系统,它运行OSX都和Ubuntu的服务器上,所以答案不能只是单一的OS实现

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

+1

不是一个python程序,但在Ubuntu上,'FC-list'将列出可用字体。 – NightShadeQueen

+1

tkinter是一个内置模块,只是使用它 – felipsmartins

+0

如果我包含该模块,它仍然非常轻量级?在这一点上,我不想贬低我们的软件包,但如果这是解决这个问题的唯一方法,我会这样做。 –

回答

1

我写了一个脚本,以验证是否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.')