2015-07-21 72 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.')