/** * Merges all fonts properties. * * @since 1.0.0 * * @param [type] $input_css [description] * @return [type] [description] */ public function merge_font($input_css) { $font_prop_default =& $this->parser->data['csstidy']['font_prop_default']; $new_font_value = ''; $important = ''; // Skip if no 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 ($this->parser->is_important($cur_value)) { $important = ' !important'; $cur_value = $this->parser->gvw_important($cur_value); } $new_font_value .= $cur_value; // Add delimiter. $new_font_value .= 'font-size' === $font_property && 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' !== $font_property || !$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; }