Использование скандинавских букв в libGDX-проекте, скомпилированном для iOS

Я сделал игру libGDX, которая должна работать на Android и iOS. Сама игра работает одинаково на обеих платформах, но по какой-то причине кодировка символов отключена на iOS.

Я создаю метку следующим образом:

Label info = new Label("Scandinavian letters: 'æøåÆØÅ'", labelStyle);

Это работает так, как задумано на Android; шрифты содержат нужные символы, и все отображается на экране так, как должно.

Однако на iOS скандинавские буквы просто исчезают (вместо этого отображаются «скандинавские буквы: ''»).

Я подозреваю, что это как-то связано с кодировками файлов, но я понятия не имею, какие файлы мне нужно проверить, или есть ли для этого настройка где-то в Xamarin.

Я знаю, что мои файлы Java проходят множество преобразований на пути к iOS (насколько я знаю, Java => C# => Mono => Native), так как я могу узнать, где в этом процессе мне нужно изменить кодировку и как?

В качестве альтернативы, я полагаю, это можно решить, используя «(char) 229» везде, где мне нужно написать «å», и так далее для других букв, но это довольно беспорядочно, не так ли?


person Erlend D.    schedule 26.08.2013    source источник
comment
Вы создаете растровое изображение шрифта в автономном режиме или во время выполнения?   -  person P.T.    schedule 27.08.2013
comment
Не в сети. И при использовании (char) 229 'å' появляется, как и должно быть. Поэтому я почти уверен, что это связано с кодированием файлов Java или некоторых промежуточных файлов во время (несколько сложного) процесса компиляции. Я пробовал несколько разных кодировок в своих файлах Java, но безуспешно, поэтому я думаю, что это последнее.   -  person Erlend D.    schedule 27.08.2013
comment
Если вы зарегистрируете значения или запишете содержимое байтов строк, возможно, вы сможете выяснить, в какую кодировку они начинают преобразовываться? (Предполагая, что символы не теряются?)   -  person P.T.    schedule 27.08.2013
comment
Это хорошая идея. Я попробовал, и похоже, что они там. Я напечатал символы в строке abcæøå и получил следующее: 97, 98, 99, 202, 175, 194. В Windows и Android вместо этого я получаю 97, 98, 99, 230, 248, 229. Сразу это мне ни о чем не говорит, но я попытаюсь изучить разные кодировки, чтобы понять, что происходит. Если кто-нибудь здесь знает, дайте мне знать!   -  person Erlend D.    schedule 29.08.2013


Ответы (1)


Я предполагаю, что эти буквы исчезают из-за проблем с кодировкой где-то в процессе преобразования кода Java в двоичные файлы Mono.

Мое текущее решение очень уродливое, но оно работает. Так что на случай, если у других возникнет такая же проблема, это мое временное решение:

public class Letters {

    public static char aa = (char)229;
    public static char ae = (char)230;
    public static char oe = (char)248;

    public static char AA = (char)197;
    public static char AE = (char)198;
    public static char OE = (char)216;

}

И тогда я могу написать:

String text = "Gr" + Letters.oe + "t ombord i en fl" + Letters.aa + "te.";
person Erlend D.    schedule 24.10.2013