Planet TLWG

Syndicate content
Planet TLWG - http://linux.thai.net/planet
Updated: 1 hour 42 min ago

Sothorn: CentOS 7.0-1406 DVD

17 July, 2014 - 12:45

CentOS7 ออกเมื่อ วันที่ 7 กรกฎาคมทีผ่านมา
สามารถดาวน์โหลดมาใช้งานได้
ไฟล์ ISO ที่มีให้ดาวน์โหลดมีความหมายดังนี้

List of images in this directory
================================

CentOS-7.0-1406-x86_64-DVD.iso
This DVD image contains all the packages that can be installed using the
installer. This is the recommended image for most users.

CentOS-7.0-1406-x86_64-NetInstall.iso
This is the network install and rescue image. The installer will ask from
where it should fetch the packages to be installed. This image is most
useful if you have a local mirror of CentOS packages.

CentOS-7.0-1406-x86_64-Everything.iso

This image contains the complete set of packages for CentOS 7. It can be
used for installing or populating a local mirror. This image needs a dual
layer DVD or an 8GB USB flash drive.

CentOS-7.0-1406-x86_64-GnomeLive.iso
CentOS-7.0-1406-x86_64-KdeLive.iso

These images are Live images of CentOS 7. Depending on the name they use the
respective display manager. They are designed for testing purposes and
exploring the CentOS 7 environment. They will not modify the content of your
hard disk, unless you choose to install CentOS 7 from within the Live
environment. Please be advised that you can not change the set of installed
packages in this case. This needs to be done within the installed system
using ‘yum’.

CentOS-7.0-1406-x86_64-livecd.iso
This is like the GnomeLive image mentioned above, but without packages such
as libreoffice. This image is small enough to be burned on a CD.

Sothorn: มีอะไรใหม่ใน CentOS 7

17 July, 2014 - 12:45

CentOS 7 มีการเปลี่ยนแปลงใหม่ๆ ดังนี้

  • Kernel updated to 3.10.0
  • Support for Linux Containers
  • Open VMware Tools and 3D graphics drivers out of the box
  • OpenJDK-7 as default JDK
  • In Place Upgrade from 6.5 to 7.0 (as already mentioned)
  • LVM-snapshots with ext4 and XFS
  • Switch to systemd, firewalld and GRUB2
  • XFS as default file system
  • iSCSI and FCoE in kernel space
  • Support for PTPv2
  • Support for 40G Ethernet Cards
  • Supports installations in UEFI Secure Boot mode on compatible hardware

 

Sothorn: เมื่อติดตั้ง CentOS 6.5 แล้วไม่เจอฮาร์ดดิสก์

17 July, 2014 - 12:45
หมวดหมู่: CentOS

สำหรับคนที่ติดตั้ง Server รุ่นใหม่ๆ แล้ว CentOS ไม่เจอฮาร์ดดิสก์ เป็นเพราะ CentOS ไม่รู้จักการ์ด RAID นั่นเอง ผู้ติดตั้งจำเป็นต้องไปหาดาวน์โหลด Driver ของการ์ด RAID จากเวบไซต์ของผู้ผลิต Server เมื่อได้มาแล้วทำอย่างไรต่อครับ

ในขั้นตอนติดตั้งเมื่อเข้าสู่เมนูการติดตั้ง ให้กด Tab

แล้วพิมพ์ linux dd

ตอบ Yes

แล้วบอก device ที่ Driver เราเก็บอยู่ ใน Flopy Disk, DVD, อุปกรณ์ USB

ถ้าหากหา Driver ไม่ได้ให้ทดลองเอา CentOS เวอร์ชันที่ต่ำกว่า หรือสูงกว่ามาลองติดตั้งดู
จากประการณ์ที่ผ่านมาบางครั้งเวอร์ชันต่ำกว่าก็สามารถติดตั้งได้

LookHin: การบันทึกเสียงผ่าน USB Microphone และแปลงเสียงเป็นฟอร์แมตต่างๆ

15 July, 2014 - 00:45

หัวข้อนี้จะเป็นตัวอย่างการใช้ Raspberry Pi ต่อกับ USB Microphone เพื่อทำการบันทึกเสียง โดยไฟล์ที่บันทึกได้จะมีนามสกุลเป็น .wav และเราจะทำการแปลงเสียงเป็นฟอร์แมตต่างๆ โดยใช้ ffmpeg อีกทีนะครับ อย่างแรกก็ไปหาซื้อไมโคโฟนที่เป็นแบบ USB และทำการต่อสายต่างๆ ให้เรียบร้อย

ทำการตรวจสอบหมายเลขไอดีและค่าของดีไวซ์ จากรูปจะเห็นว่าค่าของ Mic Capture Volume มี Values=0

1 amixer --card 1 contents

ทำการปรับระดับความดังของไมโครโฟนให้ดังสุด (หรือจะไม่สุดก็แล้วแต่) โดยใส่ค่าได้ตั้งแต่ 0 – 16

1 amixer -c 1 cset numid=2 16

ตรวจสอบไอดีของการ์ดที่จะใช้ในการบันทึกเสียง จากรูปเป็นการ์ดหมายเลข 1

1 arecord -l

ทำการบันทึกเสียงโดยใช้คำสั่ง arecord โดยมีพารามิเตอร์ดังนี้ -d 5 หมายถึงให้บันทึกเสียงเป็นเวลา 5 วินาทีแล้วหยุด, -D plughw:1 ให้ใช้การ์ดหมายเลข 1, และ test.wav ให้บันทึกเป็นไฟล์ test.wav

1 arecord -d 5 -f cd -t wav -D plughw:1 test.wav

เมื่อบันทึกเสร็จ ให้ทดสอบทำการเปิดเสียงที่บันทึกเมื่อสักครู่โดยใช้คำสั่ง aplay

1 aplay test.wav

เมื่อได้ไฟล์เสียง .wav มาแล้ว เราสามารถแปลงเป็นฟอร์แมตต่างๆ ได้โดยใช้คำสั่ง ffmpeg ตัวอย่างเราจะแปลงเป็นไฟล์ .mp3 ก็ใช้คำสั่งดังนี้

1 ffmpeg -i test.wav test.mp3

ถ้าเรียกใช้คำสั่ง ffmpeg แล้วไม่มีคำสั่งนี้อยู่ก็ให้ทำการติดตั้ง ffmpeg ก่อนนะครับ

1 sudo apt-get install ffmpeg

LookHin: ฟังเพลง MP3 จาก Raspberry Pi ด้วยคำสั่ง Command Line

11 July, 2014 - 06:45

วันนี้เราจะมาลองเปิดเพลง MP3 จากเจ้าตัว Raspberry Pi โดยใช้คำสั่งผ่าน Command Line กันดูครับ โดยเจ้าตัว Raspberry Pi นี้จะมีจุดต่อสัญญานเสียงเป็นแจ๊คขนาด 3.5 มม. มาให้เราอยู่แล้ว เราก็แค่ไปหาลำโพงหรือหูฟังมาเสียบก็สามารถฟังเพลงได้แล้วครับ ในตัวอย่างนี้ผมจะใช้ลำโพงขนาดเล็กต่อเพื่อใช้ฟังเพลง เริ่มแรกก็ต่อสายลำโพงและเตรียมไฟล์เพลง MP3 ให้เรียบร้อย

ทำการติดตั้งโปรแกรม mpg321 เพื่อใช้เล่นไฟล์ mp3

1 sudo apt-get -y install mpg321

กำหนดให้สัญญานเสียงออกที่แจ๊คออดิโอ (ถ้ากำหนด amixer cset numid=3 2 เสียงจะออกทาง HDMI)

1 amixer cset numid=3 1

คอนฟิกต่างๆเรียบร้อย ก็มาลองสั่งรันคำสั่ง mpg321 filename.mp3 เพื่อเล่นเพลง

1 mpg321 filename.mp3

หากต้องการปรับระดับความดังของเสียงให้ดังขึ้นก็เพิ่ม -g เป็นระดับความดังของเสียงตั้งแต่ 1 ถึง 100 เข้าไปดังนี้

1 mpg321 -g 50 filename.mp3

และถ้าหากต้องการให้เล่นต่อเนื่องกันหลายเพลงก็สามารถกำหนดชื่อไฟล์ต่อๆ กันไปได้เลยครับ

1 mpg321 -g 50 filename1.mp3 filename2.mp3

เพียงเท่านี้ เราก็เปิดเพลง MP3 ได้โดยไม่ต้องเข้า X-Window แล้วครับ

Udomsak: แก้ไฟล์ PDF ที่เปิดไม่ได้ Fix PDF Open Error.

11 July, 2014 - 00:45
วันนี้นั่งหาเอกสาร API reference  เนืองจากเป็น Library เก่า จึงต้องไปค้นจาก Book หรือ เอกสารเก่า ๆ ( มากกว่า 3 ปี )  ทีนี้พอไป ดาวน์โหลด PDF ปรากฏว่าไม่สามารถ เปิดได้  ขึน Error แบบนี้



ทำไงดีล่ะ ลองเปิดดู Header เพราะจำได้ว่า ไฟล์ PDF ไม่ได้ขึ้นต้นหัวไฟล์แบบนี้  



ทำการแก้ไขซะ โดยการลบบรรทัดแรกออก


ทำการ Save  ( ปล. ผมเปิดด้วย Editor ธรรมดานี่แหละ )





My site Article and Topic

Thep: Laksaman Font

8 July, 2014 - 18:45

จาก แผนการ ที่วางไว้สำหรับการดัดแปลงฟอนต์สารบรรณเพื่อผลักดันเข้า Debian ว่าจะตกลงใช้ Fonts-TLWG เป็นฐาน ก็ได้ใช้เวลาว่างทำเก็บเล็กผสมน้อยวันละนิด ขณะนี้ก็เริ่มเป็นรูปเป็นร่างแล้ว

สรุปสิ่งที่ปรับจาก TH Sarabun New

  • เปลี่ยนชื่อฟอนต์เป็น Laksaman (ลักษมัณ) โดยอิงตามชื่อที่ใช้ในฟอนต์ชุด Siampradesh แต่ตัด prefix SP ออก
  • ขยายตัวอักษรเป็น 150.42% เพื่อให้ match กับฟอนต์ตะวันตก และเข้ากันกับฟอนต์อื่นในชุด Fonts-TLWG
  • แปลง spline จาก quadratic เป็น cubic พร้อมทำความสะอาด spline
  • เพิ่ม Postscript hints
  • โละ GSUB rules ที่เกี่ยวกับภาษาไทยทิ้งทั้งหมด แล้วเพิ่ม GPOS, GSUB ตามแบบของ Fonts-TLWG
  • เพิ่ม glyph บางส่วนเพื่อรองรับภาษาชาติพันธุ์
  • เพิ่มการรองรับ LaTeX (pdfTeX) โดยเพิ่มเข้าในแพกเกจ fonts-tlwg
  • เพิ่มการสังเคราะห์ฟอนต์ TH Sarabun{PSK, New} บนเดสก์ท็อปผ่าน fontconfig

หลังจากตรวจความเรียบร้อยต่าง ๆ แล้ว คงสามารถออกรุ่นใหม่ได้เร็ว ๆ นี้ครับ

LookHin: การติดตั้ง OpenCV และ Node.js บน Linux CentOS 6.5

6 July, 2014 - 12:45

ไม่ได้เขียนอะไรลงบล๊อคซะนานจนเกือบจะเป็นบ้านร้างไปอีกหละ วันนี้เรามาทดลองติดตั้ง OpenCV และ Node.js กันดูสักหน่อยหละกัน จริงๆก็ไม่ได้เชียวชาญอะไรหรอกนะครับ แต่พอดีมีงานเล็กๆ น้อยๆ ที่จำเป็นต้องใช้ก็เลยต้องหาข้อมูลมาทำ และเมื่อได้มาแล้วเราก็ต้องมาแบ่งปันประสบการณ์กันสักหน่อยเผื่อจะเป็นแนวทางให้คนอื่นเอาไปต่อยอดทำอะไรอย่างอื่นต่อได้ มาเริ่มกันเลยครับ ตัว OpenCV เป็นโปรแกรมที่เอาไว้ทำพวก Image Processing และ Computer Vision เอาง่ายๆก็คือเป็นโปรแกรมที่ใช้ประมวลผลภาพและเอาไว้ช่วยให้คอมพิวเตอร์มองเห็นภาพ เพื่อใช้ในการวิเคราะห์ว่าภาพนั้นคือภาพอะไร ซึ่งมันก็จะต้องมีในส่วนของการ training เพื่อให้ระบบมันรู้จักภาพต่างๆ แต่เราจะข้ามไปเลยนะครับ เดียวเราจะใช้แค่ค้นหาใบหน้าซึ่งเขาทำเตรียมมาให้เราอยู่แล้ว ส่วนตัว Node.js นี้ไม่รู้จะอธิบายยังไงดี มันเป็นเหมือนสภาพแวดล้อมที่ใช้เขียนโปรแกรมด้วย JavaScript และใช้รันในฝั่งของ Server นะครับ ที่ผมเลือกใช้ตัวนี้เพราะเห็นตัวอย่างการใช้งาน OpenCV ของมันแล้วดูง่ายดี ไม่มีเหตุผลอื่น

ทั้งหมดนี้ทำภายในไดเร็กทอรี /root และใช้สิทธิของ root นะครับ มาเริ่มที่อย่างแรกที่ต้องทำกันก่อน เริ่มจากการติดตั้ง EPEL (Extra Packages for Enterprise Linux) กันก่อนครับ

1 2 3 4 5 6 7 ## RHEL/CentOS 6 ## สำหรับเครื่อง 32-Bit # wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm   ## RHEL/CentOS 6 ## สำหรับเครื่อง 64-Bit # wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm

จากนั้นทำการติดตั้ง Development Tools

1 2 # yum update # yum groupinstall 'Development Tools'

ติดตั้ง cmake28

1 # yum install cmake28

ติดตั้ง Python version 2.6

1 # yum install python26

