// Output the @font-face rule @mixin at-font-face($display-name, $file-path, $font-weight, $font-style) {

$file-path: unquote($file-path);

// TODO: If $theme-use-rails-pipeline use font-url() statements
// instead of url()
// Dunno why I can't do this without an error...

@font-face {
  font-family: unquote($display-name);
  font-style: unquote($font-style);
  font-weight: $font-weight;
  font-display: fallback;
  src: url(#{$file-path}.woff2) format("woff2"),
    url(#{$file-path}.woff) format("woff"),
    url(#{$file-path}.ttf) format("truetype");
}

}

// Loop through weights, then call at-font-face @mixin generate-font-face(

$font-style-src,
$output-weights,
$display-name,
$dir,
$font-style

) {

@each $font-weight, $filename in $font-style-src {
  @each $key, $output-weight in $output-weights {
    @if $output-weight == $font-weight and $filename {
      @include at-font-face(
        "#{$display-name}",
        "#{$theme-font-path}/#{$dir}/#{$filename}",
        #{$font-weight},
        unquote("#{$font-style}")
      );
    }
  }
}

}

// Collect all font metadata, then call generate-font-face @mixin render-font-face($typeface-token, $src) {

$generate: false;
$this-src: ();
$output-weights: $project-font-weights;
@if $theme-generate-all-weights {
  $output-weights: (
    100: 100,
    200: 200,
    300: 300,
    400: 400,
    500: 500,
    600: 600,
    700: 700,
    800: 800,
    900: 900,
  );
}

$typeface-metadata: map-get($all-typeface-tokens, $typeface-token);

// If the typeface has src in its USWDS metadata, generate and
// set $this-src
@if map-get($typeface-metadata, src) {
  $generate: true;
  $this-src: map-get($typeface-metadata, src);
}

// If the typeface has custom src sefined, generate and override
// any existing USWDS src
@if $src {
  $generate: true;
  $this-src: $src;
}

@if $generate {
  $display-name: map-get($typeface-metadata, display-name);
  $roman: map-get($this-src, roman);
  $italic: map-get($this-src, italic);
  $dir: map-get($this-src, dir);

  @if $roman {
    @include generate-font-face(
      $roman,
      $output-weights,
      $display-name,
      $dir,
      normal
    );
  }

  @if $italic {
    @include generate-font-face(
      $italic,
      $output-weights,
      $display-name,
      $dir,
      italic
    );
  }
}

}