Theppitak's blog

My personal blog.

20 พฤศจิกายน 2550

Synthetic Font and Hinting

แจ้งข่าวการเปลี่ยนแปลงที่น่าสนใจใน thaifonts-scalable CVS (กันข้อครหาว่าหมกเม็ด) มีสองรายการ

รายการแรก คือการสังเคราะห์ฟอนต์ Browallia ด้วย Garuda ที่ย่อขนาดลง เพื่อช่วยให้ผู้ใช้ที่ใช้เอกสารจากวินโดวส์ที่มีการระบุฟอนต์ดังกล่าว สามารถดูหรือพิมพ์เอกสารได้ในขนาดเท่าเดิม (โดยประมาณ) โดยอาศัย fontconfig rule

การสังเคราะห์ฟอนต์นี้ ได้ไอเดียจากการสนทนากับเจ้าหน้าที่ SIPA (คุณภาคภูมิ) และถูกกระตุ้นอีกครั้งจากการพูดคุยกับ นิวตรอน (ใครบางคนบ่นผ่านเขามา) เพียงแต่ solution ของ SIPA นั้น น่าเป็นห่วงว่าจะเข้าใน distro ต่าง ๆ ไม่ได้ จึงหวังว่าการสังเคราะห์จากฟอนต์ที่เป็นซอฟต์แวร์เสรี จะช่วยให้ผู้ใช้ได้ใช้งานเร็วขึ้น

กฎที่ผมเขียนครั้งแรกทำงานได้ แต่เยิ่นเย้อ ได้ กำธร ยื่นมือช่วย ทำให้กฎกระชับขึ้น

ขณะนี้ สังเคราะห์ได้แค่ฟอนต์ Browallia เท่านั้น ส่วน Angsana นั้น รอเนคเทคช่วยดำเนินการทางกฎหมายเกี่ยวกับฟอนต์กินรี (ฟอนต์แห่งชาติลำดับที่ ๑) ซึ่งถ้าไม่ใช้เวลานานเกินไปนัก ก็อาจได้ใช้ภายใน Ubuntu hardy นี้ ก็ช่วยกันเชียร์เนคเทคกันนะครับ ^_^

หมายเหตุเกี่ยวกับฟอนต์กินรี: มีทางเลือกหนึ่งอยู่ คือ ฟอนต์ Angsima ของคุณ wd แต่ผมอยากได้ฟอนต์กินรีมากกว่าถ้าทำได้ เพราะได้ปรับแต่งมาค่อนข้างนานแล้ว รวมทั้ง ตัว Italic ที่ได้ทำเพิ่มไว้แล้วด้วย จะติดอยู่ก็แค่หัวข้อทางกฎหมายเท่านั้น ที่ทำให้ไม่สามารถ release ได้ แต่ถ้ารอไม่ไหวจริง ๆ ก็คงได้พึ่งพาคุณ wd ละ (แล้วมาเริ่มทำ italic กันใหม่)

รายการที่สอง คือการเพิ่ม TrueType Instruction (hint) ในฟอนต์ทุกตัว หลังจากที่ได้ใช้ Arundina เป็นหนูทดลองความสามารถใหม่ของ fontforge ไปแล้ว ผลที่ได้ยังไม่ถึงกับดีมาก แต่ก็ถือว่ายอมรับได้ ดังตัวอย่างฟอนต์ Loma 10pt:

Hinted Loma TTF

การเพิ่มครั้งนี้ ไม่ได้เพิ่มในแฟ้ม fontforge โดยตรง แต่ใช้วิธีสั่งผ่านสคริปต์อัตโนมัติขณะ generate เพราะการเพิ่มใน source ทำให้ edit ไม่สะดวก เมื่อติดปัญหา instruction outdated อยู่เรื่อย ๆ อีกทั้งเราก็ยังไม่สนใจจะ fine tune hint เองในตอนนี้

หลังจากลองใช้งานเองอยู่พักหนึ่ง โดยส่วนใหญ่ก็พอดูได้ แต่ดูเหมือนจะมีปัญหากับฟอนต์ตัวหนาบางฟอนต์อยู่ บางที ผู้ใช้บางท่านอาจเลือกปิด hint ก็ได้

