แก้ปัญหาภาษาไทยให้ stellarium

ผู้นิยมสังเกตดวงดาวยามค่ำคืน จะรู้จักโปรแกรมท้องฟ้าจำลอง stellarium กันดี โปรแกรมนี้เป็นเหมือนแผนที่ดาวสามมิติ พร้อมแสดงตำแหน่งดาวเคราะห์ เนบิวลา ทางช้างเผือก และกาแล็กซีต่าง ๆ

stellarium เริ่มมีการแปลข้อความเป็นภาษาไทยในรุ่น 0.9.1 (17 มกราคม 2551) โดยสืบดูแล้วมาจาก Ubuntu เพื่อนบ้านเรานี่เอง แต่ปัญหาคือ มันแสดงภาษาไทยเป็นกล่องสี่เหลี่ยมหมดเลย ผมเลยเลี่ยงด้วยการเรียกในโลแคล C มาตลอด จนกระทั่งพบวิธีแก้ปัญหาการแสดงผลภาษาไทย

เข้าเรื่องเลยละกัน แฟ้มที่เกี่ยวข้องก็คือ /usr/share/stellarium/data/fontmap.dat ซึ่งมีเนื้อหาประมาณนี้:

# This file defines what font Stellarium should use for a given locale
# 
# Format is: locale font_file font_scale fixed_width_font_file fixed_width_font_scale
# Font files must be ttf format, located in the data directory.
# Absolute path can be given by starting file adress with a '/'
#
# Default font
#
default	DejaVuSans.ttf	1	DejaVuSansMono.ttf	1
#
# Overrides per locale
#
zh_HK	ukai.ttf	1.2	ukai.ttf	1.2
zh_TW	ukai.ttf	1.2	ukai.ttf	1.2
zh_CN	ukai.ttf	1.2	ukai.ttf	1.2
ja	ukai.ttf	1.2	ukai.ttf	1.2
ja_JP	ukai.ttf	1.2	ukai.ttf	1.2
ko	ukai.ttf	1.2	ukai.ttf	1.2

เราก็เพียงเพิ่มรายการสำหรับโลแคลไทยเข้าไปแค่นั้น แต่อย่าไปเชื่อคอมเมนต์ที่บอกว่าสามารถระบุชื่อแฟ้มของฟอนต์เป็น absolute path ได้ เพราะลองทำดูแล้วไม่ได้ผลครับ วิธีที่ได้ผลคือ

  1. เอาฟอนต์ไทยมาใส่ใน /usr/share/stellarium/data/ โดยผมสร้างเป็น symlink เอาจากแพกเกจ ttf-thai-tlwg โดยเลือกฟอนต์ธรรมดาหนึ่งตัว และ monospace อีกหนึ่งตัว
    # ln -s /usr/share/fonts/truetype/thai/Waree.ttf /usr/share/stellarium/data
    # ln -s /usr/share/fonts/truetype/thai/TlwgTypo.ttf /usr/share/stellarium/data
    
  2. เพิ่มรายการต่อท้ายใน /usr/share/stellarium/data/fontmap.dat :
    th	Waree.ttf	1	TlwgTypo.ttf	1
    th_TH	Waree.ttf	1	TlwgTypo.ttf	1
    

จากนั้นก็เพลิดเพลินกับชื่อหมู่ดาวเป็นภาษาไทยคุ้นหูกันได้เลย

screenshot ของ stellarium ภาษาไทย

Comments

อ่านหัวข้อใน twitter (Stellarium workaround for Thai)
แล้วนึกว่า เป็น workaround แบบยิ่งใหญ่อลังการ :p

stellarium เริ่มมีการแปลข้อความเป็นภาษาไทยในรุ่น 0.9.1 (17 มกราคม 2551) โดยสืบดูแล้วมาจาก Ubuntu เพื่อนบ้านเรานี่เอง แต่ปัญหาคือ 220-602 มันแสดงภาษาไทยเป็นกล่องสี่เหลี่ยมหมดเลย ผมเลยเลี่ยงด้วยการเรียกในโลแคล C มาตลอด จนกระทั่งพบวิธีแก้ปัญหาการแสดงผลภาษาไทย

เจ๋งครับพี่ ดีครับผม เหมาะสมครับท่าน

ขอบคุณหลาย ๆ เด้อ..........

ขอบคุณครับ
ก่อนแก้ อักษรมุมบนซ้ายก็ปกติไทยได้
หลังแก้ อักษรมุมบนซ้ายก็ปกติไทย ที่สี่เหลี่ยมในภาพก็เป็นไทยสวยงามแต่ที่เป็นตัวอัลฟา เบตาจะเป็นสี่เหลี่ยมแทน โดยอักษรที่มุมบนซ้ายก็แสดงปกติดี
ยังไม่รู้ว่าเป็นจากฟอนต์ไหน
ใช้ อูบุนตู๙.๐๔ ครับ

ดูเหมือนว่า stellarium เขาจะเปิดฟอนต์ ttf แล้ววาดเองนะครับ ถ้า glyph ขาด ก็ไม่ได้พยายามหาจากฟอนต์อื่น อย่างตัว alpha, beta นี่ ก็ไม่มีใน Waree ต้องใช้จาก DejaVu แต่ปัญหาคือมันยังไม่มีกลไกแบบนั้นใน stellarium

วิธีแก้ อาจจะหาฟอนต์ไทยที่มี glyph ครบ ๆ ครับ เช่น ฟอนต์ DejaVuSansThai ของคุณ wd: http://www.thaitux.info/node/502

ขอบคุณครับ
ใช้ DejaVuSansThai.ttf แทน Waree.ttf แล้วใช้ได้ครับ

ผมใช้ windows XP ลองดูแล้วไม่ได้ผลครับ
ขอความกรุณาบอกวิธีด้วยครับ

มันยอดมาก Sara !
ใช้ DejaVuSansThai.ttf แทน Waree.ttf ก็ Ok. ขอขอบคุณทุกคำแนะนำ
ฟอนต์ DejaVuSansThai loadที่ ของคุณ wd: http://www.thaitux.info/node/502

แก้ไข
# Default font
#
default DejaVuSansThai.ttf 1 DejaVuSansThai-Bold.ttf 1

และเพิ่ม
th DejaVuSansThai.ttf 1 TlwgTypo.ttf 1
th_TH DejaVuSansThai.ttf 1 TlwgTypo.ttf 1

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้