Google Webfonts в PDF, созданный DOMPDF

Я использую два веб-шрифта на странице, которую конвертирую в PDF с помощью dompdf. У меня в шапке такое:

<link href='http://fonts.googleapis.com/css?family=Signika:600|Roboto+Condensed' rel='stylesheet' type='text/css'>

Затем я использую их в правилах CSS, например

body {
  font-family: "Roboto Condensed", sans-serif;
  [ ... ]
}
h1 {
  font-family:'Signika', Arial, Helvetica, sans-serif;
  [ ... ]
}

Теперь, когда я создаю PDF-файл, h1 отображается шрифтом «Signika», но «Roboto Condensed» заменяется на Helvetica или какой-либо другой стандартный шрифт без засечек.

Если я открываю файл «предварительного просмотра» (то есть страницу php, которую я затем включаю в сценарий создания PDF-файла), «Roboto Condensed» отображается должным образом, но не попадает в PDF-файл. Но, как я уже писал, «Сигника» есть в PDF, и это как-то странно для меня. Кстати, я также попытался включить правило шрифта непосредственно в правила CSS для p, div, li и т. Д., Но это ничего не изменило.

Есть предложения, как я могу это исправить?


ИЗМЕНИТЬ / ДОБАВИТЬ:

Если подумать, разница между двумя шрифтами в том, что в названии Roboto Condensed есть пробел. Интересно, может ли это вызвать проблему (т.е. dompdf не может обрабатывать такое имя шрифта)? Но я не могу это изменить, пока беру шрифты с сервера Google.


person Johannes    schedule 24.06.2017    source источник
comment
Просто добавьте эту информацию для своего EDIT/ADDITION абзаца. Вы можете изменить название семейства шрифтов, полученное шрифтами Google. Откройте URL-адрес шрифта, скопируйте и отредактируйте семейство шрифтов в свой css. Сокращенный URL-адрес Roboto, включенный в ваше сообщение: fonts.googleapis.com/css? family = Signika: 600 | Roboto + Condensed   -  person krizajb    schedule 23.06.2018


Ответы (1)


Я сам нашел решение:

Как я добавил к своему вопросу при редактировании, причина, очевидно, заключалась в том, что название семейства шрифтов «Roboto Condensed» содержит пробел, который, похоже, не нравится dompdf.

Я загрузил шрифт, создал три его версии с генератором шрифтов на Fontsquirrel и поместил их на свой сервер вместе с этой таблицей стилей:

@font-face {
    font-family: 'roboto_condensedregular';
    src: url('robotocondensed-regular-webfont.woff2') format('woff2'),
         url('robotocondensed-regular-webfont.woff') format('woff'),
         url('RobotoCondensed-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}

Затем в моих правилах CSS я использовал это новое имя шрифта roboto_condensedregular в font-family: roboto_condensedregular, sans-serif;

Теперь это работает, в том числе в формате PDF.

person Johannes    schedule 24.06.2017
comment
Я не ожидал, что пробел вызовет проблему, и при тестировании смог выполнить рендеринг с этим шрифтом, используя исходный образец HTML. Однако, как вы обнаружили, загрузка шрифта, безусловно, является вариантом. Интересно, могло ли быть что-то в вашем CSS, что Dompdf не обрабатывал правильно? - person BrianS; 16.08.2017
comment
ну, это действительно вызвало проблему - это единственное, что я изменил, что заставило его работать ... Хотя может зависеть от того, как браузер обрабатывает пространство ... - person Johannes; 16.08.2017
comment
Интересный. Какую версию Dompdf вы используете? allow_url_fopen правда? Может быть, что-то про запасной вариант завитка? - person BrianS; 16.08.2017
comment
Йоханнес, большое тебе спасибо! Спустя 4 года у DomPDF все еще есть эта проблема ... грустно. Потерял на это вчера целый день. Спасибо вам миллион! - person Guardian; 30.03.2021