Làm cách nào tôi có thể sửa chữ ghép của phông chữ TTF (tt, ti, fi, ff, v.v.) trong Firefox?


24

Với một số phông chữ Windows nhất định, có một vấn đề hiển thị trong đó chữ ligature-kTHER dường như lật ra và làm cho hai chữ in đậm. Đây là ảnh chụp màn hình của một email sử dụng Helvetica trong Firefox:

nhập mô tả hình ảnh ở đây

Như bạn có thể thấy, nó dường như là một cái gì đó về cách các ký tự chéo ( tf) kết nối với nhau và các chữ cái như thế nào i.

Tôi đã gặp vấn đề này trong một thời gian rất dài (trên nhiều hệ thống) và tự hỏi liệu có ai từng thấy các vấn đề tương tự xuất hiện và tìm cách khắc phục chúng không.

Lưu ý: Tôi nghĩ rằng điều này chỉ ảnh hưởng đến Firefox. Chrome và LibreScript đều ổn.

Câu trả lời:


27

Một giải pháp khác sẽ hoạt động với tất cả các ứng dụng, bao gồm Libre Office, được đưa ra bởi aldither :

Chỉnh sửa hoặc tạo tệp ~/.fonts.confvà dán mã này vào đó:

<match target="font" >
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>

Đảm bảo giữ cấu trúc XML.

Đăng xuất và đăng nhập lại, và Calibri (và có thể một số phông chữ khác) sẽ trông tốt hơn nhiều (thực sự thậm chí còn tốt hơn so với các câu trả lời khác được đưa ra ở đây, vì các thay thế bitmap xấu xí bị vô hiệu hóa hoàn toàn).


3
Đây là một giải pháp tốt hơn so với những giải pháp trước đây, vì nó là một giải pháp toàn cầu và loại bỏ các chữ ghép là một vấn đề khó khăn. Chữ viết có ở đó để làm cho văn bản dễ đọc hơn và để tắt chúng để giải quyết vấn đề cấu hình là không lý tưởng.
kiểm tra

Bất cứ ai hơi OCD hoặc hậu môn đủ để quan tâm đến việc định dạng đúng nội dung của tệp XML này (tất nhiên các bạn Linux sẽ không bao giờ quan tâm đến những điều đó ;-)):<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fontconfig><match target="font"><edit name="embeddedbitmap" mode="assign"><bool>false</bool></edit></match></fontconfig>
Adam Plocher

Liên kết đến bây giờ dẫn đến một số trang web lừa đảo
charsi

1
@charsi cảm ơn, tôi đã thay thế nó bằng một liên kết đến Lưu trữ web.
Calimo

Tôi thậm chí không phải đăng xuất và đăng nhập lại. Chỉ cần làm mới trang (trong Firefox) và khởi động lại ứng dụng (LibreOffice) là đủ.
Marc.2377

9

Vô hiệu hóa chữ ghép (xem câu trả lời của Calimofonts.conf ) là hướng sai! Nó có thể loại bỏ những chữ "in đậm" quá bí danh trong các phông chữ như Calibri , nhưng nó cũng loại bỏ một số nét đẹp của kiểu chữ. Điều đó khá giống với việc thu nhỏ phông chữ cho đến khi bạn không thể phân biệt được.

Tôi đã giải quyết vấn đề này cho hệ thống của mình bằng cách xóa phông chữ Calibri, cài đặt Carlito , " tương thích với hệ mét với Calibri" và được đóng gói với "mục nhập ánh xạ tới fontconfig (local.conf)" và làm mới bộ đệm phông chữ của tôi:

$ rm ~/.fonts/microsoft/CALIBRI*
$ sudo apt install fonts-crosextra-carlito
$ fc-cache

Sau đó, bạn có thể xác minh rằng Carlito đại diện cho Calibri:

$ fc-match Calibri
Carlito-Regular.ttf: "Carlito" "Regular"

(Nếu điều này không hoạt động, bạn có thể cần một cái gì đó giống như sudo rm /usr/share/fonts/truetype/msttcorefonts/calibri*trường hợp và vị trí chính xác có thể khác nhau.)

