Theppitak's blog

My personal blog.

25 มีนาคม 2554

LibThai 0.1.15

LibThai 0.1.15 ออกไปแล้วเมื่อวานนี้ รุ่นนี้ไม่มีการเปลี่ยนแปลงในส่วนโค้ด มีแต่การปรับข้อมูลพจนานุกรมที่ใช้ตัดคำตามปกติ

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

ส่วนเรื่องการเพิ่มคำใหม่ ผมจะคอยสังเกตคำใหม่จากแหล่งต่าง ๆ แล้วเพิ่มคำเข้าในพจนานุกรมอยู่เรื่อย ๆ เพื่อให้ libthai รู้จักคำกว้างขวางขึ้น หาขอบเขตของคำได้ถูกต้องยิ่งขึ้น รวมทั้งลดจำนวนการ recover เมื่อพบคำที่ไม่อยู่ในพจนานุกรม ทำให้ใช้เวลาตัดคำน้อยลงด้วย

แหล่งข้อมูลที่ผมได้มาก็เช่น:

  • ข่าวประจำวันในหนังสือพิมพ์ ทั้งออนไลน์และออฟไลน์ (ส่วนใหญ่จะออนไลน์) ทำให้ได้ศัพท์การเมือง ชื่อเมืองในข่าวต่างประเทศ ศัพท์ธุรกิจ ชื่อยี่ห้อสินค้า ศัพท์แฟชั่น วงการบันเทิง ไลฟ์สไตล์
  • เว็บต่าง ๆ ในอินเทอร์เน็ต
  • หัวข้อสนทนาใน social network จะพบคำในสาขาต่าง ๆ ที่หลากหลาย และจากคำเสนอแนะเพิ่มเติมของเพื่อน ๆ
  • อีเมลส่วนตัว เช่น เพื่อนบางคนเปิดเบเกอรี่ ก็จะพูดถึงรายการขนมต่าง ๆ ทำให้ได้ชื่อขนมใหม่ ๆ มาเรื่อย ๆ แม้เจ้าตัวก็ยังไม่รู้ ว่ากำลังช่วยพัฒนา libthai อยู่ :-)
  • ป้ายสินค้า ฉลากสินค้า ป้ายร้าน ป้ายโฆษณา ฯลฯ

พูดง่าย ๆ คือ แทบทุกอย่างรอบตัวสามารถเป็นแหล่งข้อมูลให้ libthai ได้ แต่การจะเพิ่มคำเข้าในพจนานุกรม ก็จะต้องมีการกลั่นกรองเสียก่อนว่าคุ้มหรือไม่ บางคำเป็นคำที่ใช้เฉพาะกลุ่มมาก ๆ ก็ยังไม่เพิ่ม คำที่มีตัวสะกดหลากหลายก็จะพยายามเพิ่มคำที่เป็นมาตรฐานไว้ก่อน โดยมีสมมุติฐานว่าโอกาสที่ผู้คนจะสะกดตรงตามมาตรฐานมีมากกว่าแบบย่อย ๆ ที่แต่ละคนสะกดแบบของตัวเอง แต่ถ้ามีการสะกดผิดจากมาตรฐานไปในทางเดียวกันมากพอก็จะเพิ่มแบบย่อยที่มีความถี่สูงสุดอันดับต้น ๆ ไว้ โดยตัดสินจากการใช้ search engine ตรวจสอบจำนวนเอกสารที่พบ

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

ความจริงยังมีแผนบางอย่างในการปรับโครงสร้างโค้ดของ libthai เหมือนกัน แต่ต้องหาเวลาว่างให้ได้ก่อน ที่ผ่านมาก็มีงานอื่นมากแทรกมากมายนับตั้งแต่ MiniDebCamp 2010 เป็นต้นมา ทำให้ร้างราจากการทำงานกับซอฟต์แวร์ที่ LTN มาเป็นแรมปี รวมถึงกับ Debian เองด้วย blog ก็เขียนน้อยลงมาก นี่เดี๋ยวก็ต้องกลับไปเร่งงานที่รับมาแบบกึ่ง full-time ต่อ แต่ขอออก thaifonts-arundina อีกตัวให้เสร็จก่อน

