Thay thế phông chữ bằng ~ / .fonts.conf


18

Tôi đang thử sử dụng ~ / .fonts.conf để thay thế Helvetica bằng Droid Sans, đây là nội dung của tệp:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign"><string>Droid Sans</string></edit>
  </match>
</fontconfig>

Nhưng không có vấn đề gì, dường như không có gì xảy ra. Tôi đã thử chạy fc-cache, tôi đã đăng ký /etc/fonts/conf.dvà tôi thấy 50-user.confdường như gọi rõ ràng cấu hình người dùng cụ thể.

Tôi đang thiếu gì?

Cảm ơn

EDIT: sau khi điều tra tôi phát hiện ra rằng các quy tắc khác trong việc /etc/fonts/conf.dghi đè lên cấu hình người dùng, vì vậy liên kết user.confđể 00-user.confgiúp đỡ. Tuy nhiên, đó chỉ là một phần thành công, vì tôi có thể chỉ định phông chữ nào sẽ được thay thế, nhưng thay thế lựa chọn của tôi bị bỏ qua: nói cách khác, tôi có thể làm cho Helveticakhông hợp lệ và hệ thống quay trở lại phông chữ tiếp theo (ví dụ: trong trình duyệt, nó lấy phông chữ tiếp theo được chỉ định trong biểu định kiểu, nếu không có phông nào hiển thị sans-serif tiêu chuẩn).


Tôi đến đây vì tôi sắp hoàn thành một cái gì đó tương tự. Hy vọng ai đó có câu trả lời ...
Ludwig Weinzierl

vẫn đang tìm kiếm một câu trả lời.
Capi Etheriel

Câu trả lời:


16

Tôi nghĩ rằng thuộc tính ràng buộc đã bị thiếu trong cấu hình của bạn. (xem thêm phông chữ-conf ). Tùy thuộc vào cấu hình khác của bạn, một ràng buộc "giống" hoặc "mạnh" có thể hoạt động, trong khi "yếu" có thể không cung cấp cho bạn những gì bạn muốn.

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign" binding="same"><string>Droid Sans</string></edit>
  </match>
</fontconfig>

1
Đã làm cho tôi. Có vẻ như việc thêm bindingthuộc tính đã tạo ra sự khác biệt. Tôi đang sử dụng fontconfig-2.8.0.
MaoPU

Điều này làm việc cho tôi
miloshadzic

3

Tôi nghĩ rằng cơ chế bí danh sẽ hoạt động cho việc này:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Helvetica</family>
    <prefer>Droid Sans</prefer>
  </alias>
</fontconfig>

1
Là <bí danh> không chỉ để thay thế phông chữ không được cài đặt?
MaoPU

@MaoPU: Tôi cũng nghĩ như vậy, nhưng sau khi đọc tài liệu, nó khiến tôi tin rằng hành vi đó được cấu hình. <accept>được ưu tiên khi phông chữ không được cài đặt, <prefer>được ưu tiên bất kể phông chữ được cài đặt.
JM Becker

/ \ Không, thực tế là không, trừ khi .conftệp chứa quy tắc này được đọc trước.
Marc.2377

Hmm - mà nói, nó không làm việc nếu binding="strong"được sử dụng cùng với các <alias>yếu tố!
Marc.2377

0

"Danh sách fc" có thực sự hiển thị "Helvetica" không? Fc-match nói gì? Trên hộp của tôi (F-12) tôi nhận được:

 >fc-match Helvetica
n019003l.pfb: "Nimbus Sans L" "Regular"

Có lẽ bạn phải thêm phông chữ bí danh để thay thế.


0

Tôi gặp phải một vấn đề tương tự khi cố gắng đặt bí danh Helvetica là gia đình sans-serif. Đối với bất kỳ ai gặp vấn đề tương tự, hãy xem cấu hình hệ thống trong /etc/fonts/conf.d/đó sẽ chứa các liên kết đến các tệp từ đó /etc/fonts/conf.avail. Tôi đã phải loại bỏ rất nhiều bí danh để có hành vi xác định.

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.