Недостаток обслуживания шрифтов из каталога / public в Rails? - PullRequest
5 голосов
/ 29 февраля 2012

Мне нравится конвейер активов, но я не могу заставить его служить моим шрифтам.Я потратил часы на поиски и поиск решений SO ( nope , nope , nope ).

Вместо этого я создал /public/fonts, отбросил все своитам шрифты и ссылаться на них с url('/fonts/myAwesomeFont.ttf').Все работает отлично.

Есть ли у этого подхода недостатки?

Сжаты ли файлы шрифтов при предварительной компиляции ресурсов?

Ответы [ 4 ]

6 голосов
/ 01 марта 2012

Мы храним наши шрифты в папке / app / assets / fonts, и, насколько я помню, нам не нужно было выполнять какую-либо дополнительную настройку.

Однако вы должны использовать помощник asset_path в своем CSSфайлы при ссылке на шрифты (так же, как при обращении к изображениям конвейера ресурсов в CSS).Для этого необходимо изменить расширение файла с .css на .css.erb .Трудно сказать наверняка из вашего описания, но я предполагаю, что это может быть проблемой.

Пример

Мы используем шрифт Museo500 в нашем приложении и сохраняем его в app / assets / fonts:

app/assets/fonts:
  - museo700-regular-webfont.eot
  - museo700-regular-webfont.woff
  - museo700-regular-webfont.ttf
  - museo700-regular-webfont.svg

Объявление @ font-face выглядит следующим образом:

@font-face {
    font-family: 'Museo700';
    src: url('<%= asset_path "museo700-regular-webfont.eot" %>');
    src: url('<%= asset_path "museo700-regular-webfont.eot" %>?#iefix') format('embedded-opentype'),
         url('<%= asset_path "museo700-regular-webfont.woff" %>') format('woff'),
         url('<%= asset_path "museo700-regular-webfont.ttf" %>') format('truetype'),
         url('<%= asset_path "museo700-regular-webfont.svg" %>#Museo700') format('svg');
    font-weight: normal;
    font-style: normal;

}

Преимущества использования конвейера ресурсов для двоичных файлов

Мы не выполняем никакой предварительной компиляции для ресурсов изображений или шрифтов (я думаю, вы могли бы сжать шрифты или что-то еще, но мы этого не делаем)но я все еще вижу выгоду для размещения их через конвейер активов: единообразие и соглашение.Соглашение Rails может предложить все виды преимуществ.

Пример. В какой-то момент вы можете захотеть использовать CDN, например Amazon Cloudfront, и вам понадобится сделать все URL-адреса активов в рабочей точке для копий CDN.Если вы размещаете все свои активы, включая шрифты и изображения, через конвейер ресурсов, то изменить так же просто, как изменить ресурс asset_host в файле production.rb, раскомментировав строки:

  # Enable serving of images, stylesheets, and JavaScripts from an asset server
  # config.action_controller.asset_host = "http://assets.example.com"

Если вы уже ссылаетесьваши шрифты с помощником asset_path, тогда эти URL будут обновлены автоматически, чтобы указывать на CDN.Я полагаю, что использование path_helpers дает столько же преимуществ, сколько и сам конвейер ресурсов, но в любом случае это полезно.

Надеюсь, это поможет!

0 голосов
/ 30 декабря 2012

Вот хорошее решение, которое я нашел онлайн:

http://aokolish.me/blog/2011/12/24/at-font-face-with-the-asset-pipeline

0 голосов
/ 01 марта 2012

В этом нет ничего плохого.Самым большим преимуществом Asset Pipeline является сохранение вашего JS и CSS, которые являются кодом, организованным как исходный код.При развертывании ваш код упаковывается в другой формат в / public, подходящий для общего пользования.

Любое происходящее сжатие должно обрабатываться веб-сервером.

0 голосов
/ 01 марта 2012

Мой ответ на первый вопрос ... я не знаю

Файлы шрифтов не должны сжиматься конвейером ресурсов Rails, CSS и JS сжимаются, а изображения могут быть сжаты с использованием гемов 3-й части, таких как sprockets-image_compressor .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...