ทำให้ 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 ที่ช่วยทดสอบมา ณ ที่นี้ด้วย