Преобразуйте файл .fntdata в файл .ttf. - PullRequest
2 голосов
/ 14 июля 2010

Кто-нибудь знаком со структурой встроенного шрифта .fntdata ? Это используется в PowerPoint 2007/2010 при встраивании шрифта в презентацию (в отличие от .odttf, который используется в Word 2007 / Word 2010). По сути, я просто хочу преобразовать это в файл .ttf или .odttf, чтобы его могли прочитать приложения WPF / Silverlight.

Одна страница стандарта гласит следующее:

с. Стандарт гласит, что application / x-fontdata указывает, что шрифт должен храниться как растровый шрифт (каждый глиф хранится как растровое изображение).

PowerPoint хранит TrueType и OpenType шрифты ( Код-Open-Type-формат , Micro-Type-Exp-Format ) в частях этот тип. Слово не читает и не пишет этот тип контента.

Что полезно знать, что, по крайней мере, есть направление для исследований, но я не уверен, куда идти дальше с точки зрения того, как конвертировать, если это возможно, и т. Д. (Предпочтительно в .NET) . * +1023 *

Сейчас я даже не могу понять, как это читать. Я пробовал Microsoft Font Validator, но он говорит, что это недопустимый шрифт.

Чтобы увидеть этот тип шрифта, перейдите в PowerPoint 2007/2010, создайте один пустой слайд и добавьте текстовое поле. Добавьте текст и измените шрифт на « Chiller » (например). Затем перейдите к Сфера (эта круглая фигура сверху), нажмите Сохранить как ... и затем прямо рядом с кнопкой Сохранить нажмите Инструменты выпадающий и затем нажмите Сохранить параметры . Как только появится диалоговое окно, в нижней части выберите Вставить шрифты в файл (не имеет значения, какое радио под вами выбрано). Хорошо, теперь сохраните и все готово. Теперь закройте файл и найдите его в том месте, где вы его сохранили. Переименуйте расширение из .pptx в .zip и затем разархивируйте его. В этой папке перейдите в / ppt / fonts / , и вы найдете там несколько шрифтов. Любой из них подойдет.

У кого-нибудь есть идеи?

Ответы [ 2 ]

2 голосов
/ 31 июля 2010

Я думаю, что я близок к ответу для вас.Шрифты этого типа имеют формат Embedded Open Type (EOT), который соответствует спецификации двоичного файла PowerPoint .Подробнее о EOT можно прочитать в формате W3C встроенного открытого типа (EOT) .

. Я протестировал несколько шрифтов, например Calibri Bold и Chiller , выполнив обе инструкции, которые вы дали выше для PowerPoint, а затем также используя Microsoft Web Embedded Fonts Tool (WEFT).Они оба создают одинаковые размеры файлов, но шифрование выглядит по-разному - я предполагаю, что WEFT применяет несколько другое шифрование из-за того, как он строит EOT для определенных сайтов.На странице W3C, приведенной выше, может быть больше подробностей о шифровании.

Хорошая новость заключается в том, что, по крайней мере, на веб-странице вы можете использовать сгенерированный PowerPoint «как есть».Во встроенном шрифте PowerPoint я создал шрифт Chiller , который font1.fntdata при внедрении, я просто взял его и создалиспользуя веб-страницу, и она работала просто отлично:

<html>
   <head>
      <title>Chill</title>
      <style type="text/css">
      @font-face{
        font-family: Chiller;
        src: url('font1.fntdata');
      }
      .Chiller{
        font-family: Chiller;
        font-size:60px;
        color:#000;
       } 
      </style>
   </head>
   <body>
      <div class="Chiller">Cold Beer</div>
      Free!
   </body>
</html>

Я не зашел так далеко, чтобы проверить, можно ли использовать их непосредственно в WPF / Silverlight, но, по крайней мере, теперь вы знаете, чтовы имеете дело с

1 голос
/ 27 июля 2010

На связанной странице я получаю то, что .fntdata файлы содержат только растеризованные глифы.Это означает, что результаты могут быть некрасивыми, если необходимо выполнить какое-либо масштабирование.

Первый шаг, очевидно, состоит в извлечении глифов.Быстрый поиск ничего не дает в Интернете о .fntdata файлах.Я попытался взглянуть на один в шестнадцатеричном редакторе, но на самом деле ничего не появилось (кроме имени шрифта в виде строки).Кроме того, TrID понятия не имел, что там было.Возможно, вы сможете поэкспериментировать и посмотреть, сможете ли вы извлечь какие-либо полезные данные - я желаю вам удачи.

Если вы поймете, как вывести глифы, то вам просто нужно будет передать их в TTF.файл.В соответствии со спецификацией OpenType (которая охватывает .ttf файлы), TTF могут содержать растровые глифы.(В частности, см. Таблицу EBDT ).Я не думаю, что есть .NET-реализация TTF-синтаксического анализатора или средства записи, поэтому вам придется начинать с нуля, чтобы реализовать спецификацию.Опять же, я желаю вам удачи.

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

...