Tôi đang gặp sự cố với fontconfig khi nhận dạng ui-đơn cách
phông chữ mà một số trang web (bao gồm các trang Github và Stack Exchange) gần đây đã bắt đầu sử dụng. Firefox chưa có tham chiếu CSS đặc biệt đó đến phông chữ hệ thống (xem lỗi FF 1226042, các dự thảo thông số kỹ thuật, và của nó Tôi có thể sử dụng mục) và FF cũng bị đánh lừa bởi fontconfig, thứ sẽ đáp ứng bất kỳ phông chữ nào được gán mặc định cho sans-serif.
Như một giải pháp thay thế, tôi muốn đặt bí danh rõ ràng cho tên phông chữ này thành phông chữ đơn cách ưa thích của mình (tức là Panic Sans, một biến thể DejaVu Sans Mono đã được tinh chỉnh để đẩy dấu gạch dưới lên một chút), nhưng vì điều đó quá tối nghĩa nên câu hỏi này sử dụng DejaVu Sans Mono.
Nỗ lực đầu tiên của tôi tại giải pháp thay thế này không hoạt động:
<alias>
<family>ui-monospace</family>
<prefer><family>DejaVu Sans Mono</family></prefer>
</alias>
Một nỗ lực khác đã thành công hơn đối với các phông chữ khác:
<match>
<test name="family"><string>ui-monospace</string></test>
<edit name="family" mode="assign" binding="strong">
<string>DejaVu Sans Mono</string>
</edit>
</match>
Khi tôi lưu nó và xóa bộ đệm của mình, nó không hoạt động:
$ grep ui.monospace ~/.config/fontconfig/fonts.conf
<test name="family"><string>ui-monospace</string></test>
$ fc-bộ đệm -f
$ fc-match 'ui-đơn cách'
Carlito-Regular.ttf: "Carlito" "Thường xuyên"
$ fc-match sans-serif
Carlito-Regular.ttf: "Carlito" "Thường xuyên"
Vì vậy, điều đó không làm việc. Đây là phần gây tò mò: nó hoạt động khi tôi sử dụng khoảng trắng thay vì dấu gạch nối:
$ sed -i 's/ui-monospace/ui monospace/' ~/.config/fontconfig/fonts.conf
$ grep ui.monospace ~/.config/fontconfig/fonts.conf
<test name="family"><string>ui đơn cách</string></test>
$ fc-bộ đệm -f
$ fc-match 'ui đơn cách'
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Sách"
Vì vậy, có vẻ như vấn đề là dấu gạch nối. Tôi không thấy bất kỳ tài liệu (hoặc báo cáo lỗi) nào đề xuất vấn đề này; các tài liệu fontconfig cho <string>
không ghi chú như vậy về các ký tự không hợp lệ hoặc cách thoát khỏi chúng. Tôi đã thử định nghĩa nó là <string>ui\-monospace</string>
và <string>ui-monospace</string>
(và -
) nhưng không cái nào trong số đó hoạt động.
Làm cách nào để định cấu hình fontconfig để ánh xạ tên phông chữ có dấu gạch nối?