Skip to content

LTN/Plone

Sections
Personal tools
You are here: Home » Members » poonlap's Home » a2ps

Thai patch for a2ps

Thai patch (TIS-620) 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.txt เป็นการรีไดเรกชันให้อ่านข้อมูลจากไฟล์ news.txt แทนที่จะอ่านจาก standard input (คีย์บอร์ด).

ผู้ใช้สามารถดูผลลัพธ์ (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 สามารถแสดงผลเป็นภาษาไทยได้แต่ยังมีปัญหาอยู่ได้แก่การขึ้นบรรทัดใหม่และการจัดตำแหน่งของสระวรรณยุกต์ให้สวยงาม. ใครสนใจทำต่อเชิญครับ.

Created by poonlap
Last modified 2005-06-01 02:55 PM
 

Powered by Plone

This site conforms to the following standards: