कैसे पता करें कि कैसे fc- मैच मिलते हैं?


18

जब मैं दौड़ता हूं fc-mach Sans, तो यह लौटता है DejaVuSans.ttf: "DejaVu Sans" "Book"लेकिन अगर इसे चलाया जाता है fc-match "Sans "या fc-match "Sans 9"यह वापस आता है unifont.ttf: "unifont" "Medium"। मैं हमेशा DejaVu Sans का उपयोग करना पसंद करता हूं, लेकिन मैं यह पता नहीं लगा सकता कि फॉन्टकोनफिग का चयन क्यों नहीं किया गया है। न तो वैश्विक और न ही स्थानीय कॉन्फ़िगरेशन का कोई उल्लेख grep -ri unifont /etc/fonts/ ~/.fonts.confनहीं है। LC_DEBUG के साथ खेलने से मुझे कोई मदद नहीं मिली। क्या जानकारी प्राप्त करने का एक तरीका है कि फॉन्टकोनिग इस तरह से व्यवहार क्यों करता है?

जवाबों:


11

एक त्वरित नज़र में, यह मेरे लिए एक वास्तविक फॉन्टकोनिग बग जैसा दिखता है, क्योंकि यह यहाँ ठीक से काम करता है और मेरे पास डेव्यू और यूनिफोंट दोनों स्थापित हैं:

$ fc-match Sans
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans"
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans "
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans 9"
DejaVuSans.ttf: "DejaVu Sans" "Book"

लेकिन, करीब से देखने पर, हम कुछ और विवरण देख सकते हैं। अभी भी कहीं-कहीं एक फॉन्टकॉन्ग बग हो सकता है, लेकिन fc-matchजब यह कुछ भी नहीं पाता है तो जाहिर तौर पर एक डिफ़ॉल्ट मूल्य देता है। यह सिर्फ डिफ़ॉल्ट है मेरे सिस्टम पर DejaVu है:

$ fc-match uni
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match unifont
Unifont.ttf: "unifont" "Medium"
$ fc-match 4e5zedrkbxp
DejaVuSans.ttf: "DejaVu Sans" "Book"

मैन पेज इस fc-match(1)बात की पुष्टि करता है कि कमांड सटीक मिलान नहीं करता है, लेकिन यह सोचता है कि सबसे अच्छे मैच हैं। आप उन सभी को -aया अधिक संक्षिप्त के साथ देख सकते हैं -s:

$ fc-match -s uni # now it also finds unifont
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
n019003l.pfb: "Nimbus Sans L" "Regular"
helvR12-ISO8859-1.pcf.gz: "Helvetica" "Regular"
FreeSans.ttf: "FreeSans" "нормален"
KanjiStrokeOrders.ttf: "KanjiStrokeOrders" "Medium"
Eadui.ttf: "Eadui" "Medium"
Unifont.ttf: "unifont" "Medium"
FreeSerif.ttf: "FreeSerif" "нормален"
cu12.pcf.gz: "ClearlyU" "Regular"
cu-pua12.pcf.gz: "ClearlyU PUA" "Regular"
10x20.pcf.gz: "Fixed" "Regular"

जिस पर आप बस "स्क्रू यू" कह सकते हैं और इसके शीर्ष पर एक और खोज जोड़ सकते हैं ताकि आप जिस तरह से उम्मीद करते हैं, उससे मेल खा सके:

$ fc-match -s uni | grep -i uni
Unifont.ttf: "unifont" "Medium"

लेकिन, आपका सवाल यह है कि यह मिलान कैसे करता है। FcFontMatch(3)और आगे मोटे तौर पर पुष्टि करते हैं कि यह एक डिफ़ॉल्ट / कॉन्फ़िगर मूल्य का उपयोग करता है और निश्चित रूप से पुष्टि करता है कि यह आपके द्वारा पारित खोज शब्द को पहले संशोधित करता है। और भी गहरी बात के लिए, आपको कोड का निरीक्षण करना होगा (उपर्युक्त फ़ंक्शन के साथ शुरू करें)।


5

FontConfig ने मैच मापदंड से "दूरी" के आधार पर विशेषताओं का मिलान किया। यदि आप यह देखना चाहते हैं कि पर्दे के पीछे क्या चल रहा है, तो पर्यावरण चर FC_DEBUG = 3 सेट करें और अपनी खोज फिर से चलाएँ। यह डिबगिंग जानकारी दिखाएगा जो सहायक हो सकती है। आपको FontConfig कोड पढ़ने की आवश्यकता नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.