แนวทางการออกแบบ และฟังก์ชั่นของระบบ
ระบบภาษาไทยบนลีนุกซ์จะถูกจัดแบ่งออกเป็นระดับ เป็นชั้นๆ โดยที่แต่ละชั้นจะต้อง
มีความเป็นอิสระจากกันมากที่สุด และสิ่งที่อยู่ในลำดับขั้นที่ต่ำกว่าจะนำมาใช้เพื่อ
เป็น resource ให้กับระบบในลำดับขั้นที่สูงกว่า
เนื่องจากการพัฒนาระบบภาษาไทยบนลีนุกซ์ในช่วงแรกนี้ จะทำการพัฒนาบนระบบ
Graphics ซึ่งจะต้องมีความสัมพันธ์กับระบบ X window โดยที่การแก้ไขหรือเพิ่มเติม
API ให้กับ X window จำเป็นจะต้องทำในระดับของ Xlib ทั้งนี้เนื่องจากตามโครงสร้าง
ของ X window นั้น Xlib จะเป็นโครงสร้างในระดับต่ำสุดของระบบ X window ที่
X clients จะใช้ทำการติดต่อกับระดับ X server
ในบางกรณีจำเป็นจะต้องมีการเพิ่มเติมส่วนขยายให้กับระบบของ Xlib ที่มีอยู่แล้ว
ทั้งนี้เนื่องจากการทำงานของระบบจะมีการเปลี่ยนแปลงเมื่อมีการใช้งานภาษาไทย เช่น
การแสดงผลนั้นจำเป็นจะต้องมีการปรับแต่ง ในส่วนนี้จำเป็นจะต้องทำส่วนขยาย
(extension) โดยผ่าน Hooking function
ระบบภาษาไทยจะมีฟังก์ชั่นในการทำงานดังต่อไปนี้
-
Level 1:
ในระดับนี้จะเป็นส่วนแกนของระบบ (CORE system) ซึ่งจะนำมาใช้เป็น resource
พื้นฐานของระบบ ได้แก่
-
การรับอินพุตจากคีย์บอร์ด (keyboard input)
-
ส่วนการแสดงผล
- normal ไม่มีการจัดระดับสระอย่างถูกต้อง (เป็นแบบ default)
- extra มีการดักการแสดงผลของสระ
-
การจัดการเกี่ยวกับฟอนต์ภาษาไทย ทั้ง bitmap, truetype, adobe
-
การจัดการรหัสภาษาไทย การแปลงรหัสต่างๆ และการใช้รหัสหลัก
ASCII, มอก., เกษตร, UNICODE
-
การพิมพ์ภาษาไทยออกทางพรินเตอร์ (ทั้งแบบ dot-matrix และ laser)
-
Level 2:
ในระดับนี้จะเป็นส่วนที่เกี่ยวกับฟังก์ชั่นไลบราลีหรือ API ที่เกี่ยวกับการจัด
การภาษาไทย (Thai API) เช่น
-
API สำหรับการ serching text : SearchStr
API สำหรับการเปรียบเทียบ string : StrCmp
API สำหรับการจัดลำดับ : Index, Soundex
API เกี่ยวกับตัวเลขภาษาไทย วันที่ เดือน ตัวเลข การตัดคำ
-
Level 3:
ส่วนของการจัดการและอินเทอร์เฟส ได้แก่
-
ระบบเมนูภาษาไทย
-
ระบบให้ความช่วยเหลือเป็นภาษาไทย (HELP)
-
ดิกชั่นนารีระบบ ไทย/อังกฤษ เอาไว้เป็น resource ของระบบเนื่อง
-
จากระบบภาษาไทยต้องการ dictionary เข้ามาช่วยเหลือในการ
ประมวลผล
-
การคอนฟิกข้อมูลภาษาไทย เช่น วันที่, ระบบเงินตรา, อื่นๆ
-
Level 4:
ส่วนของแอพพลิเคชั่นหลักภาษาไทย (Thai Applications) แอพพลิเคชั่นทั่วไป และ AI
แอพพลิเคชั่น
HTML developed by Kaiwal Development Team (kaiwal@geocities.com)