libgdx学习记录9——FreeType,ttf中文显示
生活随笔
收集整理的這篇文章主要介紹了
libgdx学习记录9——FreeType,ttf中文显示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前面講到使用Hireo創建的BitmapFont以顯示中文字體。這種方式效率很高,當所要顯示的字的總數較少,并且大小比較固定時,可以采用這種方式。
但是這種也有弊端:
(1)字體大小不能隨意設置,當放大時就會變形。
(2)當所要顯示的字總數較多或者經常變化時,會很麻煩。
libgdx對中文的支持不太好,也是很多人轉向其他引擎的一個原因。幸好,其擴展模塊中的FreeType能夠通過ttf字體來實現隨意中文顯示。
FreeType是libgdx的擴展模塊,創建項目時需要添加對應的jar包和對應的動態運行庫。
core工程lib中加入gdx-freetype.jar。
desktop工程lib中加入gdx-freetype-natives.jar。
android工程中lib加入gdx-freetype.jar,并將armeabi和armeabi-v7a中的libgx-freetype.so文件添加到對應的目錄中。
三個工程中分別將對應的jar包添加到Refrenced Libraries中。
環境配置完成,具體事例如下:
1 package com.fxb.freetype; 2 3 import com.badlogic.gdx.ApplicationListener; 4 import com.badlogic.gdx.Gdx; 5 import com.badlogic.gdx.graphics.Color; 6 import com.badlogic.gdx.graphics.GL10; 7 import com.badlogic.gdx.graphics.g2d.BitmapFont; 8 import com.badlogic.gdx.graphics.g2d.SpriteBatch; 9 10 import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator; 11 import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData; 12 13 14 public class FreeType implements ApplicationListener{ 15 16 BitmapFont[] font; 17 //FreeTypeBitmapFontData fontData; 18 FreeTypeFontGenerator generator; 19 SpriteBatch batch; 20 21 @Override 22 public void create() { 23 // TODO Auto-generated method stub 24 batch = new SpriteBatch(); 25 font = new BitmapFont[3]; 26 Color[] colors = { Color.RED, Color.BLUE, Color.GREEN }; 27 for( int i=0; i<3; ++i ){ 28 generator = new FreeTypeFontGenerator( Gdx.files.internal( "data/" + (i+1) + ".ttf" ) ); 29 font[i] = generator.generateFont( 25, FreeTypeFontGenerator.DEFAULT_CHARS+"今天是個好日子,大家心情都很", false ); 30 font[i].setColor( colors[i] ); 31 generator.dispose(); 32 } 33 34 //fontData = generator.generateData( 25, FreeTypeFontGenerator.DEFAULT_CHARS+"今天是個好日子,大家心情都很", false ); 35 } 36 37 @Override 38 public void resize(int width, int height) { 39 // TODO Auto-generated method stub 40 41 } 42 43 @Override 44 public void render() { 45 // TODO Auto-generated method stub 46 47 Gdx.gl.glClearColor( 1, 1, 1, 1 ); 48 Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT ); 49 50 batch.begin(); 51 for( int i=0; i<3; ++i ){ 52 font[i].drawMultiLine( batch, "今天是個好日子,\n大家心情都很好\nVery Good! 20140521!!", 120, 100*(3-i) ); 53 } 54 batch.end(); 55 } 56 57 @Override 58 public void pause() { 59 // TODO Auto-generated method stub 60 61 } 62 63 @Override 64 public void resume() { 65 // TODO Auto-generated method stub 66 67 } 68 69 @Override 70 public void dispose() { 71 // TODO Auto-generated method stub 72 batch.dispose(); 73 } 74 75 }運行效果:
文中用到了3個ttf文件,1.ttf為娃娃體,2.ttf為幼圓,3.ttf為行楷。
轉載于:https://www.cnblogs.com/MiniHouse/p/3740988.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的libgdx学习记录9——FreeType,ttf中文显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android网络课程笔记-----定制
- 下一篇: jquery之stop()的用法