From f468bdd789ddc4a75e9be8e32136eda2dd3873bf Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 19 Jul 2026 17:04:06 +0800 Subject: [PATCH 1/4] Update VariationAxisIdentifier --- .../View/Text/Font/ModifiedFont.swift | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Sources/OpenSwiftUICore/View/Text/Font/ModifiedFont.swift b/Sources/OpenSwiftUICore/View/Text/Font/ModifiedFont.swift index 4230a762d..c5f6a32df 100644 --- a/Sources/OpenSwiftUICore/View/Text/Font/ModifiedFont.swift +++ b/Sources/OpenSwiftUICore/View/Text/Font/ModifiedFont.swift @@ -213,15 +213,12 @@ extension Font { @_spi(Private) @available(OpenSwiftUI_v2_0, *) public enum VariationAxisIdentifier: Int, Hashable { - case weight = 0x77676864 - - case width = 0x77647468 - - case slant = 0x736c6e74 - - case opticalSize = 0x6f70737a - - case italic = 0x6974616c + // TODO: Use a FourCC macro for these raw values. + case weight = 0x77676874 // "wght" + case width = 0x77647468 // "wdth" + case slant = 0x736c6e74 // "slnt" + case opticalSize = 0x6f70737a // "opsz" + case italic = 0x6974616c // "ital" } @_spi(Private) From f59f1a0e2ce07c09d941ae4493ad8642716bc61e Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 19 Jul 2026 16:47:49 +0800 Subject: [PATCH 2/4] Update Font modifiers --- .../View/Text/Font/CoreText+Private.swift | 37 +- .../View/Text/Font/FontNonDarwinShims.swift | 13 + .../View/Text/Font/ModifiedFont.swift | 331 +++++++++++++----- 3 files changed, 290 insertions(+), 91 deletions(-) create mode 100644 Sources/OpenSwiftUICore/View/Text/Font/FontNonDarwinShims.swift diff --git a/Sources/OpenSwiftUICore/View/Text/Font/CoreText+Private.swift b/Sources/OpenSwiftUICore/View/Text/Font/CoreText+Private.swift index 09bc4dfde..d6f4146ea 100644 --- a/Sources/OpenSwiftUICore/View/Text/Font/CoreText+Private.swift +++ b/Sources/OpenSwiftUICore/View/Text/Font/CoreText+Private.swift @@ -8,6 +8,13 @@ import CoreFoundation // MARK: - Private CoreText APIs +// MARK: - CTFontSymbolicTraits + +extension CTFontSymbolicTraits { + package static let tightLeading = CTFontSymbolicTraits(rawValue: 1 << 15) + package static let looseLeading = CTFontSymbolicTraits(rawValue: 1 << 16) +} + // MARK: - CTFontDescriptor private API /// Private CoreText function to get the weight value from a font descriptor. @@ -17,6 +24,11 @@ import CoreFoundation @_silgen_name("CTFontDescriptorGetWeight") package func CTFontDescriptorGetWeight(_ descriptor: CTFontDescriptor) -> CGFloat +@_silgen_name("CTFontDescriptorGetSymbolicTraits") +package func CTFontDescriptorGetSymbolicTraits( + _ descriptor: CTFontDescriptor +) -> CTFontSymbolicTraits + @_silgen_name("CTFontDescriptorGetTextStyleSize") package func CTFontDescriptorGetTextStyleSize( _ textStyle: CFString, @@ -33,6 +45,16 @@ package func CTFontDescriptorCreateWithTextStyleAndAttributes( _ attributes: CFDictionary ) -> CTFontDescriptor +@_silgen_name("CTFontDescriptorIsSystemUIFont") +package func CTFontDescriptorIsSystemUIFont(_ descriptor: CTFontDescriptor) -> Bool + +@_silgen_name("CTFontDescriptorCreateForUIType") +package func CTFontDescriptorCreateForUIType( + _ uiType: CTFontUIFontType, + _ size: CGFloat, + _ language: CFString? +) -> CTFontDescriptor + // MARK: - CTFont private API @_silgen_name("CTFontIsSystemUIFont") @@ -49,6 +71,9 @@ package func CTFontGetAccessibilityBoldWeightOfWeight(_ weight: CGFloat) -> CGFl @_silgen_name("kCTFontUIFontDesignTrait") let kCTFontUIFontDesignTrait: CFString +@_silgen_name("kCTFontGradeTrait") +let kCTFontGradeTrait: CFString? + @_silgen_name("kCTFontLegibilityWeightAttribute") let kCTFontLegibilityWeightAttribute: CFString @@ -190,15 +215,5 @@ let kCTFontWidthExpanded: CGFloat let kCTFontWidthStandard: CGFloat @_silgen_name("kCTFontWidthTrait") -let kCTFontWidthTrait: CGFloat - -#else - -public import Foundation - -// Placeholder for CoreText when not available. -public class CTFontDescriptor: NSObject {} - -public class CTFont: NSObject {} - +let kCTFontWidthTrait: CFString #endif diff --git a/Sources/OpenSwiftUICore/View/Text/Font/FontNonDarwinShims.swift b/Sources/OpenSwiftUICore/View/Text/Font/FontNonDarwinShims.swift new file mode 100644 index 000000000..7ad49bcc7 --- /dev/null +++ b/Sources/OpenSwiftUICore/View/Text/Font/FontNonDarwinShims.swift @@ -0,0 +1,13 @@ +// +// FontNonDarwinShims.swift +// OpenSwiftUICore + +#if !canImport(CoreText) +public import Foundation + +// Placeholder for CoreText when not available. +public class CTFontDescriptor: NSObject {} + +public class CTFont: NSObject {} + +#endif diff --git a/Sources/OpenSwiftUICore/View/Text/Font/ModifiedFont.swift b/Sources/OpenSwiftUICore/View/Text/Font/ModifiedFont.swift index c5f6a32df..0df542289 100644 --- a/Sources/OpenSwiftUICore/View/Text/Font/ModifiedFont.swift +++ b/Sources/OpenSwiftUICore/View/Text/Font/ModifiedFont.swift @@ -2,19 +2,23 @@ // ModifiedFont.swift // OpenSwiftUICore // -// Status: WIP +// Status: Complete +// Audited for 6.5.4 // ID: 25811D44B7BE5E768C1CBA33158F398B (SwiftUICore) public import Foundation #if canImport(CoreText) package import CoreText #endif +#if canImport(CoreFoundation) +public import CoreFoundation +#endif @available(OpenSwiftUI_v1_0, *) extension Font { /// Adds italics to the font. public func italic() -> Font { - Font(provider: StaticModifierProvider(base: self)) + modifier(type: ItalicModifier.self) } /// Adjusts the font to enable all small capitals. @@ -22,7 +26,7 @@ extension Font { /// See ``Font/lowercaseSmallCaps()`` and ``Font/uppercaseSmallCaps()`` for /// more details. public func smallCaps() -> Font { - _openSwiftUIUnimplementedFailure() + lowercaseSmallCaps().uppercaseSmallCaps() } /// Adjusts the font to enable lowercase small capitals. @@ -32,7 +36,7 @@ extension Font { /// caps, such as titles. It may include forms related to small capitals, /// such as old-style figures. public func lowercaseSmallCaps() -> Font { - _openSwiftUIUnimplementedFailure() + feature(37, 1) } /// Adjusts the font to enable uppercase small capitals. @@ -42,7 +46,7 @@ extension Font { /// as acronyms, but which are desired in small-cap form to avoid disrupting /// the flow of text. public func uppercaseSmallCaps() -> Font { - _openSwiftUIUnimplementedFailure() + feature(38, 1) } /// Returns a modified font that uses fixed-width digits, while leaving @@ -78,29 +82,23 @@ extension Font { /// /// - Returns: A font that uses fixed-width numeric characters. public func monospacedDigit() -> Font { - Font(provider: StaticModifierProvider(base: self)) + modifier(type: MonospacedDigitModifier.self) } /// Sets the weight of the font. public func weight(_ weight: Font.Weight) -> Font { - Font(provider: ModifierProvider( - base: self, - modifier: AnyFontModifier.dynamic(WeightModifier(weight: weight)) - )) + modifier(AnyFontModifier.dynamic(WeightModifier(weight: weight))) } /// Sets the width of the font. @available(OpenSwiftUI_v4_0, *) public func width(_ width: Font.Width) -> Font { - Font(provider: ModifierProvider( - base: self, - modifier: AnyFontModifier.dynamic(WidthModifier(width: width.value)) - )) + modifier(AnyFontModifier.dynamic(WidthModifier(width: width.value))) } /// Adds bold styling to the font. public func bold() -> Font { - Font(provider: StaticModifierProvider(base: self)) + modifier(type: BoldModifier.self) } /// Returns a fixed-width font from the same family as the base font. @@ -149,7 +147,7 @@ extension Font { /// if one is available, and a default fixed-width font otherwise. @available(OpenSwiftUI_v3_0, *) public func monospaced() -> Font { - Font(provider: StaticModifierProvider(base: self)) + modifier(type: MonospacedModifier.self) } /// Adjusts the line spacing of a font. @@ -170,45 +168,45 @@ extension Font { /// the original font if it doesn't support line spacing adjustments. @available(OpenSwiftUI_v2_0, *) public func leading(_ leading: Font.Leading) -> Font { - _openSwiftUIUnimplementedFailure() + modifier(LeadingModifier(leading: leading)) } @available(OpenSwiftUI_v2_0, *) @available(*, deprecated, renamed: "leading") public func _leading(_ leading: Font._Leading) -> Font { - _openSwiftUIUnimplementedFailure() + modifier(LeadingModifier(leading: .init(leading))) } - #if canImport(CoreText) @_spi(Private) @available(OpenSwiftUI_v3_0, *) public func feature(_ type: Int, _ selector: Int) -> Font { - _openSwiftUIUnimplementedFailure() + modifier(FeatureSettingModifier(type: type, selector: selector)) } @_spi(Private) @available(OpenSwiftUI_v3_0, *) public func feature(_ settings: String...) -> Font { - _openSwiftUIUnimplementedFailure() + modifier(OpenTypeFeatureSettingModifier(settings: settings)) } + #if canImport(CoreFoundation) @_spi(Widget) @available(OpenSwiftUI_v4_0, *) public func features(_ features: [CFDictionary]) -> Font { - _openSwiftUIUnimplementedFailure() + modifier(FeatureDictionariesSettingModifier(features: features)) } + #endif /// Create a version of `self` that uses the specified stylistic set. public func _stylisticAlternative(_ alternative: Font._StylisticAlternative) -> Font { - _openSwiftUIUnimplementedFailure() + modifier(StylisticAlternativeModifier(alternative: alternative)) } @_spi(Private) @available(OpenSwiftUI_v2_0, *) public func variation(_ identifier: Font.VariationAxisIdentifier, _ value: CGFloat) -> Font { - _openSwiftUIUnimplementedFailure() + modifier(VariationModifier(identifier: identifier, value: value)) } - #endif @_spi(Private) @available(OpenSwiftUI_v2_0, *) @@ -224,15 +222,15 @@ extension Font { @_spi(Private) @available(OpenSwiftUI_v2_0, *) public func grade(_ grade: Int) -> Font { - _openSwiftUIUnimplementedFailure() + modifier(GradeModifier(grade: grade)) } - package func modifier(_ modifier: some FontModifier) -> Font { - _openSwiftUIUnimplementedFailure() + package func modifier(_ modifier: M) -> Font where M: FontModifier { + Font(provider: ModifierProvider(base: self, modifier: modifier)) } - package func modifier(type: (some StaticFontModifier).Type) -> Font { - _openSwiftUIUnimplementedFailure() + package func modifier(type: M.Type) -> Font where M: StaticFontModifier { + Font(provider: StaticModifierProvider(base: self)) } /// A weight to use for fonts. @@ -324,6 +322,14 @@ extension Font { /// This value typically increases line spacing by 1 point for watchOS /// and 2 points on other platforms. case loose + + init(_ leading: _Leading) { + switch leading { + case .tight: self = .tight + case .loose: self = .loose + case .standard: self = .standard + } + } } public enum _Leading: Hashable { @@ -340,6 +346,8 @@ extension Font { .boldTrait, .boldTrait, ) ?? descriptor + #else + _openSwiftUIPlatformUnimplementedWarning() #endif } @@ -356,13 +364,47 @@ extension Font { .italicTrait, .italicTrait, ) ?? descriptor + #else + _openSwiftUIPlatformUnimplementedWarning() #endif } } package struct MonospacedModifier: StaticFontModifier { package static func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + if let monospacedDescriptor = CTFontDescriptorCreateCopyWithSymbolicTraits( + descriptor, + .monoSpaceTrait, + .monoSpaceTrait + ), CTFontDescriptorGetSymbolicTraits(descriptor).contains(.monoSpaceTrait) { + descriptor = monospacedDescriptor + } else if CTFontDescriptorIsSystemUIFont(descriptor) { + DesignModifier(design: .monospaced).modify( + descriptor: &descriptor, + in: context + ) + } else { + let size = CTFontDescriptorCopyAttribute( + descriptor, + kCTFontSizeAttribute + ) as? CGFloat ?? 0.0 + let weight = CTFontDescriptorGetWeight(descriptor) + descriptor = CTFontDescriptorCreateForUIType( + .userFixedPitch, + size, + nil + ) + if weight != 0.0 { + WeightModifier(weight: .init(value: weight)).modify( + descriptor: &descriptor, + in: context + ) + } + } + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } } @@ -374,9 +416,11 @@ extension Font { } descriptor = CTFontDescriptorCreateCopyWithFeature( descriptor, - 6.0 as CFNumber, // kCTFontFeatureTypeIdentifierKey - 1.0 as CFNumber, // kCTFontFeatureSelectorIdentifierKey + 6 as CFNumber, + 0 as CFNumber ) + #else + _openSwiftUIPlatformUnimplementedWarning() #endif } } @@ -385,19 +429,19 @@ extension Font { package let design: Font.Design package func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() - } - - package func hash(into hasher: inout Hasher) { - _openSwiftUIUnimplementedFailure() - } - - package static func == (a: Font.DesignModifier, b: Font.DesignModifier) -> Bool { - _openSwiftUIUnimplementedFailure() - } - - package var hashValue: Int { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + var traits = CTFontDescriptorCopyAttribute( + descriptor, + kCTFontTraitsAttribute + ) as? [String: Any] ?? [:] + traits[kCTFontUIFontDesignTrait as String] = design.ctFontDesign + descriptor = CTFontDescriptorCreateCopyWithAttributes( + descriptor, + [kCTFontTraitsAttribute: traits] as CFDictionary + ) + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } } @@ -405,7 +449,28 @@ extension Font { package var leading: Font.Leading package func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + let value: CTFontSymbolicTraits + let mask: CTFontSymbolicTraits + switch leading { + case .standard: + value = [] + mask = [.tightLeading, .looseLeading] + case .tight: + value = .tightLeading + mask = .tightLeading + case .loose: + value = .looseLeading + mask = .looseLeading + } + descriptor = CTFontDescriptorCreateCopyWithSymbolicTraits( + descriptor, + value, + mask + ) ?? descriptor + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } } @@ -414,19 +479,18 @@ extension Font { package var selector: Int package func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() - } - - package func hash(into hasher: inout Hasher) { - _openSwiftUIUnimplementedFailure() - } - - package static func == (a: Font.FeatureSettingModifier, b: Font.FeatureSettingModifier) -> Bool { - _openSwiftUIUnimplementedFailure() - } - - package var hashValue: Int { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + guard !context.shouldRedactContent else { + return + } + descriptor = CTFontDescriptorCreateCopyWithFeature( + descriptor, + type as CFNumber, + selector as CFNumber + ) + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } } @@ -434,28 +498,36 @@ extension Font { package var settings: [String] package func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() - } - - package func hash(into hasher: inout Hasher) { - _openSwiftUIUnimplementedFailure() - } - - package static func == (a: Font.OpenTypeFeatureSettingModifier, b: Font.OpenTypeFeatureSettingModifier) -> Bool { - _openSwiftUIUnimplementedFailure() - } - - package var hashValue: Int { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + guard !context.shouldRedactContent else { + return + } + descriptor = CTFontDescriptorCreateCopyWithAttributes( + descriptor, + [kCTFontFeatureSettingsAttribute: settings] as CFDictionary + ) + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } } - #if canImport(CoreText) + #if canImport(CoreFoundation) package struct FeatureDictionariesSettingModifier: FontModifier { package var features: [CFDictionary] package func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + guard !context.shouldRedactContent else { + return + } + descriptor = CTFontDescriptorCreateCopyWithAttributes( + descriptor, + [kCTFontFeatureSettingsAttribute: features] as CFDictionary + ) + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } } #endif @@ -464,7 +536,40 @@ extension Font { package var weight: Font.Weight package func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + guard !context.shouldRedactContent else { + return + } + if CTFontDescriptorIsSystemUIFont(descriptor) { + descriptor = CTFontDescriptorCreateCopyWithAttributes( + descriptor, + [ + kCTFontTraitsAttribute: [ + kCTFontWeightTrait: weight.value, + ], + ] as CFDictionary + ) + } else { + guard let familyName = CTFontDescriptorCopyAttribute( + descriptor, + kCTFontFamilyNameAttribute + ) else { + return + } + var attributes = CTFontDescriptorCopyAttributes(descriptor) as? [CFString: Any] ?? [:] + attributes[kCTFontNameAttribute] = nil + attributes[kCTFontFamilyNameAttribute] = familyName + var traits = CTFontDescriptorCopyAttribute( + descriptor, + kCTFontTraitsAttribute + ) as? [CFString: Any] ?? [:] + traits[kCTFontWeightTrait] = weight.value + attributes[kCTFontTraitsAttribute] = traits + descriptor = CTFontDescriptorCreateWithAttributes(attributes as CFDictionary) + } + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } package func modify(traits: inout Font.ResolvedTraits) { @@ -476,7 +581,37 @@ extension Font { package var width: CGFloat package func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + if CTFontDescriptorIsSystemUIFont(descriptor) { + descriptor = CTFontDescriptorCreateCopyWithAttributes( + descriptor, + [ + kCTFontTraitsAttribute: [ + kCTFontWidthTrait: width, + ], + ] as CFDictionary + ) + } else { + guard let familyName = CTFontDescriptorCopyAttribute( + descriptor, + kCTFontFamilyNameAttribute + ) else { + return + } + var attributes = CTFontDescriptorCopyAttributes(descriptor) as? [CFString: Any] ?? [:] + attributes[kCTFontNameAttribute] = nil + attributes[kCTFontFamilyNameAttribute] = familyName + var traits = CTFontDescriptorCopyAttribute( + descriptor, + kCTFontTraitsAttribute + ) as? [CFString: Any] ?? [:] + traits[kCTFontWidthTrait] = width + attributes[kCTFontTraitsAttribute] = traits + descriptor = CTFontDescriptorCreateWithAttributes(attributes as CFDictionary) + } + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } package func modify(traits: inout Font.ResolvedTraits) { @@ -488,7 +623,18 @@ extension Font { package var alternative: Font._StylisticAlternative package func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + guard !context.shouldRedactContent else { + return + } + descriptor = CTFontDescriptorCreateCopyWithFeature( + descriptor, + 35 as CFNumber, + (alternative.rawValue * 2) as CFNumber + ) + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } } @@ -497,7 +643,18 @@ extension Font { package var value: CGFloat package func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + guard !context.shouldRedactContent else { + return + } + descriptor = CTFontDescriptorCreateCopyWithVariation( + descriptor, + identifier.rawValue as CFNumber, + value + ) + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } } @@ -505,7 +662,21 @@ extension Font { package var grade: Int package func modify(descriptor: inout CTFontDescriptor, in context: Font.Context) { - _openSwiftUIUnimplementedFailure() + #if canImport(CoreText) + guard !context.shouldRedactContent else { + return + } + descriptor = CTFontDescriptorCreateCopyWithAttributes( + descriptor, + [ + kCTFontTraitsAttribute: [ + kCTFontGradeTrait: grade, + ], + ] as CFDictionary + ) + #else + _openSwiftUIPlatformUnimplementedWarning() + #endif } } } From f0de387d976c8b515a48c485d369131459e14af2 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 19 Jul 2026 19:44:35 +0800 Subject: [PATCH 3/4] Fix feature dictionary hashing on Linux --- .../Shim/CoreFoundationNonDarwinShims.swift | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Sources/OpenSwiftUICore/Shim/CoreFoundationNonDarwinShims.swift diff --git a/Sources/OpenSwiftUICore/Shim/CoreFoundationNonDarwinShims.swift b/Sources/OpenSwiftUICore/Shim/CoreFoundationNonDarwinShims.swift new file mode 100644 index 000000000..696b76514 --- /dev/null +++ b/Sources/OpenSwiftUICore/Shim/CoreFoundationNonDarwinShims.swift @@ -0,0 +1,17 @@ +// +// CoreFoundationNonDarwinShims.swift +// OpenSwiftUICore + +#if canImport(CoreFoundation) && !canImport(ObjectiveC) +public import CoreFoundation + +extension CFDictionary: @retroactive Swift.Hashable { + public static func == (lhs: CFDictionary, rhs: CFDictionary) -> Bool { + CFEqual(lhs, rhs) + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(CFHash(self)) + } +} +#endif From b6c78b612028b58c66f4332ca2bb64303308c0c9 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 19 Jul 2026 20:26:41 +0800 Subject: [PATCH 4/4] Move non-Darwin shims --- .../{View/Text/Font => Shim}/FontNonDarwinShims.swift | 0 .../{View/Text/Text => Shim}/TextNonDarwinShims.swift | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename Sources/OpenSwiftUICore/{View/Text/Font => Shim}/FontNonDarwinShims.swift (100%) rename Sources/OpenSwiftUICore/{View/Text/Text => Shim}/TextNonDarwinShims.swift (100%) diff --git a/Sources/OpenSwiftUICore/View/Text/Font/FontNonDarwinShims.swift b/Sources/OpenSwiftUICore/Shim/FontNonDarwinShims.swift similarity index 100% rename from Sources/OpenSwiftUICore/View/Text/Font/FontNonDarwinShims.swift rename to Sources/OpenSwiftUICore/Shim/FontNonDarwinShims.swift diff --git a/Sources/OpenSwiftUICore/View/Text/Text/TextNonDarwinShims.swift b/Sources/OpenSwiftUICore/Shim/TextNonDarwinShims.swift similarity index 100% rename from Sources/OpenSwiftUICore/View/Text/Text/TextNonDarwinShims.swift rename to Sources/OpenSwiftUICore/Shim/TextNonDarwinShims.swift