@function set-font($basis, $values: ()) { $font: map-merge($basis, $values); $map: (font-family: map-get($font, 'family')); @if (map-has-key($font, 'size')) { $map: map-merge( $map, ( font-size: map-get($font, 'size') ) ); } @if (map-has-key($font, 'weight')) { $map: map-merge( $map, ( font-weight: map-get($font, 'weight') ) ); } @if (map-has-key($font, 'style')) { $map: map-merge( $map, ( font-style: map-get($font, 'style') ) ); } @if (map-has-key($font, 'line-height')) { $map: map-merge( $map, ( line-height: map-get($font, 'line-height') ) ); } @if (map-has-key($font, 'transform')) { $map: map-merge( $map, ( text-transform: map-get($font, 'transform') ) ); } @if (map-has-key($font, 'variant-alternates')) { $map: map-merge( $map, ( font-variant-alternates: map-get($font, 'variant-alternates') ) ); } @return $map; } @mixin set-font($basis, $values: ()) { $values: set-font($basis, $values); @each $prop, $value in $values { #{$prop}: $value; } }