Trước khi gỡ bỏ Calibri của Microsoft, tôi đã lưu một tài liệu thử nghiệm trong LibreOffice sử dụng Calibri và chụp ảnh màn hình. Sau khi làm điều đó, tôi thoát khỏi LibreOffice, mở lại và sau đó tải tài liệu thử nghiệm của mình. Tên phông chữ "Calibri" được in nghiêng để chỉ ra rằng nó đã được thay thế cho. Tôi đã chụp ảnh màn hình của phiên bản thay thế này và dán nó bên dưới bản gốc:

Xét nghiệm Calibri

Văn bản trên là một cặp ảnh chụp màn hình của Calibri 13pt, với Calibri của Microsoft phía trên Carlito được ghép bởi fontconfig. Không có chữ in đậm, không có định dạng, "cặp k đợi" được bật, như được hiển thị bởi LibreOffice 5.0.5.1.

Carlito khá gần với Calibri, chữ ghép hiển thị đúng và nhìn chung nó đẹp hơn nhiều.

Bạn có thể làm tương tự với Caladea cho Cambria với fonts-crosextra-caladeavà bạn có thể sử dụng của Google Croscore phông chữ Arimo, Tinos, và Cousine cho Arial , Times New Roman , và Courier New với fonts-croscore. Tìm hiểu thêm tại wiki Thay thế Calibri và Cambria Fonts .

Nhưng còn Helvetica thì sao?

Câu hỏi này hỏi về phông chữ Helvetica , đây là phông chữ sans-serif ưa thích của Apple . Microsoft thích Arial trước khi đổi thành Calibri. Ánh xạ Linux mặc định thay đổi theo phân phối, nhưng điển hình là Nimbus Sans L hoặc khác là Liberation Sans , vd

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

Nếu bạn chạy nó và nhận Arial, đó là một lý do khá chính đáng để có vấn đề về chữ ghép được mô tả ở trên - Arial không phải là một phông chữ tuyệt vời.

Helvetica có khá nhiều văn hóa xung quanh nó và tôi không thể tìm thấy một phông chữ hoàn toàn tương thích với Helvetica. Arial (và phông chữ tương thích với Arial, bao gồm Liberation Sans và ngã ba của nó, Arimo , có độ rộng ký tự giống hệt nhau (có nghĩa là chúng "tương thích" với số liệu; văn bản sẽ bao bọc giống như với Helvetica). Giải phóng Sans và Nimbus Sans dường như có tính thẩm mỹ giống nhau nhất.

Ngoài ra còn có IBM Plex , một phông chữ mới với số tiền lớn đằng sau nó [ 1 ] [ 2 ] . Plex được thiết kế để thay thế Helvetica (nó cũng có các sans cô đặc cũng như các phông chữ serif và monospace) trong tất cả các tài liệu của IBM, mặc dù nó hoàn toàn không tương thích với Helvetica hoặc các phông chữ khác. Font Squirrel có một cái nhìn đẹp về các mẫu của phông chữ Plex .

Bí danh Fontconfig

Để bí danh thủ công Helvetica sang một phông chữ khác (và do đó không cần xóa Calibri và / hoặc Arial, mặc dù trong trường hợp đó, bạn cũng nên đặt bí danh theo cách thủ công), chỉnh sửa ~/.config/fontconfig/fonts.conftệp của bạn (đối với các hệ thống cũ hơn, ~/.fonts.confđể tránh nhầm lẫn, tôi liên kết cái sau trước đây) như đã lưu ý trong câu trả lời này , thêm một <alias>phần mới cho Helvetica (phần này sử dụng Arimo. Hãy chắc chắn rằng bạn đã cài đặt nó):

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>

  <alias>
    <family>Helvetica</family>
    <prefer><family>Arimo</family></prefer>
  </alias>

</fontconfig>

1
Đây là một câu trả lời tốt hơn nhiều so với câu trả lời được chấp nhận. Tôi muốn chỉ ra rằng có một tệp conf tiện lợi có sẵn trên wiki wiki: wiki.archlinux.org/index.php/Croscore_Fonts
Xananax

dòng đầu tiên bây giờ phải là sudo rm -R / usr / share / font / truetype / calibri
dez93_2000

Nếu kết quả Helvetica của fc phù hợp với IS arial trên linux, bạn có biết cách buộc Sans Giải phóng không? Chỉ cần xóa Arial? Cảm ơn
dez93_2000

@ dez93_2000 - có lẽ vậy /usr/share/fonts/truetype/msttcorefonts/callibri*. Tôi sẽ cập nhật câu trả lời của mình để giải quyết vấn đề răng cưa vì nó không phù hợp trong một bình luận.
Adam Katz

Tôi cẩn thận kiểm tra kết quả trả về của câu trả lời được chấp nhận (sử dụng phông chữ Calibri) và thấy không có sự khác biệt nào so với trình kết xuất tốt đã biết. Hoàn toàn không có vẻ đẹp bị thiếu.
Marc.2377

6

Câu trả lời của lgarzo sẽ chỉ hoạt động trên các trang web có lớp "noligs" trên văn bản (hầu hết các trang web không).

Để vô hiệu hóa toàn bộ chữ ghép trên tất cả các trang web, hãy thêm dòng sau vào userChrome.css:

* { -moz-font-feature-settings: "liga" 0; }

Cách dễ nhất để làm điều đó là tạo một kiểu mới với phần mở rộng Kiểu .


+1 cho đề xuất Kiểu. AFAIR Tôi đã trích dẫn tài liệu Mozilla (vì tôi đã dự đoán OP có thể chuyển đổi tài liệu đó theo ý muốn :)) Ý định của tôi là đưa quy tắc vào CSS của trang. (Tuy nhiên, không thể kiểm tra nguồn. Nó dường như bị tắt ATM.)
lgarzo