ป้ายกำกับ:

21 มีนาคม 2554

ThaiLaTeX 0.4.5

ถัดจาก swath 0.4.1 ก็เป็น ThaiLaTeX 0.4.5 เป็นการรวมสิ่งที่เปลี่ยนแปลงในช่วงหนึ่งปีครึ่งที่ผ่านมา

สิ่งที่เด่นที่สุดในรุ่นนี้ก็คงเป็นเรื่อง การรองรับข้อความภาษาบาลี-สันสกฤต ด้วยคำสั่ง \textpali{} โดยความสามารถที่สำคัญก็คือการใช้ ญ ฐ ที่ไม่มีเชิง และนอกจากนี้ก็ยังรองรับการใช้นิคหิตบนสระอิ ซึ่งหนังสือสวดมนต์หลายเล่มจำเป็นต้องเลี่ยงไปใช้สระอึแทน เช่น สีเลน นิพฺพุตึ ยนฺติ (อ่านว่า สีเลนะ นิพพุติง ยันติ ไม่ใช่ สีเลนะ นิพพุตึ ยันติ) แต่ใน ThaiLaTeX จะสามารถพิมพ์เป็น สีเลน นิพฺพุติํ ยนฺติ ได้เลย

ความสามารถนี้ ใช้การได้ทั้งกับเอกสาร UTF-8 และ TIS-620 โดยถ้าเป็น TIS-620 จะต้องใช้แพกเกจ inputenc ประกอบด้วย

การใช้ภาษาบาลี-สันสกฤตใน ThaiLaTeX ควรใช้ร่วมกับ swath 0.4.1 ขึ้นไป ซึ่งได้แก้บั๊กเกี่ยวกับคำบาลี-สันสกฤตแล้ว

นอกจากการใช้ภาษาบาลี-สันสกฤต ก็มีการแก้บั๊กจิปาถะที่ผมพบในระหว่างเตรียมเอกสารในโอกาสต่าง ๆ เช่น การวางทันฑฆาตและนิคหิตบน ป ปลา ซึ่งผมพบระหว่างเตรียมสไลด์งาน OSSFest 2010 เมื่อเดือนตุลา การปรับคำแปลของหัวข้อ "References" จาก "หนังสืออ้างอิง" เป็น "เอกสารอ้างอิง" ซึ่งน่าจะเหมาะกว่า เพราะบางครั้ง reference ก็เป็นบทความหรือหน้าเว็บ

ได้อัปโหลดขึ้นที่ CTAN แล้ว รอผู้ดูแลตรวจสอบสักพักคงได้เข้า ส่วนที่ Debian ก็ได้อัปโหลดแพกเกจไปแล้วเช่นกัน อาจจะต้องรอสักหน่อยเพราะขณะนี้ FTP-master ของ Debian มีปัญหาขัดข้องบางประการ

ป้ายกำกับ:

20 มีนาคม 2554

swath 0.4.1

ตามแผนการที่ได้พูดถึงใน ท้าย blog thaifonts-scalable 0.4.15 ก็มาถึงคิวของ swath ซึ่งขอเปลี่ยนลำดับให้ออกก่อน ThaiLaTeX เพื่อเป็นการเตรียม tool ให้เรียบร้อยก่อน พอ ThaiLaTeX ตัวใหม่มาถึง ผู้ใช้จะได้ใช้ภาษาบาลี-สันสกฤตได้ทันที ประกอบกับจะได้ใช้ swath ตัวใหม่ในการ build เอกสารทดสอบของ ThaiLaTeX ตัวใหม่ด้วย

