diff --git a/SodaLive/Sources/Extensions/KoreanFontModifier.swift b/SodaLive/Sources/Extensions/KoreanFontModifier.swift new file mode 100644 index 0000000..c85e7d4 --- /dev/null +++ b/SodaLive/Sources/Extensions/KoreanFontModifier.swift @@ -0,0 +1,43 @@ +// +// KoreanFontModifier.swift +// SodaLive +// +// Created by klaus on 1/23/26. +// + +import SwiftUI + +struct KoreanFontModifier: ViewModifier { + @Environment(\.locale) private var locale + let size: CGFloat + let weight: SwiftUI.Font.Weight + + private func resolvedLanguageCode() -> String? { + if let raw = UserDefaults.standard.string(forKey: "app.language"), + let option = LanguageOption(rawValue: raw), + option != .system { + return option.rawValue + } + return locale.language.languageCode?.identifier + } + + func body(content: Content) -> some View { + if resolvedLanguageCode() == "ko" { + let name: String = switch weight { + case .bold: "Pretendard-Bold" + case .medium: "Pretendard-Medium" + case .light: "Pretendard-Light" + default: "Pretendard-Regular" + } + content.font(.custom(name, size: size)) + } else { + content.font(.system(size: size, weight: weight)) + } + } +} + +extension View { + func appFont(size: CGFloat, weight: SwiftUI.Font.Weight = .regular) -> some View { + self.modifier(KoreanFontModifier(size: size, weight: weight)) + } +} diff --git a/SodaLive/Sources/Main/Home/TabButton.swift b/SodaLive/Sources/Main/Home/TabButton.swift index 72f07fa..e989dcd 100644 --- a/SodaLive/Sources/Main/Home/TabButton.swift +++ b/SodaLive/Sources/Main/Home/TabButton.swift @@ -12,7 +12,7 @@ struct TabButton: View { let title: LocalizedStringResource let action: () -> Void let image: () -> String - let fontName: () -> String + let fontWeight: () -> SwiftUI.Font.Weight let color: () -> Color let width: CGFloat @@ -21,7 +21,7 @@ struct TabButton: View { Image(image()) Text(title) - .font(.custom(fontName(), size: 10)) + .appFont(size: 10, weight: fontWeight()) .foregroundColor(color()) } .frame(width: width) @@ -37,7 +37,7 @@ struct TabButton_Previews: PreviewProvider { title: "라이브", action: {}, image: { "ic_tabbar_live_selected" }, - fontName: { Font.bold.rawValue }, + fontWeight: { .bold }, color: { Color(hex: "3bb9f1") }, width: UIScreen.main.bounds.width / 4 )