1
Cú pháp đó chỉ có hiệu lực cho đến Firefox 14, theo stackoverflow.com/a/15161336/4464570 và hiện không còn được trình duyệt nhận ra. Tôi đã chỉnh sửa bài viết của bạn để cập nhật nó với cú pháp hiện tại.
Chỉ huy Byte

4

Một vài nhận xét xuất hiện trong tâm trí của tôi trong khi nhìn vào hình ảnh:

  • Các chữ ghép có vẻ chống răng cưa , trong khi phần còn lại của văn bản thì không. Do đó, nó trông béo hơn văn bản bình thường (mặc dù tôi không thể phủ nhận nó cũng có vẻ đậm).
  • AFAIK phông chữ Helvetica là một phông chữ không chuẩn , tức là không đi kèm với các cài đặt Windows mặc định. Bạn đã cài đặt nó chưa, hay nó là một phông chữ khác nhau?

Tôi nghĩ vấn đề này dựa trên phông chữ không hỗ trợ chữ ghép / chữ tiên tiến một cách chính xác.

Bạn có thể tắt chữ ghép trong FF bằng quy tắc CSS bên dưới:

/* disable common ligatures, usually on by default */
.noligs { -moz-font-feature-settings: "liga" 0; }

Nguồn: CSS Tham khảo: Phần mở rộng Mozilla


Cú pháp đó chỉ có hiệu lực cho đến Firefox 14, theo stackoverflow.com/a/15161336/4464570 và hiện không còn được trình duyệt nhận ra. Tôi đã chỉnh sửa bài viết của bạn để cập nhật nó với cú pháp hiện tại.
Chỉ huy Byte

1

Ngoài câu trả lời của Calimo, người dùng Archlinux có thể tìm trợ giúp https://wiki.archlinux.org/index.php/font_configuration - Tắt phông chữ bitmap

Nó đã đề xuất tạo một tệp cấu hình cục bộ ~ / .config / fontconfig / conf.d / 20-no-embed.conf, nhưng tôi đã chọn một tùy chọn toàn hệ thống

sudo touch /etc/fonts/conf.d/20-no-embedded.conf
sudo chmod 777 /etc/fonts/conf.d/20-no-embedded.conf
nano 777 /etc/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>

Sau đó, chỉ cần khởi động lại ứng dụng (trong trường hợp của tôi là thunderbird)


Nếu ngay bên dưới dòng "<match target =" font ">" bạn thêm: <test name = "Family"> <string> Calibri </ string> </ test> Hoặc bất kể tên phông chữ là gì (Helvetica), bạn sẽ chỉ chỉnh sửa cài đặt phông chữ cho phông chữ cụ thể đó.
zeehio

Quyền phải là 644, không phải 777, vì bạn đang đặt một tệp (không phải là liên kết tượng trưng) ở đó.
Marc.2377
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.