/**
 * Adds a font specification to an element.
 * Uses a single "font" property if possible, otherwise uses separate font-family, font-size,
 * font-weight and line-height properties.
 *
 * @param {number/string} [$font-weight=null]
 * The font-weight
 *
 * @param {number/string} [$font-size=null]
 * The font-size
 *
 * @param {number/string} [$line-height=null]
 * The line-height
 *
 * @param {string} [$font-family=null]
 * The font-family
 * 
 * @member Global_CSS
 * @private
 */
@mixin font(
    $font-weight: null,
    $font-size: null,
    $line-height: null,
    $font-family: null
) {
    @if $font-family == null or $font-size == null {
        // if font-family or font-size is null we cannot use a single "font" declaration 
        font-weight: $font-weight;
        font-size: $font-size;
        line-height: $line-height;
        font-family: $font-family;
    } @else if $line-height == null {
        font: $font-weight $font-size $font-family;
    } @else {
        font: $font-weight #{$font-size}/#{$line-height} $font-family;
    }
}