FontExtensions.swift 2.4 KB

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