ฉันจะแก้ไขรูปแบบตัวอักษร TTF (tt, ti, fi, ff, etc) ใน Firefox ได้อย่างไร


24

เมื่อใช้แบบอักษร Windows บางตัวอาจมีปัญหาเรื่องการแสดงผลซึ่งดูเหมือนว่าการมัด - การจัดช่องไฟจะพลิกออกและทำให้ตัวอักษรสองตัวเป็นตัวหนา นี่คือภาพหน้าจอของอีเมลโดยใช้ Helvetica ใน Firefox:

ป้อนคำอธิบายรูปภาพที่นี่

อย่างที่คุณเห็นมันเป็นอะไรบางอย่างเกี่ยวกับวิธีที่ตัวละคร ( tและf) เชื่อมต่อถึงกันและมีตัวอักษรที่เหมือนiกัน

ฉันมีปัญหานี้มาเป็นเวลานาน (มากกว่าหลายระบบ) และสงสัยว่าใครเคยเห็นปัญหาที่คล้ายกันโผล่ขึ้นมาและพบวิธีการแก้ไข

หมายเหตุ: ฉันคิดว่านี่จะมีผลกับ Firefox Chrome และ LibreOffice ใช้ได้ทั้งคู่

คำตอบ:


27

วิธีอื่นที่จะทำงานกับทุกการใช้งานรวมทั้งฟรีสำนักงาน, จะได้รับโดยaldeby :

แก้ไขหรือสร้างไฟล์~/.fonts.confและวางรหัสนี้ใน:

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

ตรวจสอบให้แน่ใจเพื่อรักษาโครงสร้าง XML

ออกจากระบบและเข้าสู่ระบบอีกครั้งและ Calibri (และอาจเป็นแบบอักษรอื่น ๆ ) จะดูดีขึ้นมาก (จริงๆดีกว่าคำตอบอื่น ๆ ที่ให้ไว้ที่นี่เพราะการแทนที่บิตแมปน่าเกลียดถูกปิดใช้งานอย่างสมบูรณ์)


3
คนนี้เป็นทางออกที่ดีกว่าครั้งก่อนเนื่องจากมันเป็นการแก้ไขทั่วโลกและการกำจัดหนังสติ๊กเป็นสิ่งที่หลีกเลี่ยง มีการมัดข้อความไว้เพื่อให้ข้อความน่าอ่านยิ่งขึ้นและการปิดใช้งานเพื่อแก้ไขปัญหาการกำหนดค่านั้นไม่เหมาะ
scruss

ใครก็ตามที่ OCD หรือทวารหนักเล็กน้อยพอที่จะใส่ใจกับการจัดรูปแบบเนื้อหาของไฟล์ XML นี้ (แน่นอนว่าคนที่ใช้ลินุกซ์ของคุณจะไม่สนใจเกี่ยวกับสิ่งต่าง ๆ ;-)):<?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

เชื่อมโยงไปยัง aldeby แล้วนำไปสู่ไซต์หลอกลวงฟิชชิ่งบางแห่ง
charsi

1
@charsi ขอบคุณฉันแทนที่ด้วยลิงค์ไปยังเว็บเก็บถาวร
Calimo

ฉันไม่ต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้ง เพียงรีเฟรชหน้า (ใน Firefox) และเริ่มต้นแอปพลิเคชันใหม่อีกครั้ง (LibreOffice) ก็เพียงพอแล้ว
Marc.2377

9

การปิดใช้งานหนังสติ๊ก (ดูคำตอบของ Calimofonts.conf ) เป็นทิศทางที่ผิด! มันอาจลบเส้นเอ็น "ตัวหนา" ที่เป็นนามแฝงเหล่านั้นในแบบอักษรเช่นCalibriแต่ก็สามารถลบความสวยงามของการพิมพ์ได้ ค่อนข้างคล้ายกับการย่อขนาดตัวอักษรจนกระทั่งคุณไม่สามารถบอกความแตกต่างได้

ฉันแก้ไขสิ่งนี้สำหรับระบบของฉันโดยลบแบบอักษร Calibri ติดตั้งCarlitoซึ่งเป็น " ตัวชี้วัดที่เข้ากันได้กับ Calibri" และบรรจุด้วย "รายการการแมปไปยัง fontconfig (local.conf)" และรีเฟรชแคชแบบอักษรของฉัน:

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

จากนั้นคุณสามารถยืนยันได้ว่า Carlito เป็นตัวแทนของ Calibri:

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

(หากไม่ได้ผลคุณอาจต้องมีบางอย่างsudo rm /usr/share/fonts/truetype/msttcorefonts/calibri*ในกรณีและตำแหน่งที่แน่นอนอาจแตกต่างกัน)