หลังจากไม่ได้อัปเดตมาถึง 2 ปี swath 0.4.1 ก็มีการเปลี่ยนแปลงเพียงเล็กน้อยในแง่ความสามารถของโปรแกรม คือ:

  • แก้บั๊กเรื่องการตัดคำเมื่อเจอคำบาลีที่ใช้นิคหิตบนสระอิ เช่น กิสมิํ ซึ่ง swath ตัวเก่าจะตัดคำระหว่าง "มิ" กับนิคหิต ซึ่งไม่ถูกต้อง ในรุ่นนี้ได้แก้ไขบั๊กนี้แล้ว รวมทั้งได้แก้บั๊กเดียวกันสำหรับพินทุ ยามักการ และลากข้างยาวด้วย
  • เพื่อให้ผู้ใช้เปลี่ยนพจนานุกรมที่ใช้ตัดคำได้สะดวกขึ้น ก็ได้เปลี่ยนพฤติกรรมของตัวเลือก -d ซึ่งเดิมจะใช้กำหนดไดเรกทอรีที่บรรจุแฟ้มพจนานุกรมของ swath ให้เป็นที่อื่น ก็เปลี่ยนให้มากำหนดเป็นแฟ้มได้ด้วย เนื่องจากหลังจากที่เปลี่ยนมาใช้ libdatrie 0.2 ซึ่งสามารถเก็บข้อมูล trie ทั้งตัวในแฟ้มเดียวได้ ก็ไม่จำเป็นต้องระบุเป็นไดเรกทอรีเหมือนเดิมอีกแล้ว สามารถระบุแฟ้มของ trie ได้เลย ดังนั้น สมมุติว่าคุณอยากเปลี่ยนไปใช้พจนานุกรมของ libthai ในการตัดคำแทนของ swath เอง ก็เพียงสั่งดังนี้:
    $ swath -d /usr/share/libthai/thbrk.tri -f latex < in.tex > out.tex
    
    หรือจะกำหนดตัวแปรสภาพแวดล้อมชื่อ SWATHDICT แทนก็ได้ (ในรุ่นเก่าจะใช้ตัวแปร WORDSEGDATA ซึ่งอิงชื่อโปรแกรมสมัยเริ่มแรกก่อนที่จะเปลี่ยนชื่อเป็น swath รุ่นนี้จึงขอเปลี่ยนชื่อ) เช่น:
    $ export SWATHDICT=/usr/share/libthai/thbrk.tri
    $ swath -f latex < in.tex > out.tex
    

นั่นคือสิ่งที่เห็นภายนอก ส่วนโค้ดภายในก็ได้ทำความสะอาดโค้ด ลดการทำงานที่ไม่จำเป็นลงบ้าง แต่ไม่ได้ปรับอะไรใหญ่โตมากนัก เนื่องจาก swath เป็นโค้ดที่ค่อนข้างเปราะบาง แก้ไปแล้วมีโอกาสพังสูง (เคยพังมาแล้วในรุ่น 0.3.2) จึงต้องค่อย ๆ แก้ไปทีละนิดละหน่อย พร้อมกับมีการทดสอบทุกขั้นตอนที่แก้ ว่ายังทำงานปกติดีหรือเปล่า :-P รุ่นนี้หากพบ regression ก็กรุณาแจ้งผมโดยทันทีครับ

ป้ายกำกับ: ,

17 มีนาคม 2554

ThaiLaTeX tis620 inputenc and Pali-Sanskrit

จากที่ได้ เพิ่มการรองรับภาษาบาลี-สันสกฤตใน ThaiLaTeX ไปเมื่อปีกลาย ปรากฏว่าตอนนั้นได้ทดสอบกับแค่เอกสารที่เป็น UTF-8 เท่านั้น (pali-sample.tex และ PDF ผลลัพธ์) แต่เมื่อได้ทดสอบกับเอกสารที่เป็น TIS-620 ก็ปรากฏว่า กฎการตัดเชิง ญ ฐ ไม่ทำงาน!

สาเหตุก็คือ กฎที่ใช้ตัดเชิง ญ ฐ นั้น ผมใช้การแปลงอักขระโดยอ้างผ่านโทเคน เช่น \thaiYoYing ไม่ใช่ผ่านอักขระเป็นไบต์ ๆ โดยตรง ซึ่งตรงนี้สำคัญสำหรับการรองรับรหัสอักขระมากกว่าหนึ่งรูปแบบ คือ TIS-620 และ UTF-8 โดยเป็นหน้าที่ของแพกเกจ inputenc ที่จะแปลงกระแสข้อมูลของเอกสารให้เป็นโทเคนอักขระ แล้วการประมวลผลอักขระต่อจากนั้นจึงอยู่ในรูปโทเคนที่ไม่ขึ้นกับรหัสอักขระอีกที

