2016-04-04 3 views
2

Я делаю приложение, чтобы помочь мне запомнить некоторые тайские слова, которые я изучаю.Как правильно отображать тайский шрифт в libGDX?

Однако я не могу получить текст для рендеринга.

Я использовал this example, чтобы создать базовую сцену. Это то, что у меня есть до сих пор.

public class ThaiWords extends ApplicationAdapter { 

OrthographicCamera cam; 
SpriteBatch batch; 
BitmapFont thaiFont; 

@Override 
public void create() { 

    FreeTypeFontGenerator generator; 

    FreeTypeFontParameter parameter = new FreeTypeFontParameter(); 
    parameter.size = 18; 
    parameter.characters = "ก"; 

    generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/garuda.ttf")); 
    thaiFont = generator.generateFont(parameter); 
    generator.dispose(); 

    batch = new SpriteBatch(); 

    cam = new OrthographicCamera(); 
    cam.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
    cam.update(); 
} 

@Override 
public void render() { 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    batch.setProjectionMatrix(cam.combined); 
    batch.begin(); 
    thaiFont.draw(batch, "ก", 0, 66); 
    batch.end(); 
} 

@Override 
public void resize (int width, int height) { 
    cam.setToOrtho(false, width, height); 
} 
} 

Для тестирования, я бы просто хотел показать символ «ก». В приведенном выше коде создается «?» символ.

Я прямо скачал шрифт garuda.tff с libGDX directory.

Я действительно не уверен, что мне не хватает! Я даже пытался создать растровое изображение до запуска, но это создало пустой экран.

Любые советы были бы замечательными!

Редактировать: Я заметил в Android Studio, когда я закрываю и снова открываю проект, фактический код изменяется с «ก» на «?». Это может быть проблема с кодировкой, но я не знаю, как ее исправить.

+0

Вы уверены, что Гаруда имеет тайских символов? – Tenfour04

+0

Я уверен, что это так. Он специально разработан, чтобы иметь легко читаемые тайские символы. Я также добавил его к моим шрифтам в Windows и напечатал символы. Более подробную информацию можно найти здесь http://slice-of-thai.com/fonts/#garuda – Johnny

ответ

2

Я предлагаю вам использовать Stage и Label для визуализации текста.
в создании:

Stage stage = new Stage(); 
Label label = new Label("วรณ", new Label.LabelStyle(thaiFont, Color.YELLOW)); 
label.setPosition(200,10); 
stage.addActor(label); 

, а затем в метод отрисовки:

stage.act(delta); 
stage.draw(); 

Я проверил его и он работал нормально.

enter image description here

+0

Благодарим вас за ответ. Хм, я все еще получаю "?" в моей системе. Вы используете Android Studio? Не могли бы вы поделиться своими настройками кодировки: «Настройки» -> «Редактор» -> «Кодировки файлов», пожалуйста? – Johnny

+0

Обновленный ответ. Я использую IntelliJ IDEA Community Edition 15.0.3. Моя ОС - Windows 10, а системный язык - русский. – Enigo

+0

Благодарим за помощь. Я изменил кодировку с windows-1251 на UTF-8 для своего основного класса, а также из.ttf и теперь оба метода рендеринга работают. – Johnny

1

У меня была такая же проблема. Это не что-то не так с вашим кодом или генератором шрифтов libGdx. Генератор шрифтов и расширение libgdx Freetype отлично работают с набором символов UTF-8, включая специальные символы. Вам просто нужно сохранить ваши файлы свойств в кодировке UTF-8.

Вы можете использовать любой другой текстовый редактор для сохранения файла свойств в кодировке UTF-8 или если вы используете Android Studio, перейдите на страницу Файл-> Настройка-> Редактор-> Кодировка файла. Затем измените «Кодировка по умолчанию для файлов свойств» в UTF-8.

Затем вам нужно перепечатать все специальные символы в каждом файле свойств. потому что предыдущая кодировка перепутала неизвестные символы.

Чем все должно работать нормально!

enter image description here

Смежные вопросы