1

Тема: Встраивание шрифта в RTF документ

Всем привет. Занимаюсь разработкой приложения для генерации RTF документов. Возник вопрос по поводу встраивания шрифтов непосредственно в документ. Проштудировав спеку, стало понятно, что ничего не понятно по этому поводу. За встраивание отвечает группа {\*\fontemb <fonttype> <fontfname>? <data>?} таблицы шрифтов. По поводу <fonttype> и <fontname> все понятно. Не могу разобраться, что подразумевается под полем <data>. В спеке сказано "An embedded font can be specified by a file name, or the actual font data may be located inside the group". Здесь меня больше всего интересует именно font data. Если создать в Ворде документ и сохранить его со встроенными шрифтами в формате RTF, а потом открыть блокнотом, то на месте <data> оказывается пачка строк в шестнадцатеричном формате. Я так и не смог понять, что это за строки, и откуда процессор Ворда их берет. Вот собственно небольшой пример:

{\f0\fcharset0{\*\fontemb\ftruetype
0ee1000050e0000002000200040000000402040403100702060200009001000008004c5003000000000000000000000000000000010000200000000023b32cc500000000000000000000000000000000000010004300680069006c006c00650072000000000010001e0431044b0447043
....}Embedded_Font_Name;}

Учитывая опыт встраивания изображений непосредственно в документ, я решил просто открыть файл шрифта (.ttf), скопировать его содержимое, конвертировать его из bin в hex и вставить в поле <data>, но, увы, не сработало. Далее были попытки использования различных функций из WinAPI (GetFontData, CreateFontPackage, TTEmbedFont и т.п.) для генерации данных шрифта, что тоже не дало результата.
Собственно вопрос: что это за "магическое" поле <data> в группе {\*\fontemb}, и какие данные процессор Ворда должен там получить для распознавания и использования встроенного шрифта ? Помогите, пожалуйста.

2

Re: Встраивание шрифта в RTF документ

Проблему решил. Если что, данные шрифта нужно создавать с помощью TTEmbedFont, конвертировать в hex и вставлять в документ. Все работает.