Skip to content

Commit

Permalink
Font Face: Gets name from "fontFamily" setting as fallback (#54615)
Browse files Browse the repository at this point in the history
Iff the "name" setting does not exist (as it's not required by the schema or documentation), get the font-family name from the required "fontFamily" setting, i.e. within each `typography.fontFamilies`.
  • Loading branch information
hellofromtonya authored Sep 22, 2023
1 parent 45d1ce7 commit 4aa0382
Showing 1 changed file with 33 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,30 +56,54 @@ private static function parse_settings( array $settings ) {
foreach ( $settings['typography']['fontFamilies'] as $font_families ) {
foreach ( $font_families as $definition ) {

// // Skip if font-family "name" is not defined.
// if ( empty( $definition['name'] ) ) {
// continue;
// }

// Skip if "fontFace" is not defined, meaning there are no variations.
if ( empty( $definition['fontFace'] ) ) {
continue;
}

$font_family = $definition['name'];
// Skip if "fontFamily" is not defined.
if ( empty( $definition['fontFamily'] ) ) {
continue;
}

$font_family_name = static::maybe_parse_name_from_comma_separated_list( $definition['fontFamily'] );

// Skip if no font family is defined.
if ( empty( $font_family_name ) ) {
continue;
}

// Prepare the fonts array structure for this font-family.
if ( ! array_key_exists( $font_family, $fonts ) ) {
$fonts[ $font_family ] = array();
if ( ! array_key_exists( $font_family_name, $fonts ) ) {
$fonts[ $font_family_name ] = array();
}

$fonts[ $font_family ] = static::convert_font_face_properties( $definition['fontFace'], $font_family );
$fonts[ $font_family_name ] = static::convert_font_face_properties( $definition['fontFace'], $font_family_name );
}
}

return $fonts;
}

/**
* Parse font-family name from comma-separated lists.
*
* If the given `fontFamily` is a comma-separated lists (example: "Inter, sans-serif" ),
* parse and return the fist font from the list.
*
* @since 6.4.0
*
* @param string $font_family Font family `fontFamily' to parse.
* @return string Font-family name.
*/
private static function maybe_parse_name_from_comma_separated_list( $font_family ) {
if ( str_contains( $font_family, ',' ) ) {
$font_family = explode( ',', $font_family )[0];
}

return trim( $font_family, "\"'" );
}

/**
* Converts font-face properties from theme.json format.
*
Expand Down

1 comment on commit 4aa0382

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Flaky tests detected in 4aa0382.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/6279938999
📝 Reported issues:

Please sign in to comment.