1. 程式人生 > >利用FreeType讓LibGDX輸出中文

利用FreeType讓LibGDX輸出中文

LibGDX是一個功能豐富性能強大的遊戲框架,但是有一個明顯的缺陷——不能直接支援中文輸出。

最廣為人知的LibGDX中文方法是用Hiero字型編輯器把中文製成點陣字(圖片格式),但是這個方法在文字較多的情況(AVG角色扮演)下會增大遊戲資料量(中文常用字3000個左右,需要極大的圖片),所以我們要另闢蹊徑。

作為LibGDX的7大擴充套件包(Ai、Box2d、Bullet、Controller、Freetype、Jnigen、Tools)之一,Freetype可以讓LibGDX支援包括中文字型(也包括全形標點)在內的多種字型,直接用程式碼控制顯示的文字而不必用點陣字把assets撐破。

首先,把我提供的檔案(一個jar和兩個資料夾複製)貼上進你的專案的libs資料夾裡,引用擴充套件包,然後在專案裡寫入如下程式碼:
//載入自定義字型
public static FreeTypeFontGenerator gont = new FreeTypeFontGenerator( Gdx.files.internal("meow.ttf"));
//在這裡把你要輸出的漢字全部寫上。不要出現重複的字,否則會出錯
//如果標點符號也要用全形,也寫上
public static FreeTypeBitmapFontData fontData = gont.generateData(25, FreeTypeFontGenerator.DEFAULT_CHARS+ "歌唱我們親愛的祖國,從今走向繁榮富強", false);

/***** 分割線上下的程式碼可以不在同一個類 *****/

//文字使用自定義字型
font = new BitmapFont(Assets.fontData, Assets.fontData.getTextureRegion(), false);
font.draw(game.batch, "歌唱我們親愛的祖國,從今走向繁榮富強!", 100, 100);

最後是FreeType和方正喵嗚體的下載

2015-1-13 00:21首發於某個如今早已商業化的Android社群