ก่อนที่จะลบ Calibri ของ Microsoft ฉันบันทึกเอกสารทดสอบใน LibreOffice ที่ใช้ Calibri และถ่ายภาพหน้าจอ หลังจากทำเช่นนั้นฉันออกจาก LibreOffice เปิดอีกครั้งแล้วโหลดเอกสารทดสอบของฉัน ชื่อแบบอักษร "Calibri" ถูกทำตัวเอียงเพื่อระบุว่าถูกแทนที่ ฉันถ่ายภาพหน้าจอของเวอร์ชันที่ทดแทนนี้และวางลงใต้ภาพต้นฉบับ:

การทดสอบ Calibri

ข้อความด้านบนเป็นภาพคู่หน้าจอขนาด 13pt Calibri โดย Calibri ของ Microsoft เหนือ Carlito จับคู่กับ fontconfig ไม่มีตัวหนาไม่มีการจัดรูปแบบเปิดใช้งาน "การจับคู่คู่" ตามที่ LibreOffice 5.0.5.1 แสดงผล

Carlito ค่อนข้างใกล้กับ Calibri, เอ็นยึดได้ดีและโดยรวมก็สวยขึ้นมาก

คุณสามารถทำเช่นเดียวกันกับCaladeaสำหรับCambriaด้วยfonts-crosextra-caladeaและคุณสามารถใช้ของ Google Croscore อักษร ARIMO, ทีนอสและ Cousine สำหรับArial , Times New RomanและCourier Newfonts-croscoreด้วย เรียนรู้เพิ่มเติมได้ที่วิกิพีเดียCalibri และ Cambria Fonts Substituting

แต่แล้วเฮลเวติกาล่ะ?

คำถามนี้ถามเกี่ยวกับแบบอักษรHelveticaซึ่งเป็นแบบอักษรsans-serifที่เป็นที่นิยมของ Apple Microsoft ต้องการArialก่อนที่จะเปลี่ยนเป็น Calibri การแมป Linux เริ่มต้นนั้นแตกต่างกันไปตามการกระจาย แต่โดยทั่วไปแล้วมันเป็นNimbus Sans Lหรืออย่างอื่นLiberation Sansเช่น

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

หากคุณเรียกใช้และรับ Arial นั่นเป็นเหตุผลที่ดีสำหรับการมีปัญหาเกี่ยวกับการมัดที่อธิบายไว้ข้างต้น - Arial ไม่ใช่แบบอักษรที่ดี

Helvetica มีวัฒนธรรมที่อยู่รอบ ๆ และฉันไม่สามารถหาแบบอักษรที่เข้ากันได้กับ Helvetica Arial (และแบบอักษรที่เข้ากันได้กับ Arial รวมถึง Liberation Sans และ fork, Arimoมีความกว้างของตัวอักษรที่เหมือนกัน (ซึ่งหมายความว่าพวกเขา "ส่วนใหญ่" เข้ากันได้กับเมตริก; ข้อความจะตัดแบบเดียวกับ Helvetica) Liberation Sans และ Nimbus Sans ดูเหมือนจะมีความสวยงามที่คล้ายคลึงกันมากที่สุด

นอกจากนี้ยังมีของไอบีเอ็มเพล็กซ์แบบอักษรใหม่ที่มีเงินขนาดใหญ่ที่อยู่เบื้องหลังมัน[ 1 ] [ 2 ] Plex ได้รับการออกแบบมาเพื่อแทนที่ Helvetica (มันยังมี sans แบบย่อรวมถึง serif และแบบอักษร monospace) ในวัสดุทั้งหมดของ IBM แม้ว่าจะไม่ได้ทำงานร่วมกับ Helvetica หรือแบบอักษรอื่น ๆ Font กระรอกมีมุมมองที่ดีของตัวอย่างแบบอักษรเพล็กซ์

นามแฝง Fontconfig

ในการตั้งชื่อแทน Helvetica ด้วยตนเองเป็นฟอนต์อื่น (และไม่จำเป็นต้องลบ Calibri และ / หรือ Arial แม้ว่าในกรณีนี้คุณควรตั้งชื่อแทนด้วยตนเอง) ให้แก้ไข~/.config/fontconfig/fonts.confไฟล์ของคุณ(สำหรับระบบเก่านั่นคือ~/.fonts.confเพื่อหลีกเลี่ยงความสับสน ไปยังอดีต) ตามที่ระบุไว้ในคำตอบนี้เพิ่ม<alias>หัวข้อใหม่สำหรับ Helvetica (อันนี้ใช้ Arimo ตรวจสอบให้แน่ใจว่าคุณติดตั้งแล้ว):

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

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

</fontconfig>

1
นี่เป็นคำตอบที่ดีกว่าคำตอบที่ได้รับการยอมรับ ฉันต้องการที่จะชี้ให้เห็นว่ามีไฟล์ conf ที่สะดวกอยู่ใน arch wiki: wiki.archlinux.org/index.php/Croscore_Fonts
Xananax

บรรทัดแรกควรเป็น sudo rm -R / usr / share / fonts / truetype / calibri
dez93_2000

หากผลลัพธ์ Helvetica ของ fc-match is arial บน linux คุณรู้วิธีบังคับ Sans ปลดปล่อยหรือไม่? เพียงลบ Arial? ขอบคุณ
dez93_2000

@ dez93_2000 - /usr/share/fonts/truetype/msttcorefonts/callibri*ที่อาจ ฉันจะอัปเดตคำตอบของฉันไปยังที่อยู่การใช้ชื่อแทนแบบอักษรเนื่องจากจะไม่พอดีกับความคิดเห็น
Adam Katz

ฉันตรวจสอบผลลัพธ์ที่แสดงผลของคำตอบที่ยอมรับอย่างระมัดระวัง (โดยใช้แบบอักษร Calibri) และไม่พบความแตกต่างเลยเมื่อเทียบกับตัวแปลที่ดีที่รู้จัก ไม่มีความงามที่หายไปอย่างแน่นอน
Marc.2377

6

คำตอบของ lgarzoจะใช้ได้เฉพาะกับเว็บไซต์ที่มีคลาส "noligs" บนข้อความเท่านั้น (เว็บไซต์ส่วนใหญ่ไม่มี)

หากต้องการปิดใช้งานหนังสติ๊กทั่วโลกในทุกเว็บไซต์ให้เพิ่มบรรทัดต่อไปนี้ในuserChrome.css:

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

วิธีที่ง่ายที่สุดในการทำเช่นนั้นคือการสร้างสไตล์ใหม่ด้วยการขยายสไตล์


+1 สำหรับคำแนะนำที่มีสไตล์ AFAIR ฉันอ้างถึงเอกสาร Mozilla (เนื่องจากฉันคาดหวังว่า OP จะสามารถแปลงสิ่งนั้นได้ตามที่เขาต้องการ :)) ความตั้งใจของฉันคือการรวมกฎลงใน CSS ของหน้าเว็บ (ไม่สามารถตรวจสอบแหล่งที่มาได้ แต่ดูเหมือนว่าจะลง ATM)
lgarzo

