Как использовать шрифты устройства для отображения многоязычного текста в одном приложении Flash - PullRequest
0 голосов
/ 31 января 2012

ОБНОВЛЕНИЕ: Я полностью изменил вопрос, потому что на самом деле мне действительно трудно правильно использовать шрифты устройства для нескольких языков, отображаемых в одном приложении (одновременно).

Я должен использовать шрифты устройства ( не может использовать свойство .embedFonts = true), и я не буду маскировать, масштабировать, поворачивать или анимировать текст в любом случае.Я не беспокоюсь о побочных эффектах исчезающих проблем.Я замечаю, что английские символы отображаются правильно, НО другие символы не отображаются ...

Как и следующие кодированные символы, например:

सकत

Вместо этого вышеприведенные символы отображаются в виде пустых квадратов.

Есть ли что-то, что мне нужно использовать / знать?Я смотрел на них:

  • System.useCodePage;
  • TextField.defaultTextFormat;
  • TextField.setTextFormat (...);
  • Объект TextFormat;
  • объект StyleSheet;
  • Font.enumerateFonts (true);

Я пытаюсь отобразить отдельные слова (или короткие предложения)) из разных источников и разных языков.Другими словами .... многие TextFields будут разбросаны рядом друг с другом, но каждый TextField будет использовать один язык, независимый от других Textfields.Один может быть на китайском, другой на испанском, другой на французском, английском и т. Д.

Что мне нужно сделать, чтобы шрифт "_sans" (или любые поддерживаемые шрифты устройства) отображалсяправильно на разных языках?

Ответы [ 2 ]

1 голос
/ 31 января 2012

Кажется, я наконец-то решил проблему со шрифтом устройства.

В Flex, похоже, что изменение стиля межбуквенный интервал , отличное от нуля (0), нарушит поддержку шрифтов для азиатских символов. Возможно, для этих дополнительных стилей предназначены только латинские символы.

Но в любом случае, для тех из вас, кто встречает полых квадратов вместо настоящего азиатского символа, убедитесь, что вы не используете style-properties , которые могут быть неподдерживаемым набором символов.

Мой подход к настройке метки в правильном стиле состоял в том, чтобы переопределить метку метод доступа к установщику:

override public function set label(value:String):void {
    super.label = value;

    //If English characters / numerals (space letters by 1-pixel):
    if(/[a-z0-9]/i.test(value)) {
        this.setStyle("letterSpacing", 1);
    } else {
        this.setStyle("letterSpacing", 0);
    }
}
0 голосов
/ 31 января 2012

Если вы посмотрите на документацию, они имеют разные цели.

defaultTextFormat () "определяет формат, применяемый к вновь вставленному тексту"

Так что это означает, что когда вы будете вводитьтекст в TF будет принимать этот формат, который был указан.

и setTextFormat () Применяет форматирование текста, которое параметр формата указывает к указанному тексту в текстовом поле.

если послеdefaultTextFormat() вы звоните setTextFormat(), тогда уже вставленный текст будет затронут.Но если вы добавите новый текст, он будет использовать формат defaultTextFormat().

Подробнее об этом:

setTextFormat ()

defaultTextFormat ()

Вопрос : Если символы не отображаются, вы используете embedeFont как true?если да, то вам нужно встроить шрифт в символы, которые вы хотите отобразить.

Подробнее о шрифтах в моих предыдущих ответах:

альтернатива-встраивание-а-font-in-as3

альтернатива для встраивания шрифта в as3

text-go-invisible-on-embeddedfont-правда

...