หน้า: [1]
 
ผู้เขียน หัวข้อ: ปัญหาตัวหนังสือขาด  (อ่าน 3915 ครั้ง)
0 สมาชิก และ 1 ขาจร กำลังดูหัวข้อนี้
จากภาพ ตัว ไ ใ โ มันขาดหายไป เมื่อสอบถามท่าน iannnnn ไปก็ได้รับคำตอบว่าให้ไปปรับที่ Asc./Dec. แต่มีวิธีอื่นไหมที่จะแสดงหมดแบบไม่แคร์ระยะบรรทัดอะไรเลยบ้างไหมครับ? ขอบคุณล่วงหน้าครับ ไหว้
ปล. ตัว ใ โ ไ สูงกว่าตัวอักษร 2 เท่าครับ ตัวอักษร 1 ตัวสูง 500 ครับ
บันทึกการเข้า

อายุ 14 - งานอดิเรกคือการเรียนภาษาและออกแบบฟอนต์
อันนี้เป็นปัญหาระดับโลกนะครับ ไม่ใช่เฉพาะภาษาไทย ตัวละตินของภาษาเวียดนามก็โดนเหมือนกัน และก็ไม่ใช่ปัญหาของฟอนต์อย่างเดียว มีสาเหตุมาจากโอเอสและโปรแกรมที่ใช้งานฟอนต์ด้วย การปรับค่า Asc/Des ช่วยได้ระดับหนึ่ง โดยเฉพาะใน Windows เหตุผลที่ทำให้เราสับสนคือมันมีค่า Asc/Des สองแบบที่ไม่ใช่อันเดียวกัน อันแรกคือ General Asc/Des ที่เรากำหนดสำหรับ font views เวลาวาดตัวอักษรนั่นแหละ คือ Asc + Des = Em size เช่น 960 + 240 = 1200 เป็นต้น ตามภาพด้านล่างนี้ (จากเทมเพลต f0ntuni-a ที่เปิดด้วย FontForge โปรแกรมอื่นก็คงมีวิธีปรับเหมือนกันมั้ง?) ซึ่งมันจะเพียงพอสำหรับตัวละตินพื้นฐานที่ไม่มี diacritics บน-ล่างเท่านั้น



ส่วนอันที่สองคือ OS/2 metrics ตามภาพต่อไปนี้



ในอุดมคติ เราตั้งค่า OS/2 metrics เพื่อบอก OS ว่าอย่าจัดการค่าแนวตั้งในฟอนต์ของเราตามอำเภอใจนะ ให้ใช้ตัวเลขที่เรากำหนดเท่านั้น ในภาพคือไม่ให้มัน Offset (ไม่เลือก Is Offset คือโอเอสไม่ต้องตัดและไม่ต้องเผื่อพื้นที่สำหรับ leading/line spacing/line height ประมาณนั้น) แต่ในทางปฏิบัติมันอาจไม่เชื่อฟังเราครับ และที่ทำให้สับสนยิ่งกว่านั้นคือ ค่า Win Des ต้องเป็นบวก ในขณะที่โอเอสอื่นต้องใช้ค่าเป็นเลขลบ (ด้วยเหตุนี้ FontForge เลยแยกไว้ให้ เพราะมันใช้ค่า Des ไม่เหมือนชาวบ้าน)

จะเห็นว่าค่า Asc/Des ใน OS/2 metrics ที่ผมกำหนดในภาพที่สองไม่เหมือนค่าของภาพแรก เพราะจากประสบการณ์สู้รบระหว่างฟอนต์กับโอเอสพบว่า ค่า OS/2 Asc ของฟอนต์ไทยควรเท่ากับจุดสูงสุดของวรรณยุกต์ตัวสูง (ส่วนใหญ่คือไม้โทหรือไม้ตรีที่ไม่ได้ถูกดึงลงมา หรือถ้าสระโอของคุณสูงกว่าไม้โทไม้ตรี ก็ใช้ค่าของสระโอ เป็นต้น) ส่วน Des ควรเป็นจุดต่ำสุดของสระล่าง (ส่วนใหญ่คือสระอูที่ถูกดึงต่ำสำหรับใช้กับ ฏ.ปฏัก) จะเห็นว่า 1240 + 480 มันเกิน General Asc/Des ตามภาพที่หนึ่งแน่ๆ (ยกเว้นคุณจะเพิ่ม Em size ซึ่งทำให้ตัวอักษรเล็กลง และผมไม่แนะนำ)

เหตุผลที่ว่าทำไมส่วนบนล่างของตัวอักษรจึงถูก crop ไม่ใช่ปัญหาที่มาจากฟอนต์อย่างเดียว เพราะโอเอสหรือโปรแกรมที่ใช้งานฟอนต์มักให้ผู้ใช้กำหนด leading/line height ได้เอง ยกตัวอย่างในโปแกรมประเภท word processor ถ้าเรากำหนด line spacing ไว้น้อยมากๆ สำหรับฟอนต์ไทย บางโปรแกรมก็อาจจะ crop ส่วนที่สูงหรือต่ำกว่า บางโปรแกรมก็อาจจะไม่ crop แต่ยอมให้ตัวอักษรทับซ้อนกันแทน เป็นต้น สรุปสั้นๆ คือ มันไม่สนใจค่าที่เรากำหนดไว้ในฟอนต์นั่นเอง

ส่วนคำถามที่ว่า มีวิธีอื่นไหมที่จะแสดงผลฟอนต์แบบไม่ถูก crop โดยไม่แคร์ระยะบรรทัดอะไรเลย? คำตอบสั้นๆ เท่าที่ผมรู้คือ ไม่มีครับ เราทำได้ดีที่สุดคือกำหนดค่า OS/2 metrics ที่เหมาะสมสำหรับฟอนต์ของเรา ที่เหลือเป็นอิสระของผู้ใช้ที่จะกำหนดระยะบรรทัดที่เหมาะสมในโปรแกรมที่เขาใช้งานเอง อันนี้ไม่ใช่ความผิดของฟอนต์แล้ว
บันทึกการเข้า

เทมเพลตฟอนต์ไทย FontUni https://github.com/fontuni/fontuni/releases
ขอบคุณมากครับผม ไหว้
แก้ #1 พอเข้าไปปรับ OS/2 แล้วใช้ได้จริงๆ ด้วยครับ เจ๋ง
« แก้ไขครั้งสุดท้าย: 26 ธ.ค. 2014, 18:21 น. โดย rootEnginear » บันทึกการเข้า

อายุ 14 - งานอดิเรกคือการเรียนภาษาและออกแบบฟอนต์
ฮ่าๆ ฮือๆ โหดร้ายมากครับ
บันทึกการเข้า

ทำมาหากินด้วยการเปิดร้านสกรีนเสื้อยืด จ้ะ
หน้า: [1]
 
 
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines | Thai language by ThaiSMF Valid XHTML 1.0! Valid CSS!