1
ไวยากรณ์นั้นใช้ได้จนถึง Firefox 14 เท่านั้นตามstackoverflow.com/a/15161336/4464570และขณะนี้เบราว์เซอร์ไม่รู้จักอีกต่อไป ฉันแก้ไขโพสต์ของคุณเพื่ออัปเดตด้วยไวยากรณ์ปัจจุบัน
ผู้บัญชาการไบต์

4

มีข้อสังเกตเกิดขึ้นในใจของฉันขณะที่ดูรูป:

  • ดูเหมือนว่าเอ็นต่อต้านนามแฝงในขณะที่ส่วนที่เหลือของข้อความไม่ใช่ ดังนั้นมันจึงดูอ้วนกว่าข้อความปกติ (แม้ว่าฉันจะปฏิเสธไม่ได้ แต่มันก็ยังดูเป็นตัวหนา)
  • AFAIK แบบอักษร Helvetica เป็นแบบอักษรที่ไม่ได้มาตรฐานเช่นไม่มีการติดตั้ง Windows เริ่มต้น คุณได้ติดตั้งมันไว้หรือเป็นฟอนต์อื่นหรือไม่?

ฉันคิดว่าปัญหาจะขึ้นอยู่กับตัวอักษรที่ไม่สนับสนุนการมัด / การจัดช่องไฟอย่างถูกต้อง

คุณสามารถปิดใช้งานหนังสติ๊กใน FF ด้วยกฎ CSS ด้านล่าง:

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

ที่มา: การอ้างอิง CSS: Mozilla Extensions


ไวยากรณ์นั้นใช้ได้จนถึง Firefox 14 เท่านั้นตามstackoverflow.com/a/15161336/4464570และขณะนี้เบราว์เซอร์ไม่รู้จักอีกต่อไป ฉันแก้ไขโพสต์ของคุณเพื่ออัปเดตด้วยไวยากรณ์ปัจจุบัน
ผู้บัญชาการไบต์

1

นอกจากคำตอบของ Calimo ผู้ใช้ Archlinux สามารถค้นหาความช่วยเหลือได้ที่https://wiki.archlinux.org/index.php/font_configuration - ปิดใช้งานแบบอักษรบิตแมป

แนะนำให้สร้างไฟล์ปรับแต่งโลคัล ~ / .config / fontconfig / conf.d / 20-no-embedded.conf แต่ฉันไปหาตัวเลือกระบบที่หลากหลาย

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>

จากนั้นเพียงรีสตาร์ทแอพ (ในกรณี Thunderbird ของฉัน)


หากอยู่ใต้บรรทัด "<match target =" font ">" คุณเพิ่ม: <test name = "family"> <string> Calibri </string> </tex> </test> หรือชื่อแบบอักษรใด ๆ ก็ตาม (Helvetica) แก้ไขการตั้งค่าแบบอักษรสำหรับแบบอักษรเฉพาะนั้นเท่านั้น
zeehio

การอนุญาตควรเป็น 644 ไม่ใช่ 777 เนื่องจากคุณกำลังวางไฟล์ (ไม่ใช่ลิงก์)
Marc.2377
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.