ปัญหาคือ แต่เดิมในสมัยที่ใช้ TIS-620 กันนั้น เราไม่เคยจำเป็นต้องใช้แพกเกจ inputenc กันเลย เนื่องจาก LaTeX จะอ่านข้อมูลทีละไบต์เสมือนหนึ่งเป็น ASCII แล้วส่งไบต์เหล่านั้นผ่านระบบฟอนต์ไปวาดจนได้เอกสารออกมา แต่ถ้าเราจะประมวลผลอักขระกลางทางใน LaTeX แบบที่ทำกับภาษาบาลี-สันสกฤตนี้ ก็คงต้องทำในเทอมของโทเคนอักขระ โดยอาศัยแพกเกจ inputenc ช่วย เหมือนกับภาษาอื่นทั่วไป

ดังนั้น ผมจึงได้สร้างข้อกำหนดสำหรับรหัสอักขระ tis620 เพื่อใช้กับแพกเกจ inputenc เพิ่มใน ThaiLaTeX นี้ ทำให้ตอนนี้เกิดความสมดุลระหว่างการใช้รหัส TIS-620 กับ UTF-8 ในเอกสาร LaTeX โดยถ้าใช้ UTF-8 ก็จะประกาศแบบนี้ (ตามที่ได้เคยบอกไว้เมื่อตอนเพิ่มการรองรับ UTF-8 ใน ThaiLaTeX):

\usepackage[utf8x]{inputenc}

ส่วนถ้าจะใช้ TIS-620 ก็ประกาศแบบนี้:

\usepackage[tis620]{inputenc}

มีแฟ้มตัวอย่าง pali-sample-tis.tex และ PDF ผลลัพธ์

สำหรับตอนนี้ การใช้แพกเกจ inputenc กับเอกสาร TIS-620 จะจำเป็นสำหรับการใช้ภาษาบาลี-สันสกฤตเท่านั้น เอกสารเก่าที่ยังไม่ได้ใช้คำสั่ง \textpali{} ก็ไม่จำเป็นต้องประกาศ แต่ความจริงแล้ว ถ้าจะทำให้ถูกหลักปกติของ LaTeX ก็ควรประกาศไว้ก่อน ถ้าเกรงว่าจะไปคอมไพล์ใน ThaiLaTeX รุ่นเก่าในระบบอื่นไม่ผ่าน ก็อาจจะชะลอไปก่อน จนกว่าคนอื่น ๆ จะใช้รุ่นใหม่ตาม

ตัวเลือก tis620 ใน inputenc นี้จะเริ่มมีผลใน ThaiLaTeX รุ่นหน้าที่จะออกในไม่กี่วันนี้ครับ

ป้ายกำกับ: ,

16 มีนาคม 2554

ThaiFonts-Scalable 0.4.15

ThaiFonts-Scalable 0.4.15 ออกแล้ว โดยในรุ่นนี้เป็นการแก้ไขฟอนต์ Garuda เพิ่มเติมจาก ที่ทำไปใน 0.4.14 โดยปรับช่องไฟของตัว accent ของละตินให้เท่ากับตัวอักษรปกติ

0.4.14:

Garuda Bold accents in 0.4.14

0.4.15:

Garuda Bold accents in 0.4.15

เรื่องถัดมาคือแก้บั๊กในฟอนต์ภูริสา 2 รายการ

รายการแรกได้รับรายงานจาก Ubuntu ใน LP #680464 คือภูริสาจะกำหนดกฎ ligature ที่จะแสดง "TM" ด้วยรูปหน้าหญิงสาว ซึ่งเข้าใจว่าจุดประสงค์เริ่มแรกของผู้สร้างฟอนต์คือต้องการแสดงสัญลักษณ์ของฟอนต์ แต่ปัญหาคือ ในข้อความปกติที่มีตัว T กับ M ติดกัน เช่น "ATM" ฟอนต์ภูริสาจะแสดงผิดเป็นตัว A กับหน้าหญิงสาว ดังนั้น จึงตัดกฎ ligature นี้ออก

