ThaiFonts-Scalable 0.4.6 Released
Posted April 13th, 2007 by thep
Changes from 0.4.5
- Update glyphs for Loma bold from the original author to match non-rounded shapes in their normal-weight counterparts.
- Clear subscript, superscript, strike controls in fonts, to fix weird rendering with Gecko.
- Add exception clause to font license, so that documents that embed the fonts are not enforced by GPL.
- Improved GSUB tables in fonts, to ensure they work properly with OO.o.
Download
- source: ftp://linux.thai.net/pub/ThaiLinux/software/thaifonts-scalable/thaifonts...
- binary: ftp://linux.thai.net/pub/ThaiLinux/software/thai-ttf/thai-ttf-0.4.6.tar....
MD5 sums:
30297c192ad7bc095424a069ba6214c9 thaifonts-scalable-0.4.6.tar.gz c13817a4842167586467ca9c4f1fa8b7 thai-ttf-0.4.6.tar.gz
CVS
$ cvs -d :pserver:anonymous@linux.thai.net:/home/cvs \ co -r r_0_4_6 software/thaifonts-scalable
GSUB tables
ผมทำฟอนต์ นรบุตร และฟอนต์อีกหลายตัว
เลยอยากทราบวิธีทำ GSUB tables คร่าว ๆ น่ะครับ จะได้นำไปปรับปรุงฟอนต์ที่ทำมาแล้วโดยใช้เทมเพลตจากรุ่นเก่า
เพื่อให้สามารถใช้งานกับ OO.o ได้น่ะครับ
อ่านเองจากคู่มือ FontForge แล้วไม่ค่อยรู้เรื่อง
(ไม่ต้องรีบตอบก็ได้นะครับ ฟอนต์นรบุตรใช้วิธีคัดลอกมาสู่เทมเพลตใหม่แล้ว)
หมายเหตุ - รูปที่ใช้ดักแสปม ดูยากไปหน่อยครับ
Re: GSUB tables
น่าสนใจครับ สำหรับฟอนต์ที่คุณ wd ทำขึ้น ถ้าสามารถนำมาเผยแพร่รวมกับ thaifonts-scalable ได้ ก็จะดีไม่น้อย ขอเพียงชัดเจนเรื่องลิขสิทธิ์และสามารถเผยแพร่ภายใต้ GPL ได้
เรื่องการสร้าง GSUB tables ผมเคยเขียน spec สรุปไว้เหมือนกัน ส่วนวิธีสร้างด้วย fontforge ถ้าเอาละเอียดก็ยาวครับ แต่คร่าว ๆ ก็คือ สร้าง Chaining Substitution rule โดยใช้ tag 'ccmp' โดยกำหนดกฎด้วย class หรือ coverage ก็ได้ แต่ในกรณีที่ลำดับของกฎมีความสำคัญ (เช่น กรณีสระอำผสมวรรณยุกต์นี้) ควรใช้กฎแบบ class โดยกำหนด context ของกฎ แล้วเลือก nested rule ที่จะใช้แปลง glyph ที่ตรงกับกฎ
nested rule ที่ว่านี้ ต้องเตรียมไว้ล่วงหน้าก่อน โดยไปเพิ่มรายการ Substitutions หรือ Mult Subs ที่ Glyph info ของแต่ละ glyph ที่จะแปลงเอา โดยเลือก Script & Languages เป็นชนิด "-- Nested --" แล้วก็ตั้ง tag เอาตามใจชอบ (ยาวสี่อักขระ ไม่ให้ซ้ำกับ tag มาตรฐานของ OpenType) เพื่อเอาไว้ใช้อ้างขณะสร้าง Chaining Substitution นะครับ
Re: GSUB tables
คุณเทพฯ เอาไปเขียนข้อกำหนดเองได้เลยครับ เพราะผมเอาต้นแบบมาจากฟอนต์โลมาอยู่แล้ว ข้อความลิขสิทธิ์ข้างในฟอนต์ผมไม่ได้แตะต้องเลย
เอาเป็นว่าทุกเรื่องที่ผมทำ ถ้าเห็นว่าดี สามารถเอามาใช้ได้เลยโดยไม่ต้องขออนุญาตครับ
ว่าแต่ว่า ผมยังมีปัญหาเรื่อง hinting อยู่ สงกรานต์ปีนี้สุดจะมึนเมาด้วยเรื่อง hinting :P
เรื่อง GSUB tables สงสัยไปต่อไม่ไหว สงสัยผมเอาแค่วาดรูปคงพอ
อีกเรื่องคือฝากตรวจสอบไฟล์ฟอนต์ Loma.sfd กับ Norasi.sfd นิดนึงครับ ว่ามีปัญหาสระลอยถ้าใช้ร่วมกับสระอุ/สระอู
ส่วนไฟล์ Garuda.sfd บิลด์ได้ปกติดีครับ
Re: GSUB tables
หมายความว่า คุณ wd วาด glyph ต่าง ๆ เอง โดยไม่ได้ใช้ข้อมูลจากแหล่งอื่น (นอกจาก Norasi) ใช่ไหมครับ ถ้าอย่างนั้นก็เยี่ยมเลย อาจนำมาใช้แทน Angsana ได้ จะรอ license ของฟอนต์กินรี (ฟอนต์แห่งชาติลำดับที่ 1 ที่ติดเรื่อง license ไม่ชัดเจนอยู่) ก็คงอีกนาน
เรื่องปัญหาวรรณยุกต์ลอยเมื่อใช้กับสระล่าง.. เจอไวจังครับ พอดีผมเพิ่งแก้และ commit ไปแล้วเมื่อเช้านี้ ก่อนจะมาเห็นความเห็นของคุณ wd ถ้าเจอปัญหาอื่นอีกก็แนะนำมาได้นะครับ
Re: GSUB tables
วาดเองทั้งหมดครับ ยกเว้นถ้าตันตรงไหน ก็เอาฟอนต์ตัวนั้นตัวนี้มาดูเป็นต้นแบบ ๑ แว๊บ แล้วก็วาดเองโดยไม่ได้ก๊อปปี้หรือลอกจากแบบ
ตอนนี้สร้าง โลมาบุตร ได้สองชุดแล้วครับ แต่ตันเรื่อง Hinting (ใช้ AutoHint แล้วดูไม่ได้เลย) ฝากเอาไปทำเพิ่มหรือสอนวิธีก็ได้นะครับ ตัวนี้ใช้ฟอนต์โลมาเป็นเทมเพลต ใช้โลมาเป็นต้นแบบหลัก และ Tahoma เป็นตัวรอง
ผมเองพอได้เริ่มใช้แล้ว ก็รู้สึกติดใจ ว่ามันดูง่ายกว่าโลมา เลยอยากให้มันสมบูรณ์น่ะครับ
ส่วนฟอนต์นรบุตร เอานรสีห์เป็นเทมเพลต เอาฟอนต์ JS-Saksit เป็นต้นแบบหลัก และนรสีห์เป็นตัวรองครับ
ยังเหลือตัวเลขไทยที่ผมทำเพียงแค่ดัดแปลงจากนรสีห์นิดเดียว ถ้าคุณเทพจะให้เหมือนกินรี รบกวนแจ้งมา เดี๋ยวผมทำเพิ่มให้ครับ
Re: GSUB tables
ชอบฟอนต์โลมาบุตรครับ อยากเอามาปรับปรุง Loma เองเลยแหละ เดี๋ยวจะดูละเอียดแล้วคิดต่อไปว่าจะทำยังไงต่อนะครับ
Re: โลมาบุตร
ปัญหาคือ โลมาบุตร ถูกออกแบบให้ดูบนจอภาพ ผมเลยลดขนาดสระบน สระล่าง จนเล็กผิดปกติ เวลาดูบนจอภาพ จะเป็นแนวตัวอักษรหลักเด่นเป็นระเบียบ แต่ถ้าเอามาพิมพ์จะดูไม่สวยเลยครับ
แต่โลมาเป็นฟอนต์ที่เอนกประสงค์กว่า คือสามารถได้ทั้งดูบนจอภาพ และพิมพ์ออกเครื่องพิมพ์ได้สวยงาม ถ้าทดแทนไปเลยอาจขาดเรื่องงานพิมพ์น่ะครับ
...
ผมว่าเปลี่ยนชื่อใหม่ แล้วใช้เป็นฟอนต์สำหรับจอภาพ คล้าย ๆ กับที่ Tahoma เป็น ดีกว่านะครับ
อีกเรื่องคือ
วันนี้ทำ Lomaputta-Oblique เสร็จแล้ว แต่ข้อมูลจาก CVS ยังเป็นข้อมูลเก่าของ 0.46 อยู่ครับ เลยยังมีข้อผิดพลาดตรงสระอุกับสระอูอยู่ รบกวนฝากอัปเดตใน CVS ให้ด้วยครับ
Re: โลมาบุตร
ผมหมายถึงส่วน spline น่ะครับ ดูคมขึ้น แต่เรื่องขนาดสระบน-ล่าง ผมยังชอบแบบของ Loma อยู่
เรื่อง GSUB ของ Loma ขอยืนยันว่าแก้ไปแล้วใน CVS ครับ แต่ fontforge เองจะมีปัญหาเวลาที่ copy features to font มันจะทำข้อมูลเพี้ยนไปตัวหนึ่ง ต้องเข้าไปแก้ด้วยมือครับ (เลยเป็นสาเหตุให้มี bug ในฟอนต์ทุกตัวของ 0.4.6 ยกเว้น Garuda ที่เป็นต้นแบบ)
วิธีแก้นะครับ:
Element > Font Info > Contextual
เลือกกฎแรกแล้วคลิกที่ Edit Data...
ดูกฎที่ 4 ในช่องบนสุด จะมีค่าเพี้ยนเป็นตัวเลขหลักหมื่น ต้องแก้ให้เป็น 1 โดยเลือกกฎนั้น แล้วคลิก Edit แล้วไปแก้ที่แท็บ Backtrack นะครับ
Re: โลมาบุตร
ขอบคุณครับ แก้เรียบร้อยแล้ว
ผมทำเพิ่ม Loma-BoldOblique เรียบร้อยแล้ว ยกยอดรวมได้แล้วครับ
เกือบลืมอีกอันนึงคือ สระอุล่าง กับสระอูล่างของต้นฉบับ ตำแหน่งยังผิดอยู่ แต่ของอันใหม่นี่แก้เรียบร้อยแล้วครับ
Re: โลมาบุตร
ตกลงเราจะช่วยกันทดสอบ drupal นะครับ ว่ามันเยื้องไปได้มากที่สุดกี่ชั้น เหอ ๆ ;-)
คุณ wd มีพลังจิตอ่านใจผมหรือเปล่าเนี่ย เพิ่งแก้ปัญหาเรื่องสระอุ อู ไปหมาด ๆ เลย
คือผมพยายามเทียบ glyph ของ Loma กับ Lomaputta เพื่อจะเอามาปรับปรุง Loma ก็ปรากฏว่า ที่ผมเห็นว่า Lomaputta คมกว่านั้น เป็นที่บางขนาดเท่านั้น พอเปลี่ยนเป็นขนาดอื่น ๆ เทียบดู ก็พบว่าคุณภาพ spline ยังไม่ต่างกันมาก คงเป็นเพราะ fontforge ยังไม่สนับสนุน TrueType hint จริง ๆ จัง ๆ มั้งครับ (เมนูเรื่อง hint ที่เห็นทั้งหมดนั้น ของ Postscript ล้วน ๆ ส่วนของ TrueType เห็นยัง gray อยู่)
อย่างไรก็ดี การที่ได้สำรวจ spline ของ Loma ก็ทำให้เห็นความไม่สะอาดของ spline เลยจัดการเก็บกวาดโดย simplify และใช้ glyph reference ในที่ที่ควร แล้วก็เลยได้แก้เรื่องสระอุ-อู ไปพร้อมกันด้วย เมื่อวานเก็บกวาด Loma normal แล้ว วันนี้ทำ Loma Oblique เดี๋ยวจะลุย Loma Bold, Bold-Oblique ต่อไปครับ (update ใน CVS)
ว่าแต่ว่า ส่วนที่คุณ wd แก้ไขนั้น อยู่ที่ไหนเหรอครับ? จะได้เอามาดู
Re: Hinting
เอ่อ... คือว่าผมเป็นมือใหม่จริง ๆ นะครับ เพิ่งเริ่มศึกษาเรื่องฟอนต์ตั้งแต่วันสงกรานต์นี่แหละ เลยไม่ค่อยรู้เรื่องอะไรมากเท่าไหร่
ข้อด้อยอย่างแรงคือภาษาอังกฤษไม่ดี ฉะนั้นงานส่วนใหญ่จะเป็นงานที่ใช้การทดลองนำน่ะครับ
สมมุติว่าฟอนต์ Tahoma มีความคม 95% (ใช้ฟอนต์ตัวนี้เป็นตัวเปรียบเทียบ เพราะได้ยินว่าคมที่สุดในกระบวนฟอนต์สำหรับดูบนหน้าจอ)
งานทดลองขั้นแรกส่วนใหญ่ลองบนอูบุนตู จะเห็นคุณภาพฟอนต์คมประมาณ 80% ความแตกต่างในการ Hint ด้วยมือ จับได้สัก 5%
ต่อมาทดลองบนเดเบียน ได้คุณภาพความคมสัก 60%
ค้นไปค้นมา ผมลองตั้งให้ระบบเป็น Autohint คำสั่งคือ
$ sudo ln -sf /etc/fonts/conf.avail/10-autohint.conf /etc/fonts/conf.dผลปรากฎว่าบนเดเบียนได้คุณภาพฟอนต์เพิ่มเป็น 90% ทั้งบน Desktop และบน IceWeasel แต่ว่าบน Epiphany ยังเหมือนเดิม
ผมเลยยังมึน ๆ อยู่ครับ ไม่รู้ว่าระบบทำงานยังไง
การปรับ Hint ด้วยมือ ก็มีแค่ปรับ HHint ในส่วนบน ให้แคบที่สุด เราจะได้ส่วนสูงของฟอนต์ที่เท่ากัน อันนี้ลองเทียบดูระหว่าง Loma กับ Lomaputta ได้ครับ จะเห็นว่าฟอนต์โลมาดูเหมือนกับว่าความสูงของฟอนต์ไม่เท่ากัน
ส่วนเรื่องอื่น ... ต้องขอติดไว้ก่อน สักวันคงต้องรู้เรื่องให้ได้ ;D
...
ขออภัยครับ เมื่อสักครู่ไปนั่งจ้องหน้าจอ ปรับไปปรับมา เป็นแบบที่คุณเทพว่าจริง ๆ คือความคมขึ้นกับขนาดฟอนต์
ถ้าจังหวะไปลงพอดีก็จะรู้สึกว่าคมกว่า แต่ถ้าจังหวะลงไม่พอดี ก็จะเห็นว่าฟอนต์ฟุ้ง
สรุปว่า ไม่เกี่ยวกับบราวเซอร์ แต่เกี่ยวกับขนาดฟอนต์ว่าลงตรงจังหวะ Hint หรือเปล่า :P
Re: โลมาบุตร
คุณสมเจตน์ท่านช่วยทดสอบให้ สรุปว่า คุณสมเจตน์ไม่ใช่ AutoHint แต่ใช้การบังคับ Hinting ให้ฟอนต์เป็นรายตัว (ตามวิธีของคุณกำธร) การ Hint ใน FontForge จึงจะได้ผล โดยที่การแสดงผลของระบบยังเหมือนเดิม
งงเหมือนกันว่าทำไม Tahoma ถึงใช้ได้เลย
Re: โลมาบุตร
การเปิด autohint ใน fontconfig ก็ยังไม่ใช่การใช้ hint ที่มีในฟอนต์อยู่ดีนะครับ แต่เป็นการใช้ hint อัตโนมัติที่ freetype จะพยายามทำให้ เป็นกระบวนการที่ freetype เอาไว้หลบปัญหาสิทธิบัตรการ hint ของ apple นะครับ โดยโหมดนี้จะไม่ใช้ hint ในฟอนต์เลย แต่พยายามสร้าง hint ให้โดยอัตโนมัติก่อนใช้
ที่ Tahoma ใช้ hint ได้ทันที ก็เพราะ Tahoma มี hint มาแล้วน่ะครับ แต่ TrueType font ที่สร้างโดย fontforge ดูจะไม่มี hint หรือถ้ามี ก็คุณภาพต่ำ และการเปิด autohint ตามที่ว่ามา ก็ไม่ใช่การใช้ hint จากฟอนต์ การที่ฟอนต์คมขึ้น จึงเป็นผลงานของ freetype ไม่ใช่ fontforge น่ะครับ
เรื่อง TrueType hint นี่ ปวด'หมองเหมือนกัน ต้องรอให้ fontforge รองรับการสร้าง TrueType hint จริง ๆ เสียที ที่ผ่านมา hinting ใน fontforge จะใช้การได้ดีกับ Postscript เท่านั้น
Re: ThaiFonts-Scalable 0.4.6 Released
เห็น Indent แล้วมันเสียว ๆ ขออนุญาตเริ่มใหม่นะครับ ;D
แจ้งเรื่องทำฟอนต์หน้าจอเพิ่มอีกเป็นฟอนต์สุดท้ายแล้วครับ เวลาหมดแล้ว :P
ตั้งชื่อว่า ฟอนต์วีรชาติ เพราะเอามาจากฟอนต์ Vera ของ Bitstream
สามารถเอามาใช้ได้เหมือนเดิมครับ ส่วนของภาษาไทย เที่ยวนี้ผมลุยเองหมด ไม่ได้เอาอะไรเป็นแบบหลักเลย (แต่ก็เอาโลมาเป็นเทมเพลตเฉย ๆ)
แจ้งให้ทราบครับ :)
...
เกือบลืม
ถ้าคุณเทพจะเอามาใช้ ฝากตรวจข้ออนุญาตของฟอนต์ Vera ด้วย
อ่านผ่านตาว่า สามารถใช้ได้ แต่ต้องเปลี่ยนชื่อ ห้ามใช้ชื่อ BitStream Vera
...
เรื่อง Hinting ของ truetype อ่านเจอที่ http://osdir.com/ml/fonts.fontforge.user/2006-08/msg00030.html
เขาให้แปลงเป็น Quadratic ก่อน ตามด้วย AutoHint แล้วจึงสั่ง AutoInstruction
แต่คุณภาพการ Hint ยังไม่ดีนัก (ผมลองดูแล้วมันก็ดีขึ้นจริง ๆ ไม่รู้ว่าอุปาทานหรือเปล่า)
OTF?
ขอบคุณสำหรับคำแนะนำเรื่อง TrueType hint ครับ ผม ลองทำตาม ดูแล้ว ได้ผลครับ แต่ยังไม่ดีเท่า Postscript อยู่ดี
ก็เลยได้ไอเดียว่า เราใช้ OpenType font (*.otf) ที่มี format เป็น Postscript น่าจะดีกว่าใช้ TTF ไหม? ผลการทดลองอยู่ในลิงก์ข้างต้นครับ
ทดลองได้จาก thaifonts-scalable โดยใช้ configure option --enable-otf และ --with-otfdir=dir ครับ (อาจจะ --disable-ttf ด้วย ก็แล้วแต่ครับ)
Re: OTF?
ไม่รู้ว่า OpenOffice ใช้งานฟอนต์ otf ได้หรือยัง ถ้ายังใช้ไม่ได้ เราอาจต้องผลิตฟอนต์สองชุดน่ะครับ (แต่ OO.o ใช้ Type1-pfb ได้แน่ ๆ)
...
เรื่องทรูไทป์ รบกวนฝากคุณเทพช่วยลองแบบ ล้าง Hint เก่า แล้วไม่ต้องทำ AutoHint ทำแค่ AutoInstr อย่างเดียวหน่อยซิครับ ไม่ต้องแสดงผลก็ได้ เอาแค่เล่าให้ฟังก็พอ
(ผมไม่ค่อยมั่นใจผลการทดลองของตัวเอง เพราะปรับตั้งเยอะจนค่อนข้างมั่ว การทดสอบของคุณเทพชัดเจนดีกว่ามากครับ)
ถ้าคุณภาพพอยอมรับได้ เราก็สามารถเก็บ spline เป็น cube ได้ครับ
Re: OTF?
ฮึ่ม.. OO.o นี่ ตัวดับฝันอีกแล้ว มันใช้ OTF ไม่ได้จริง ๆ แหละครับ :-/
ส่วนเรื่อง AutoInstr แบบเคลียร์ hint.. ดูเหมือน AutoInstr ต้องอาศัยข้อมูล Autohint นะครับ ถ้าเคลียร์ hint ทั้งหมดแล้วสั่ง AutoInstr จะไม่มี instruction ใด ๆ ออกมาเลย ก็กลายเป็นฟอนต์เปล่า ๆ ที่ไม่มี hint ครับผม
Re: OTF?
รับทราบครับ ... ก็ต้องลำบากลำบนกันต่อไป
การสู้ความลำบากมันฝังในสายเลือดอยู่แล้วนะครับ ... เขาคงกลัวว่าเดี๋ยวไม่มีอะไรให้ทำมั๊ง ;D
Re: ThaiFonts-Scalable 0.4.6 Released
พอดีไปอ่านเจอจากที่คั่นหนังสือของคุณแอน
หนังสือสารคดี - ๑๐ ตัวพิมพ์ กับ ๑๐ ยุคสังคมไทย
อ่านสนุกดี ได้แนวคิดในการทำฟอนต์ดีมาก
เดี๋ยวถ้าพอมีเวลาจะกลับมาทำต่อครับ :)
Re: ThaiFonts-Scalable 0.4.6 Released
มีฉบับออนไลน์ด้วย! :D
ผมมี hardcopy น่ะครับ อ่านแล้วได้ความรู้มากมาย
ขอบคุณสำหรับลิงก์ครับ