@@ -192,14 +192,50 @@ - (NSParagraphStyle *)effectiveParagraphStyle
192
192
193
193
- (UIFont *)effectiveFont
194
194
{
195
- // FIXME: RCTFont has thread-safety issues and must be rewritten.
196
- return [RCTFont updateFont: nil
197
- withFamily: _fontFamily
198
- size: @(isnan (_fontSize) ? 0 : _fontSize)
199
- weight: _fontWeight
200
- style: _fontStyle
201
- variant: _fontVariant
202
- scaleMultiplier: self .effectiveFontSizeMultiplier];
195
+ NSArray *rawFontFamilies = [_fontFamily componentsSeparatedByString: @" ," ];
196
+
197
+ if (rawFontFamilies.count == 0 ) {
198
+ return [RCTFont updateFont: nil
199
+ withFamily: _fontFamily
200
+ size: @(isnan (_fontSize) ? 0 : _fontSize)
201
+ weight: _fontWeight
202
+ style: _fontStyle
203
+ variant: _fontVariant
204
+ scaleMultiplier: self .effectiveFontSizeMultiplier];
205
+ }
206
+
207
+ NSMutableArray *fonts = [NSMutableArray new ];
208
+ for (NSString *rawFontFamily in rawFontFamilies) {
209
+ NSString *fontFamily = [rawFontFamily stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet ]];
210
+ if (fontFamily.length == 0 ) {
211
+ continue ;
212
+ }
213
+
214
+ UIFont *font = [RCTFont updateFont: nil
215
+ withFamily: fontFamily
216
+ size: @(isnan (_fontSize) ? 0 : _fontSize)
217
+ weight: _fontWeight
218
+ style: _fontStyle
219
+ variant: _fontVariant
220
+ scaleMultiplier: self .effectiveFontSizeMultiplier];
221
+
222
+ if (font) {
223
+ [fonts addObject: font];
224
+ }
225
+ }
226
+
227
+ UIFont *primaryFont = fonts[0 ];
228
+
229
+ NSMutableArray *fontDescriptors = [NSMutableArray new ];
230
+ for (NSUInteger i = 1 ; i < fonts.count ; i++) {
231
+ UIFont *font = fonts[i];
232
+ [fontDescriptors addObject: font.fontDescriptor];
233
+ }
234
+
235
+ UIFontDescriptor *fontDescriptor = [primaryFont.fontDescriptor fontDescriptorByAddingAttributes:
236
+ @{UIFontDescriptorCascadeListAttribute: fontDescriptors}];
237
+
238
+ return [UIFont fontWithDescriptor: fontDescriptor size: primaryFont.pointSize];
203
239
}
204
240
205
241
- (CGFloat)effectiveFontSizeMultiplier
0 commit comments