Невозможно нарисовать символы Unicode, значение которых> 0xFFFF во Flex - PullRequest
1 голос
/ 30 июля 2009

Я пытаюсь нарисовать символ из шрифта Unicode со значением 0x1d11e (это символ скрипичного ключа из шрифта Sonata).

Я прочитал на форуме Adobe , что мне нужно конвертировать символы Unicode> 0xFFFF в использование суррогатных пар UTF-16, но, похоже, это не работает.

Вот мой код:

[Embed(source='C:/WINDOWS/Fonts/SonataStd.otf',
  fontName="Sonata__", mimeType="application/x-font")]
private var font1:Class;


public function draw():void {
  var txt:TextField = new TextField();
  var fmt:TextFormat = new TextFormat("Sonata__", 40);
  var clefChar:uint = 0x1d11e

  var p1:uint = (((clefChar - 0x10000) >> 10) & 0x3ff) + 0xd800;
  var p2:uint = ((clefChar - 0x10000) & 0x3ff ) + 0xdc00;


  txt.text = String.fromCharCode(p1, p2);


  txt.setTextFormat(fmt);
  txt.embedFonts = true;
  addChild(txt);

Когда я запускаю этот код, ничего не рисуется. Если я попытаюсь нарисовать 2-байтовый символ Unicode, это сработает.

Это на Flex 3, работает на Flash Player 10.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...