Cấu hình fontconfig để bỏ qua bitmap trong các phông chữ có thể mở rộng


12

Tôi đã cài đặt Microsoft C-Fonts và chúng thật tuyệt vời. Tuy nhiên, Calibri xuất hiện dưới dạng phông chữ bitmap với rất nhiều kích thước mà nó xuất hiện. Làm cách nào để tôi bảo fontconfig cấm Calibri (và Cambria, v.v.) được hiển thị từ ảnh bitmap nhúng? Tôi đã có 70-no-bitmaps.conftrong /etc/fonts/conf.d/thư mục của tôi .

Các phông chữ trong câu hỏi có thể được trích xuất từ ​​Trình xem PowerPoint .


AFAIK những phông chữ không được phân phối tự do? (Vì vậy, tôi không thể kiểm tra chúng.) Nhưng bạn có chắc là họ sử dụng bitmap và không chỉ vô hiệu hóa tính năng chống vi khuẩn?
JanC

@JanC Các phông chữ thực sự sử dụng bitmap được chuẩn bị trước.
Paul Fisher

Câu trả lời:


19

/etc/fonts/conf.d/70-no-bitmaps.confchỉ từ chối phông chữ bitmap, họ không vô hiệu hóa ảnh bitmap nhúng, đó là trường hợp ở đây. Tôi không biết lý do tại sao họ không đặt cài đặt để vô hiệu hóa ảnh bitmap nhúng trong cùng một tệp conf. Dù sao, hãy đặt những điều sau vào ~/.config/fontconfig/conf.d/20-no-embedded.conf(hoặc, cho các phiên bản cũ hơn của Ubuntu, trong ~/.fonts.conf.d/20-no-embedded.conf):

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

Điều này sẽ vô hiệu hóa bitmap nhúng cho tất cả các phông chữ. Nếu bạn muốn tắt chỉ cho các phông chữ được chọn, hãy thêm <test>phần tử:

<test name="family" compare="contains">
  <string>Calibri</string>
  <string>Cambria</string>
</test>

trước <edit ....


Điều này nên được đặt trong /etc/fonts/conf.d, hoặc tốt hơn là trong /etc/fonts/conf.avail và symlinked to conf.d, giống như tất cả các tệp cấu hình khác? Đây có phải là dành riêng cho các tập tin cấu hình được cung cấp bởi bản phân phối Ubuntu? Có vấn đề gì không?
knb

1
@knb theo mặc định cài đặt ubfox / debian, fontconfig cũng sẽ tải bất cứ thứ gì vào ~/.fonts.conf.d/. Vì vậy, tôi khuyên bạn nên đặt nó ở đó để tránh mucking với cấu hình hệ thống. Trừ khi bạn muốn cung cấp nó cho tất cả người dùng, sau đó bạn có thể đặt nó vào /etc/fonts/conf.dhoặc đặt nó vào availvà liên kết nó conf.dđể sử dụng nó khi bạn cần (ngược lại, bạn có thể xóa symlink khi bạn cảm thấy muốn bật nó, ngược lại)
syockit

3
Với các phiên bản hiện tại của fontconfig, tên tệp phải ~/.fonts.conf.d/20-no-embedded.confkhông được tải nếu không có tiền tố. Chạy ví dụ FC_DEBUG=1024 geditđể xem liệu cấu hình của bạn có được tải hay không nếu nó dường như không có bất kỳ ảnh hưởng nào.
pascal

@pascal +1 cho FC_DEBUG. Và không, số trước tên là không cần thiết trên 10.04 LTS, chỉ cần đặt tên .fonts.configlà đủ. Phiên bản nào của fontconfig mà bạn đề cập đến?
LAFK nói Phục hồi lại

1

Trong ví dụ bạn cung cấp cho bạn có thuộc tính "<chuỗi>" được đề cập hai lần trong khổ thơ "<test>". Điều này gây ra cảnh báo trên Ubuntu 13.10 và 14.04. Để loại bỏ cảnh báo, khổ thơ trong tệp sẽ giống như:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <test name="family" compare="contains">
       <string>Calibri</string>
    </test>
    <test name="family" compare="contains">
       <string>Cambria</string>
    </test>
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</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.