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

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

  • TTF
  • OTF
  • СРВ
  • Уофф
  • SVG

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

У меня вопрос такой:

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

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, и это конверсия с потерями).

Другие вопросы по тегам