Bitmap Font Creator — อัพเดตล่าสุด

ถ้าสนใจอยากลองก็ ...ดาวน์โหลดอันนี้ไปลองนะครับ (ยังไม่ได้เทสต์กับเครื่องที่ยังไม่ได้ลง Tao Framework นะครับ ... เอาแบบนี้ไปก่อน) อ้อ ตัวนี้ต้องใช้ .Net Framework 3.5 นะครับ

ส่วนท่านใดสนใจจะ Get Code มา Build เองนะครับ http://code.google.com/p/bmfont-creator/ กับ Tao Framework ด้วยครับ

สำหรับบางคนที่ยังไม่รู้จัก โปรแกรม Playground-Soft Bitmap Font Creator เป็นโปรแกรมสำหรับสร้าง "Image Font" หรือ ฟอนท์ที่ใช้ภาพ Bitmap จากฟอนท์แบบ TrueType/OpenType

น่าจะสงสัยกันว่า "แล้วจะทำไปเพื่ออะไร ?" ... สำหรับการทำเกม สิ่งที่สำคัญคือการเตรียม Content ให้เหมาะสมกับ Platform ที่ใช้ก่อนจะนำไปใช้ ซึ่ง Font ก็ไม่ใช่ข้อยกเว้น แน่นอนว่าเราอาจจะใช้ FreeType เรนเดอร์ glyph เอาในเกมเลยก็ได้ แต่ว่าการคำนวนตรงนี้นั้นใช้เวลาพอสมควร การที่เราแปลง Font ให้อยู่ในรูปของไฟล์ภาพนั้นทำให้ทำงานได้เร็วกว่าแน่นอน


โปรแกรมนี้จะแบ่งออกเป็นสองส่วน คือ

  • Glyph Renderer ทำหน้าที่สร้างภาพของแต่ละตัวอักษร (ที่เรียกว่า glyph) และข้อมูลที่จำเป็นบันทึกใส่เอาไว้ในรูปแบบ xml ไฟล์
  • Font Maker ทำหน้าที่รวมภาพของแต่ละตัวอักษรให้เป็นรูปแบบของ Font ที่เราต้องการ

Glyph Renderer

ตรงจุดนี้ เราก็เลือกว่าจะใช้ฟอนท์อะไร (ต้องเลือกเป็นไฟล์เอานะครับ ไม่ได้ลิสต์ฟอนท์ระบบลงมา เนื่องจากปัญหาทางเทคนิค) แล้วจากนั้นก็ปรับค่าให้ถูกใจ (สั่ง Preview ได้ที่กรอบกลาง) เสร็จแล้วเลือกว่าจะใช้เอา Script (จะเรียกว่าภาษาก็ได้ แต่บางภาษาจะมีหลาย Script ครับ) ซึ่งถ้า Script นั้นไม่มีในฟอนท์ก็จะข้ามไป

ในภาพผมใช้ฟอนท์ Loma แบบตัวหนา (Bold) ครับ ท่านใดสนใจเชิญที่ ThaiFonts-Scalable ได้เลยครับ

ส่วนตัวคิดว่ามันยังวาดตัวอักษรได้ไม่สวยงามนัก (ส่วนนึงเพราะโค้ดส่วนที่แปลง outline จาก FreeType ให้เป็นเส้นเนี่ยผมเขียนเอง (แต่แปลงจากบทความชาวบ้านเขาครับ) ... ไม่แน่ใจว่าถูกหรือเปล่าด้วย) เดี๋ยวจะกลับมาทบทวนดูว่าจะแก้เพิ่มได้มั้ยหรือมีอะไรผิดไปหรือเปล่าทีหลังครับ

Font Maker

ตรงนี้อย่างที่บอกว่า เป็นส่วนที่ใช้แปลงไฟล์ที่สร้างขึ้นมาในตอนแรก ให้อยู่ในรูปแบบฟอนท์ที่เราต้องการ ... แล้วฟอนท์แบบไหนที่เราต้องการ ??? ผมก็ไม่รู้เหมือนกันว่าเกมของคุณจะใช้ฟอนท์แบบไหน ? ดังนั้นตัวสร้างฟอนท์นี้แทนที่จะมีความสามารถตายตัว ก็เปิดโอกาสให้ผู้ใช้สามารถเขียน Plugin เองได้ (พอ Build เสร็จก็ก๊อปมาวางใส่ Folder ที่ชื่อว่า Plugin ในโปรแกรม) ดังนั้นก็คิดว่าน่าจะยืดหยุ่นพอตัวล่ะครับ

