astro-ghostcms/.pnpm-store/v3/files/7f/54a698ba1bcb85f09e20012e4f4...

185 lines
5.3 KiB
Plaintext

@use 'sass:list';
@use 'sass:map';
@use 'sass:math';
@use 'sass:meta';
@use 'sass:string';
@use 'metadata';
$metadata: meta.module-variables(metadata) !default;
$directory: null !default;
$family: null !default;
$display: null !default;
$formats: null !default;
$subsets: null !default;
$weights: null !default;
$styles: null !default;
$axes: null !default;
// Deprecated
$displayVar: null !default;
@mixin generator(
$metadata: $metadata,
$directory: $directory,
$family: $family,
$display: $display,
$formats: $formats,
$subsets: $subsets,
$weights: $weights,
$styles: $styles,
$axes: $axes,
// Deprecated
$displayVar: $displayVar
) {
@if $displayVar != null {
@warn "$displayVar is deprecated due to the limitation of using css variables in @font-face (https://github.com/fontsource/fontsource/issues/726).";
}
$isVariable: map.get($metadata, axes) != null;
$directory: if(
$directory,
$directory,
'~@fontsource#{if($isVariable, '-variable', '')}/#{map.get($metadata, id)}/files'
);
$family: if($family, $family, map.get($metadata, family) + if($isVariable, ' Variable', ''));
$display: if($display, $display, swap);
$formats: if(not $formats or $formats == all, if($isVariable, woff2, (woff2, woff)), $formats);
$subsets: if(
$subsets,
if($subsets == all, map.get($metadata, subsets), $subsets),
map.get($metadata, defaults, subset)
);
$weights: if(
$weights,
if($weights == all, map.get($metadata, weights), $weights),
map.get($metadata, defaults, weight)
);
$styles: if(
$styles,
if($styles == all, map.get($metadata, styles), $styles),
map.get($metadata, defaults, style)
);
$axes: if(
$axes,
if($axes == all, full, $axes),
if($isVariable, if(map.has-key($metadata, axes, wght), wght, full), null)
);
@each $subset in $subsets {
@each $unicodeSubset, $unicodeRange in map.get($metadata, unicode) {
@if (
($subset == $unicodeSubset) or
(
// Is numeric subset
($subset == map.get($metadata, defaults, subset)) and not
list.index(map.get($metadata, subsets), $unicodeSubset)
)
) {
@each $weight in if($axes, null, $weights) {
@each $axis in $axes {
@each $style in $styles {
$variant: '#{map.get($metadata, id)}-#{if($unicodeSubset, $unicodeSubset, $subset)}-#{if($axis, $axis, $weight)}-#{$style}';
$src: ();
@each $format in $formats {
$src: append(
$src,
url('#{$directory}/#{$variant}.#{$format}')
format('#{$format}#{if($axis, '-variations', '')}'),
comma
);
}
@content ((
metadata: $metadata,
directory: $directory,
family: $family,
display: $display,
formats: $formats,
subsets: $subsets,
weights: $weights,
styles: $styles,
axes: $axes,
variant: $variant,
subset: $subset,
unicodeSubset: $unicodeSubset,
unicodeRange: $unicodeRange,
weight: $weight,
axis: $axis,
style: $style,
font-family: string.quote($family),
font-style: if(
(($axis == full) or ($axis == slnt)) and map.has-key($metadata, axes, slnt),
oblique map.get($metadata, axes, slnt, min) + deg map.get($metadata, axes, slnt, max) + deg,
$style
),
font-display: $display,
font-weight: if(
(($axis == full) or ($axis == wght)) and map.has-key($metadata, axes, wght),
map.get($metadata, axes, wght, min) map.get($metadata, axes, wght, max),
$weight
),
font-stretch: if(
(($axis == full) or ($axis == wdth)) and map.has-key($metadata, axes, wdth),
'#{map.get($metadata, axes, wdth, min)}% #{map.get($metadata, axes, wdth, max)}%',
null
),
src: $src,
unicode-range: $unicodeRange,
));
}
}
}
}
}
}
}
@mixin faces(
$metadata: $metadata,
$directory: $directory,
$family: $family,
$display: $display,
$formats: $formats,
$subsets: $subsets,
$weights: $weights,
$styles: $styles,
$axes: $axes,
// Deprecated
$displayVar: $displayVar
) {
@include generator(
$metadata: $metadata,
$directory: $directory,
$family: $family,
$display: $display,
$formats: $formats,
$subsets: $subsets,
$weights: $weights,
$styles: $styles,
$axes: $axes,
$displayVar: $displayVar
)
using ($props) {
/* #{map.get($props, variant)} */
@font-face {
font-family: map.get($props, font-family);
font-style: map.get($props, font-style);
font-display: map.get($props, font-display);
font-weight: map.get($props, font-weight);
font-stretch: map.get($props, font-stretch);
unicode-range: map.get($props, unicode-range);
src: map.get($props, src);
}
}
}