จากภาพรวมอย่างรวดเร็วดูเหมือนว่าข้อผิดพลาด fontconfig แท้สำหรับฉันเนื่องจากมันทำงานอย่างถูกต้องที่นี่และฉันมีทั้ง DejaVu และ Unifont ติดตั้ง:
$ 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"
แต่ในมุมมองที่ใกล้ชิดเราสามารถดูรายละเอียดเพิ่มเติมบางอย่าง อาจยังมีข้อผิดพลาด fontconfig อยู่ที่ไหนสักแห่ง แต่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)
และยืนยันอย่างคร่าว ๆ ว่าจะใช้ค่าเริ่มต้น / กำหนดค่าและยืนยันอย่างแน่นอนว่าเป็นคำแรกที่ปรับเปลี่ยนข้อความค้นหาที่คุณส่งให้ สำหรับสิ่งที่ลึกกว่านี้คุณจะต้องตรวจสอบรหัส (เริ่มต้นด้วยฟังก์ชั่นที่กล่าวถึงข้างต้น)