ผมมี Plugin ตัวอย่างให้หนึ่งตัว ซึ่งจะสร้าง Font ในรูปแบบของโค้ด Lua และ Texture ที่จำเป็น (วาด Glyph ไปตามลำดับความสูงของแต่ละภาพครับ)
อันนี้เป็น Output จาก Plugin ตัวอย่าง

พอถึงตรงนี้ก็มีคนสงสัยว่า ... แล้วมันจะใช้ได้จริงหรือเปล่า ต้องบอกก่อนว่า สิ่งตัวโปรแกรมจะสร้างให้ก็คือ ข้อมูล Glyph Matrix และข้อมูล Kerning Pair โดยที่ Glyph Matrix จะเป็นตัวบอกว่า จะวาด Glyph ลงไปยังไง ที่ตำแหน่งไหน แล้ว Glyph ต่อไปจะวาดที่ไหน ส่วน Kerning Pair จะเป็นการปรับระยะห่างระหว่าง Glyph ที่ติดกัน (สำหรับภาษาไทย ... Kerning Pair เป็นวิธีหนึ่งในการแก้ไขปัญหาสระลอยครับ)

ภาพข้างล่างนี้เป็นภาพที่ผมทดลองทำโปรแกรมที่เรียกใช้ Font ที่สร้างขึ้น โดยใช้ Engine ที่เรียกว่า LÖVE ครับ (ตัวนี้เป็น LÖVE เวอร์ชั่น 0.6.0 ครับ คำสั่งเปลี่ยนเยอะมาก .......) ลองดูกันนะครับ

ภาพแรกนี้เป็น Font ที่สร้างขึ้นข้างบน ... เนื่องจาก Font Loma ไม่มีข้อมูล Kerning Pair ก็เลยจะเห็นวรรณยุกตร์ลอยเท้งเต้งอยู่อย่างนั้น เดี๋ยวดูอีกภาพกันครับ

ภาพนี้ใช้ฟอนท์ Tahoma ... ซึ่งมี Kerning Pair ของภาษาไทยพอดี จะเห็นว่า วรรณยุกตร์อยู่ชิดกับตัวอักษร ... แต่เอ มันชิดไปหรือเปล่า ??

สุดท้ายนี้ โปรแกรมนี้แจกจ่ายด้วย License แบบ GPLv2 (รวมถึงส่วนการพัฒนา Plugin ด้วย) ดังนั้น ทุกท่านมีสิทธิที่จะแก้ไข ทำซ้ำ หรือแจกจ่าย หรืออะไรก็ได้ แต่ ถ้าเกิดว่ามีการแก้ไขเกิดขึ้น สิ่งที่เกิดขึ้นจากการแก้ไขนั้น ๆ (รวมทั้ง Plugin ที่ทำกันด้วย) จะเป็น GPLv2 โดยอัตโนมัตินะครับ ... ส่วน Output ที่ได้นั้น ... เป็นส่วนที่ไม่ครอบคลุมใน License นี้ครับ ดังนั้นก็ใช้ได้ตามอัฐยาศัย

อีกอย่างนึง ผมไม่ขอรับผิดชอบต่อความเสียหายที่จะเกิดขึ้นจากการใช้ซอฟท์แวร์นี้ รวมถึงไม่รับผิดชอบต่อการละเมิดลิขสิทธิตัว font ต้นฉบับที่ถูกนำมาใช้แปลงด้วย ไม่ว่าในกรณีใด ๆ ก็ตามครับ ดังนั้นต้องบอกก่อนว่า จะใช้ Font ไหนก็ต้องศึกษา License ของ Font นั้น ๆ ให้ดีก่อนนะครับ

Wutipong Wongsakuldej

Programmer, interested in frontend applications, music and multimedia.

Latest posts by Wutipong Wongsakuldej (see all)

Leave a Reply

Your email address will not be published. Required fields are marked *