ทำการสร้างลิงค์ให้คำสั่ง python เรียกไปที่ python26 (เวลาเราเรียกใช้คำสั่ง python จะได้ไปใช้ version 2.6)

1 2 # mkdir -p $HOME/bin # ln -s /usr/bin/python26 $HOME/bin/python

ทดสอบเรียกคำสั่ง python -V เพื่อตรวจสอบว่าได้ version 2.6 แล้วหรือยัง

1 # python -V

ทำการ export path ที่จำเป็นต้องใช้ไปไว้ในไฟล์ .bashrc (ไฟล์นี้จะถูกเรียกทุกครั้งเวลาที่เราทำการ login เข้าระบบ)

1 2 3 4 5 # echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc # echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> ~/.bashrc # echo 'export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig' >> ~/.bashrc   # source ~/.bashrc

ต่อไปขั้นตอนสำคัญ เริ่มทำการติดตั้ง OpenCV กันต่อเลยครับ

1 2 3 4 5 6 # wget -O opencv-2.4.8.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.8/opencv-2.4.8.zip/download # unzip opencv-2.4.8.zip # cd opencv-2.4.8 # cmake28 -D WITH_FFMPEG=OFF . # make # make install

จากนั้นทำการติดตั้ง Node.js เพื่อเอาไว้เป็นตัวเรียก OpenCV และเราจะมาหัดเขียน Node.js สักหนึ่งโปรแกรมกันด้วย

1 2 3 4 5 6 7 8 # cd .. # wget -O node-v0.10.28.tar.gz http://nodejs.org/dist/v0.10.28/node-v0.10.28.tar.gz # tar -xvzf node-v0.10.28.tar.gz   # cd node-v0.10.28 # ./configure # make # make install

ทดสอบดูหน่อยว่าเรียก Node.js ได้ไหม

1 # node --version

ขั้นตอนเกือบสุดท้าย ทำการติดตั้ง node-opencv

1 2 # cd .. # npm install opencv

เมื่อติดตั้งเรียบร้อยเรามาลองเขียนโปรแกรมกับ Node.js สักโปรแกรมกันก่อนนะครับ ว่ามันสามารถทำงานได้ไหม ซึ่งผมเองก็เขียนไม่ค่อยเป็น แต่เดี๋ยวเราลอกโค้ดตัวอย่างจากเว็บเขาเลยหละกัน เว็บไซต์ของ Node.js อยู่นี้นะครับ http://www.nodejs.org/

1 # nano server_node.js

พิมพ์โค้ดต่อไปนี้ลงไป

1 2 3 4 5 6 7 // Run : node server_node.js var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337); console.log('Server running at port 1337');

จากนั้นสั่งรันด้วยคำสั่ง

1 # node server_node.js

ลองเปิดเว็บบราวเซอร์และเรียกไปที่ url http://192.168.8.104:1337 (อย่าลืมเปลี่ยนเป็น IP ของคุณเองด้วยนะครับ

จากนั้นลองทดสอบการใช้ OpenCV ในการตรวจสอบใบหน้าของคนกันต่อเลยครับ ซึ่งเราก็จะไม่ได้เขียนเองทั้งหมดหรอกนะครับ เขามีตัวอย่างมาให้อยู่แล้ว ลองเปิดดูตัวอย่างและแก้นิดๆ หน่อยๆ ก็เอาไปใช้งานต่อได้แล้วครับ โดยตัวอย่างของ node-opencv จะอยู่ที่ /root/node_modules/opencv/examples/ โดยในตัวอย่างเราจะลองใช้ face_detection.js ในการค้นหาใบหน้า โดยให้ทำการเปิดไฟล์ face_detection.js ขึ้นมาแก้ไข โดยให้แก้ไขที่ ./haarcascade_frontalface_alt.xml ให้แก้เป็น ../data/haarcascade_frontalface_alt.xml จากนั้น save และลองสั่งรันโปรแกรมดูครับ

1 2 # cd /root/node_modules/opencv/examples/ # node face_detection.js

ถ้าหากว่ารันโปรแกรมได้ โปรแกรมจะสร้างไฟล์รูปขึ้นมาให้เราชื่อ out.png ลองเปิดดูจะเห็นว่ามีวงกลมบนใบหน้าของโนนาลิซาอยู่นะครับ ด้วยความรู้อันน้อยนิดที่ผมมีเท่านี้ น่าจะพอเป็นแนวทางให้ให้นำไปต่อยอดกันต่อได้นะครับ ^^

จะได้ภาพออกมาประมาณนี้ครับ

# Update 2014-06-17
ทำการ export path ของ nodejs module เพื่อให้สามารถเรียกใช้งานได้จากทุกที่

1 2 3 # echo 'export NODE_PATH=/root/node_modules' >> ~/.bashrc   # source ~/.bashrc

อ่านเพิ่มเติม
http://opencv.org/
http://nodejs.org/
http://peterbraden.github.io/node-opencv/

Udomsak: Recovery Window 7 and make Dual boot Linux Ubuntu menu from Window 7

1 July, 2014 - 12:45
Since i have problem with Ubuntu dual-boot with Window 7 Home Ultimate. The problem are UEFI partition  on my Sony Viao ST series.

My process flow

  1. Install Window 7 ( From factor ) 
  2. Install Ubuntu 13.10   
Problem

  1. Lose window 7 Boot. 
  2. UEFI partition can't  install correctly and force me use Ubuntu MBR install only instead. ( which one choose. ) 

For a while i must use Window environment for working my job.  I must recover my lose Window7  and make dual-boot menu from Window 7 side. 
Tool usage
  1. EasyBCD Boot CD recovery to recover Window 7  Boot menu  EasyRE Live/USB cd recovery
  2. Visual BCD Editor  http://www.boyans.net/
  3. Ext2fsd http://www.ext2fsd.com/  use for  access Linux partion from Window 7 side.
The way to make Dual-boot menu from Window 7 they use command-line tool named bcdeditor and so complicate process to make them work.  i use  Visual BCD instead. 
Step



  • Download tool  


  • Add enty to boot menu 
  • copy 'boot.img' from  Linux partiton that have grub install  and copy to c:\Boot\
  • Edit text entry
  • Reboot
  • Enjoy your work :) 


  • Open Visual BCD Editor and  Add menu entry at Figure 1.



    Mount Root Partition to get 'boot.img' file from /boot/grub/i386-pc


    Access Linux partition copy 'boot.img' to c:\boot\




       

    My site Article and Topic

    Thep: Thanks

    10 June, 2014 - 14:45

    ขอขอบคุณย้อนหลัง สำหรับผู้สนับสนุนงานพัฒนาซอฟต์แวร์เสรีของผมในช่วงเดือนกุมภาพันธ์-เมษายนที่ผ่านมา คือ:

    ผมอาจจะสวัสดีปีใหม่ไทยช้าไปนิด ก็ขอให้ทุกท่านที่เอ่ยมาจงร่มเย็นเป็นสุขทุกท่านครับ

    หากท่านอ่าน blog ขอบคุณของผมมาหลายครั้งแล้ว และสงสัยว่าจะสนับสนุนงานพัฒนาของผมได้อย่างไร ก็เชิญได้ที่หน้า การสนับสนุนงานพัฒนา ครับ

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

    อย่างไรก็ดี งานบางงานที่ไม่ได้เขียนเป็น blog ต่างหากเนื่องจากเป็นงานรูทีนอยู่แล้ว หรือเป็นงานยิบย่อย ก็ขอเล่าเพิ่มเติมจากที่ blog ไปแล้วบ้าง เช่น:

    • งานแปล Xfce ได้แปลขึ้นไปจนถึง 86% แล้ว ก่อนที่จะเกิดการจัดโครงสร้างใหม่ใน Transifex ทำให้สถิติเริ่มเพี้ยน โดยในหน้า dashboard (ภายใต้โครงสร้างใหม่ ปรากฏว่าต้องเป็นสมาชิก transifex จึงจะดูได้) รายงานอัตราการแปลของภาษาไทยที่ 69.3% แต่จำนวนข้อความที่ยังไม่แปลเหลือเพียง 1,571 ข้อความ ซึ่งน้อยกว่าภาษาฟินแลนด์ที่อัตราการแปลสูงกว่าภาษาไทย คืออยู่ที่ 70.4% แต่เหลือข้อความที่ยังไม่แปลถึง 3,653 ข้อความ จึงทำให้เกิดความสับสนในค่าสถิติที่รายงาน
    • เสนอแพตช์ใน Xfce #10311 ที่ได้รายงานไว้เมื่อปีกลาย เกี่ยวกับการบอกเวลาเป็นคำพูดโดยประมาณ โดยขอปรับปรุงให้แปลเวลาเป็นไทยได้ถูกต้องยิ่งขึ้น เช่น ทำให้รายงานเวลาแบบนี้ได้ในพาเนล:
    • ปรับคำแปล dpkg และ apt สำหรับ Debian (มีผลใน dpkg 1.17.7 และ apt 1.0.2 ตามลำดับ)
    • ปรับคำแปล ISO 3166-2 ในแพกเกจ iso-codes เล็กน้อย หลังจากได้แปลชื่อเมืองใน Orage ของ Xfce (มีผลใน iso-codes 3.53) พร้อมกันนี้ก็ได้ปรับคำแปลใน libgweather locations ของ GNOME ไปพร้อมกันด้วย

    แผนงานต่อไป เรื่องหลักก็จะเป็นการผลักดันฟอนต์สารบรรณเข้า Debian ตามแผนที่วางไว้ครับ

    Thep: Sarabun Plan

    1 June, 2014 - 20:45

    หลังจากที่ได้ ตั้งใจไว้ ว่าจะผลักดันฟอนต์สารบรรณเข้า Debian ให้ทัน Jessie แต่ก็ติดภารกิจอื่นจนตอนนี้เพิ่งมีเวลามานั่งคิดต่อ

    ความต้องการ

    พูดถึง requirement เกี่ยวกับฟอนต์สารบรรณ มีเงื่อนไขสองเรื่องหลักที่ต้องพิจารณา คือ

    1. License จะต้องเสรี ไม่เป็น postcardware license
    2. การใช้งานกับ LaTeX ซึ่งมีผู้ใช้สอบถามเข้ามาหลายครั้ง หลังจากที่หน่วยงานต่าง ๆ ถูกบังคับให้ต้องใช้ฟอนต์สารบรรณในหนังสือราชการต่างๆ ผู้ที่ใช้ LaTeX เตรียมเอกสารจึงต้องสามารถใช้ฟอนต์นี้ได้ ซึ่งแน่นอนว่าการดัดแปลงฟอนต์จำเป็นต้องผ่านเงื่อนไขความเสรีของ license มาก่อน
    ทรัพยากรที่มีอยู่

    ฟอนต์สารบรรณมีการออกรุ่นอย่างเป็นทางการจากต้นน้ำสองรุ่น และแตกแขนงไปอีกอย่างน้อยสองรุ่น กล่าวคือ:

    • TH Sarabun PSK ซึ่งอยู่ในชุดเริ่มแรกของ ฟอนต์มาตรฐานราชการไทย ที่เผยแพร่โดยกรมทรัพย์สินทางปัญญาร่วมกับ SIPA ซึ่งเป็น postcardware
    • TH Sarabun New ซึ่งปรับปรุงใหม่โดย SIPA ร่วมกับคุณศุภกิจ เฉลิมลาภ ผู้พัฒนา TH Sarabun PSK โดยออกรุ่นภายใต้สัญญาอนุญาต GPL 2 + Font Exception เผยแพร่อยู่ที่ f0nt.com
    • SP Laksaman ซึ่งผมดัดแปลงจาก TH Sarabun PSK ในชุด ThaiFonts-Siampradesh ภายใต้การว่าจ้างของ SIPA ผ่านบริษัทเมตามีเดีย เทคโนโลยี ซึ่งแน่นอนว่ายังใช้สัญญาอนุญาตแบบ postcardware ตาม TH Sarabun PSK การดัดแปลงที่สำคัญได้แก่การขยายขนาดตัวอักษรทั้งหมด โดยใช้อัตราส่วนที่ทำให้ตัวโรมันมีขนาดเท่า ๆ กับฟอนต์ตะวันตกที่ point size เดียวกัน และการแปลงเส้นโค้งจาก quadratic เป็น cubic พร้อมทำความสะอาดเพื่อเตรียมพร้อมสำหรับการแก้ไขดัดแปลงต่อไป
    • Sarabun ภายใต้โครงการ googlefontdirectory ซึ่งได้รับอนุญาตจากเจ้าของลิขสิทธิ์ให้เผยแพร่ภายใต้สัญญาอนุญาต OFL

    อย่างไรก็ดี มีอีกปัจจัยหนึ่งที่ต้องพิจารณาประกอบ คือ การอนุญาตให้ relicense ฟอนต์ชุดมาตรฐานราชการไทย ซึ่งยังคงค้างอยู่ที่การรอการเผยแพร่ฟอนต์ภายใต้ license ใหม่จากต้นน้ำอย่างเป็นทางการ ซึ่งหากดำเนินการเสร็จ เราจะได้ฟอนต์ที่เสรีอย่างแท้จริงถึง 10 หรือ 13 ฟอนต์ (ขึ้นอยู่กับ 3 ฟอนต์ที่ผู้สร้างยังประกาศถือครองลิขสิทธิ์อยู่ในตัวฟอนต์ ไม่ได้ยกให้กรมทรัพย์สินทางปัญญาและ SIPA) ซึ่งเรื่องได้ค้างอยู่ตรงนี้มาเกือบ 3 ปีแล้ว

    ทางเลือกที่เป็นไปได้

    จากความต้องการและสิ่งที่มีอยู่ พอจะคิดทางเลือกออกมาได้ดังนี้:

    1. ใช้ SP Laksaman เป็นฐาน ซึ่งต้องผ่านขั้นตอนทางกฎหมายเสียก่อน พร้อม ๆ กับอีก 9 ฟอนต์ที่เหลือ ข้อดีคือฟอนต์พร้อมแก้ไขแล้ว และจะได้ฟอนต์โพสต์สคริปต์ที่ทำความสะอาดแล้วด้วย เหมาะกับการดัดแปลงใช้กับ LaTeX อย่างเต็มที่ แต่ข้อเสียคือยังขาดความชัดเจนในข้อกฎหมาย ซึ่งถ้าชัดเจนแล้วก็อาจจะได้ฟอนต์ Siampradesh ทั้ง 10 ฟอนต์มาพร้อมกันเลย
    2. ใช้ TH Sarabun New เป็นฐาน ไม่มีปัญหาเรื่องข้อกฎหมาย โดยอาจมีการดัดแปลงเพื่อใช้กับ LaTeX หรือมิฉะนั้นก็พยายามใช้ฟอนต์ TrueType กับ LaTeX โดยตรง ทางเลือกนี้มีข้อดีคือฟอนต์จะเหมือนกับสารบรรณที่ใช้โดยราชการไทยทุกประการ ข้อเสียคืออาจไม่คล่องตัวนักในการแก้ไขดัดแปลงเพราะผูกติดกับชื่อฟอนต์อยู่
    3. ใช้ Google Sarabun เป็นฐาน ไม่มีปัญหาเรื่องข้อกฎหมายเช่นกัน ข้อดีข้อเสียคล้ายกับการใช้ TH Sarabun New สิ่งที่แตกต่างอาจเป็นผู้ดูแลต้นน้ำเท่านั้น และทางเลือกนี้ดูจะมีช่องทางติดตั้งโดยตรงใน Debian อยู่แล้ว (ผ่านแพกเกจ typecacher แต่ขณะนี้ยังไม่มี Sarabun ในรายชื่อ) แต่จะขาดการรองรับการใช้งานใน LaTeX (pdfTeX) เท่านั้น
    4. ใช้ Fonts-TLWG เป็นฐาน เป็นอีกทางเลือกหนึ่งที่เป็นไปได้ เนื่องจาก Fonts-TLWG จะรวบรวมฟอนต์เสรีมาปรับต่ออยู่แล้ว ทำไมจะเพิ่มฟอนต์อีกสักตัวไม่ได้? แนวทางนี้อาจหยิบฟอนต์สารบรรณหรือลักษมัณมาปรับตามมาตรฐานฟอนต์ TLWG โดยใช้ฟีเจอร์ OpenType (GPOS, GSUB) เต็มรูปแบบ ตัด hack ทิ้ง พร้อมปรับใช้กับ LaTeX (pdfTeX) ด้วยโครงสร้างที่พัฒนาใน TLWG มาอยู่แล้ว

    หลังจากพิจารณาทางเลือกต่าง ๆ ทางเลือกที่เป็นอุดมคติสำหรับผมคือการพัฒนาต่อจากฟอนต์ชุด Siampradesh (ทางเลือกที่ 1) เพราะได้เตรียมการไว้พร้อมหมดแล้วทั้ง 10 ฟอนต์ แต่ความไม่ชัดเจนในข้อกฎหมายทำให้ยังไม่กล้าลงมือทำ หนังสือราชการที่เวียนเป็นการภายในของ SIPA และกรมทรัพย์สินทางปัญญาจะเพียงพอหรือไม่ที่ผมจะ relicense ฟอนต์ Siampradesh เอง? ทางเลือกที่ผู้ใช้ส่วนใหญ่อยากได้ที่สุดน่าจะเป็น 2 หรือ 3 คือผลักดันเข้าไปตรง ๆ โดยไม่ต้องไปแตะต้องอะไรมันเลย แต่การปรับใช้กับ LaTeX จะเป็นเรื่องไม่สะดวกเอามาก ๆ รวมถึงการปรับปรุงทางเทคนิคให้เข้ากับข้อกำหนดต่าง ๆ ก็ขึ้นอยู่กับผู้ดูแลต้นน้ำเป็นหลัก ซึ่งพิจารณาดูแล้ว แม้แต่ Google เองซึ่งมีผู้เชี่ยวชาญ typography มาดูแล ก็ยังไม่ได้ทำอะไรกับรายละเอียดทางเทคนิคในตัวฟอนต์เลย

    ดังนั้น ทางเลือกที่ 4 (ใช้ Fonts-TLWG เป็นฐาน) จึงเป็นทางเลือกที่ผมคิดว่าดีที่สุด และเมื่อได้ลองหยั่งเสียงสมาชิก KKLUG ในการประชุม โสเหล่ 57.04 ที่ผ่านมา ก็ดูจะเห็นตรงกัน จึงคิดว่าจะเริ่มดำเนินการตามนี้เร็ว ๆ นี้ครับ

    LookHin: 8 ขั้นตอนง่ายๆ ที่ช่วยให้ Apache Web Server ปลอดภัยมากขึ้น

    1 June, 2014 - 20:45

    วันนี้เรามาทำให้ Apache Web Server ของเราปลอดภัยมากขึ้นด้วยขั้นตอนง่ายๆ 8 ขั้นตอนกันครับ ถึงแม้จะไม่ได้ปลอดภัยขึ้นถึงระดับที่ไม่สามารถแฮกได้ แต่อย่างน้อยก็ทำให้ผู้ที่จะโจมตีต้องทำการบ้านมากขึ้นนิดหนึ่ง โดยเราจะเน้นไปที่การปิด Error ต่างๆ ของระบบ และแถมท้ายด้วยการติดตั้ง ModSecurity ซึ่งเป็น Web Application Firewall (WAF) ที่จะช่วยป้องกันเว็บไซต์ของเราให้ปลอดภัยจากการโจมตีในแบบต่างๆ ได้มากขึ้น

    1. ยกเลิกการแสดงหน้า welcome page

    ปกติแล้วเวลาที่เราติดตั้ง apache  ระบบจะสร้างหน้า welcome page ขึ้นมาให้เรา ซึ่งจะบอกทุกอย่างเกียวกับระบบ แต่ปกติหน้านี้จะไม่แสดงถ้าเราทำหน้า index ขึ้นมาแล้ว แต่ว่าลบมันทิ้งไปเลยก็ดีกว่าครับ ขั้นตอนก็ง่ายๆ เข้าไปลบไฟล์ /etc/httpd/conf.d/welcome.conf ได้เลยครับ

    1 # rm /etc/httpd/conf.d/welcome.conf

    ก่อนลบไฟล์ /etc/httpd/conf.d/welcome.conf

    หลังลบไฟล์ /etc/httpd/conf.d/welcome.conf

    2. ซ่อนการแสดงเวอร์ชั่นของ Apache และ OS จากหน้า Error
    ทุกครั้งที่มีการเรียกไฟล์ที่ไม่มีอยู่ใน website ของเรา Apache จะแสดงข้อมูลขึ้นมาว่าเราใช้ Apache และ OS version อะไร ซึ่งจะเป็นข้อมูลที่ดี ที่จะให้แฮกเกอร์นำข้อมูลเหล่านั้นไปหาช่องโหว่มาโจมตี โดยเราสามารถปิดการแสดงข้อมูลเหล่านี้ได้โดยการแก้ไขไฟล์ /etc/httpd/conf/httpd.conf

    เปิดไฟล์ขึ้นมาแก้ไข จะใช้ vi หรือ nano แล้วแต่ถนัด

    1 # nano /etc/httpd/conf/httpd.conf

    จากนั้นแก้ค่า ServerSignature และ ServerTokens ตามนี้ครับ

    1 2 ServerSignature Off ServerTokens Prod

    ก่อนแก้ไขจะเห็นว่าถ้ามี Error ระบบจะแสดงเวอร์ชั่นของ Apache และ OS ขึ้นมา

    หลังจากแก้ไขแล้วจะแสดงแค่ Error อย่างเดียว

    3. ยกเลิกการแสดงไฟล์ในไดเร็กทอรีที่ไม่มีอินเด็กซ์ไฟล์
    ถ้าหากว่าเราเปิดเข้าไปในไดเร็กทอรี ที่ยังไม่มีอินเด็กซ์ไฟล์ ระบบจะแสดงไฟล์ทั้งหมดขึ้นมาให้ ซึ่งจะไม่ปลอดภัยเลยหากว่าแฮกเกอร์สามารถเห็นไฟล์ในไดเร็กทอรีต่างๆ ของเราได้หมด การเปิดออฟชั่นนี้สามารถทำได้ง่ายๆ โดยเพิ่ม Options -Indexes เข้าไปในไฟล์ /etc/httpd/conf/httpd.conf

    เปิดไฟล์ httpd.conf ขึ้นมาแก้ไข

    1 # nano /etc/httpd/conf/httpd.conf

    เพิ่ม Options -Indexes เข้าไปในส่วนของ (ปกติจะมีอยู่แล้ว แต่ว่ายังไม่ได้ใส่เป็น -Indexes)

    1 2 3 <Directory /var/www/html> Options -Indexes </Directory>

    ก่อนการแก้ไข จะเห็นว่าระบบแสดงชื่อไฟล์ขึ้นมาให้

    หลังการแก้ไข เราก็จะไม่เห็นไฟล์ต่างๆแล้ว

    4. ปิดโมดูลที่ไม่จำเป็น
    ค่าแรกเริ่มของ Apache จะเปิดโมดูลต่างๆ ขึ้นมาเกือบทั้งหมด แต่บางอย่างเราก็ไม่ได้ใช้ เปิดไว้ก็อาจจะเป็นช่องโหว่ให้โดนแฮกเกอร์โจมตี ทางทีดีปิดมันไว้ดีกว่า ถ้าอันไหนจะใช้เราค่อยมาเปิดทีหลัง โมดูลต่างๆ พวกนี้เราสามารถเข้าไปเปิดและเปิดได้ที่ไฟล์ /etc/httpd/conf/httpd.conf โดยค้นหาคำว่า LoadModule และทำการใส่เครื่องหมาย # หน้าโมดูลที่ไม่ต้องการ อย่างเช่นโมดูล mod_info, mod_userdir, mod_autoindex

    เปิดไฟล์ httpd.conf ขึ้นมาเปิดหรือปิดโมดูลที่ต้องการ

    1 # nano /etc/httpd/conf/httpd.conf

    5. ปิดการทำงานของ Server Side Includes และ CGI Execution
    ทุกวันนี้คงไม่มีใครใช้ SSI และ CGI ในการทำเว็บกันแล้ว การปิดการทำงานก็ง่ายๆ แค่เพิ่ม -Includes และ -ExecCGI ใน httpd.conf ในส่วนของ Directory

    เปิดไฟล์ httpd.conf

    1 # nano /etc/httpd/conf/httpd.conf

    เพิ่ม -Includes -ExecCGI เข้าไปในส่วนของ Directory

    1 2 3 <Directory /var/www/html> Options -Indexes -Includes -ExecCGI </Directory>

    6. ทำการเก็บ Log ของทุก VirtualHost ที่อยู่ในเซิฟเวอร์
    ทำได้โดยการเพิ่ม ErrorLog และ CustomLog เข้าไปใน VirtualHost

    1 2 3 4 5 6 7 <VirtualHost *:80> ServerAdmin webmaster@www.example.com DocumentRoot /var/www/www.example.com ServerName www.example.com ErrorLog /var/log/httpd/www.example.com-error_log CustomLog /var/log/httpd/www.example.com-access_log common </VirtualHost>

    7. ติดตั้ง mod_security
    mod_security เป็น Web Application Firewall (WAF) ที่จะช่วยเพิ่มความปลอดภัยให้เซิฟเวอร์เรามากขึ้น โดยสามารถป้องกันการทำ SQL Injection ได้ด้วย

    อย่างแรก ทำการติดตั้ง EPEL (Extra Packages for Enterprise Linux) กันก่อน

    1 2 3 4 5 6 7 ## RHEL/CentOS 6 ## สำหรับเครื่อง 32-Bit # wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm   ## RHEL/CentOS 6 ## สำหรับเครื่อง 64-Bit # wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm

    จากนั้นติดตั้ง mod_security เป็นอันเรียบร้อย

    1 # yum install mod_security

    8. ทำการอัพเกรด Apache อย่างสม่ำเสมอ

    1 # yum update httpd

    Udomsak: Log Android dev to elasticsearch

    1 June, 2014 - 20:45
    Simple Log server สำหรับ  Android  Development. 


    หลังจากพบปัญหา ระหว่างการพัฒนา แอพพลิเคชั่นโมบาย  แล้วต้องมอนิเตอร์ดู  log-stream  ซ่งสามารถทำได้ด้วยคำสั่ง

    adb logcat


    แต่ปัญหาก็คือ ไม่สามารถทำการสืบค้นย้อนกลับ ตามที่ต้องการด้วย จะโหลดเอา  graylog2  มาใช้ก็จะเสียเวลาไปหน่อย เลยเลือกเอา  elasticsearch + logstash  + kibana3  เอามาทำ ระบบ log server แบบ ง่ายๆ ดีกว่า ปล. log.io ก็ใช้ได้ครับ แต่ทำให้  เครื่อง hang ( browser freeze )



    ความต้องการเริ่มต้น  ( prerequisite )

    -  Java  แต่เนื่องจากผมได้ทำการ setup ตอนทำงาน Android  จะขอข้ามตรงนี้ไป และ อนุมาน ว่าค่าเริ่มต้นในส่วนของ Java ได้ทำการ Set ไว้แล้ว




    1. เริ่มจาก ดาวน์โหลด  elasticsearch    
    2. ต่อมา ดาวน์โหลด logstash  


    เริ่มจาก ทำการรัน  logstash เอาไว้ก่อนเลย  ( Start  logstash verbose output and listen on tcp port '9999' )

    udomsak$ ./logstash --verbose -e 'input { tcp { port=>9999 } } output { elasticsearch {} }'





    จากนั้น ออนไลน์ elasticsearch ( assume you in elasticsearch path )  

    udomsak$  ./elasticsearch



    ทำการ pipe output ของ  adb logcat  ส่งไปยัง  Service

    adb logcat | nc  127.0.0.1 9999 -


    เปิด kibana3 โดยไปที่ localhost port 9292

    udomsak$  ./logstash-web 





    My site Article and Topic

    Prach: My Contribution to Debian, 2014-2

    5 May, 2014 - 12:45
    Upload:
    - phpunit">">"> (3.7.28-1)
    - php-codecoverage (">">">1.2.13+dfsg2-1)
    - php-token-stream (">">">1.2.1-1)
    - phpunit-selenium (">">">1.3.3-1)
    - phpunit-mock-object (">">">1.2.3-1)
    - (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">Sponsor by David Prévot
      + php-mail (1.2.0-6)
      + php-http-webdav-server ( (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">1.0.0RC6-2)
      + php-xml-dtd ( (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">0.5.2+dfsg1
    (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">  + (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">php-timer ( (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)"> (Uploader: taffit@debian.org)">1.0.5-1)
    - php-zmq (new), sponsor by Laszlo Boszormenyi
    - debpear/0.4 (native) -- automatically builds and installs PEAR package as Debian packages
      + add supported for channel and PECL packages
    - haproxy (1.4.25-1), sponsor by Apollon Oikonomopoulos

    Other packages:
     - docker.io (0.8.0+dfsg1-1), added zsh completion.

    Bugs:
    #732641 -- pkg-php-tools: Please, remove tests file with Buildsystem-phppear
    #736294 -- pkg-php-tools: causes directory vs. symlink conflicts
    #730316 -- php-mail: FTBFS: test failures in smtp_error test
    #737453 -- php-codecoverage: Sourceless file (minified) (jquery)
    #738373 -- php-xml-dtd: FTBFS: chmod: cannot access .. No such file or directory
    #738416 -- php-http-webdav-server: FTBFS: chmod: cannot access .. No such file or directory
    #737558 [P] -- pkg-php-tools: Please, support Zend extensions

    TODO:
    - http://dep.debian.net/deps/dep8/
    - Join the NM process (if I have time)


    MrChoke: Cycling For Kids by กฤษณ์ ปีที่6

    1 May, 2014 - 02:46
    วันเสาร์ – อาทิตย์ นี้มีโอกาสเข้าร่วมปั่นการกุศลในรายการ Cycling For Kids by กฤษณ์  ปีที่6 ตอน : มาราธอน 24 ชม. ปั่นก่อน นอนที่หลัง ที่จัดขึ้นใน ธรรมศาสตร์ รังสิต เริ่มตั้งแต่ตอนเช้าของวันเสาร์ที่ 15 มี.ค. นัดรวมทีมหน้าเสาธง สวทช. ซึ่งการปั่นครั้งนี้เป็นการรวมทีมกันในนาม FFCC หรือ Fast Foward Cycling Club สวทช. มีสมาชิก 5 คน คือ พี่โก้ พี่ปืน ผม ธง และ วิน เจอกันหน้าเสาธง สามคน ก็ไปลงทะเบียนกันก่อนประมาณ 7 โมงเช้า แล้วพี่โก้ กับ วินก็ตามมาสมทบ ค่าสมัครคนละ 300 บาทเป็นการสมทบทุนบริจาคให้โรงเรียน สำหรับผู้สมัครผ่านเว็บมาก่อนก็ได้จะเสื้อ [...]

    Udomsak: ฺBangkok Coffee shop suite for working space free wi-fi - Electricity plug

    30 April, 2014 - 12:45
    ร้านกาแฟ ที่มีปลั๊กไฟ และ บริการฟรี ไวไฟ


    https://mapsengine.google.com/map/edit?mid=z7uZjMMQ0VKc.kFBrL2o1MUpY

    Link นี้จะ Update เกือบตลอดเวลานะครับ เนื่องจากเป็นที่ ที่ผมจะไปอยุ่ เป็นประจำ สลับกันไป

    My site Article and Topic

    Udomsak: ตารางรายการแข่ง รถมอเตอร์ไซด์ ปี 2014

    30 April, 2014 - 12:45
    Schedule Moto-GP 2014



    DownLoad iCal ( Calendar Link )  ( MotoGP, every class , World SuperBike. 
    Download CalendarMy site Article and Topic

    Thep: Fonts-TLWG 0.6.0

    30 April, 2014 - 12:45

    ออกไปแล้วเมื่อวาน สำหรับ Fonts-TLWG 0.6.0 สำหรับรุ่นนี้ การเปลี่ยนแปลงที่สำคัญที่ทำให้ถึงกับต้องเพิ่มเลขรุ่นที่เลขกลาง ก็คือการรองรับภาษาชาติพันธุ์อย่างมีการเตรียมการ

    สำหรับข้อมูลเบื้องต้นเกี่ยวกับภาษาชาติพันธุ์ กรุณาอ่าน blog เก่า และ บทความของคุณอนงค์ เพิ่มเติม

    ที่ว่า รองรับอย่างมีการเตรียมการ ก็เพราะในรุ่นก่อนก็สามารถรองรับได้ในระดับหนึ่ง หลังจากที่ Pango 1.31.0 (GNOME 3.6) ขึ้นไปได้โละ engine ภาษาไทยที่ใช้ วทท. 2.0 (มอก. 1566-2541) ทิ้ง และย้ายไปใช้ HarfBuzz จัดการแทน ก็ทำให้กระบวนการวาดภาษาไทยย้ายหนีจาก วทท. 2.0 มาเป็น normalization ตามข้อกำหนดยูนิโค้ด โดยปริยาย ซึ่งข้อกำหนดนี้จะผ่อนคลายกว่า วทท. 2.0 ที่ผูกติดกับภาษาไทยเพียงภาษาเดียว เพราะยูนิโค้ดได้เตรียมการเผื่อการใช้อักษรไทยเขียนภาษาชาติพันธุ์ต่าง ๆ เอาไว้ด้วย ทำให้ฟอนต์ชุด TLWG รุ่นเก่าก็สามารถใช้เขียนภาษาชาติพันธุ์ได้ทันที แต่จะเป็นการวางอักขระซ้อนกันแบบไม่มีการจัดตำแหน่ง บางกรณีก็วางแล้วไม่ซ้อนกัน บางกรณีก็ซ้อนทับกัน แต่ในฟอนต์รุ่น 0.6.0 นี้ มีการออกแบบเพื่อรองรับกรณีต่าง ๆ ให้จัดวางอักขระได้อย่างสวยงาม

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

    ภาษาชาติพันธุ์ที่ใช้ในรูป (ตั้งแต่บรรทัดที่สองเป็นต้นไป ส่วนบรรทัดแรกใช้ทดสอบฟอนต์ตามข้อกำหนดยูนิโค้ดเท่านั้น) :-

    • ภาษากูย/ส่วย (สุรินทร์) [1]:
      • ปะเฺติ็ลฺ = ขันตักน้ำ
      • โฺญฺ็จฺ = หยุดกึกเพราะกลัวหรือตกใจ
    • ภาษาเขมรถิ่นไทย (สุรินทร์):
      • ปั็วฮฺ
      • ทฺ็อง
      • เปฺิ็ว
      • มูํย
    • ภาษาบรู/ข่า:
      • แต็่ง = to spread
      • เจฺํอ = already
      • เปรฺิ่ห์ = dirty
      • โจ๊่ = bunch of bamboo
      • เปฺี่ย = to mix
    • ภาษาโส้:
      • โฺทร = โส้ (ชื่อภาษา)
    • ภาษาช์อง (จันทบุรี):
      • ม็่อง
    • ภาษาญัฮกุร [อ่านว่า ญะกุ้น] (ชัยภูมิ):
      • เติ็ง
    • ภาษาละว้า:
      • อาื = chase
      • ยาึ = mine
    • ภาษามลายูปาตานี [2]:
      • จือรฺุ
      • การฺู

    การใช้งานเหล่านี้ นอกจากทำให้ต้องยกเครื่องจาก วทท. 2.0 เป็นยูนิโค้ดแล้ว ยังมีผลต่อการออกแบบฟอนต์ที่ต้องรองรับกรณีพิเศษเพิ่มเติมด้วย

    สำหรับฟอนต์ TrueType/OpenType สิ่งที่ทำเพิ่มก็คือ:

    • เพิ่ม glyph สำหรับอักขระยกสูงเพิ่มเติม นอกจากชุดวรรณยุกต์ปกติในฟอนต์ทั่วไปแล้ว ก็ต้องมีไม้ไต่คู้ นิคหิต และยามักการยกสูงเพิ่มด้วย โดย glyph ชุดนี้จะมีขนาดย่อส่วนลงเล็กน้อย แต่ไม่ใช่ scale down ตามปติ เพราะจะทำให้ได้เส้นที่บางลง แต่จะเป็นการวาดด้วยเส้นหนาเท่าเดิมให้ตัวเล็กลง
    • เพิ่มกฎ GSUB ในการแปลงอักขระชุดดังกล่าวให้เป็นตัวยกสูง โดยต้องครอบคลุมทุก combination ไม่ใช่แค่ที่มีในภาษาไทย
    • เพิ่ม anchor ให้กับอักขระเหนือบรรทัด ให้สามารถซ้อนกันได้ครบทุกคู่ ไม่ใช่แค่ที่มีในภาษาไทย
    • เพิ่ม anchor ชนิด BelowMark อีกชนิดหนึ่งในตาราง 'mkmk' (mark to mark) เพื่อรองรับการซ้อนสระล่างใต้พินทุ พร้อมทั้งเพิ่ม anchor ให้กับ glyph แต่ละ glyph ให้ครบ

    นอกจากนี้ ยังได้ ส่งแพตช์ สำหรับแก้ให้ HarfBuzz normalize อักขระใต้บรรทัดให้พินทุมาก่อนสระล่างอย่างถูกต้องด้วย ซึ่งแพตช์ยังอยู่ระหว่างอภิปราย

    แต่เนื่องจากฟอนต์ชุด TLWG ยังมีการใช้งานใน LaTeX (pdfTeX engine) ด้วย ซึ่งใน LaTeX ยังคงใช้ PUA glyph แบบเก่า (ที่เรียกกันว่า ตัวหลบ) อยู่ ไม่สามารถใช้ประโยชน์จากการปรับข้อมูล OpenType ข้างต้นได้ จึงต้องปรับขยายกฎ LIGKERN ให้ครอบคลุมกรณีของภาษาชาติพันธุ์เพิ่มเติม กล่าวคือ ต้องเพิ่มกฎต่อไปนี้:

    • ใช้วรรณยุกต์ยกสูงถ้าตามหลังไม้ไต่คู้ วรรณยุกต์ หรือทัณฑฆาต (กฎ LIGKERN ใน LaTeX จะใช้วรรณยุกต์ตัวลดต่ำโดยปริยาย แล้วค่อยใช้กฎ LIGKERN ยกให้สูงขึ้น ซึ่งจะกลับกันกับฟอนต์บนเดสก์ท็อป)
    • ใช้วรรณยุกต์ยกสูงหลบซ้ายถ้าตามหลังไม้ไต่คู้ วรรณยุกต์ หรือทัณฑฆาตที่หลบซ้าย
    • ใช้สระบนที่หลบซ้ายถ้าตามหลังพินทุที่ตามหลังพยัญชนะหางยาว (ป ฝ ฟ ฬ)
    • ใช้สระอุ อู ลดต่ำเมื่อตามหลังพินทุ
    • generalize กฎอื่น ๆ ที่บังเอิญเจาะจงเฉพาะกรณีที่ปรากฏในภาษาไทยไว้ เช่น ใช้นิคหิตหลบซ้ายหลังสระอูและพินทุที่ตามหลังพยัญชนะหางยาว, ใช้สระบนหลบซ้ายถ้าตามหลังสระอุ อู ที่ตามหลังพยัญชนะหางยาว)

    นั่นคือสิ่งที่ทำได้ในตอนนี้สำหรับ LaTeX ยังมีกรณีที่ขาดเหลืออยู่ซึ่งยังไม่สามารถทำได้ เนื่องจากตาราง LTH encoding เต็มแล้ว ไม่มีช่องเหลือให้เพิ่ม PUA glyph เช่น

    • ยามักการยกสูง
    • ไม้ไต่คู้ นิคหิต ยามักการ ที่ยกสูงและหลบซ้าย

    ถือเป็นข้อจำกัดที่ต้องพยายามหาทางแก้ไขในรุ่นถัดไป แต่ขณะนี้ก็ถือว่าครอบคลุมกรณีในภาษาชาติพันธุ์ได้พอสมควรแล้ว (ข้อจำกัดนี้มีเฉพาะสำหรับ pdfTeX เท่านั้น ส่วนฟอนต์บนเดสก์ท็อป หรือ XeTeX รองรับครบทุกกรณี)

    ผลพลอยได้ระหว่าง fine-tune ฟอนต์ก็คือ ได้เพิ่มฟอนต์ Umpush Light สำหรับการใช้งานใน LaTeX แล้วด้วย โดยสามารถกำหนดฟอนต์ด้วยคำสั่ง \usefont เช่น

    \usefont{LTH}{umpush}{l}{n} % ตัวตรง \usefont{LTH}{umpush}{l}{it} % ตัวเอียง

    ฟอนต์รุ่นนี้ ได้อัปโหลดเข้า Debian sid (สำหรับเดสก์ท็อป) และที่ CTAN (สำหรับ LaTeX) แล้วทันทีหลังจากออกรุ่นที่ต้นน้ำ สำหรับ LaTeX ใน Debian นั้น ต้องรอทีม TeX ของ Debian อัปเดตพร้อมกับภาษาอื่น ๆ ในแพกเกจ texlive-lang-other ต่อไป

    อ้างอิง:
    [1]
    นเรศ นโรปกรณ์. (๒๕๓๖). อัจฉริยลักษณ์และความเป็นวิทยาศาสตร์ของลายสือไทย. พิมพ์ครั้งที่ ๑. กรุงเทพฯ : โอเดียนสโตร์. ISBN 974-276-975-3.
    [2]
    ราชบัณฑิตยสถาน. (๒๕๕๓). คู่มือระบบเขียนภาษามลายูปาตานีอักษรไทย ฉบับราชบัณฑิตยสถาน. พิมพ์ครั้งที่ ๑. กรุงเทพฯ : ราชบัณฑิตยสถาน. ISBN 978-616-7073-25-5.