前面讲到使用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中。

环境配置完成,具体事例如下:

 package com.fxb.freetype;

 import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData; public class FreeType implements ApplicationListener{ BitmapFont[] font;
//FreeTypeBitmapFontData fontData;
FreeTypeFontGenerator generator;
SpriteBatch batch; @Override
public void create() {
// TODO Auto-generated method stub
batch = new SpriteBatch();
font = new BitmapFont[];
Color[] colors = { Color.RED, Color.BLUE, Color.GREEN };
for( int i=; i<; ++i ){
generator = new FreeTypeFontGenerator( Gdx.files.internal( "data/" + (i+) + ".ttf" ) );
font[i] = generator.generateFont( , FreeTypeFontGenerator.DEFAULT_CHARS+"今天是个好日子,大家心情都很", false );
font[i].setColor( colors[i] );
generator.dispose();
} //fontData = generator.generateData( 25, FreeTypeFontGenerator.DEFAULT_CHARS+"今天是个好日子,大家心情都很", false );
} @Override
public void resize(int width, int height) {
// TODO Auto-generated method stub } @Override
public void render() {
// TODO Auto-generated method stub Gdx.gl.glClearColor( , , , );
Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT ); batch.begin();
for( int i=; i<; ++i ){
font[i].drawMultiLine( batch, "今天是个好日子,\n大家心情都很好\nVery Good! 20140521!!", , *(-i) );
}
batch.end();
} @Override
public void pause() {
// TODO Auto-generated method stub } @Override
public void resume() {
// TODO Auto-generated method stub } @Override
public void dispose() {
// TODO Auto-generated method stub
batch.dispose();
} }

运行效果:

文中用到了3个ttf文件,1.ttf为娃娃体,2.ttf为幼圆,3.ttf为行楷。

最新文章

  1. 负margin小记
  2. 窗体==&gt;&gt;初始Windows程序
  3. 编写一函数用来实现左右循环移位。函数原型为move(value,n);n&gt;0时右移n位,n&lt;0时左移|n|位。
  4. 【web性能】web性能测试工具推荐
  5. C++读取二进制文件(某特定格式)
  6. log4net 总结
  7. 【BZOJ3270】【高斯消元】博物馆
  8. HMM的学习笔记1:前向算法
  9. Java中的一些术语的解释
  10. 借鉴别人的Oracle 11g安装和卸载图文教程
  11. bzoj千题计划271:bzoj4869: [六省联考2017]相逢是问候
  12. UE4中如何使物体始终朝向摄像头?
  13. C#,记录--一个方法中,完成对数据增删改操作
  14. hdu5705
  15. gulp使用入门
  16. SPOJ10707 COT2 - Count on a tree II 【树上莫队】
  17. 手动注册 Omron SYSMAC OPC Server 2
  18. 使用SQL Database Migration Wizard把SQL Server 2008迁移到Windows Azure SQL Database
  19. lua打包exe【转】
  20. idata,xdata,pdata,code

热门文章

  1. python 复制文件到其他路径
  2. Problem5-Project Euler
  3. java io详解(1)
  4. 大于2t的磁盘分区,并格式化ext4挂载
  5. T-SQL查询两个日期之间的休息日(周六周日)天数
  6. Google搜索引擎
  7. 题解 P2701 【[USACO5.3]巨大的牛棚Big Barn】
  8. Django商城项目笔记No.2项目准备工作
  9. python第四十三课——封装性
  10. JSSDK图像接口多张图片上传下载并将图片流写入本地