Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions Sources/OpenSwiftUICore/Shim/CoreFoundationNonDarwinShims.swift
Original file line number Diff line number Diff line change
@@ -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
13 changes: 13 additions & 0 deletions Sources/OpenSwiftUICore/Shim/FontNonDarwinShims.swift
Original file line number Diff line number Diff line change
@@ -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
37 changes: 26 additions & 11 deletions Sources/OpenSwiftUICore/View/Text/Font/CoreText+Private.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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,
Expand All @@ -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")
Expand All @@ -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

Expand Down Expand Up @@ -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
Loading
Loading