กำหนดค่า fontconfig เพื่อละเว้นบิตแมปในแบบอักษรที่ปรับขนาดได้


12

ฉันติดตั้ง Microsoft C-Fonts และมันยอดเยี่ยมมาก อย่างไรก็ตาม Calibri ปรากฏเป็นแบบอักษรบิตแมปในหลายขนาดที่ปรากฏ ฉันจะบอก fontconfig ให้ห้าม Calibri (และ Cambria และอื่น ๆ ) จากการแสดงผลจากบิตแมปที่ฝังอยู่ได้อย่างไร ฉันมี70-no-bitmaps.confอยู่ใน/etc/fonts/conf.d/ไดเรกทอรีแล้ว

แบบอักษรในคำถามสามารถสกัดจาก Viewer


AFAIK แบบอักษรเหล่านั้นไม่สามารถแจกจ่ายได้อย่างอิสระหรือไม่ (ดังนั้นฉันไม่สามารถทดสอบพวกเขาได้) แต่คุณแน่ใจหรือว่าพวกเขาใช้บิตแมปและไม่เพียงแค่ปิดใช้งานการลดรอยหยักเท่านั้น
JanC

@JanC แบบอักษรใช้บิตแมปที่แสดงไว้ล่วงหน้าแน่นอน
พอลฟิชเชอร์

คำตอบ:


19

/etc/fonts/conf.d/70-no-bitmaps.confเพียงปฏิเสธแบบอักษรบิตแมปพวกเขาไม่ปิดใช้งานบิตแมปที่ฝังตัวซึ่งเป็นกรณีที่นี่ ฉันไม่รู้ว่าทำไมพวกเขาไม่ตั้งค่าให้ปิดการใช้งานบิตแมปที่ฝังอยู่ในไฟล์ conf เดียวกัน อย่างไรก็ตามใส่สิ่งต่อไปนี้ลงใน~/.config/fontconfig/conf.d/20-no-embedded.conf(หรือสำหรับ Ubuntu รุ่นเก่า~/.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>

สิ่งนี้จะปิดใช้งานบิตแมปที่ฝังสำหรับแบบอักษรทั้งหมด หากคุณต้องการปิดใช้งานสำหรับแบบอักษรที่เลือกเท่านั้นให้เพิ่ม<test>องค์ประกอบ:

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

<edit ...ก่อนที่


ควรใส่สิ่งนี้ใน /etc/fonts/conf.d หรือดีกว่าใน /etc/fonts/conf.avail และเชื่อมโยงกับ conf.d เหมือน conf ไฟล์อื่น ๆ ทั้งหมดหรือไม่ สงวนไว้สำหรับไฟล์ปรับแต่งที่จัดทำโดยการแจกจ่าย Ubuntu หรือไม่ มันสำคัญไหม
knb

1
@ knb โดยค่าเริ่มต้น ubuntu / debian settings, fontconfig จะโหลดทุก~/.fonts.conf.d/อย่างด้วย ดังนั้นฉันขอแนะนำให้คุณวางไว้ที่นั่นเพื่อหลีกเลี่ยงการล้อเล่นกับการกำหนดค่าระบบ หากคุณไม่ต้องการให้ผู้ใช้ทุกคนสามารถใช้งานได้/etc/fonts/conf.dหรือใส่ไว้ในนั้นavailและเชื่อมโยงกับมันconf.dเพื่อใช้เมื่อคุณต้องการ (คุณสามารถลบ symlink เมื่อคุณรู้สึกอยากเปิดใช้งานในทางกลับกัน)
syockit

3
ด้วย fontconfig เวอร์ชันปัจจุบันชื่อไฟล์จะต้อง~/.fonts.conf.d/20-no-embedded.confไม่ถูกโหลดหากไม่มีหมายเลขนำหน้า เรียกใช้ตัวอย่างFC_DEBUG=1024 geditเพื่อดูว่าการกำหนดค่าของคุณถูกโหลดเลยหรือไม่หากดูเหมือนจะไม่มีผลใด ๆ
ปาสกาล

@pascal +1 สำหรับ FC_DEBUG และไม่จำเป็นต้องใช้หมายเลขหน้าชื่อใน 10.04 LTS เพียงแค่ตั้งชื่อ.fonts.configก็เพียงพอแล้ว fontconfig เวอร์ชันใดที่คุณอ้างถึง
LAFK พูดว่า Reinstate Monica

1

ในตัวอย่างที่คุณให้คุณมีคุณลักษณะ "<string>" กล่าวถึงสองครั้งใน "<test>" stanza สิ่งนี้ทำให้เกิดการเตือนบน Ubuntu 13.10 และ 14.04 เพื่อกำจัดคำเตือน stanza ในไฟล์ควรมีลักษณะดังนี้:

<?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>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.