Điểm:1

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?

lá cờ cn

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><string>ui&#45;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?

lá cờ eg
Tôi nghĩ rằng đó là một vấn đề với trình bao, hãy thử lại với `fc-match "ui\-monospace"`nó phù hợp với tôi với trình bao cá.
lá cờ cn
Dấu gạch nối không phải là một ký tự đặc biệt cho shell (nếu có, `fc-match 'ui-monospace'` sẽ hoạt động). Lối thoát đó cần được nhìn thấy bởi _fc-match_, không phải trình bao, như được minh họa bởi `fc-match "ui\-monospace"` đang hoạt động.
lá cờ eg
Vâng, phần đầu tiên của nhận xét của tôi là sai. Ý tôi là "giao diện dòng lệnh" đối lập với API như pango... Dù sao, có vẻ như `fc-match` cần thoát. Nhưng cấu hình sẽ hoạt động với dấu gạch chéo trong tệp cấu hình.
Điểm:0
lá cờ co

Tôi đặt đoạn mã này vào phần trên cùng của tôi ~/.config/fontconfig/fonts.conf Và nó hoạt động:

  <match target="pattern">
    <test qual="any" name="family">
      <string>ui-monospace</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>monospace</string>
    </edit>
  </match>

Nó phải ở trên cùng, trước phần chỉ định tôi thích cách đơn cách nào hơn.

Được xác minh trên GitHub và bởi khớp fc 'ui\-monospace'.

lá cờ cn
Có, nhưng điều đó sẽ gửi một dấu gạch chéo ngược theo nghĩa đen trong cuộc gọi đối sánh. Nếu bạn thực hiện `fc-match 'ui-monospace'` hoặc `fc-match ui-monospace` hoặc `fc-match "ui-monospace"`, nó sẽ không hoạt động. Như Nicolas Goy đã lưu ý trong một [bình luận cho câu hỏi](https://askubuntu.com/q/1355091/260416#comment2347914_1355091), đây thực sự là một lỗi trong dòng lệnh `fc-match`. Ngoài ra, tôi còn gặp một số lỗi kết xuất phông chữ khác trong các ứng dụng GUI của mình và lỗi này đã được khắc phục bằng cách khởi động lại.
lá cờ co
@AdamKatz một số ký tự như `-` hoặc `:` cần được thoát vì nó có ý nghĩa đặc biệt đối với fontconfig. Phần sau `-` được hiểu là `size` (nhưng các chữ số không phải là chữ số sẽ bị bỏ qua). Tuy nhiên, trong tệp cấu hình, nó đã được chỉ định để kiểm tra `gia đình`.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.