รายการถัดมาได้รับรายงานจาก Debian ใน Debian #608134 เมื่อผู้ใช้นำฟอนต์ภูริสาแบบ Type 1 ไปใช้ แล้วปรากฏว่ามันแสดงตัว "S" พิมพ์ใหญ่เป็น "ú" เมื่อตรวจสอบดูก็พบว่าชื่อโพสต์สคริปต์ของ glyph uacute มันผิดอยู่ โดยเป็นชื่อ "S" ทำให้เมื่ออ้างชื่อ "S" มันไปได้ glyph ของ uacute มาวาดแทน ก็เพียงแก้ชื่อให้ถูกเสีย

อีกรายการเล็ก ๆ ก็คือ ตัด RPM spec ออกจาก source tree เสีย เนื่องจากข้อมูลเก่ามากแล้ว ไม่มีการดูแลมาถึง 7 ปี อีกทั้งใน Fedora ก็มีแพกเกจฟอนต์อยู่แล้ว จึงควรใช้ของ Fedora ไปจะดีกว่า

ตอนนี้ upload ขึ้น Debian sid แล้วครับ รอพบได้ที่ mirror ใกล้บ้านท่าน

ถัดจากตัวนี้ ผมก็มีคิวจะออกแพกเกจต่าง ๆ ใน LTN ตามลำดับดังนี้:

  1. ThaiLaTeX (ปรับรุ่นฟอนต์ + การรองรับภาษาบาลี-สันสกฤต)
  2. swath (แก้บั๊กเรื่องการตัดคำเมื่อพบคำบาลี-สันสกฤต)
  3. LibThai (ปรับข้อมูลพจนานุกรมตัดคำ)
  4. ThaiFonts-Arundina (รายการแก้ไขสะสมมา 3 ปี)
  5. (อาจจะ) scim-thai (รายการแก้บั๊กของระบบ build เล็กน้อย)

โดย ThaiLaTeX กับ swath อาจจะออกไล่เลี่ยกัน เพื่อให้ความสามารถเรื่องการรองรับภาษาบาลี-สันสกฤตใช้การได้ แพกเกจทั้งสองนี้มี RPM spec มาในซอร์สเหมือนกัน คิดว่าจะตัดออกเหมือนกัน เว้นเสียแต่ว่ายังมีใครต้องการใช้และอาสาช่วยดูแลครับ

ป้ายกำกับ: ,

14 มีนาคม 2554

Thanks

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

ป้ายกำกับ:

08 มีนาคม 2554

Thai Languages & Scripts

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

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

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

อย่างไรก็ดี ในบรรยากาศที่เจ้าตำรามาเองเช่นนี้ การยอมรับหลักฐานอื่นย่อมต้องมีน้ำหนักที่มากพอ อย่าว่าแต่ผมซึ่งเพิ่งเริ่มศึกษาได้ไม่นาน แต่จากหัวข้อการประชุมเรื่อง romanization ก็ทำให้ผมไม่ได้คิดเตรียมเอกสารประกอบอะไรไป เมื่อไปพบประเด็นที่ร่างปัจจุบันยังไม่ครอบคลุม ก็ทำให้ไม่สามารถเสนอเพิ่มได้ คือเรื่องตัว ด สะกด และ บ สะกด ในอักษรไทยน้อย แต่ อ.ธวัช ก็ได้อธิบายให้ฟังว่า นี่เป็นการยืม ส สะกด และ ป สะกด ของอักษรธรรมมาใช้สำหรับบางคนเท่านั้น และไม่มีความจำเป็นต้อง encode ส่วน เอกสารของครูวัฒน์ นั้น ยังถือว่าอ่อนเกินไป จนกว่าจะมีหลักฐานมารองรับ

เพราะฉะนั้น จึงมีอักขระที่ต้อง encode เพิ่มอีก 4 ตัวเท่านั้น คือ น เฟื้อง, ม เฟื้อง, ล เฟื้องแบบหางยาว และสระออย ส่วน ด สะกด และ บ สะกด นั้น ถือว่าหลักฐานอ่อน ตกไป

ในวันเดียวกันนั้น ก็ได้มีการประชุมอีกนัดหนึ่ง เกี่ยวกับเรื่องการใช้อักษรไทยเขียนภาษามลายูปาตานี ซึ่งถือว่าอยู่คนละมิติกับการประชุมเรื่องอักษรไทยน้อย ในขณะที่การใช้อักษรไทยน้อยเป็นเรื่องของอักษรภาษาเขียนอีกชุดหนึ่งที่ใช้เขียนภาษาไทย-ลาว แต่การประชุมนี้จะพูดถึงการใช้อักษรไทยในการเขียนภาษาอื่นที่ไม่ใช่ภาษาไทย ซึ่งจะต้องมีการประดิษฐ์อักขรวิธีเพิ่มเติมเพื่อเขียนเสียงที่ไม่มีในภาษาไทย ซึ่งคณะกรรมการชุดหลังนี้ มีสถาบันวิจัยภาษาและวัฒนธรรมเอเชีย ม.มหิดล เป็นแม่งาน

การทำงานกับภาษาเช่นนี้ ทำให้เห็นภาพที่ชัดเจนของการแบ่งแยกออกจากกันระหว่างภาษา (language) กับอักษร (script)

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

วันถัดมา อ. Kirk Person จาก SIL ได้ชวนผมไปเยี่ยม สถาบันวิจัยภาษาและวัฒนธรรมเอเชีย ด้วยกัน ซึ่ง อ. เองเป็นแขกของสถาบันอยู่แล้ว ทำให้ผมมีโอกาสได้เรียนรู้จาก ดร.มยุรี ถาวรพัฒน์ เกี่ยวกับ ศูนย์การศึกษาและฟื้นฟูภาษาและวัฒนธรรมในภาวะวิกฤติ ซึ่งได้ทำงานกับภาษาชาติพันธุ์ต่าง ๆ ในประเทศไทย และทำเป็นแผนที่ภาษาขึ้น ตัวแผนที่ยังไม่ได้เผยแพร่ในอินเทอร์เน็ต แต่มีการจัดพิมพ์เป็นรูปเล่ม ซึ่งผมได้ดูแล้วก็ตื่นตาตื่นใจมากที่ได้ทราบว่า ประเทศไทยที่เราเคยทึกทักเอาว่าประชากรพูดภาษาไทยทั้งประเทศ หรือจะมีภาษาอื่นมาแซมบ้างก็เป็นแค่ภาษาจีน เขมร และมลายู กลับมีความหลากหลายของภาษาชาติพันธุ์ต่าง ๆ ถึงกว่า 70 ภาษากระจายตัวอยู่ทั่วประเทศ!

ภาษาพูดในประเทศไทยสามารถจำแนกได้เป็น 5 กลุ่มใหญ่ ๆ

  1. ภาษาตระกูลไท ได้แก่ ภาษาไทย ลาว ไทดำ คำเมือง ผู้ไท เป็นต้น
  2. ภาษาตระกูลออสโตรเอเชียติก (มอญ-เขมร) ได้แก่ ภาษากูย/ส่วย ขมุ เขมร ชอง ซาไก ญัฮกุร บรู/ข่า ปะหล่อง มอญ ละเวือะ/ละว้า/ลัวะ เวียดนาม เป็นต้น
  3. ภาษาตระกูลจีน-ทิเบต ได้แก่ ภาษาก๋อง กะเหรี่ยง คะฉิ่น จีน จีนฮ่อ (ยูนนาน) บิซู พม่า มูเซอ ลีซอ อาข่า อึมปี เป็นต้น
  4. ภาษาตระกูลออสโตรเนเชียน (มาลาโยโพลิเนเซียน) ได้แก่ ภาษามลายู มอเก็น อูรักละโว้ย เป็นต้น
  5. ภาษาตระกูลม้ง-เมี่ยน ได้แก่ ภาษาม้ง เมี่ยน (เย้า)

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

การใช้อักษรไทยเขียนภาษาที่ไม่ใช่ภาษาไทย ก็จำเป็นต้องมีการประดิษฐ์อักขรวิธีเพิ่มเติมเพื่อแทนเสียงที่ไม่มีในภาษาไทย แต่ปัญหาก็คือ มาตรฐานภาษาไทยในคอมพิวเตอร์ปัจจุบัน จะอ้างอิงกับ วทท 2.0 (ต่อมาคือ มอก. 1566-2541) ที่รองรับเฉพาะภาษาไทยเท่านั้น และจะกรองอักขรวิธีที่ไม่ใช่ภาษาไทยออกไป ทำให้แสดงผลภาษาชาติพันธุ์เหล่านี้ไม่ได้ รวมถึงการป้อนข้อความก็จะกรองออกด้วย

ตัวอย่างอักขรวิธีพิเศษที่ วทท 2.0 ไม่รองรับ:

  • ภาษาเขมรถิ่นไทย (สุรินทร์):
    • ปั็วฮฺ (ไม้ไต่คู้เหนือไม้หันอากาศ)
    • ทฺ็อง (ไม้ไต่คู้พร้อมพินทุ)
    • เปฺิ็ว (สระอิพร้อมพินทุ, ไม้ไต่คู้เหนือสระอิ)
  • ภาษาช์อง (จันทบุรี):
    • ม็่อง (ไม้เอกเหนือไม้ไต่คู้)
    • การใช้ทัณฑฆาตเป็นวรรณยุกต์ ซึ่งอาจใช้ไม่ได้กับสระบางตัว
  • ภาษาไทดำ:
    • การใช้ยามักการเป็นวรรณยุกต์ ซึ่งอาจใช้ไม่ได้กับสระบางตัว
  • ภาษาญัฮกุร [อ่านว่า ญะกุ้น] (ชัยภูมิ):
    • เติ็ง (ไม้ไต่คู้เหนือสระอิ)
  • ภาษาอึมปี้ (บ้านดง):
    • การใช้ยามักการเป็นวรรณยุกต์ที่ 6 ซึ่งอาจใช้ไม่ได้กับสระบางตัว
    • การใช้สระอาพิเศษ ปัจจุบันใช้ขีดขวางเพิ่ม แต่อาจเปลี่ยนเป็นประพินทุใต้สระอาแทน ซึ่งไม่ว่าวิธีไหน วทท 2.0 ก็ไม่รองรับ
  • ภาษาละเวือะ:
    • การใช้ ' เป็น pre-glottalized (อาจต้องเลือกอักขระยูนิโค้ดเพื่อการนี้)
  • ภาษาละว้า (สุพรรณบุรี):
    • เฺ (สระเอประพินทุ เป็นเสียง เอย์)
  • ภาษาขมุ:
    • เอิ็- (สระเออะลดรูปแบบเสียงสั้น)
  • ภาษามลายูปาตานี:
    • ประพินทุใต้พยัญชนะเพื่อสร้างเสียงพยัญชนะใหม่
    • ขีดเส้นใต้พยัญชนะเพื่อสร้างเสียงพยัญชนะใหม่
    • ประพินทุใต้สระเพื่อสร้างเสียงสระใหม่ (รวมถึงสระบน-ล่างด้วย)
    • ใช้ tilde (~) บนพยัญชนะเพื่อสร้างสระนาสิก

เห็นได้ว่า หากจะรองรับภาษาเหล่านี้ ก็จำเป็นต้องแก้ไข วทท และเราได้เคยมีการอภิปรายเรื่อง WTT 3.0 กันไปเมื่อปี 2551 แต่ได้เงียบไป และเมื่อไปคุยกับคนยูนิโค้ดเกี่ยวกับอักษรไทยทีไร เขาก็อ้างภาษาชาติพันธุ์เหล่านี้มาโดยตลอด ทำให้เราไม่สามารถอ้าง วทท 2.0 ซึ่งครอบคลุมเฉพาะภาษาไทยได้อีกต่อไปแล้ว เมื่อได้มาเห็นการใช้งานจริงอย่างนี้ ก็ทำให้ผมตระหนักได้ว่า ถึงเวลาปัดฝุ่นโครงการ วทท 3.0 กันแล้วกระมัง?

ป้ายกำกับ:

hacker emblem