Как декодировать информацию о шрифте в кодировке base64? - PullRequest
24 голосов
/ 03 августа 2011

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

Здесь - это закодированное содержимое CSS (содержимое слишком велико, чтобы его можно было скопировать / вставить).

Спасибо!

[EDIT]

Пожалуйста, не рассуждайте о том, что я хочу сделать.

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

Эта дискуссия не по теме, прекратите троллинг .

Ответы [ 5 ]

35 голосов
/ 25 ноября 2013

1) найдите полное объявление шрифта, например, data:font/opentype;base64,AaBbCcDdEeFf0123456789==

2) скопировать часть закодированных данных; исключить начальное объявление типа и запятую.

Брось это data:font/opentype;base64,

Вы хотите это: AaBbCcDdEeFf0123456789==

3) декодировать данные и сохранить как двоичный кодированный файл. Не декодировать данные и вручную вставить результат в текстовый редактор. Используйте http://www.motobit.com/util/base64-decoder-encoder.asp Выберите «декодировать данные из строки Base64» и «экспортировать в двоичный файл».

4) Просмотр файла в текстовом редакторе. Первые 3 или 4 буквы файла - это, вероятно, «woff», «otf» или «ttf». Это ваш фактический тип файла.

4 голосов
/ 08 марта 2016

Вставьте data:application/font-woff;base64,d09GRgABAA..... в адресную строку браузера (в идеале Chrome).Он загрузит файл, переименует файл с соответствующим расширением файла.Это будет работать с любым файлом шрифта.

3 голосов
/ 03 июля 2014

Это интересный вопрос, несмотря на то, что он притягивает пиратов.Я сосредоточусь на техническом вопросе и попытаюсь дать некоторое представление.

Глядя на файл ОП, в нем есть шесть шрифтов.Каждый из них в основном правило CSS;Вот первый пример в файле примера:

@font-face {
    font-family: "p22-underground-1";
    font-style: normal;
    font-weight: 400;
    src: url("data:font/opentype;base64,d09GRk9...yn4b8C3JEZAA==");
}

Это говорит вам обо всем, что вам нужно знать, чтобы определить шрифт.Вы можете увидеть его имя ( p22 -ground-1 ), его стиль ( normal ), вес ( 400 ) и тип ( opentype )).

Что касается декодирования шрифта из base64 в двоичный файл, вам нужно взять бит base64 (показан выше как d09GRk9...yn4b8C3JEZAA==, обратите внимание, что объем в центре был удален, чтобы сэкономить место здесь) ирасшифруйте его с помощью декодера base64, такого как Motobit или написав программу.

Если вы работаете в Linux, вы можете использовать base64 -d <file> для достижения того же.

Если декодирование завершится неудачно, строка base64 также может быть с процентным экранированием .Это не относится к примеру OP, но я знаю по крайней мере один сайт , где это так.

Вы можете проверить это, посмотрев на символы процента % встрока base64.Если процентные символы являются единственными не действительными символами base64, то вы можете попытаться удалить строку перед декодированием.

Существует веб-сайт , где вы можете сделатьэто или, опять же, для тех, кто в Linux, метод командной строки показан ниже (есть много способов сделать это; этот использует Perl):

perl -MURI::Escape -lne 'print uri_unescape($_)' < file.b64_escaped > file.b64

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

2 голосов
/ 03 августа 2011

В CSS четко указано, что mimetype должен быть font/opentype ... Шрифт в формате OpenType (.otf).

Однако, даже если вы декодируете шрифт, проверьте лицензию.Возможно, вам не разрешат использовать этот шрифт в ваших собственных проектах.

Шрифты, указанные в файлах CSS ( Proxma Nova [Mark Simonson Studios] и P22 Underground [P22 Type Foundry]) не бесплатны .Вам необходимо приобрести лицензию, чтобы использовать их на законных основаниях.

0 голосов
/ 03 августа 2011

Вы можете видеть, что mimetype - font/opentype, что означает, что получающийся двоичный файл должен быть .otf.

Почему же вы хотите расшифровать шрифт? Похоже, вы планируете использовать этот шрифт без разрешения.

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