Шрифт css url: @font-face — CSS | MDN

get-css-fonts/get-css-fonts at master · albertodonato/get-css-fonts · GitHub

#!/usr/bin/env python3
«»»Создайте файл CSS шрифтов с локальными ресурсами из URL-адреса шрифтов Google.»»»
импорт ОС
импорт относительно
система импорта
журнал импорта
из импорта коллекций namedtuple
из argparse import ArgumentParser
запросов на импорт
9(?P\s+src:. *)local\(‘(?P.*?)’\),\s+»
r»url\((?P.*?)\)(?P.*)»)
Шрифт = namedtuple(‘Шрифт’, [‘имя файла’, ‘url’])
# ведение журнала настройки
logging.basicConfig (поток = sys.stdout, уровень = logging.INFO)
регистратор = logging.getLogger()
деф parse_args():
«»»Разобрать командную строку. «»»
анализатор = ArgumentParser (описание = __doc__)
parser.add_argument(‘url’, help=’URL для шрифтов CSS’)
parser.add_argument(
‘—cssfile’, default=’fonts.css’, help=’целевое имя файла для шрифтов CSS’)
parser.add_argument(
‘—fontdir’, default=’fonts’, help=’целевой каталог для шрифтов’)
вернуть parser.parse_args()
def fetch_file (url, имя файла = нет):
«»»Получить файл по URL-адресу.
Если указано имя файла, содержимое сохраняется в файл, в противном случае возвращается.
«»»
ответ = запросы.get(url)
logger.info(‘извлечение {url}’.format(url=url))
, если response.status_code != 200:
поднять Исключение(
‘Не удалось получить «{url}: {r.status_code} {r.reason}’.format(
url=url, r=ответ))
если не имя файла:
возврат ответа.
текст
с открытым (имя файла, ‘w’) как fd:
logger.info(‘сохранение содержимого в {имя файла}’.format(имя файла=имя файла))
fd.write(ответ.текст)
по определению make_css_urls_local (содержимое, каталог шрифтов):
«»»Обработка содержимого CSS и преобразование URL-адресов в локальные файлы.
Вернуть преобразованный текст CSS и список шрифтов.
«»»
шрифтов = []
преобразовано = []
для строки в content.splitlines():
строка, шрифт = _process_line(line, fontdir)
, если шрифт:
fonts.append(шрифт)
convert.append(строка)
возврат ‘\n’.join(преобразованный), шрифты
по определению _process_line (строка, каталог шрифтов):
совпадение = CSS_RE. match(строка)
если не совпадает:
обратная линия, нет
данных = match.groupdict()
имя файла = os.path.join (каталог шрифта, данные [‘имя’] + ‘.ttf’)
строка = «{начало} локальный (‘{имя}’), url (‘{имя файла}’) {конец}». Формат (
имя_файла=имя файла, **данные)
строка возврата, Шрифт (имя файла, данные [‘url’])
по умолчанию main():
аргументов = parse_args()
# получить шрифты CSS
css = fetch_file(args.
url)
relative_fontdir = os.path.relpath(
args.fontdir, os.path.dirname(args.cssfile))
CSS, шрифты = make_css_urls_local (CSS, относительный_шрифт)
# запись обновленного CSS
с открытым (args.cssfile, ‘w’) как fd:
logger.info(
‘сохранение обновленного CSS в {filename}’.format(filename=args.cssfile))
fd.write(css)
# получить файлы шрифтов
os.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *