ทำให้ Pebble Time แสดงผลภาษาไทย + ญี่ปุ่น

จากวันก่อนที่ทำให้ Pebble Time อ่านภาษาไทยออกแล้ว ก็มาเจอปัญหากรณี use case ของผมบ้างคือ ปกติผมจะเจอ Notification ที่เป็นทั้งภาษาไทย, ภาษาอังกฤษ และภาษาญี่ปุ่น ก็ต้องออกแรงเพิ่มเพื่อทำให้อ่านได้ทั้งหมด

TLDR; – โหลด language pack ไปลงผ่านมือถือ Android ก็จะอ่านออก

Thai + Japanese Language Pack เวอร์ชัน 0.1 (2015.06.29) – ดาวน์โหลด

ภาษาอังกฤษ ภาษาไทย ภาษาญี่ปุ่น บน Pebble Time

สำหรับคนมีเวลาอ่าน – วิธีการ pack / unpack ก็เหมือนๆ กับตอนที่ทำภาษาไทย แต่ว่าคราวนี้นอกจากจะเอาฟอนต์จาก pebblebits มาใส่แล้ว ยังต้องเอาฟอนต์ภาษาญี่ปุ่นมาใส่ด้วย ผมใช้ฟอนต์ Shinonome ที่แจกฟรีเป็น public domain มาใส่ ข้อดีคือมันเป็น bitmap font ทำให้แสดงผลจอความละเอียดต่ำได้สวยงามกว่าพวก truetype font แต่ข้อเสียคือมันเป็นฟอนต์แบบ BDF ซึ่งต้องเขียนตัวแปลงเป็นฟอนต์รูปแบบของ pebble เอง

ตัวอ่าน BDF ผมใช้ bdflib แล้วแปลงเป็นฟอนต์แบบของ Pebble โดยแกะเอาจากไฟล์ fontgen.py ใน Pebble SDK ตัวโค้ดมี comment อธิบายโครงสร้างไฟล์เอาไว้ให้แล้ว

ปัญหาที่เจออีกอย่างหนึ่งคือฟอนต์ Shinonome ใช้ charset แบบ JIS X 0208 ต้องแปลง codepoint เป็น unicode ถึงจะใช้ได้ ผมก็ใช้ตารางจาก unicode.org

ปัญหาต่อมาคือตัวคันจิในภาษาญี่ปุ่นมีเยอะมาก ผมคัดเอาเฉพาะที่ใช้บ่อยๆ มาใส่ 2,000 ตัว อ้างอิงจากเว็บ tangorin

สุดท้ายกว่าจะได้เป็น language pack ออกมาก็เล่นเอาเหนื่อย ขอบคุณ @knightbaron และ @awkwin ที่ช่วยทดสอบมา ณ ที่นี้ด้วย

จับภาษาไทยใส่ Pebble Time

TLDR; – Pebble Time อ่านภาษาไทยไม่ออก ใช้มือถือ Android โหลดเอา language pack ไปลงผ่าน app Pebble Time ซะ ก็จะอ่านออก

Thai language pack เวอร์ชัน 0.3 (2015.06.29) – ดาวน์โหลด
Thai language pack เวอร์ชัน 0.2 (2015.06.15) – ดาวน์โหลด

สำหรับคนมีเวลาอ่าน – เรื่องมันมีอยู่ว่าช่วงเดือน ก.พ.ที่ผ่านมา ผมสั่งนาฬิกา Pebble Time จากเว็บ KickStarter ตั้งแต่ตอนที่มันเปิดตัว โดยมี blind faith ที่ว่าในเมื่อมันอ่านภาษาจีนออก มันก็ควรจะใช้งานภาษาอื่นได้ด้วย

อ่านภาษาญี่ปุ่นไม่ออก

พอได้ของจริงมา ปรากฏว่าเป็นดังคาดคืออ่านภาษาไทยไม่ออกเหมือนกับ Pebble รุ่นแรก แต่ของเก่านี่มีคนทำ custom firmware ใส่ฟอนต์ภาษาไทยไว้ ทำให้อ่านภาษาไทยได้ ส่วนของ Pebble Time เท่าที่หาดูแล้วยังไม่มีคนทำเลย

ไหนๆ ก็ไหนๆ แล้ว #อยากได้ต้องทำเอง

หลังจากศึกษาข้อมูลพอประมาณแล้วพบว่า นอกจากการแฟลช custom firmware ทับลงไปแล้ว เรายังสามารถแก้ไขฟอนต์บน Pebble Time ได้ด้วยการลง language pack ด้วย ซึ่งดูจะเป็นวิธีที่ปลอดภัยกว่า โครงสร้างของ language pack ก็มีคนแกะไว้ให้แล้วตามกระทู้นี้

ใน language pack จะประกอบด้วยไฟล์แปล user interface กับฟอนต์ที่ใช้ ซึ่งเราไม่สนใจจะแปล UI อยู่แล้ว สิ่งที่สนใจอย่างเดียวคือฟอนต์

วิธีแบบตรงไปตรงมาที่สุดก็คือหาฟอนต์ภาษาไทยมาใส่แทนที่ไฟล์ใน language pack ซึ่งวิธีที่ใช้คือไปเอามาจากเว็บ PebbleBits โดยการ generate custom firmware ที่มีภาษาไทยอยู่ด้วย จะได้ไฟล์ .pbz มา ซึ่งก็เป็น zip ธรรมดา เมื่อแตกออกมาแล้วจะมีไฟล์ชื่อ system_resources.pbpack อยู่

เราสามารถใช้ pbpack_tool มา unpack ได้ แล้วก็จะได้ไฟล์ออกมาหลายสิบไฟล์ ที่เราสนใจคือไฟล์หมายเลข 055-062 ก็ก๊อปมาแทนที่ไฟล์ 001-008 ใน language pack ได้เลย

จากนั้นใช้ pbpack_tool จัดการ pack ตัว language pack กลับมาเป็น .pbl แล้วหาทางติดตั้งลงบน Pebble Time วิธีที่ผมใช้คือจับ upload ขึ้นไปบน server สักแห่ง (ใช้ dropbox / pushbullet ก็ได้) แล้วเปิด URL ของไฟล์ pbl นี้จากมือถือ Android เมื่อโหลดแล้ว app Pebble Time จะมีตัวเลือกให้เราติดตั้ง (ไม่ได้เทสบน iPhone แต่เหมือนว่าจะทำไม่ได้)

พอลงเสร็จแล้วก็จะอ่านภาษาไทยออกละ