Как декодировать информацию о шрифтах, закодированных в base64?
Я столкнулся с сайтом, который использовал информацию о закодированном шрифте.
Я попытался преобразовать этот закодированный шрифт в двоичный файл через веб-службу Base64 Endoder/Decoder, но я не смог узнать, какой формат результирующего файла.
Здесь - это кодированный контент CSS (содержимое слишком велико для копирования/вставки здесь).
Спасибо!
[EDIT]
Пожалуйста, не размышляйте о том, что я хочу делать.
Я задаю вопросы о том, как код base64 был подделан, и что мне не хватает, чтобы иметь возможность обратить вспять процесс, а это значит, что я не понимаю все в нем. Эти методы часто используются в веб-страницах с пользовательскими шрифтами и, по-видимому, имеют некоторые улучшения по сравнению с исходным файлом шрифта, непосредственно заданным ссылкой в файле CSS. Я полностью осознаю, что используемые шрифты являются коммерческими и не могут использоваться свободно.
Это обсуждение вне темы, остановка троллинга.
Ответы
Ответ 1
1) найдите полное описание шрифта, например font/opentype;base64,==abcdefghijklmnopqrstuvwxyz==
2) копировать часть кодированных данных; исключить объявление ведущего типа и запятую.
Отбросьте этот font/opentype;base64,
Вы хотите: ==abcdefghijklmnopqrstuvwxyz==
3) декодировать данные и сохранять в виде двоичного кодированного файла. Не расшифровывайте данные и вручную вставляйте результат в текстовый редактор. Используйте http://www.motobit.com/util/base64-decoder-encoder.asp Выберите "декодировать данные из строки Base64" и "экспортировать в двоичный файл".
4) Просмотрите файл с помощью текстового редактора. Первые 3 или 4 буквы файла, вероятно, "woff", "otf" или "ttf". Это ваш фактический тип файла.
Ответ 2
Это интересный вопрос, несмотря на то, что он был магнитом для пиратских охотников. Я сосредоточусь на техническом вопросе и попытаюсь дать некоторое представление.
Глядя на файл OP, в нем есть шесть шрифтов. Каждый из них в основном является правилом CSS; здесь первый в файле примера:
@font-face {
font-family: "p22-underground-1";
font-style: normal;
font-weight: 400;
src: url("data:font/opentype;base64,d09GRk9...yn4b8C3JEZAA==");
}
Это говорит вам все, что вам нужно знать, чтобы определить шрифт. Вы можете увидеть его имя (p22-underground-1) его стиль (обычный), вес (400) и тип (opentype).
Что касается декодирования шрифта из base64 в двоичный файл, вам нужно взять бит base64 (показано выше как d09GRk9...yn4b8C3JEZAA==
, обратите внимание, что объем в центре был удален, чтобы сэкономить место здесь) и декодировать его с помощью base64 декодер, такой как Motobit или путем написания программы.
Если вы работаете в Linux, вы можете использовать base64 -d <file>
для достижения того же.
Если декодирование завершится неудачно, строка base64 также может быть percent-escaped. Это не относится к примеру OP, но я знаю хотя бы один сайт, где это так.
Вы можете проверить это, просмотрев символы процента %
в строке base64. Если символы процента являются единственными действительными символами base64, вы можете попытаться удалить строку перед декодированием.
Существует веб-сайт, где вы можете это сделать или, опять же, для тех, кто находится в Linux, ниже показан способ командной строки ( есть много способов сделать это, это использует Perl):
perl -MURI::Escape -lne 'print uri_unescape($_)' < file.b64_escaped > file.b64
Я написал небольшой инструмент в Ruby, который берет URL-адрес и выгружает любые встроенные шрифты в файлы с использованием вышеуказанных методов, поэтому могу сказать, что они работают.
Ответ 3
В CSS четко указывается тип mimetype font/opentype
... Шрифт находится в формате OpenType (.otf
).
Однако, даже если вы декодируете шрифт, проверьте лицензию. Возможно, вам не удастся использовать этот шрифт в ваших собственных проектах.
Шрифты, указанные в файлах CSS (Proxma Nova [Mark Simonson Studios] и P22 Underground [P22 Type Foundry]) не являются бесплатными. Вам необходимо приобрести лицензию, чтобы использовать ее на законных основаниях.
Ответ 4
Вставить data:application/font-woff;base64,d09GRgABAA.....
в адресную строку браузера (в идеале Chrome). Он загрузит файл, переименуйте файл с правильным расширением файла. Это будет работать с любым файлом шрифта.
Ответ 5
Вы можете видеть, что тип mimet font/opentype
, что означает, что результирующий двоичный файл должен быть .otf
.
Почему, однако, вы хотели бы декодировать шрифт? Похоже, вы планируете использовать этот шрифт без разрешения.