Monday, November 08, 2004

TryLinux ภาค 6: วาดอักษรให้สวย

Post นี้ตัดคำไว้ให้แล้ว

เปิดปิด Anti-aliasing/Subpixel

เท่าที่ลองเล่นดู ในไฟล์ ~/.fonts.conf มีคำสั่งที่เกี่ยวกับการเปิดปิด Anti-aliasing คือ

 <match target="font" >
  <edit mode="assign" name="antialias" >
   <bool>true</bool>
  </edit>
 </match>
ถ้าไม่ต้องการ Anti-aliasing ก็เปลี่ยนเป็น false

แปลกใจว่าถ้าหากใช้ Control Center ของ KDE (ของ Knoppix-TH) แก้ไขตัวเลือก Anti-Aliasing มันจะเขียนทับไฟล์ ~/.fonts.conf นี้ และจะไม่มี หัวข้อ antialias นี้ (คือเอาออกไปเลยทั้งยวง) ยังหาไม่เจอเหมือนกันว่า KDE ไป เปิด/ปิด Anti-Aliasing ที่ไหน ลองดูใต้ /etc/fonts/... แล้วก็ไม่เห็นมีไฟล์ไหนพูดถึง antialias

หลังจากที่แก้ไฟล์ ~/.fonts.conf เสร็จแล้วสามารถเรียก xterm -fa ... ทดสอบดูได้เลย เห็นผลทันตา

และหากต้องการเลือกว่าจะใช้ Subpixel หรือไม่ ต้องไปแก้ที่

 <match target="font" >
  <edit mode="assign" name="rgba" >
   <const>rgb</const>
  </edit>
 </match>
ถ้าไม่เอา Subpixel ก็เปลี่ยนตรง rgb เป็น none และถ้าหากใช้ Control Center ของ KDE แก้ไขตัวเลือก Subpixel มันจะเขียนทับไฟล์ ~/.fonts.conf โดยจะลบหัวข้อ rgba นี้ ออกไปทั้งหัวข้อเลยเหมือนกัน ทำให้โปรแกรมต่างๆจะใช้การตั้งค่า rgba ที่อยู่ใน /etc/fonts/local.conf แทน (ซึ่งกำหนดไว้ว่า rgb)

นี่คงเป็นสาเหตุที่ก่อนหน้านี้ ไม่สามารถใช้ Anti-Aliasing แบบธรรมดาใน KNOPPIX-TH นี้ได้ คือ เปิดปิด Subpixel อย่างไรก็ไม่มีผล มันจะใช้แต่ Subpixel ตลอด เพราะว่าในไฟล์ /etc/fonts/local.conf ระบุไว้เช่นนั้น

เปิด/ปิด Hint แบบต่างๆ

วันก่อนเขียนเป็นการบ้านไว้ว่า จะลองคอมไพล์ FreeType ดูใหม่เพื่อเปิดการใช้ Hint ตอนนี้ไม่แน่ใจว่ามันเปิดอยู่แล้วหรือเปล่า ? เพราะลองแก้ตัวแปรเกี่ยวกับ Hint ใน ~/.fonts.conf แล้ว มันก็เหมือนจะได้ผล

ก่อนจะทดสอบ เปิด/ปิด Hint ต้องไปปิด Anti-Aliasing ก่อน มิฉะนั้นผลจะเห็นไม่ชัด

 <match target="font" >
  <edit mode="assign" name="antialias" >
   <bool>false</bool>
  </edit>
 </match>
จากนั้นก็ลองเปิดปิด Hint ดู โดยแก้ที่
 <match target="font" >
  <edit mode="assign" name="hinting" >
   <bool>true</bool>
  </edit>
 </match>
ลองเปลี่ยนเป็น false แล้วเปรียบเทียบกัน จะเห็นได้ชัดว่าไม่มี Hint แล้วความหนาของเส้นจะหนาบ้างบางบ้าง ดูน่าเกลียด (ทดสอบด้วยคำสั่ง xterm -fa 'Arial' -fn 12)


ไม่มี Hint


มี Hint

ในกรณีของ มี Hint ตรงตัว T กับ L จะไม่หนาเกินไป คือ หนาพอดีเท่ากับ i แต่ในทั้งสองรูป ตัว n กับ u ยังดูน่าเกลียดอยู่ ในตัวเลือกเกี่ยวกับ Hint ยังมี hintstyle ให้เลือกเป็น hintmedium, hintfull, ... อีกด้วย ลองเลือกดูแล้วได้ผลออกมาไม่ต่างกัน (ในกรณีรูปนี้)

 <match target="font" >
  <edit mode="assign" name="hintstyle" >
   <const>hintmedium</const>
  </edit>
 </match>
สงสัยถ้าอยากได้ n กับ u ที่สวยกว่านี้ ต้องลองเอา FreeType มาคอมไพล์ใหม่ดูจริงๆ ? ลองเปรียบเทียบกับ WindowsXP ดู เลือกใช้ฟอนต์ Arial เหมือนกัน ขนาด 12pt เท่ากัน ได้ออกมาสวยงาม

ยังไม่ขอยืนยันว่า WindowsXP วาดเก่งกว่า เพราะไม่แน่ใจว่าใน Arial.ttf จะมีบิแมพฝังอยู่หรือเปล่า (ปกติฟอนต์ญี่ปุ่น .ttc มักมีบิแมพฝังอยู่สำหรับแสดงผลเมื่อเลือกใช้ขนาดเล็กๆ [1]) แต่ถึงจะฝังอยู่ FreeType ก็น่าจะเอาออกมาใช้ได้เหมือนกัน ?

ใช้ Anti-Aliasing แล้วยังจำเป็นต้อง Hint ?

ความจำเป็นของ Hint ดูเหมือนจะลดน้อยลง เมื่อเปิดใช้ Anti-Aliasing


เปิด Anti-Aliasing, ไม่มี Hint


เปิด Anti-Aliasing, มี Hint

ก็ยังพอมองออกหน่อยนึงว่าแตกต่างกัน Hint ยังมีประโยชน์

อ้างอิง

  1. วิธีเอา Bitmap ออกจากฟอนต์ญี่ปุ่น (เพื่อจะได้ใช้ ClearType ที่ทุกขนาด): MSゴシックとMS明朝で、ClearTypeを有効にする

No comments: