วันอาทิตย์ที่ 26 กรกฎาคม พ.ศ. 2569

ใช้ web browser นับคำไทย

เวลาเขียนนิยาย ไม่ว่าจะเป็นแบบรายตอนหรือทำ e-book เรามักจะดูจำนวนคำของแต่ละบท (หรือทั้งเล่ม) แต่สำหรับคนที่ใช้ Google Docs ในการทำงาน (หรือ Word for web) จะนับคำไทยไม่ได้ ทำให้ไม่รู้ว่าตอนนี้เขียนไปเท่าไหร่แล้ว (ปกติผมใช้ดูจำนวนหน้าเอา ไม่ได้สนใจจำนวนคำ)

โดยปกติฟีเจอร์นับคำจะมีอยู่ในโปรแกรม word processor (เช่น MS Word) ซึ่งถ้าเป็นโปรแกรมที่รองรับการทำงานภาษาไทย (สามารถตัดคำไทยได้) ก็จะนับคำไทยให้ด้วย

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

ตอนที่แปลนิยายจีน ผมจะใช้ Google Docs ในการพิมพ์งานเป็นหลัก เพราะสะดวกเวลาย้ายอุปกรณ์ทำงาน เมื่อตรวจทานเสร็จผมก็จะคัดลอกมาแปะเก็บในโปรแกรมเขียนนิยายที่ผมทำไว้ใช้เอง เพราะการค้นหาคำทำได้สะดวกกว่า เวลาส่งงานผมก็กด export ให้เป็นไฟล์ .docx ที่จัดหน้าตามที่ต้นสังกัดต้องการได้เลย

หลังจากทำโปรแกรมแพนแกรมไป จู่ๆ เกิดนึกสงสัยขึ้นมาว่า web browser มันนับคำไทยด้วย javascript ได้หรือเปล่า ก็เลยถาม ChatGPT และคำตอบที่ได้รับทำให้แปลกใจมาก นั่นคือทำได้!

ผมเข้าใจว่านี่เป็นอานิสงส์มาจากฟีเจอร์ตัดคำไทย (ที่ได้มาจากต้นน้ำของทาง Linux อีกที) ก็เลยให้ ChatGPT ช่วยเขียน html + javascript ออกมา


วันเสาร์ที่ 25 กรกฎาคม พ.ศ. 2569

แพนแกรม ชุดตัวอักษรไทย

เห็นฬ่อเฒ่าจูงทุยถือแฟ้มฤกษ์ศึกษา คำปฏิญญาของพิพิธภัณฑ์ประทับฐาน เพชฌฆาตผาดโผนไซ้ใส่ทวาร ก๋วยจั๊บฮาลาลฝึกฉลามสวมชฎาฯ

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

“เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญเข่นฆ่าบีฑาใคร

ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย ปฏิบัติประพฤติกฎกำหนดใจพูดจาให้ จ๊ะๆ จ๋าๆ น่าฟังเอยฯ”

หลายคนน่าจะเคยผ่านตากลอนบทนี้อยู่บ้าง มันก็คือแพนแกรมในภาษาไทยนั่นเอง

Pangram (แพนแกรม) คืออะไร? มันก็คือข้อความที่ใช้ตัวอักษรทุกตัวในภาษานั้นๆ มักนิยมแต่งประโยคในสั้นที่สุด ซึ่งก็เป็นความท้าทายของคนแต่งด้วยเช่นกัน

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

พอโตขึ้นมาถึงได้รู้ว่ามันคือประโยค The quick brown fox jumps over a lazy dog. ซึ่งก็คือหนึ่งในแพนแกรมภาษาอังกฤษนั่นเอง

วันอาทิตย์ที่ 12 กรกฎาคม พ.ศ. 2569

[Font] บันทึกแก้ไขฟอนต์ JS Jindara (ตอนที่หนึ่ง)

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

- JS-Jindara (fix) [v.1.3] คือฟอนต์ JS-Jindara ที่แก้ไขเรื่องตัวหนา/เอน และวรรณยุกต์ลอย (สระลอย) เท่านั้น

- Jindara [v.2.3] คือฟอนต์ที่ปรับขนาดให้ตัวใหญ่ตามมาตรฐานฟอนต์สมัยปัจจุบันและแก้ไขบางจุด (อ่านเพิ่มเติมในโพสต์)

▶️ ตอนที่ 2 / ตอนที่ 3

* * * * * * * * * *

ฟอนต์ JS-Jindara (เจเอส จินตหรา) ที่รังสรรค์โดยคุณหมอจิมมี่ ภาณุทัต เตชะเสน (เขียนโปรแกรม) กับคุณแสวง ตันติราพันธ์ (ออกแบบอักขระ) ซึ่งในปัจจุบันทางเจ้าของลิขสิทธิ์ (บริษัท 315 จำกัด ปัจจุบันปิดไปแล้ว) ได้ยกให้เป็นสมบัติสาธารณะ (Public Domain) ที่ใช้งานได้ฟรีภายใต้สัญญาอนุญาต GPL v2 โดยไม่มีการเรียกเก็บค่าใช้งานใดๆ ทั้งสิ้น (รวมถึงฟอนต์ตระกูล JS ตัวอื่นๆ ด้วย)

ฟอนต์ JS-Jindara นี้ เป็นฟอนต์ที่มีหลายคนนิยมใช้สำหรับทำหนังสือ/เอกสาร แต่ด้วยความที่เป็นเทคโนโลยีเก่า จึงมีปัญหาการแสดงผลกับโปรแกรมและระบบปฏิบัติการในยุคปัจจุบันอยู่บ้าง

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

วันพฤหัสบดีที่ 2 กรกฎาคม พ.ศ. 2569

ติดตั้ง+ลบฟอนต์ บนลินุกซ์

การติดตั้งฟอนต์บนลินุกซ์นั้นสามารถทำได้ง่ายๆ ไม่ต่างจาก Windows นั่นคือคลิกไฟล์ .ttf หรือ .oft แล้ว (หรือคลิกขวา) จะมีคำสั่งให้ติดตั้งฟอนต์ได้เลย

ฟอนต์ที่ติดตั้งลงไป จะอยู่ในตำแหน่งเก็บฟอนต์ของผู้ใช้งานคนนั้น ซึ่งจะอยู่ในโฟลเดอร์

 ~/.local/share/fonts/

หากต้องการติดตั้งแบบทำให้ผู้ใช้ทุกคนสามารถใช้งานได้ ให้ติดตั้งลงในโฟลเดอร์

/usr/share/fonts

จากนั้นอัปเดตแคชด้วยคำสั่ง

fc-cache -fv


การลบฟอนต์ออกจากระบบ ผมยังไม่เจอวิธีการอื่น ต้องเข้าไปลบในโฟลเดอร์ด้านบนด้วยตัวเอง แล้วก็อัปเดตแคช เป็นอันเสร็จสิ้น