Скачивание шрифтов с Google Fonts

chapser

Гуру форума
Регистрация
12 Сен 2007
Сообщения
122
Реакции
80
Имеется такой скриптец для скачивания шрифтов с Google Fonts - Для просмотра ссылки Войди или Зарегистрируйся
Может кто-то подскажет как его доработать в плане того, чтобы не нужно было ручками прописывать варианты font-weight шрифта для скачивания, а скрипт сам проверял какие шрифты доступны для скачивания а каких попросту нет.

ссылка не работает, поправь я посмотрю что можно сделать
Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:
А какой в этом смысл?
Шрифты бесплатные + можно скачать и вручную + раздаются через CDN Гугла.
 
Если только для использования на ресурсах с запрещенным выходом в интернет. Во внутренних локалках, корп сетях и тд.
 
у вас в функции addFontByUrl не учитываются веса, используется 400 по дефолту:
Код:
$this->addFont($fontName, (stripos($item, 'i') !== false ? 'italic' : 'normal'), [$item>0?(int)$item:400], $formats, $subsets);

а там как раз может быть указан вес, причем несколько. через запятую:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся

так что вам надо просто добавить обработку соответствующего explode
 
Вот посмотри файлик
Для просмотра ссылки Войди или Зарегистрируйся

Последнюю функцию надо заменить на следующее
PHP:
preg_replace_callback(
    $regExp,
    function($matches){
        global $type;
        echo date("h:i:s") . ' : ' . $matches[0].PHP_EOL; // Вывод ссылок на страницу/консоль
        $name = explode('/', $matches[0])[6]; // Получаем имя файла наипростейшим способом
        file_put_contents($name,getData($matches[0])); // Пишем файл
    },
    getData($css) //Ссылка на закачиваемый файл
);

По умолчанию данный скрипт скачивает только woff2, но если надо другие форматы, то надо сменить useragent.
Вроде есть userAgent (раньше точно был), по которому он выдаёт все форматы.
 
Вроде есть userAgent (раньше точно был), по которому он выдаёт все форматы.

зачем так сложно? запрашиваем у Гугла все веса, получаем список тех, что есть, без всякой возни с CURL и User Agent:
Код:
<?php
$css = 'http://fonts.googleapis.com/css?family=Roboto:100,200,300,400,500,600,700,800,900';
$res = file_get_contents($css);
echo($res);
?>

выдаёт все, что есть, без 200, 600 и 800:
Код:
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 100;
  src: local('Roboto Thin'), local('Roboto-Thin'), url(http://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxIIzc.ttf) format('truetype');
}
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 300;
  src: local('Roboto Light'), local('Roboto-Light'), url(http://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBBc9.ttf) format('truetype');
}
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  src: local('Roboto'), local('Roboto-Regular'), url(http://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4mxP.ttf) format('truetype');
}
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 500;
  src: local('Roboto Medium'), local('Roboto-Medium'), url(http://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc9.ttf) format('truetype');
}
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 700;
  src: local('Roboto Bold'), local('Roboto-Bold'), url(http://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBBc9.ttf) format('truetype');
}
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 900;
  src: local('Roboto Black'), local('Roboto-Black'), url(http://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBBc9.ttf) format('truetype');
}

Дальше просто регуляркой пройтись и список доступных весов готов, не?
 
без всякой возни с CURL и User Agent:
Потому что можно внимательно прочитать что я писал в своём сообщение про ЮзерАгенты и посмотреть какой формат шрифтов выдал вам гугл.

Дальше просто регуляркой пройтись и список доступных весов готов, не?
Дальше просто и написан мой скрипт в 2017 году, который по сути делает как раз "пройтись регуляркой и сохранить".

Неожиданно, правда?

Что касается веса, то я про это не написал, так как вроде это очевидно. Если зайти в ревизии скрипта, то можно увидеть, что там ещё и italic учитывается
upload_2020-11-4_5-28-1.png
 
чтобы не нужно было ручками прописывать варианты font-weight шрифта для скачивания, а скрипт сам проверял какие шрифты доступны для скачивания
Я отвечал на начальный вопрос - как понять, какие варианты font-weight есть у данного шрифта. Извините, если неправильно понял.

Мне Гугл выдал ttf, если надо другие форматы - UserAgent в помощь:
Код:
     eot: 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)',
    woff: 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0',
    woff2: 'Mozilla/5.0 (Windows NT 6.3; rv:39.0) Gecko/20100101 Firefox/39.0',
    svg: 'Mozilla/4.0 (iPad; CPU OS 4_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/4.1 Mobile/9A405 Safari/7534.48.3',
    ttf: 'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) Safari/538.1 Daum/4.1'

Если я опять не понял, переформулируйте.
 
Назад
Сверху