ป้ายกำกับ: ,

15 พฤศจิกายน 2550

Arundina Font

ได้รับการติดต่อจาก SIPA เมื่อหลายเดือนก่อน ให้ทำ deb สำหรับฟอนต์ Arundina ที่ SIPA จ้างบริษัทแห่งหนึ่งทำ เพื่อใช้กับฟอนต์ DejaVu ทำเสร็จแล้ว ก็ import เข้า TLWG CVS เพื่อพัฒนาต่อให้เข้ากับ DejaVu จริง ๆ

ก่อนทำ: ใช้ Arundina Sans 10pt ซึ่งขนาดตัวอักษรจะเล็กจนอ่านไม่ออก ตามปกติของฟอนต์ไทยบนวินโดวส์

Arundina Sans 10 - Original

ต้องใช้ฟอนต์ขนาด 17pt ขนาดถึงจะใกล้เคียงกับ DejaVu Sans 10pt:

Arundina Sans 17 - Original

เริ่มทำ: scale ด้วยอัตราส่วน 173.6% (คำนวณจาก X-height ของ DejaVu Sans เทียบกับของ Arundina Sans) ปรากฏว่า TrueType hint เละ

Arundina Sans 10 - Scaled

ลอง clear instruction ดู ค่อยยังชั่วหน่อย

Arundina Sans 10 - Scaled, Unhinted

แล้วก็ใช้ auto instruction แบบ Nowakowski ใน fontforge รุ่นใหม่:

Arundina Sans 10 - Scaled, Autohinted

คิดว่าสวยงามพอสมควรเลยนะ ถ้าเทียบกับ fontforge รุ่นก่อน พอเทียบเคียงกับ hint เดิมในรูปที่สองได้

blog ให้ดูกันก่อน ถ้าโอเคผมก็จะ commit แล้วก็จะได้ทำอย่างอื่นกับฟอนต์ต่อไป เช่น ข้อมูล OpenType

ป้ายกำกับ:

12 พฤศจิกายน 2550

On Descenders of Yo Ying and Tho Than

ใน blog เรื่องต้นกำเนิดอักษรไทย เมื่อเดือนที่แล้ว bact' ได้พูดถึงหนังสือ "ศัพท์สันนิษฐานและอักษรวินิจฉัย" ของ จิตร ภูมิศักดิ์ ซึ่งรวมบทความเกี่ยวกับนิรุกติศาสตร์และอักษรศาสตร์ภาษาไทยของจิตร โดยมีบทความเรื่องที่มาของเชิงในพยัญชนะ ญ ฐ ของไทย ตอนนี้ เขาส่งหนังสือมาให้ผมอ่านแล้ว ขอบคุณครับ bact'

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

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

