Love2d กับการแสดงผลภาษาไทย

Love2d กับการแสดงผลภาษาไทย

หลังจากที่ปรับแต่งขนาดของหน้าต่างเกมเรียบร้อยแล้วผมก็ทดลองเปลี่ยนการแสดงผล hello ด้วยการพิมพ์ภาษาไทยเข้าไป แต่ผลออกมาไม่น่าพิศมัยเลย

function love.draw()
    love.graphics.print("รักเร่ เร่ร้างรัก", 400, 300)
end
ตัวหนังสือแสดงผลเป็นสี่เหลี่ยมเมื่อเปลี่ยนจาก
ตัวหนังสือแสดงผลเป็นสี่เหลี่ยมเมื่อเปลี่ยนจาก “Hello World” เป็น “รักเร่ เร่ร้างรัก”

หมายความว่า love2d มีปัญหากับการแสดงผลภาษาไทย ผมได้ค้นหาข้อมูลด้วยตัวเองและได้ทราบว่าตัว love2d นั้นรองรับการเข้ารหัสตัวหนังสือแบบ utf-8 ซึ่งสมควรที่จะแสดงตัวหนังสือภาษาไทยได้ถูกต้อง แล้วทำไมผลจึงเป็นเช่นนี้ ผมค้นต่อไปอีกจนได้ทราบว่าปัญหาอยู่ที่ font ค่าปริยายของ love2d ใช้ font ที่ไม่สนับสนุนภาษาไทย ดังนั้นผมจึงต้องหาตัวหนังสือภาษาไทยมาใส่ในตัวเกมด้วย เว็บที่ผมคิดถึงเป็นเว็บแรกก็คือ f0nt.com

ค้นอยู่พักหนึ่งผมก็เลือก Fontcraft เวอร์ชัน 2.03 ของคุณ จุติพงศ์ ภูสุมาศ มาใช้ ตัวไฟล์ font ที่โหลดมามีช่องว่างในชื่อไฟล์ที่อาจจะสร้างปัญหาในการเรียกใช้ไฟล์ ดังนั้นผมจึงใส่ ‘-‘ เข้าไปแทนช่องว่างเพื่อนป้องกันปัญหาล่วงหน้า หวังว่าคุณจุติพงศ์คงไม่เห็นว่าเป็นการดัดแปลงที่ไม่สมควรนะครับ

เมื่อมีฟอนต์ที่ต้องการแล้วสิ่งต่อไปที่ผมต้องทำก็คือการเปลี่ยนฟอนต์ ผมอ่าน wiki จนพบกับวิธีการเปลี่ยนรูปแบบตัวหนังสือในที่สุด

font = love.graphics.newFont( filename, size )

ผมได้แก้ไขให้ love เรียกใช้ฟอนต์ใหม่ดังข้างล่างนี้

fontCraft = love.graphics.newFont( "fonts/fontcraft-ver-2.03.otf", 16 ) --สร้าง object ขึ้นมาเก็บค่าฟอนต์
function love.draw()
    love.graphics.setFont(fontCraft) --ตั้งค่าฟอนต์โดยอ้างอิงจาก object fontCraft
    love.graphics.print("รักเร่ เร่ร้างรัก", 400, 300)
end
ตัวเกมที่รันหลังจากเพิ่ม font เข้าไป ผมว่าตัวหนังสือมันเล็กไปหน่อยนะ

ตอนนี้การแสดงผลภาษาไทยทำได้แล้ว แต่ผมว่าตัวหนังสือมันเล็กไปหน่อย ดังนั้นผมจะเพิ่มขนาดตัวหนังสือขึ้นอีกเป็น 36

fontCraft = love.graphics.newFont( "fonts/fontcraft-ver-2.03.otf", 36 ) --สร้าง object ขึ้นมาเก็บค่าฟอนต์
function love.draw()
    love.graphics.setFont(fontCraft) --ตั้งค่าฟอนต์โดยอ้างอิงจาก object fontCraft
    love.graphics.print("รักเร่ เร่ร้างรัก", 400, 300)
end
ผลออกมาสวยงาม แต่วรรณยุกต์ยังแสดงผลไม่ดี ไม่แน่ใจว่าเป็นที่ตัว font หรือที่อื่น
ผลออกมาสวยงาม แต่วรรณยุกต์ยังแสดงผลไม่ดี ไม่แน่ใจว่าเป็นที่ตัว font หรือที่อื่น

 

Comments are closed.