FontExtensions.swift 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import SwiftUI
  2. extension Font.Weight {
  3. var displayName: String {
  4. switch self {
  5. case .light: return "Light"
  6. case .regular: return "Regular"
  7. case .medium: return "Medium"
  8. case .bold: return "Bold"
  9. default: return "Unknown"
  10. }
  11. }
  12. private static let stringToFontWeight: [String: Font.Weight] = [
  13. "ultraLight": .ultraLight,
  14. "thin": .thin,
  15. "light": .light,
  16. "regular": .regular,
  17. "medium": .medium,
  18. "semibold": .semibold,
  19. "bold": .bold,
  20. "heavy": .heavy,
  21. "black": .black
  22. ]
  23. private static let fontWeightToString: [Font.Weight: String] = [
  24. .ultraLight: "ultraLight",
  25. .thin: "thin",
  26. .light: "light",
  27. .regular: "regular",
  28. .medium: "medium",
  29. .semibold: "semibold",
  30. .bold: "bold",
  31. .heavy: "heavy",
  32. .black: "black"
  33. ]
  34. /// Initialize `Font.Weight` from a string
  35. static func fromString(_ string: String) -> Font.Weight {
  36. stringToFontWeight[string] ?? .regular // Default fallback
  37. }
  38. /// Convert `Font.Weight` to a string
  39. var asString: String {
  40. Font.Weight.fontWeightToString[self] ?? "regular" // Default fallback
  41. }
  42. }
  43. extension Font.Width {
  44. var displayName: String {
  45. switch self {
  46. case .condensed: return "Condensed"
  47. case .expanded: return "Expanded"
  48. case .compressed: return "Compressed"
  49. case .standard: return "Standard"
  50. default: return "Unknown"
  51. }
  52. }
  53. private static let stringToFontWidth: [String: Font.Width] = [
  54. "compressed": .compressed,
  55. "condensed": .condensed,
  56. "standard": .standard,
  57. "expanded": .expanded
  58. ]
  59. private static let fontWidthToString: [Font.Width: String] = [
  60. .compressed: "compressed",
  61. .condensed: "condensed",
  62. .standard: "standard",
  63. .expanded: "expanded"
  64. ]
  65. /// Initialize `Font.Width` from a string
  66. static func fromString(_ string: String) -> Font.Width {
  67. stringToFontWidth[string] ?? .standard // Default fallback
  68. }
  69. /// Convert `Font.Width` to a string
  70. var asString: String {
  71. Font.Width.fontWidthToString[self] ?? "standard" // Default fallback
  72. }
  73. }