Я пытаюсь нарисовать символ из шрифта 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.
Спасибо.