Thai patch for a2ps
a2ps
a2ps เป็นโปรแกรมสำหรับแปลงเท็กซ์ไฟล์ให้เป็น postscript เพื่อที่จะส่งต่อให้เครื่องพิมพ์ต่อไป. a2ps ใช้ได้กับอักขระ 8 บิตเช่น ISO-8859-1, ISO-8859-2, ฯลฯ. แต่ไม่สนับสนุนการใช้ภาษาไทย. เนื่องจากอักขระไทยใช้รหัสแบบ 8 บิตเช่นกันจึงเกิดความคิดที่จะทำ Thai patch สำหรับ a2ps ขึ้น.ความต้องการพื้นฐาน
- รหัสต้นฉบับ a2ps. ในที่นี้ใช้รหัสต้นฉบับ a2ps-4.13b.tar.gz
- Patch สำหรับการสนับสนุนภาษาไทย: a2ps-4.13.patch.gz
สร้าง a2ps ภาษาไทย
สมมติดาว์นโหลด a2ps-4.13.patch.gz และ a2ps-4.13b.tar.gz ไว้ในไดเรกทอรีเดียวกัน. ให้สั่งคำสั่งตามตัวอย่างดังนี้$ gunzip a2ps-4.13.patch.gz $ tar xzf a2ps-4.13b.tar.gz $ cd a2ps-4.13 $ patch -p1 < ../a2ps-4.13.patch patching file afm/Makefile.in patching file afm/pgrd.afm patching file afm/pgrdb.afm patching file afm/pgrdbo.afm patching file afm/pgrdo.afm patching file afm/pnrs.afm patching file afm/pnrsb.afm patching file afm/pnrsbo.afm patching file afm/pnrso.afm patching file encoding/encoding.map patching file encoding/Makefile.in patching file encoding/tis620.edf patching file fonts/Makefile.in patching file fonts/pgrdbo.pfa patching file fonts/pgrdb.pfa patching file fonts/pgrdo.pfa patching file fonts/pgrd.pfa patching file fonts/pnrsbo.pfa patching file fonts/pnrsb.pfa patching file fonts/pnrso.pfa patching file fonts/pnrs.pfa patching file lib/caret.h patching file lib/encoding.c patching file lib/options.c patching file lib/psgen.c patching file README.thai $ ./configure --with-encoding=tis-620 --with-shared $ make $ su # make installหลังจากที่ make install แล้วโปรแกรมจะอยู่ใต้ไดเรกทอรี /usr/local/bin. โดยปรกติดิสทริบิวชันทั่วไปจะมี a2ps มาด้วยอยู่ใต้ /usr/bin.
ทดสอบและใช้งาน
ผู้ใช้ต้องเตรียมเท็กซ์ไฟล์ภาษาไทยที่มีรหัสเป็น TIS-620 หรือดาวน์โหลดตัวอย่างไฟล์(news.txt). ให้สั่งคำสั่งตามตัวอย่างเพื่อสร้างไฟล์ postscript จากเท็กซ์ไฟล์.
$ /usr/local/bin/a2ps --encoding tis-620 -R --font-size 20 --column 1 -o news.ps \ --non-printable-format thai< news.txt
- --encoding tis-620 เป็นตัวเลือกบอก a2ps ว่าไฟล์ที่ประมวลผลอยู่เป็นภาษาไทย. ผู้ใช้อาจจะระบุชื่อรหัสนอกจาก tis-620 ได้แก่ tis, tis620, thai, iso-8859-11, iso11 ซึ่งให้ผลเหมือนกัน.
- -R เป็นตัวเลือกให้แสดงผลตามแนวตั้ง.
- --font-size 20 เป็นตัวเลือกใช้ฟอนต์ขนาด 20 pt. ฟอนต์โดยปริยายจะเป็นฟอนต์ garuda.
- --column 1 เป็นตัวเลือกใช้คอลัมภ์เดี่ยว.
- -o news.ps เป็นตัวเลือกสร้างไฟล์ postscript ชื่อ news.ps.
- และตัวเลือกสุดท้ายเป็นตัวเลือกพิเศษที่ต้องใช้ --non-printable-format thai เพื่อให้แสดงผลของสระและวรรณยุกต์ให้ถูกต้อง.
ผู้ใช้สามารถดูผลลัพธ์ (news.ps) ได้ด้วยโปรแกรม ggv หรือพิมพ์ออกทางเครื่องพิมพ์เช่น:
$ ggv news.ps $ lpr news.psผู็ใช้ยังสามารถแปลง postscript ไฟล์เป็น PDF (news.pdf) ได้ด้วยโปรแกรม ps2pdf เช่น:
$ ps2pdf news.ps $ xpdf news.pdf หรือ ggv news.pdf
patch อะไรบ้าง
a2ps เป็นโปรแกรมที่ปรับแต่งง่ายสามารถเพิ่มการเข้ารหัส (encoding) ที่ a2ps ไม่รู้จักเช่น TIS-620 ได้. การเพิ่ม encoding เพิ่มทำได้โดยเขียนไฟล์ tis-620.edf ซึ่งเป็นไฟล์ระบุฟอนต์ที่ใช้และการเข้ารหัส. a2ps จะอ่านไฟล์ afm ซึ่งเป็นไฟล์บอกขนาดของตัวอักษรต่างๆแล้วสร้างไฟล์ postscript. นอกจากนั้น a2ps ยังฝังฟอนต์ postscript (Type1) ให้ด้วย. หมายความว่าเครื่องพิมพ์หรือระบบที่ไม่ได้ติดตั้งฟอนต์ภาษาไทยก็สามารถใช้ไฟล์ postscript ที่สร้างด้วย a2ps ได้ทันที. ฟอนต์ที่ใช้ใน a2ps นี้เอามาจากแพกเกจ thaifonts-scaleable จาก TLWG.
หลังจากที่ทำให้ a2ps รู้จักกับ encoding ภาษาไทยแล้วยังไม่เพียงพอ, ต้องแก้ไขไฟล์ต้นฉบับด้วย. เนื่องจาก a2ps จะถืออักขระที่ไม่มีความกว้าง (สระหรือวรรณยุกต์) เป็น caret และจะมีการจัดการแบบพิเศษซึ่งสำหรับภาษาไทยแล้วควรจะแสดงผลไปเลย.
ปัญหาที่ต้องแก้ต่อไป
ในขณะนี้ a2ps สามารถแสดงผลเป็นภาษาไทยได้แต่ยังมีปัญหาอยู่ได้แก่การขึ้นบรรทัดใหม่และการจัดตำแหน่งของสระวรรณยุกต์ให้สวยงาม. ใครสนใจทำต่อเชิญครับ.