From f6b984d504c02f1f0d597cf6d355b85ba8036eec Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Thu, 8 Feb 2024 05:14:34 -0800 Subject: [PATCH] Back out "Make font styling work when using specific font name on the new architecture" (#42919) Summary: Changelog: [IOS] [FIXED] - backout https://github.com/facebook/react-native/pull/37109 Pull Request resolved: https://github.com/facebook/react-native/pull/42919 Original commit changeset: 1f0a6a52a714 Original Phabricator Diff: D45351185 Reviewed By: cipolleschi Differential Revision: D53566506 fbshipit-source-id: e96813edfee4b54a7828ac02c3dc8aaffc83d6b7 --- .../textlayoutmanager/RCTFontUtils.mm | 21 ++++++------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm b/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm index dd5900b41ce..4f8d5aa0703 100644 --- a/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm +++ b/packages/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm @@ -35,6 +35,9 @@ static RCTFontProperties RCTResolveFontProperties( { fontProperties.family = fontProperties.family.length ? fontProperties.family : baseFontProperties.family; fontProperties.size = !isnan(fontProperties.size) ? fontProperties.size : baseFontProperties.size; + fontProperties.weight = !isnan(fontProperties.weight) ? fontProperties.weight : baseFontProperties.weight; + fontProperties.style = + fontProperties.style != RCTFontStyleUndefined ? fontProperties.style : baseFontProperties.style; fontProperties.variant = fontProperties.variant != RCTFontVariantUndefined ? fontProperties.variant : baseFontProperties.variant; return fontProperties; @@ -113,15 +116,9 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) if ([fontProperties.family isEqualToString:defaultFontProperties.family]) { // Handle system font as special case. This ensures that we preserve // the specific metrics of the standard system font as closely as possible. - fontProperties.weight = !isnan(fontProperties.weight) ? fontProperties.weight : defaultFontProperties.weight; - fontProperties.style = - fontProperties.style != RCTFontStyleUndefined ? fontProperties.style : defaultFontProperties.style; - font = RCTDefaultFontWithFontProperties(fontProperties); } else { NSArray *fontNames = [UIFont fontNamesForFamilyName:fontProperties.family]; - UIFontWeight fontWeight = fontProperties.weight; - RCTFontStyle fontStyle = fontProperties.style; if (fontNames.count == 0) { // Gracefully handle being given a font name rather than font family, for @@ -132,24 +129,18 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties) // Failback to system font. font = [UIFont systemFontOfSize:effectiveFontSize weight:fontProperties.weight]; } - - fontNames = [UIFont fontNamesForFamilyName:font.familyName]; - fontWeight = isnan(fontWeight) ? RCTGetFontWeight(font) : fontWeight; - fontStyle = fontStyle == RCTFontStyleUndefined ? RCTGetFontStyle(font) : fontStyle; - } - - if (fontNames.count != 0) { + } else { // Get the closest font that matches the given weight for the fontFamily CGFloat closestWeight = INFINITY; for (NSString *name in fontNames) { UIFont *fontMatch = [UIFont fontWithName:name size:effectiveFontSize]; - if (RCTGetFontStyle(fontMatch) != fontStyle) { + if (RCTGetFontStyle(fontMatch) != fontProperties.style) { continue; } CGFloat testWeight = RCTGetFontWeight(fontMatch); - if (ABS(testWeight - fontWeight) < ABS(closestWeight - fontWeight)) { + if (ABS(testWeight - fontProperties.weight) < ABS(closestWeight - fontProperties.weight)) { font = fontMatch; closestWeight = testWeight; }