You are here

function csstidy_optimise::merge_font in Advanced CSS/JS Aggregation 6

Same name and namespace in other branches
  1. 7 advagg_css_compress/csstidy/class.csstidy_optimise.inc \csstidy_optimise::merge_font()

Merges all fonts properties

@version 1.3

Parameters

array $input_css:

Return value

array

See also

dissolve_short_font()

1 call to csstidy_optimise::merge_font()
csstidy_optimise::postparse in advagg_css_compress/csstidy/class.csstidy_optimise.inc
Optimises $css after parsing @access public @version 1.0

File

advagg_css_compress/csstidy/class.csstidy_optimise.inc, line 946

Class

csstidy_optimise
CSS Optimising Class

Code

function merge_font($input_css) {
  $font_prop_default =& $GLOBALS['csstidy']['font_prop_default'];
  $new_font_value = '';
  $important = '';

  // Skip if not font-family and font-size set
  if (isset($input_css['font-family']) && isset($input_css['font-size'])) {

    // fix several words in font-family - add quotes
    if (isset($input_css['font-family'])) {
      $families = explode(",", $input_css['font-family']);
      $result_families = array();
      foreach ($families as $family) {
        $family = trim($family);
        $len = strlen($family);
        if (strpos($family, " ") && !($family[0] == '"' && $family[$len - 1] == '"' || $family[0] == "'" && $family[$len - 1] == "'")) {
          $family = '"' . $family . '"';
        }
        $result_families[] = $family;
      }
      $input_css['font-family'] = implode(",", $result_families);
    }
    foreach ($font_prop_default as $font_property => $default_value) {

      // Skip if property does not exist
      if (!isset($input_css[$font_property])) {
        continue;
      }
      $cur_value = $input_css[$font_property];

      // Skip if default value is used
      if ($cur_value === $default_value) {
        continue;
      }

      // Remove !important
      if (csstidy::is_important($cur_value)) {
        $important = '!important';
        $cur_value = csstidy::gvw_important($cur_value);
      }
      $new_font_value .= $cur_value;

      // Add delimiter
      $new_font_value .= $font_property === 'font-size' && isset($input_css['line-height']) ? '/' : ' ';
    }
    $new_font_value = trim($new_font_value);

    // Delete all font-properties
    foreach ($font_prop_default as $font_property => $default_value) {
      if ($font_property !== 'font' or !$new_font_value) {
        unset($input_css[$font_property]);
      }
    }

    // Add new font property
    if ($new_font_value !== '') {
      $input_css['font'] = $new_font_value . $important;
    }
  }
  return $input_css;
}