พูดถึงเชิงของ ญ ก่อน จิตร อธิบายว่าพยัญชนะเขมรมีสองส่วน คือส่วนรูปเต็มกับรูปเชิง ซึ่งรูปเต็มจะใช้เขียนบนบรรทัดปกติ ส่วนรูปเชิงจะใช้เขียน "สังโยค" ซ้อนใต้พยัญชนะเมื่อมีการควบกับพยัญชนะอื่นหรือเป็นตัวสะกด เช่น "รงฺค" เขียนเป็น "រង្គ" (ลงฟอนต์ภาษาเขมรเช่น ttf-khmeros ใน Debian/Ubuntu และใช้ Gecko รุ่น Gran Paradiso นะครับ Pango จะสามารถ render ภาษาเขมรได้) แต่สำหรับ ญ นั้น รูปร่างคือ ញ ซึ่งจะมีเส้นตวัดด้านล่างเป็นส่วนหนึ่งของพยัญชนะ จะต้องคงไว้เสมอ มิฉะนั้นจะสับสนกับพยัญชนะตัวอื่นได้ คือจะเหมือน "พา" (ពា) นอกจากนี้ รูป ญ ของอักษรขอมในช่วงพุทธศตวรรษที่ ๑๘-๑๙ ยังคล้ายกับตัว ณ (ណ) อีกด้วย โดยต่างกันที่ ญ มีเส้นตวัดด้านล่าง (ขออภัยที่ขี้เกียจวาดอักษรขอมโบราณลง blog) เส้นตวัดใต้อักษร ญ ในภาษาเขมรจึงสำคัญมาก

  • คนไทยหลังสมัยพ่อขุนรามคำแหงจึงรับเอานิสัยการเขียนเส้นตวัดใต้ ญ นี้มาใช้ในภาษาไทย โดยเริ่มปรากฏในศิลาจารึกสมัยพญาฦๅไทยซึ่งเป็นราชนัดดาเป็นอย่างช้า โดยไม่ทราบว่าในสมัยพญาเลอไทยราชโอรสนั้น เขียนเส้นตวัดใต้ ญ หรือยัง เนื่องจากไม่ปรากฏหลักฐานตัวเขียนของสมัยนั้นเลย
  • เส้นตวัดใต้ ญ นั้น เริ่มแรกคงตวัดจากขวามาซ้ายเหมือนเขมร แต่ต่อมาคนเขียนเขียนตามใจจนกลายเป็นซ้ายไปขวาแบบในปัจจุบัน
  • เหตุที่ไทยรับวิธีเขียนแบบเขมรมา ก็เข้าใจไม่ยาก ในเมื่ออักษรเขมรก็เป็นภาษาครูของอักษรไทยอยู่แล้ว อีกทั้งขณะนั้นเขมรมีอิทธิพลมากในภูมิภาคนี้ จารึกต่าง ๆ ยังต้องใช้ภาษาไทยปนเขมร เหมือน ๆ กับที่สมัยนี้ใช้ภาษาไทยปนอังกฤษกัน

แต่เมื่อจะสังโยคอักษรอื่นใต้อักษร ญ จะตัดเส้นตวัดล่างออกเพื่อไม่ให้รกรุงรัง เช่น "ปญฺจ" เขียนเป็น "បញ្ច" (ในอักษรขอมโบราณ จะเขียนอักษรเชิงโดยลากเส้นต่อเนื่องจากเส้นกลางของ ญ ที่ตัดเชิงแล้วลงมาด้วย)

  • ฉะนั้น จึงไม่น่าแปลกที่เวลาเราจะเขียนสระล่างใต้ ญ จึงต้องตัดเส้นตวัดออกก่อน เป็นธรรมเนียมที่รับมาจากภาษาเขมรนั่นเอง

ส่วนรูปเชิงของ ญ นั้น ในอักษรขอมโบราณจะตัดขีดหลังของ ញ ออก แล้วลากเส้นตวัดล่างให้สูงขึ้นมาทางซ้ายของอักษร ทำให้รูปร่างดูคล้ายเลข ๒ ไทยหางยาว โดยมีขยักด้านขวาอีกขยักหนึ่ง (ขี้เกียจวาดอีกแล้วครับท่าน) แต่นานเข้า ก็ค่อย ๆ หวัดจนเหลือแค่รูป ្ញ เช่นในคำว่า "ปฺราชฺญ" เขียนเป็น "ប្រាជ្ញ" (สังเกตว่ารูปเชิงของ ร จะตวัดขึ้นไปทางซ้าย และ ป (ប) เมื่อประสมกับสระอา (ា) จะเชื่อมรวมเป็น បា จากนั้น ตัว ជ ถัดมาคือ ช และขีดตวัดด้านล่างคือรูปเชิงของ ญ)

  • ตรงนี้ มีอิทธิพลต่อภาษาเขียนของไทยอยู่ระยะหนึ่ง โดยในการเขียนคำที่มี ญ การันต์ เช่น ปราชญ, สรรเพชญ ในสมัยก่อน จะใช้ขีดตวัดด้านล่างจากขวามาซ้ายแทน ญ เช่น ปราช្ញ สรรเพช្ញ (ขยับเส้นตวัดไปใต้ ช นะครับ) จนกระทั่งในบางครั้ง จะใช้ไปยาลน้อย (ฯ) แทนเส้นตวัด โดยไปเขียนไว้ด้านล่าง ช (ดูตัวอย่างได้ในหนังสือจินดามณี) คนสมัยหลังบางคนไม่เข้าใจการใช้ไปยาลน้อยแบบพิลึกนี้ จึงตัดไปยาลน้อยออกเสียดื้อ ๆ กลายเป็นตัวเขียนที่ขาด ญ ตรงท้ายไป เช่น ปราช สรรเพช ซึ่งผิด (ตัวอย่างเช่น มูลบทบรรพกิจของพระยาศรีสุนทรโวหาร (น้อย อาจารยางกูร) โดยมีตัวอย่างในภาคสังโยคภิธานเป็นอย่างน้อย)

