Как разместить веб-шрифты google на моем собственном сервере?

Мне нужно использовать некоторые шрифты Google в приложении для интрасети. Клиенты могут иметь или не иметь интернет-соединение. Читая условия лицензии, представляется, что ее юридически разрешено.

Ответ 1

Помните, что мой ответ сильно постарел.

Ниже приведены другие, более технически сложные ответы, например:

поэтому не позволяйте тому факту, что этот принятый в настоящее время ответ создает у вас впечатление, что он все еще лучший.


Теперь вы также можете загрузить весь набор шрифтов Google через github в своем google/font хранилище. Они также предоставляют ~ 360 МБ zip-снимок своих шрифтов.


Сначала вы загружаете выбранный вами шрифт в виде упакованного пакета, предоставляя вам набор шрифтов истинного типа. Скопируйте их в общедоступное место, куда вы можете сослаться с вашего CSS.

На странице загрузки веб-шрифтов Google вы найдете следующую ссылку:

http://fonts.googleapis.com/css?family=Cantarell:400,700,400italic,700italic|Candal

Он ссылается на CSS, определяющий шрифты с помощью набора определений @font-face.

Откройте его в браузере, чтобы скопировать и вставить их в свой собственный CSS и изменить URL-адреса, включив в них правильный файл шрифта и типы форматов.

Итак, это:

@font-face {
  font-family: 'Cantarell';
  font-style: normal;
  font-weight: 700;
  src: local('Cantarell Bold'), local('Cantarell-Bold'), url(http://themes.googleusercontent.com/static/fonts/cantarell/v3/Yir4ZDsCn4g1kWopdg-ehHhCUOGz7vYGh680lGh-uXM.woff) format('woff');
}

становится таким:

/* Your local CSS File */
@font-face {
    font-family: 'Cantarell';
    font-style: normal;
    font-weight: 700;
    src: local('Cantarell Bold'), local('Cantarell-Bold'), url(../font/Cantarell-Bold.ttf) format('truetype');
}

Как вы можете видеть, недостатком хостинга шрифтов в вашей собственной системе является то, что вы ограничиваетесь верным форматом шрифта, в то время как служба веб-шрифтов Google определяет доступным устройством, какие форматы будут передаваться.

Кроме того, мне пришлось добавить файл .htaccess в каталог, содержащий шрифты, содержащие типы mime, чтобы избежать появления ошибок в Chrome Dev Tools.

Для этого решения требуется только истинный тип, но определение more не повредит, если вы также хотите включить разные шрифты, например font-awesome.

#.htaccess
AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-font-woff .woff

Ответ 2

Существует инструмент localfont.com, который поможет вам загрузить все варианты шрифтов. Он также генерирует соответствующий CSS для реализации. устарело

localfont не работает вместо этого, как предлагает Дамир, вы можете использовать google-webfonts-helper


Ответ 3

Отличное решение google-webfonts-helper.

Он позволяет выбрать более одного варианта шрифта, что экономит много времени.

Ответ 4

Я написал bash script, который извлекает файл CSS на серверах Google различными агентами пользователя, загружает различные форматы шрифтов в локальный каталог и записывает в него файл CSS. Обратите внимание, что для script требуется Bash версия 4.x.

Смотрите https://neverpanic.de/blog/2014/03/19/downloading-google-web-fonts-for-local-hosting/ для script (я не воспроизвожу его здесь, поэтому мне нужно только обновить его в одном месте, когда Мне нужно).

Изменить: Переместился на https://github.com/neverpanic/google-font-download

Ответ 5

Содержимое файла CSS (из URL-адреса включения) зависит от того, с какого браузера я его просматриваю. Например, при просмотре http://fonts.googleapis.com/css?family=Open+Sans с помощью Chrome файл содержит только ссылки WOFF. Используя Internet Explorer (см. Ниже), он включал как EOT, так и WOFF. Я вставил все ссылки в свой браузер, чтобы загрузить их.

@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: url(http://themes.googleusercontent.com/static/fonts/opensans/v6/cJZKeOuBrn4kERxqtaUH3fY6323mHUZFJMgTvxaG2iE.eot);
  src: local('Open Sans'), local('OpenSans'), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/cJZKeOuBrn4kERxqtaUH3fY6323mHUZFJMgTvxaG2iE.eot) format('embedded-opentype'), url(http://themes.googleusercontent.com/static/fonts/opensans/v6/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff) format('woff');
}

Когда вы размещаете свои собственные веб-шрифты, вы должны правильно ссылаться на каждый тип шрифта, обрабатывать устаревшие ошибки браузера и т.д. Когда вы используете Google Web Fonts ( размещенный Google), Google автоматически ссылается на правильные типы шрифтов для этого браузера.

Ответ 6

Это законно разрешено, если вы придерживаетесь условий лицензии на шрифт - обычно это OFL.

Вам понадобится набор форматов веб-шрифтов, и Font Squirrel Webfont Generator может их создать.

Но OFL требовал, чтобы шрифты были переименованы, если они были изменены, и использование средств генерации, модифицирующих их.

Ответ 7

У меня есть script, написанный на PHP, похожий на @neverpanic, который автоматически загружает как CSS, так и шрифты (как намеченные, так и непроверенные) от Google. Затем он обслуживает правильные CSS и шрифты с вашего собственного сервера на основе User Agent. Он хранит свой собственный кеш, поэтому шрифты и CSS User Agent будут загружаться только один раз.

Он находится на преждевременной стадии, но его можно найти здесь: DaAwesomeP/php-offline-fonts

Ответ 8

Я использовал grunt-local-googlefont в задаче ворчания.

module.exports = function(grunt) {

    grunt.initConfig({
       pkg: grunt.file.readJSON('package.json'),

        "local-googlefont" : {
            "opensans" : {
                "options" : {
                    "family" : "Open Sans",
                    "sizes" : [
                        300,
                        400,
                        600
                    ],
                    "userAgents" : [
                        "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)",  //download eot
                        "Mozilla/5.0 (Linux; U; Android 4.1.2; nl-nl; GT-I9300 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30", //download ttf
                        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1944.0 Safari/537.36" //download woff and woff2
                    ],
                    "cssDestination" : "build/fonts/css",
                    "fontDestination" : "build/fonts",
                    "styleSheetExtension" : "css",
                    "fontDestinationCssPrefix" : "fonts"

                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-local-googlefont');
 };

Затем, чтобы получить их:

grunt local-googlefont:opensans

Обратите внимание: я использую вилку из оригинала, которая работает лучше при извлечении шрифтов с пробелами в именах.

Ответ 9

Вы можете загружать все варианты формата шрифта прямо из Google и включать их в свой css для обслуживания с вашего сервера. Таким образом, вам не нужно беспокоиться о том, что Google отслеживает пользователей вашего сайта. Однако недостаток может замедлить вашу скорость обслуживания. Шрифты довольно требовательны к ресурсам. Я еще не делал никаких тестов в этом выпуске, и задаюсь вопросом, есть ли у кого-то подобные мысли.

Ответ 10

Моим решением было загрузить файлы TTF из веб-шрифтов google, а затем использовать onlinefontconverter.com.

Ответ 11

Я сделал крошечный PHP script, чтобы получить ссылки для загрузки из URL-адреса импорта CSS-шрифтов Google, например: https://fonts.googleapis.com/css?family=Roboto:400,700|Slabo+27px|Lato:400,300italic,900italic

Вы можете использовать этот инструмент здесь: http://nikoskip.me/gfonts.php

Например, если вы используете указанный URL-адрес импорта, вы получите следующее:

введите описание изображения здесь

Ответ 12

Если вы хотите разместить все шрифты (или некоторые из них) на своем собственном сервере, скачайте шрифты из этого репозитория и используйте их так, как вы хотите: https://github.com/praisedpk/Local-Google-Fonts

Если вы просто хотите сделать это, чтобы устранить проблему с кэшированием в браузере, которая поставляется с Google Fonts, вы можете использовать альтернативные шрифты CDN и включать шрифты как:

<link href="https://pagecdn.io/lib/easyfonts/fonts.css" rel="stylesheet" />

Или определенный шрифт, например:

<link href="https://pagecdn.io/lib/easyfonts/lato.css" rel="stylesheet" />

Ответ 13

Если вы используете Webpack, вас может заинтересовать этот проект: https://github.com/KyleAMathews/typefaces

Например. скажем, вы хотите использовать шрифт Roboto:

npm install typeface-roboto --save

Затем просто импортируйте его в точку входа вашего приложения (основной файл js):

import 'typeface-roboto'

Ответ 14

В дополнение к k0pernicus я хотел бы предложить best-served-local. Он также поддерживает bash (v4) script, чтобы позволить операторам веб-сервера загружать и обслуживать веб-шрифты Google со своего веб-сервера. Но в дополнение к другому bash script он позволяет пользователю полностью автоматизировать (через cron и т.д.) Обслуживание современных файлов шрифтов и css файлов.

Ответ 15

Существует очень простой script, написанный на простой Java, для загрузки всех шрифтов из ссылки Google Web Font (поддерживается несколько шрифтов). Он также загружает файл CSS и адаптирует его к локальным файлам. Пользовательский агент может быть адаптирован для получения других файлов, кроме только WOFF2. См. https://github.com/ssc-hrep3/google-font-download

Полученные файлы могут быть легко добавлены в процесс сборки (например, создание веб-пакета, например vue-webpack).

Ответ 16

Вы можете скачать исходные шрифты с https://github.com/google/fonts

После этого используйте инструмент font-ranger, чтобы разбить большой шрифт Unicode на несколько подмножеств (например, латинский, кириллический). Вы должны сделать следующее с помощью инструмента:

  • Создайте подмножества для каждого языка, который вы поддерживаете
  • Используйте подмножество Юникод-диапазона для экономии пропускной способности
  • Удалите раздувание со своих шрифтов и оптимизируйте их для Интернета
  • Конвертируйте ваши шрифты в сжатый формат woff2
  • Предоставить запасной вариант .woff для старых браузеров
  • Настроить загрузку и отображение шрифтов
  • Создать файл CSS с правилами @font-face
  • Самостоятельно размещать веб-шрифты или использовать их локально

Font-Ranger: https://www.npmjs.com/package/font-ranger

Постскриптум Вы также можете автоматизировать это с помощью API Node.js