Подтвердить что ты не робот

SASS и @font-face

У меня есть следующий CSS - как бы я описал его в SASS? Я пробовал обратную компиляцию с помощью css2sass и просто продолжаю получать ошибки... это мой CSS (который работает;-))?

@font-face {
  font-family: 'bingo';
    src: url("bingo.eot");
    src: local('bingo'),
       url("bingo.svg#bingo") format('svg'),
       url("bingo.otf") format('opentype');
}
4b9b3361

Ответ 1

В случае, если кто-то задавался вопросом - возможно, это был мой css...

@font-face
  font-family: "bingo"
  src: url('bingo.eot')
  src: local('bingo')
  src: url('bingo.svg#bingo') format('svg')
  src: url('bingo.otf') format('opentype')

будет отображаться как

@font-face {
  font-family: "bingo";
  src: url('bingo.eot');
  src: local('bingo');
  src: url('bingo.svg#bingo') format('svg');
  src: url('bingo.otf') format('opentype'); }

который кажется достаточно близким... просто нужно проверить рендеринг SVG

Ответ 2

Я боролся с этим какое-то время. Решение Dyceys правильное в том, что указание src несколько раз выводит одно и то же в вашем файле css. Однако, похоже, это нарушает OSX Firefox 23 (возможно, другие версии тоже, но у меня нет времени для тестирования).

Решение кросс-браузера @font-face от Font Squirrel выглядит следующим образом:

@font-face {
    font-family: 'fontname';
    src: url('fontname.eot');
    src: url('fontname.eot?#iefix') format('embedded-opentype'),
         url('fontname.woff') format('woff'),
         url('fontname.ttf') format('truetype'),
         url('fontname.svg#fontname') format('svg');
    font-weight: normal;
    font-style: normal;
}

Чтобы создать свойство src с разделенными запятыми значениями, вам нужно записать все значения в одной строке, так как в Sass не поддерживаются разрывы строк. Чтобы создать вышеуказанное объявление, вы должны написать следующий Sass:

@font-face
  font-family: 'fontname'
  src: url('fontname.eot')
  src: url('fontname.eot?#iefix') format('embedded-opentype'), url('fontname.woff') format('woff'), url('fontname.ttf') format('truetype'), url('fontname.svg#fontname') format('svg')
  font-weight: normal
  font-style: normal

Мне кажется, что глупо писать путь несколько раз, и мне не нравятся слишком длинные строки в моем коде, поэтому я работал над этим, написав этот mixin:

=font-face($family, $path, $svg, $weight: normal, $style: normal)
  @font-face
    font-family: $family
    src: url('#{$path}.eot')
    src: url('#{$path}.eot?#iefix') format('embedded-opentype'), url('#{$path}.woff') format('woff'), url('#{$path}.ttf') format('truetype'), url('#{$path}.svg##{$svg}') format('svg')
    font-weight: $weight
    font-style: $style

Использование. Например, я могу использовать предыдущий mixin для настройки шрифта Frutiger Light следующим образом:

+font-face('frutigerlight', '../fonts/frutilig-webfont', 'frutigerlight')

Ответ 3

Для тех, кто ищет миксин SCSS, включая woff2:

@mixin fface($path, $family, $type: '', $weight: 400, $svg: '', $style: normal) {
  @font-face {
    font-family: $family;
    @if $svg == '' {
      // with OTF without SVG and EOT
      src: url('#{$path}#{$type}.otf') format('opentype'), url('#{$path}#{$type}.woff2') format('woff2'), url('#{$path}#{$type}.woff') format('woff'), url('#{$path}#{$type}.ttf') format('truetype');
    } @else {
      // traditional src inclusions
      src: url('#{$path}#{$type}.eot');
      src: url('#{$path}#{$type}.eot?#iefix') format('embedded-opentype'), url('#{$path}#{$type}.woff2') format('woff2'), url('#{$path}#{$type}.woff') format('woff'), url('#{$path}#{$type}.ttf') format('truetype'), url('#{$path}#{$type}.svg##{$svg}') format('svg');
    }
    font-weight: $weight;
    font-style: $style;
  }
}
// ========================================================importing
$dir: '/assets/fonts/';
$famatic: 'AmaticSC';
@include fface('#{$dir}amatic-sc-v11-latin-regular', $famatic, '', 400, $famatic);

$finter: 'Inter';
// adding specific types of font-weights
@include fface('#{$dir}#{$finter}', $finter, '-Thin-BETA', 100);
@include fface('#{$dir}#{$finter}', $finter, '-Regular', 400);
@include fface('#{$dir}#{$finter}', $finter, '-Medium', 500);
@include fface('#{$dir}#{$finter}', $finter, '-Bold', 700);
// ========================================================usage
.title {
  font-family: Inter;
  font-weight: 700; // Inter-Bold font is loaded
}
.special-title {
  font-family: AmaticSC;
  font-weight: 700; // default font is loaded
}

Параметр $type полезен для объединения связанных семейств с разными весами.

@if обусловлен необходимостью поддержки Inter font (аналог Roboto), который имеет OTF, но в настоящее время не имеет типов SVG и EOT.

Если вы не можете устранить ошибку, не забудьте дважды проверить каталог шрифтов ($dir).