สังเกตว่า เส้นตวัดล่างของ ញ นั้น เป็นส่วนหนึ่งของตัวอักษร เป็นคนละอย่างกับ ្ញ ที่เป็นรูปเชิงของ ญ

ปัญหาเกิดขึ้นเมื่อ ญ สังโยคกับ ญ ด้วยกัน เพราะเมื่อตัดเส้นตวัดใต้ ញ แล้วเติมรูปเชิง ្ញ ก็จะคล้าย ញ เดิมมาก วิธีแก้ของขอมโบราณมีหลายวิธีตามยุคสมัย เช่น สร้างอักษร ligature ใหม่แทน ญญ สังโยคเสีย (ขี้เกียจวาดอีก) บ้างก็ใช้วัญชการ (คล้ายทัณฑฆาตของไทย) กำกับ บ้างก็ตัดเส้นตวัดแล้วเติมเชิงเสียดื้อ ๆ ทำให้บางทีเข้าใจผิดว่าเป็น ญ ตัวเดียว แต่ภาษาเขมรปัจจุบันใช้รูปเชิงของ ญ พิเศษ เช่นในคำว่า "อญฺญ" เขียนเป็น "អញ្ញ" ซึ่งจะเห็นว่าเชิง ญ จะใช้รูปเหมือนรูปเต็ม

  • ตรงนี้ มีอิทธิพลต่อภาษาเขียนของไทยยุคหนึ่งเหมือนกัน คือรูปของเขมรที่ตัดเส้นตวัดแล้วเติมเชิงดื้อ ๆ ทำให้สับสนกับรูป ញ เต็ม โดยเข้าใจว่าใช้ ญ ตัวเดียวแทน ญญ ก็ได้ จึงมีรูปเขียนอย่าง "สญัา" แทน "สัญญา" อยู่พักหนึ่ง (อาจจะโดยจงใจใช้หลักตัดเส้นตวัดแล้วเติมเชิงก็ได้)

ทั้งหมดนี้ คือสิ่งที่จิตรค้นมาได้ ว่ารูป ญ ที่มีเส้นตวัดล่างหรือเชิง (ซึ่งความจริงเป็นคนละอย่าง แต่มีการใช้ปะปนกัน) มีที่ใช้ตรงไหนบ้างในภาษาไทย แต่ในปัจจุบัน ไม่เหลือการใช้เส้นตวัดในฐานะอักษรรูปเชิง (เช่น ในคำว่า ปราช្ញ สรรเพช្ញ สญัา) อีกแล้ว คงเหลือแต่เส้นตวัดล่างในฐานะส่วนหนึ่งของตัวอักษรเท่านั้น ซึ่งจิตรเห็นว่ารกรุงรัง แถมต้องคอยตัดเมื่อประสมกับสระล่าง ทำให้เกิดความลักลั่นอีกด้วย จิตรจึงเขียน ญ แบบไม่มีเส้นตวัดเสมอ รวมทั้ง ฐ แบบไม่มีเชิงด้วย

แต่อย่างที่บอกตอนต้น เรื่อง ญ นี้ยังพออยู่ในความคาดเดาของผมได้อยู่ เมื่อเทียบเคียงกับรูปอักษรเขมร แต่ ฐ ที่ใช้รูปเต็ม ឋ กับรูปเชิง ្ឋ ของอักษรเขมรมาซ้อนกัน โดยมีความหมายเหมือน ฐฐ นี่สิ น่าสงสัยมาก ๆ ว่ามีเหตุผลอะไร แต่น่าเสียดายที่ไม่มีใครมีต้นฉบับที่จิตรเขียนไว้ จึงไม่รู้ความคิดเห็นของจิตรเกี่ยวกับเรื่องนี้

ป้ายกำกับ:

02 พฤศจิกายน 2550

Khon Kaen Transit

วันนี้ตอนบ่ายมีเฮลิคอปเตอร์บินวนในตัวเมืองขอนแก่น เป็นการถ่ายภาพจำลองเหตุการณ์รถติดในระดับที่คล้ายที่กรุงเทพฯ ซึ่งมีแนวโน้มจะเกิดในไม่กี่ปีข้างหน้านี้ จากการประเมินความต้องการเดินทางที่เพิ่มขึ้นในแต่ละปี โดยเทียบเนื้อที่ถนนที่ใช้ ระหว่างรถยนต์ 80 คัน กับการเอาคนออกจากรถมาปั่นจักรยาน และกับเนื้อที่ที่รถเมล์ใช้ (ใช้รถทัวร์แทนรถเมล์แบบ BRT) พร้อมทั้งวัดระดับมลพิษเทียบกันให้เห็นจะจะ

จากนั้นเป็นการแถลงข่าวร่วมกันระหว่างเทศบาลนครขอนแก่น, สนข., สภอ. ขอนแก่น, และมหาวิทยาลัยขอนแก่น กับการจัดทำแผนแม่บท และศึกษาความเหมาะสมด้านวิศวกรรม เศรษฐกิจ และผลกระทบสิ่งแวดล้อมเบื้องต้น เพื่อก่อสร้างระบบขนส่งมวลชนเมืองขอนแก่น

เว็บไซต์ เขาก็มีนะครับ นับว่าขอนแก่นเป็นจังหวัดที่สอง ต่อจาก เชียงใหม่ ที่มีการศึกษาวางแผนสร้างระบบขนส่งมวลชนในภูมิภาค ตามอ่านทางเชียงใหม่ ดูเขาจะเลือกระบบ BRT (bus rapid transit) แบบที่จะทำที่กรุงเทพฯ ไปแล้ว ส่วนขอนแก่นเพิ่งออกสตาร์ท

นอกจากนี้ คงจะมีการรณรงค์ปรับเปลี่ยนพฤติกรรมการเดินทางของชาวเมืองด้วย เช่น ส่งเสริมการปั่นจักรยาน การเดินเท้าเท่าที่ทำได้ การใช้ขนส่งมวลชนให้มากขึ้น การเคารพกฎจราจร การเตรียมพื้นที่จอดรถ ฯลฯ ซึ่งเรื่องเหล่านี้ คงอยู่ในเนื้อหาที่จะถกกันในสภาเมือง

งานนี้น่าสนนะ เข้าแก๊ปเรื่องที่ผมสนใจเอามาก ๆ และนายกเทศมนตรีก็เลือกเอาภาวะน้ำมันแพง และการประเมินเชื้อเพลิงฟอสซิลหมดโลก มาเป็นจังหวะในการรณรงค์ได้เหมาะเจาะดี

ติดแต่ว่า ดูจะอ่อนประชาสัมพันธ์ไปไหม? ท่านแถลงข่าวจริงจังมาก แต่ผู้เข้าฟังมีแต่กลุ่มผู้นำชุมชนกับสื่อมวลชนเท่านั้น ทุกคนใส่เสื้อเหลืองกันหมด จนทำเอาชาวบ้านที่เดินผ่านไปผ่านมาไม่กล้านั่งดูนั่งฟังด้วย (แต่ผมด้านไปนั่งหัวโด่เสื้อไม่เหลือง ใครจะทำไม)

ได้แต่ฝากความหวังไว้กับสื่อมวลชนท้องถิ่นที่เข้าฟัง ว่าจะกระจายข่าวไปให้ทั่วถึง (และหวังว่าชาวบ้านจะยังติดตามข่าวท้องถิ่นอยู่ ไม่ใช่ดูแต่ทีวีกรุงเทพฯ) และหวังว่าระลอกต่อไป จะดูจริงจังกว่านี้

ป้ายกำกับ:

hacker emblem