@@ -47,21 +47,49 @@ extension NitroTextImpl {
4747
4848 var targetWeight = uiWeight
4949 var familyName = resolvedFamily
50- var isCondensed = familyName == " SystemCondensed "
50+ let normalizedFamilyName = familyName. trimmingCharacters ( in: . whitespacesAndNewlines) . lowercased ( )
51+ let isSystemCondensed = normalizedFamilyName == " systemcondensed " || familyName == " SystemCondensed "
52+ var isCondensed = isSystemCondensed
5153 var didFindFont = false
5254 var base : UIFont ? = nil
5355
54- if familyName == Self . defaultFontFamily || familyName == " System " || familyName == " SystemCondensed " {
56+ let systemDesign : UIFontDescriptor . SystemDesign ? = {
57+ switch normalizedFamilyName {
58+ case " system-ui " , " system " :
59+ return nil
60+ case " ui-serif " :
61+ return . serif
62+ case " ui-rounded " :
63+ return . rounded
64+ case " ui-monospace " :
65+ return . monospaced
66+ default :
67+ return nil
68+ }
69+ } ( )
70+
71+ if familyName == Self . defaultFontFamily
72+ || familyName == " System "
73+ || familyName == " SystemCondensed "
74+ || systemDesign != nil
75+ || normalizedFamilyName == " system-ui "
76+ || normalizedFamilyName == " system "
77+ {
5578 base = UIFont . systemFont ( ofSize: finalPointSize, weight: targetWeight)
5679 didFindFont = true
5780
81+ var descriptor = base? . fontDescriptor
82+ if let design = systemDesign {
83+ descriptor = descriptor? . withDesign ( design)
84+ }
5885 if isItalic || isCondensed {
59- var traits = base ? . fontDescriptor . symbolicTraits ?? [ ]
86+ var traits = descriptor ? . symbolicTraits ?? [ ]
6087 if isItalic { traits. insert ( . traitItalic) }
6188 if isCondensed { traits. insert ( . traitCondensed) }
62- if let descriptor = base? . fontDescriptor. withSymbolicTraits ( traits) {
63- base = UIFont ( descriptor: descriptor, size: finalPointSize)
64- }
89+ descriptor = descriptor? . withSymbolicTraits ( traits)
90+ }
91+ if let descriptor = descriptor {
92+ base = UIFont ( descriptor: descriptor, size: finalPointSize)
6593 }
6694 }
6795
0 commit comments