2015-05-09 250 views
1

從X下啓動的Python腳本中,我想獲取字體路徑。如何從Python腳本獲取X字體路徑?

腳本將字體路徑傳遞到Xvnc(TightVNC和TigerVNC的一部分)。是的,我知道,要啓動VNC服務器,可以使用startvnc,它負責設置字體路徑。然而,startvnc會做一些在這種情況下不需要的東西。另外,我想使用與啓動腳本的X服務器完全相同的字體路徑。

我考慮解析xset q的輸出。但是:

  • 我不知道這是多麼可靠,即如果輸出始終格式化 相同的方式。

  • 輸出可能包含實際上不是路徑的佔位符。對於 例如,built-ins在: /usr/share/fonts/misc,/usr/share/fonts/Type1,built-ins

+0

「我不知道如何可靠的是」 - 它不是」噸,但這是你希望得到的唯一的東西。 「輸出可能包含佔位符」 - 忽略它們。 –

+0

@ n.m。那麼,如果這是我能得到的唯一的東西,我可能需要指定字體路徑作爲安裝過程的一部分。忽略佔位符'build-ins'不是一個好主意:然後找不到一些字體。我已經嘗試過了。 – feklee

回答

1

從閱讀manual爲xorg.conf中,你最安全的選擇將是解析配置文件(我假設setx q解析)爲FontPath線,這一下如:

FontPath「path」 設置字體的搜索路徑。此路徑是Xorg服務器搜索字體數據庫的逗號分隔的字體路徑元素列表。

使用Python的re模塊,字體路徑(因爲可以指定多個FontPath S)可以分析如下:

import re 
regex = re.compile(r'^\s*FontPath\s+(.*)\s*$', re.MULTILINE) 

with open('xorg.conf') as f: 
    data = f.read() 
matches = regex.findall(data) 
+0

感謝您的建議。但是,我的問題並不是特定於Xorg,因此X服務器的配置位置和格式可能會有所不同。 – feklee

+0

你假設不正確。可能有也可能沒有配置文件。 'xset q'調用'XGetFontPath'(這裏沒有什麼大驚喜)。 –

+0

@ n.m。感謝您的更正。我有一段時間沒有與X11混淆。應該有更多的rtfm。 – robobrobro