Làm thế nào để tìm hiểu làm thế nào phù hợp với trận đấu fc?


18

Khi tôi chạy fc-mach Sans, nó trả về DejaVuSans.ttf: "DejaVu Sans" "Book"nhưng nếu nó chạy fc-match "Sans "hoặc fc-match "Sans 9"nó trả về unifont.ttf: "unifont" "Medium". Tôi thích luôn luôn sử dụng DejaVu Sans nhưng tôi không thể hiểu tại sao fontconfig chọn unifont. Cả cấu hình toàn cầu và cục bộ dường như không đề cập đến unifont ( grep -ri unifont /etc/fonts/ ~/.fonts.confkhông trả về gì). Chơi với LC_DEBUG cũng không giúp tôi. Có cách nào để có được thông tin tại sao fontconfig hoạt động như thế này không?

Câu trả lời:


11

Nhìn thoáng qua, nó trông giống như một lỗi fontconfig chính hãng đối với tôi, vì nó hoạt động chính xác ở đây và tôi đã cài đặt cả DejaVu và 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"

Nhưng, nhìn kỹ hơn, chúng ta có thể thấy một số chi tiết hơn. Vẫn có thể có lỗi fontconfig ở đâu đó, nhưng fc-matchrõ ràng trả về giá trị mặc định khi nó không tìm thấy gì. Nó chỉ là mặc định là DejaVu trên hệ thống của tôi:

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

Trang man fc-match(1)xác nhận rằng lệnh không thực hiện khớp chính xác, nhưng trả về những gì nó cho là phù hợp nhất. Bạn có thể thấy tất cả chúng có -ahoặc ngắn gọn hơn -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"

Trên đó, bạn có thể chỉ cần nói "vít bạn" và thêm một tìm kiếm khác trên đầu trang để khớp với cách bạn mong đợi:

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

Nhưng, câu hỏi của bạn là về cách chính xác nó phù hợp. FcFontMatch(3)và tiếp tục xác nhận rằng nó sử dụng giá trị mặc định / được định cấu hình và chắc chắn xác nhận rằng trước tiên nó sửa đổi cụm từ tìm kiếm mà bạn đã chuyển cho nó. Đối với bất cứ điều gì sâu hơn, bạn sẽ phải kiểm tra mã (bắt đầu với chức năng được đề cập ở trên).


5

FontConfig khớp các thuộc tính dựa trên "khoảng cách" từ tiêu chí khớp. Nếu bạn muốn xem những gì đang diễn ra đằng sau hậu trường, hãy đặt biến môi trường FC_DEBUG = 3 và chạy lại tìm kiếm của bạn. Điều này sẽ hiển thị thông tin gỡ lỗi có thể hữu ích. Bạn không cần phải đọc mã FontConfig.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.