Является ли преобразование формата веб-шрифта процедурой с потерями?

Веб-шрифты поставляются в различных форматах для удовлетворения различных требований браузера. Основные известные мне форматы:

  • ттф
  • ОТФ
  • эот
  • ничего себе
  • свг

Я также знаю, что не все эти форматы поддерживаются всеми основными поставщиками браузеров. Однако может также показаться, что fontforge (и, возможно, многие другие утилиты) способны легко конвертировать между этими форматами. Насколько я понимаю, "woff" является "новым" стандартом для веб-шрифтов.

Мой вопрос таков:

Являются ли какие-либо форматы «с потерями» в том смысле, что если я начну с файла WOFF, преобразую его в OTF, а затем вернусь в WOFF, получится ли у меня файл, в котором нет всех метаданных? Или форматы по сути настолько похожи, что любой из них не хуже другого в качестве отправной точки для получения шрифта во всех форматах?


person Andrew Theken    schedule 25.09.2012    source источник
comment
Это может быть довольно потеряно. Во-первых, SVG, насколько я могу судить, не поддерживает хинтинг. Ой!   -  person ACJ    schedule 28.09.2012


Ответы (1)


woff — это простая оболочка для метаданных ttf или otf + (и, возможно, приватных данных). EOT — это простая оболочка вокруг ttf (технически возможно создать otf-in-EOT, но это, вероятно, не широко поддерживается); практически вся информация в оболочке EOT получена из содержимого. Итак конверсии в любом направлении среди:

  • TTF ‹-> EOT ‹-> TTF-in-woff или
  • OTF ‹-> OTF-in-woff

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

Чтобы ответить на конкретный вопрос: «Если я начну с файла woff, конвертирую его в OTF, а затем вернусь в woff, получится ли у меня файл, в котором нет всех метаданных?» немного сложно. Если исходный файл woff был оболочкой OTF (не TTF), то ответ да. Но если бы woff упаковывал TTF, ответ был бы нет, потому что необходимо преобразование из TTF в OTF, а это преобразование с потерями.

Аналогично для woff -> TTF -> woff; если начальный woff упаковывал TTF, это было бы без потерь (за исключением метаданных), тогда как, если исходный woff упаковывал OTF, он был бы с потерями (потому что в этом процессе происходит преобразование из OTF -> TTF, и что преобразование с потерями).

person djangodude    schedule 28.09.2012