From b3331d55124b879dd64429d3c0375af24182e632 Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Fri, 23 Jan 2026 03:25:19 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BB=A4=EC=8A=A4=ED=85=80=20=ED=8F=B0?= =?UTF-8?q?=ED=8A=B8=20pretendard-regular,=20gmarket-regular=EB=A5=BC=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EA=B3=A0=20=EC=9E=88=EB=8D=98=20?= =?UTF-8?q?=EA=B2=83=EC=9D=84=20appFont=20=EB=AA=A8=EB=94=94=ED=8C=8C?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=97=AC=20=ED=95=9C=EA=B5=AD=EC=96=B4=EB=8A=94=20pretendard,?= =?UTF-8?q?=20=EA=B7=B8=20=EC=99=B8=EC=97=90=EB=8A=94=20=EC=8B=9C=EC=8A=A4?= =?UTF-8?q?=ED=85=9C=20=ED=8F=B0=ED=8A=B8=EB=A5=BC=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Chat/Character/CharacterItemView.swift | 6 +-- .../Chat/Character/CharacterSectionView.swift | 2 +- .../Detail/CharacterDetailView.swift | 22 ++++---- .../Gallery/CharacterDetailGalleryView.swift | 6 +-- .../New/Views/NewCharacterListView.swift | 6 +-- .../Recent/RecentCharacterItemView.swift | 2 +- .../Detail/OriginalWorkDetailHeaderView.swift | 8 +-- .../Detail/OriginalWorkDetailView.swift | 16 +++--- .../Chat/Original/OriginalTabItemView.swift | 4 +- .../Sources/Chat/Talk/Room/ChatRoomView.swift | 8 +-- .../Talk/Room/Message/AiMessageItemView.swift | 10 ++-- .../Message/TypingIndicatorItemView.swift | 2 +- .../Room/Message/UserMessageItemView.swift | 8 +-- .../Room/Settings/ChatBgSelectionView.swift | 2 +- .../Talk/Room/Settings/ChatSettingsView.swift | 4 +- SodaLive/Sources/Chat/Talk/TalkItemView.swift | 6 +-- SodaLive/Sources/Chat/Talk/TalkView.swift | 2 +- .../Sources/Content/All/ContentAllView.swift | 4 +- .../Sources/Content/ContentItemView.swift | 4 +- .../Content/Series/DayOfWeekSeriesView.swift | 2 +- .../Series/Main/Home/SeriesMainHomeView.swift | 2 +- .../Series/Main/SeriesMainItemView.swift | 12 ++--- .../Content/Series/SeriesItemView.swift | 12 ++--- .../CustomView/ExpandableTextView.swift | 2 +- .../CreatorCommunityItemView.swift | 8 +-- .../Profile/UserProfileContentView.swift | 6 +-- .../Profile/UserProfileLiveView.swift | 14 +++--- .../Extensions/KoreanFontModifier.swift | 50 ++++++++++++------- .../Home/HomeCreatorRankingItemView.swift | 4 +- .../Sources/Home/HomeLatestContentView.swift | 2 +- SodaLive/Sources/Home/HomeLiveItemView.swift | 4 +- SodaLive/Sources/Home/HomeTabView.swift | 10 ++-- .../Home/HomeWeeklyChartItemView.swift | 4 +- .../RecommendChannelContentItemView.swift | 6 +-- .../RecommendChannelItemView.swift | 2 +- .../Live/LatestFinishedLiveItemView.swift | 4 +- .../Sources/Live/Now/LiveNowItemView.swift | 8 +-- .../Sources/Live/Now/SectionLiveNowView.swift | 2 +- .../SectionRecommendChannelView.swift | 2 +- .../Reservation/LiveReservationItemView.swift | 14 +++--- .../MyLiveReservationItemView.swift | 14 +++--- .../SectionLiveReservationView.swift | 2 +- SodaLive/Sources/MyPage/MyPageView.swift | 6 +-- .../Language/Views/LanguageSettingsView.swift | 2 +- 44 files changed, 166 insertions(+), 150 deletions(-) diff --git a/SodaLive/Sources/Chat/Character/CharacterItemView.swift b/SodaLive/Sources/Chat/Character/CharacterItemView.swift index b621995..39f5412 100644 --- a/SodaLive/Sources/Chat/Character/CharacterItemView.swift +++ b/SodaLive/Sources/Chat/Character/CharacterItemView.swift @@ -34,7 +34,7 @@ struct CharacterItemView: View { Spacer() Text("N") - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .frame(width: 30, height: 30) .background(Color.button) @@ -57,14 +57,14 @@ struct CharacterItemView: View { } Text(character.name) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .lineLimit(1) .truncationMode(.tail) if let desc = character.description, !desc.isEmpty { Text(desc) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) .lineLimit(1) } diff --git a/SodaLive/Sources/Chat/Character/CharacterSectionView.swift b/SodaLive/Sources/Chat/Character/CharacterSectionView.swift index 59e2177..9f0eea4 100644 --- a/SodaLive/Sources/Chat/Character/CharacterSectionView.swift +++ b/SodaLive/Sources/Chat/Character/CharacterSectionView.swift @@ -24,7 +24,7 @@ struct CharacterSectionView: View { Spacer() if let trailingTitle = trailingTitle { Text(trailingTitle) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "90A4AE")) .onTapGesture { onTapTrailing?() } } diff --git a/SodaLive/Sources/Chat/Character/Detail/CharacterDetailView.swift b/SodaLive/Sources/Chat/Character/Detail/CharacterDetailView.swift index 5a48ad3..463ccd1 100644 --- a/SodaLive/Sources/Chat/Character/Detail/CharacterDetailView.swift +++ b/SodaLive/Sources/Chat/Character/Detail/CharacterDetailView.swift @@ -205,7 +205,7 @@ extension CharacterDetailView { HStack(spacing: 4) { if let gender = viewModel.characterDetail?.gender { Text(viewModel.characterDetail?.translated?.gender ?? gender) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor( gender == "남성" ? Color.button : @@ -228,7 +228,7 @@ extension CharacterDetailView { if let age = viewModel.characterDetail?.age { Text("\(age)세") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .padding(.horizontal, 7) .padding(.vertical, 3) @@ -244,7 +244,7 @@ extension CharacterDetailView { if let mbti = viewModel.characterDetail?.mbti { Text(mbti) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .padding(.horizontal, 7) .padding(.vertical, 3) @@ -271,7 +271,7 @@ extension CharacterDetailView { if let characterType = viewModel.characterDetail?.characterType { HStack(spacing: 8) { Text(characterType.rawValue) - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 5) .padding(.vertical, 1) @@ -283,11 +283,11 @@ extension CharacterDetailView { // 설명 Text(viewModel.characterDetail?.translated?.description ?? viewModel.characterDetail?.description ?? "") - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) Text(viewModel.characterDetail?.translated?.tags ?? viewModel.characterDetail?.tags ?? "") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "3BB9F1")) .multilineTextAlignment(.leading) } @@ -328,7 +328,7 @@ extension CharacterDetailView { HStack { Text(title) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) Spacer() @@ -382,7 +382,7 @@ extension CharacterDetailView { Text(""" 보이스온의 오픈월드 캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다. 세계관 속 연관 캐릭터가 되어 대화를 하거나 완전히 새로운 인물이 되어 캐릭터와 당신만의 스토리를 만들어 갈 수 있습니다. """) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(Color(hex: "AEAEB2")) .multilineTextAlignment(.leading) @@ -390,7 +390,7 @@ extension CharacterDetailView { 오픈월드 캐릭터톡은 캐릭터를 정교하게 설계하였지만, 대화가 어색하거나 불완전할 수도 있습니다. 대화 도중 캐릭터의 대화가 이상하거나 새로운 캐릭터로 대화를 나누고 싶다면 대화를 초기화 하고 새롭게 캐릭터와 대화를 나눠보세요. """) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(Color(hex: "AEAEB2")) .multilineTextAlignment(.leading) } @@ -443,7 +443,7 @@ struct CharacterExpandableTextView: View { var body: some View { VStack(alignment: .leading, spacing: 8) { Text(text) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .lineLimit(isExpanded ? nil : 3) .multilineTextAlignment(.leading) @@ -469,7 +469,7 @@ struct CharacterExpandableTextView: View { .rotationEffect(.degrees(isExpanded ? 180 : 0)) Text(isExpanded ? "간략히" : "더보기") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(Color(hex: "607D8B")) } .onTapGesture { diff --git a/SodaLive/Sources/Chat/Character/Detail/Gallery/CharacterDetailGalleryView.swift b/SodaLive/Sources/Chat/Character/Detail/Gallery/CharacterDetailGalleryView.swift index 8fdf0dc..287933b 100644 --- a/SodaLive/Sources/Chat/Character/Detail/Gallery/CharacterDetailGalleryView.swift +++ b/SodaLive/Sources/Chat/Character/Detail/Gallery/CharacterDetailGalleryView.swift @@ -102,15 +102,15 @@ struct CharacterDetailGalleryView: View { HStack(spacing: 4) { Text("\(viewModel.ownedCount)") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(Color(hex: "#FDD453")) Text("/") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) Text("\(viewModel.totalCount)개") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) } } diff --git a/SodaLive/Sources/Chat/Character/New/Views/NewCharacterListView.swift b/SodaLive/Sources/Chat/Character/New/Views/NewCharacterListView.swift index 2d7717e..3b75788 100644 --- a/SodaLive/Sources/Chat/Character/New/Views/NewCharacterListView.swift +++ b/SodaLive/Sources/Chat/Character/New/Views/NewCharacterListView.swift @@ -24,13 +24,13 @@ struct NewCharacterListView: View { // 전체 n개 HStack(spacing: 0) { Text("전체") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(Color(hex: "e2e2e2")) Text(" \(viewModel.totalCount)") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(Color(hex: "ff5c49")) Text("개") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(Color(hex: "e2e2e2")) Spacer() } diff --git a/SodaLive/Sources/Chat/Character/Recent/RecentCharacterItemView.swift b/SodaLive/Sources/Chat/Character/Recent/RecentCharacterItemView.swift index e553c81..9b405dd 100644 --- a/SodaLive/Sources/Chat/Character/Recent/RecentCharacterItemView.swift +++ b/SodaLive/Sources/Chat/Character/Recent/RecentCharacterItemView.swift @@ -20,7 +20,7 @@ struct RecentCharacterItemView: View { .clipShape(Circle()) Text(character.name) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .lineLimit(1) .frame(maxWidth: 76) diff --git a/SodaLive/Sources/Chat/Original/Detail/OriginalWorkDetailHeaderView.swift b/SodaLive/Sources/Chat/Original/Detail/OriginalWorkDetailHeaderView.swift index d632f5a..57fd6b8 100644 --- a/SodaLive/Sources/Chat/Original/Detail/OriginalWorkDetailHeaderView.swift +++ b/SodaLive/Sources/Chat/Original/Detail/OriginalWorkDetailHeaderView.swift @@ -32,7 +32,7 @@ struct OriginalWorkDetailHeaderView: View { HStack(spacing: 4) { Text(item.translated?.contentType ?? item.contentType) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .padding(.horizontal, 7) .padding(.vertical, 3) @@ -45,7 +45,7 @@ struct OriginalWorkDetailHeaderView: View { } Text(item.translated?.category ?? item.category) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.button) .padding(.horizontal, 7) .padding(.vertical, 3) @@ -59,7 +59,7 @@ struct OriginalWorkDetailHeaderView: View { if item.isAdult { Text("19+") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "ff5c49")) .padding(.horizontal, 7) .padding(.vertical, 3) @@ -79,7 +79,7 @@ struct OriginalWorkDetailHeaderView: View { .map { $0.hasPrefix("#") ? $0 : "#\($0)" } .joined(separator: " ") ) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "3bb9f1")) .frame(maxWidth: .infinity) .padding(.top, 14) diff --git a/SodaLive/Sources/Chat/Original/Detail/OriginalWorkDetailView.swift b/SodaLive/Sources/Chat/Original/Detail/OriginalWorkDetailView.swift index 46d27c0..5b42788 100644 --- a/SodaLive/Sources/Chat/Original/Detail/OriginalWorkDetailView.swift +++ b/SodaLive/Sources/Chat/Original/Detail/OriginalWorkDetailView.swift @@ -161,7 +161,7 @@ struct OriginalWorkInfoView: View { .foregroundColor(.white) Text(response.translated?.description ?? response.description) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .lineLimit(isExpandDesc ? Int.max : 3) .truncationMode(.tail) @@ -185,7 +185,7 @@ struct OriginalWorkInfoView: View { let link = response.originalLinks[$0] Text(link) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.white) .onTapGesture { if let url = URL(string: link) { @@ -210,19 +210,19 @@ struct OriginalWorkInfoView: View { VStack(alignment: .leading, spacing: 8) { if let _ = response.writer { Text("작가") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) } if let _ = response.studio { Text("제작사") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) } if let _ = response.originalWork { Text("원작") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) } } @@ -230,19 +230,19 @@ struct OriginalWorkInfoView: View { VStack(alignment: .leading, spacing: 8) { if let writer = response.writer { Text(writer) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.white) } if let studio = response.studio { Text(studio) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.white) } if let originalWork = response.originalWork { Text(originalWork) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.white) .underline(response.originalLink != nil ? true : false) .onTapGesture { diff --git a/SodaLive/Sources/Chat/Original/OriginalTabItemView.swift b/SodaLive/Sources/Chat/Original/OriginalTabItemView.swift index d50aaf5..c22ba71 100644 --- a/SodaLive/Sources/Chat/Original/OriginalTabItemView.swift +++ b/SodaLive/Sources/Chat/Original/OriginalTabItemView.swift @@ -21,13 +21,13 @@ struct OriginalTabItemView: View { ).cornerRadius(16) Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .lineLimit(1) .truncationMode(.tail) Text(item.contentType) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) .lineLimit(1) .truncationMode(.tail) diff --git a/SodaLive/Sources/Chat/Talk/Room/ChatRoomView.swift b/SodaLive/Sources/Chat/Talk/Room/ChatRoomView.swift index 77469c1..763405c 100644 --- a/SodaLive/Sources/Chat/Talk/Room/ChatRoomView.swift +++ b/SodaLive/Sources/Chat/Talk/Room/ChatRoomView.swift @@ -73,7 +73,7 @@ struct ChatRoomView: View { .frame(width: 20, height: 20) Text("\(can)") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) } .padding(.horizontal, 10) @@ -103,7 +103,7 @@ struct ChatRoomView: View { ? "보이스온 AI캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다.\n세계관 속 캐릭터로 대화를 하거나 새로운 인물로 캐릭터와 당신만의 스토리를 만들어보세요.\n※ AI캐릭터톡은 오픈베타 서비스 중이며, 캐릭터의 대화가 어색하거나 불완전할 수 있습니다." : "AI Clone은 크리에이터의 정보를 기반으로 대화하지만, 모든 정보를 완벽하게 반영하거나 실제 대화와 일치하지 않을 수 있습니다." ) - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) Image(systemName: "chevron.up") @@ -187,12 +187,12 @@ struct ChatRoomView: View { ZStack(alignment: .leading) { if viewModel.messageText.isEmpty { Text("메시지를 입력하세요.") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) } TextField("", text: $viewModel.messageText) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.white) .onSubmit { viewModel.sendMessage() diff --git a/SodaLive/Sources/Chat/Talk/Room/Message/AiMessageItemView.swift b/SodaLive/Sources/Chat/Talk/Room/Message/AiMessageItemView.swift index ed5b4b0..199edbf 100644 --- a/SodaLive/Sources/Chat/Talk/Room/Message/AiMessageItemView.swift +++ b/SodaLive/Sources/Chat/Talk/Room/Message/AiMessageItemView.swift @@ -86,7 +86,7 @@ struct AiMessageItemView: View { VStack(alignment: .leading, spacing: 4) { HStack(spacing: 4) { Text(characterName) - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) } @@ -162,7 +162,7 @@ struct AiMessageItemView: View { // 시간 표시 VStack { Text(formatTime(from: message.createdAt)) - .font(.custom(Font.preRegular.rawValue, size: 10)) + .appFont(size: 10, weight: .regular) .foregroundColor(.white) } @@ -185,7 +185,7 @@ struct AiMessageItemView: View { // 첫 번째 컴포넌트는 항상 일반 텍스트 if !component.isEmpty { result = result + Text(component) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) } } else { @@ -202,13 +202,13 @@ struct AiMessageItemView: View { // 소괄호 뒤의 텍스트 (일반 스타일) if !afterClose.isEmpty { result = result + Text(afterClose) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) } } else { // 닫는 괄호가 없으면 일반 텍스트로 처리 result = result + Text("(\(component)") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) } } diff --git a/SodaLive/Sources/Chat/Talk/Room/Message/TypingIndicatorItemView.swift b/SodaLive/Sources/Chat/Talk/Room/Message/TypingIndicatorItemView.swift index a64ec8f..19f9552 100644 --- a/SodaLive/Sources/Chat/Talk/Room/Message/TypingIndicatorItemView.swift +++ b/SodaLive/Sources/Chat/Talk/Room/Message/TypingIndicatorItemView.swift @@ -37,7 +37,7 @@ struct TypingIndicatorItemView: View { VStack(alignment: .leading, spacing: 4) { HStack(spacing: 4) { Text(characterName) - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) } diff --git a/SodaLive/Sources/Chat/Talk/Room/Message/UserMessageItemView.swift b/SodaLive/Sources/Chat/Talk/Room/Message/UserMessageItemView.swift index df0f02c..2e194bc 100644 --- a/SodaLive/Sources/Chat/Talk/Room/Message/UserMessageItemView.swift +++ b/SodaLive/Sources/Chat/Talk/Room/Message/UserMessageItemView.swift @@ -69,7 +69,7 @@ struct UserMessageItemView: View { // 시간 표시 VStack { Text(formatTime(from: message.createdAt)) - .font(.custom(Font.preRegular.rawValue, size: 10)) + .appFont(size: 10, weight: .regular) .foregroundColor(.white) } @@ -106,7 +106,7 @@ struct UserMessageItemView: View { // 첫 번째 컴포넌트는 항상 일반 텍스트 if !component.isEmpty { result = result + Text(component) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) } } else { @@ -123,13 +123,13 @@ struct UserMessageItemView: View { // 소괄호 뒤의 텍스트 (일반 스타일) if !afterClose.isEmpty { result = result + Text(afterClose) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) } } else { // 닫는 괄호가 없으면 일반 텍스트로 처리 result = result + Text("(\(component)") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) } } diff --git a/SodaLive/Sources/Chat/Talk/Room/Settings/ChatBgSelectionView.swift b/SodaLive/Sources/Chat/Talk/Room/Settings/ChatBgSelectionView.swift index c69da50..3cf297a 100644 --- a/SodaLive/Sources/Chat/Talk/Room/Settings/ChatBgSelectionView.swift +++ b/SodaLive/Sources/Chat/Talk/Room/Settings/ChatBgSelectionView.swift @@ -98,7 +98,7 @@ struct ChatBgSelectionView: View { if selectedBgImageId == item.id { Text("현재 배경") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 6) .padding(.vertical, 2) diff --git a/SodaLive/Sources/Chat/Talk/Room/Settings/ChatSettingsView.swift b/SodaLive/Sources/Chat/Talk/Room/Settings/ChatSettingsView.swift index 35ae149..ac63d85 100644 --- a/SodaLive/Sources/Chat/Talk/Room/Settings/ChatSettingsView.swift +++ b/SodaLive/Sources/Chat/Talk/Room/Settings/ChatSettingsView.swift @@ -67,11 +67,11 @@ struct ChatSettingsView: View { HStack(alignment: .top, spacing: 0) { Text("⚠️ ") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white.opacity(0.7)) Text("지금까지의 대화가 모두 초기화 되고, 이용자가 새로운 캐릭터가 되어 새롭게 대화를 시작합니다.") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white.opacity(0.7)) .fixedSize(horizontal: false, vertical: true) } diff --git a/SodaLive/Sources/Chat/Talk/TalkItemView.swift b/SodaLive/Sources/Chat/Talk/TalkItemView.swift index 3b098bd..3a756ef 100644 --- a/SodaLive/Sources/Chat/Talk/TalkItemView.swift +++ b/SodaLive/Sources/Chat/Talk/TalkItemView.swift @@ -29,7 +29,7 @@ struct TalkItemView: View { .lineLimit(1) Text(item.opponentType) - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(Color(hex: "D9FCF4")) .lineLimit(1) .padding(.horizontal, 5) @@ -40,14 +40,14 @@ struct TalkItemView: View { Spacer() Text(item.lastMessageTimeLabel) - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(Color(hex: "78909C")) .lineLimit(1) } if let message = item.lastMessagePreview { Text(message) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "b0bec5")) .lineLimit(2) .truncationMode(.tail) diff --git a/SodaLive/Sources/Chat/Talk/TalkView.swift b/SodaLive/Sources/Chat/Talk/TalkView.swift index eda9d85..c4ac8df 100644 --- a/SodaLive/Sources/Chat/Talk/TalkView.swift +++ b/SodaLive/Sources/Chat/Talk/TalkView.swift @@ -15,7 +15,7 @@ struct TalkView: View { BaseView(isLoading: $viewModel.isLoading) { if viewModel.talkRooms.isEmpty { Text("대화 중인 톡이 없습니다") - .font(.custom(Font.preRegular.rawValue, size: 20)) + .appFont(size: 20, weight: .regular) .foregroundColor(.white) } else { ScrollView(.vertical, showsIndicators: false) { diff --git a/SodaLive/Sources/Content/All/ContentAllView.swift b/SodaLive/Sources/Content/All/ContentAllView.swift index da0b635..0db6864 100644 --- a/SodaLive/Sources/Content/All/ContentAllView.swift +++ b/SodaLive/Sources/Content/All/ContentAllView.swift @@ -101,7 +101,7 @@ struct ContentAllView: View { } Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .multilineTextAlignment(.leading) .fixedSize(horizontal: false, vertical: true) @@ -111,7 +111,7 @@ struct ContentAllView: View { Text(item.creatorNickname) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) .lineLimit(1) .padding(.horizontal, 6) diff --git a/SodaLive/Sources/Content/ContentItemView.swift b/SodaLive/Sources/Content/ContentItemView.swift index f8f53a2..234ba4e 100644 --- a/SodaLive/Sources/Content/ContentItemView.swift +++ b/SodaLive/Sources/Content/ContentItemView.swift @@ -37,7 +37,7 @@ struct ContentItemView: View { } Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .multilineTextAlignment(.leading) .fixedSize(horizontal: false, vertical: true) @@ -47,7 +47,7 @@ struct ContentItemView: View { Text(item.creatorNickname) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) .lineLimit(1) .padding(.horizontal, 6) diff --git a/SodaLive/Sources/Content/Series/DayOfWeekSeriesView.swift b/SodaLive/Sources/Content/Series/DayOfWeekSeriesView.swift index 1af2077..cdfe668 100644 --- a/SodaLive/Sources/Content/Series/DayOfWeekSeriesView.swift +++ b/SodaLive/Sources/Content/Series/DayOfWeekSeriesView.swift @@ -52,7 +52,7 @@ struct DayOfWeekSeriesView: View { Spacer() Text("전체보기") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.init(hex: "78909C")) .onTapGesture { AppState.shared diff --git a/SodaLive/Sources/Content/Series/Main/Home/SeriesMainHomeView.swift b/SodaLive/Sources/Content/Series/Main/Home/SeriesMainHomeView.swift index c13a0d2..8f722db 100644 --- a/SodaLive/Sources/Content/Series/Main/Home/SeriesMainHomeView.swift +++ b/SodaLive/Sources/Content/Series/Main/Home/SeriesMainHomeView.swift @@ -30,7 +30,7 @@ struct SeriesMainHomeView: View { Spacer() Text("전체보기") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.init(hex: "78909C")) .onTapGesture { AppState.shared diff --git a/SodaLive/Sources/Content/Series/Main/SeriesMainItemView.swift b/SodaLive/Sources/Content/Series/Main/SeriesMainItemView.swift index e8b5a8d..2b16290 100644 --- a/SodaLive/Sources/Content/Series/Main/SeriesMainItemView.swift +++ b/SodaLive/Sources/Content/Series/Main/SeriesMainItemView.swift @@ -28,7 +28,7 @@ struct SeriesMainItemView: View { HStack(spacing: 0) { if item.isPopular { Text("인기") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 10) .padding(.vertical, 3) @@ -38,7 +38,7 @@ struct SeriesMainItemView: View { if item.isNew { Text("신작") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 10) .padding(.vertical, 3) @@ -57,7 +57,7 @@ struct SeriesMainItemView: View { if item.isComplete { Text("완결") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 10) .padding(.vertical, 3) @@ -72,7 +72,7 @@ struct SeriesMainItemView: View { Spacer() Text("총 \(item.numberOfContent)화") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 10) .padding(.vertical, 3) @@ -89,14 +89,14 @@ struct SeriesMainItemView: View { .frame(width: width, height: height, alignment: .center) Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .lineLimit(1) .multilineTextAlignment(.leading) .padding(.horizontal, 8) Text(item.creator.nickname) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) .lineLimit(1) .padding(.horizontal, 8) diff --git a/SodaLive/Sources/Content/Series/SeriesItemView.swift b/SodaLive/Sources/Content/Series/SeriesItemView.swift index 7dfa160..a717993 100644 --- a/SodaLive/Sources/Content/Series/SeriesItemView.swift +++ b/SodaLive/Sources/Content/Series/SeriesItemView.swift @@ -28,7 +28,7 @@ struct SeriesItemView: View { HStack(spacing: 0) { if item.isPopular { Text("인기") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 10) .padding(.vertical, 3) @@ -38,7 +38,7 @@ struct SeriesItemView: View { if item.isNew { Text("신작") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 10) .padding(.vertical, 3) @@ -57,7 +57,7 @@ struct SeriesItemView: View { if item.isComplete { Text("완결") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 10) .padding(.vertical, 3) @@ -72,7 +72,7 @@ struct SeriesItemView: View { Spacer() Text("총 \(item.numberOfContent)화") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 10) .padding(.vertical, 3) @@ -89,13 +89,13 @@ struct SeriesItemView: View { .frame(width: 160, height: 227, alignment: .center) Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .lineLimit(1) .padding(.horizontal, 8) Text(item.creator.nickname) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) .lineLimit(1) .padding(.horizontal, 8) diff --git a/SodaLive/Sources/CustomView/ExpandableTextView.swift b/SodaLive/Sources/CustomView/ExpandableTextView.swift index 75af3ba..140cdd9 100644 --- a/SodaLive/Sources/CustomView/ExpandableTextView.swift +++ b/SodaLive/Sources/CustomView/ExpandableTextView.swift @@ -21,7 +21,7 @@ struct ExpandableTextView: View { VStack(alignment: .leading) { Text(text) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color.gray77) .lineLimit(isExpanded ? nil : 3) // 확장 시 전체 표시, 아니면 3줄로 제한 .truncationMode(.tail) diff --git a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/CreatorCommunityItemView.swift b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/CreatorCommunityItemView.swift index f1da68b..3e93bd5 100644 --- a/SodaLive/Sources/Explorer/Profile/CreatorCommunity/CreatorCommunityItemView.swift +++ b/SodaLive/Sources/Explorer/Profile/CreatorCommunity/CreatorCommunityItemView.swift @@ -27,7 +27,7 @@ struct CreatorCommunityItemView: View { .foregroundColor(Color.white) Text(item.relativeTimeText()) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) } @@ -36,7 +36,7 @@ struct CreatorCommunityItemView: View { HStack(spacing: 0) { Text(item.content) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .fixedSize(horizontal: false, vertical: true) .lineLimit(3) @@ -65,7 +65,7 @@ struct CreatorCommunityItemView: View { .frame(width: 24, height: 24) Text("\(item.likeCount)") - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(Color(hex: "78909C")) } @@ -75,7 +75,7 @@ struct CreatorCommunityItemView: View { .frame(width: 24, height: 24) Text("\(item.commentCount)") - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(Color(hex: "78909C")) } } diff --git a/SodaLive/Sources/Explorer/Profile/UserProfileContentView.swift b/SodaLive/Sources/Explorer/Profile/UserProfileContentView.swift index efae15a..b96cc7e 100644 --- a/SodaLive/Sources/Explorer/Profile/UserProfileContentView.swift +++ b/SodaLive/Sources/Explorer/Profile/UserProfileContentView.swift @@ -81,15 +81,15 @@ struct UserProfileContentView: View { HStack(spacing: 4) { Text("\(ownedContentCount)") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(Color(hex: "#FDD453")) Text("/") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) Text("\(totalContentCount)개") - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) } } diff --git a/SodaLive/Sources/Explorer/Profile/UserProfileLiveView.swift b/SodaLive/Sources/Explorer/Profile/UserProfileLiveView.swift index cbcdb11..a18cdd8 100644 --- a/SodaLive/Sources/Explorer/Profile/UserProfileLiveView.swift +++ b/SodaLive/Sources/Explorer/Profile/UserProfileLiveView.swift @@ -44,29 +44,29 @@ struct UserProfileLiveView: View { VStack(alignment: .leading, spacing: 8) { Text(item.managerNickname) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .lineLimit(1) .truncationMode(.tail) Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .lineLimit(1) .truncationMode(.tail) HStack(spacing: 4) { Text("\(dateDic["dayOfWeek"] ?? "")") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) Text("|") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) let time = dateDic["time"] ?? "" Text("\(item.isActive && !item.channelName.isNullOrBlank() ? "On Air" : time)") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "98A2F6")) } } @@ -117,7 +117,7 @@ struct UserProfileLiveView: View { .frame(width: 12) Text("\(item.price)") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) } .padding(4) @@ -126,7 +126,7 @@ struct UserProfileLiveView: View { .cornerRadius(4) } else { Text("무료") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "#263238")) .padding(4) .frame(maxWidth: .infinity) diff --git a/SodaLive/Sources/Extensions/KoreanFontModifier.swift b/SodaLive/Sources/Extensions/KoreanFontModifier.swift index c85e7d4..724bddf 100644 --- a/SodaLive/Sources/Extensions/KoreanFontModifier.swift +++ b/SodaLive/Sources/Extensions/KoreanFontModifier.swift @@ -7,29 +7,36 @@ import SwiftUI +private func resolvedLanguageCode(currentLocale: Locale) -> String? { + if let raw = UserDefaults.standard.string(forKey: "app.language"), + let option = LanguageOption(rawValue: raw), + option != .system { + return option.rawValue + } + return currentLocale.language.languageCode?.identifier +} + +private func appFontName(for weight: SwiftUI.Font.Weight) -> String { + switch weight { + case .bold: + return "Pretendard-Bold" + case .medium: + return "Pretendard-Medium" + case .light: + return "Pretendard-Light" + default: + return "Pretendard-Regular" + } +} + 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)) + if resolvedLanguageCode(currentLocale: locale) == "ko" { + content.font(.custom(appFontName(for: weight), size: size)) } else { content.font(.system(size: size, weight: weight)) } @@ -41,3 +48,12 @@ extension View { self.modifier(KoreanFontModifier(size: size, weight: weight)) } } + +extension Text { + func appFont(size: CGFloat, weight: SwiftUI.Font.Weight = .regular) -> Text { + if resolvedLanguageCode(currentLocale: .autoupdatingCurrent) == "ko" { + return self.font(.custom(appFontName(for: weight), size: size)) + } + return self.font(.system(size: size, weight: weight)) + } +} diff --git a/SodaLive/Sources/Home/HomeCreatorRankingItemView.swift b/SodaLive/Sources/Home/HomeCreatorRankingItemView.swift index e138142..aab418b 100644 --- a/SodaLive/Sources/Home/HomeCreatorRankingItemView.swift +++ b/SodaLive/Sources/Home/HomeCreatorRankingItemView.swift @@ -39,14 +39,14 @@ struct HomeCreatorRankingItemView: View { Spacer() Text(item.nickname) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) Spacer() if item.id != UserDefaults.int(forKey: .userId) { Text(item.follow ? "팔로잉" : "팔로우") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .padding(.vertical, 4) .frame(maxWidth: .infinity) .background( diff --git a/SodaLive/Sources/Home/HomeLatestContentView.swift b/SodaLive/Sources/Home/HomeLatestContentView.swift index 04e1e45..1b4eaed 100644 --- a/SodaLive/Sources/Home/HomeLatestContentView.swift +++ b/SodaLive/Sources/Home/HomeLatestContentView.swift @@ -30,7 +30,7 @@ struct HomeLatestContentView: View { Spacer() Text("전체보기") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.init(hex: "78909C")) .onTapGesture { onClickMore() } } diff --git a/SodaLive/Sources/Home/HomeLiveItemView.swift b/SodaLive/Sources/Home/HomeLiveItemView.swift index 51fa396..7e1c5f7 100644 --- a/SodaLive/Sources/Home/HomeLiveItemView.swift +++ b/SodaLive/Sources/Home/HomeLiveItemView.swift @@ -37,13 +37,13 @@ struct HomeLiveItemView: View { VStack(alignment: .leading, spacing: 4) { Text(item.creatorNickname) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .lineLimit(2) .truncationMode(.tail) Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .lineLimit(1) .truncationMode(.tail) diff --git a/SodaLive/Sources/Home/HomeTabView.swift b/SodaLive/Sources/Home/HomeTabView.swift index 5bb1542..16aac3f 100644 --- a/SodaLive/Sources/Home/HomeTabView.swift +++ b/SodaLive/Sources/Home/HomeTabView.swift @@ -195,7 +195,7 @@ struct HomeTabView: View { Spacer() Text("전체보기") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.init(hex: "78909C")) .onTapGesture { AppState.shared @@ -283,7 +283,7 @@ struct HomeTabView: View { Spacer() Text("전체보기") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.init(hex: "78909C")) .onTapGesture { AppState.shared @@ -313,7 +313,7 @@ struct HomeTabView: View { Spacer() Text("전체보기") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.init(hex: "78909C")) .onTapGesture { AppState.shared @@ -388,7 +388,7 @@ struct HomeTabView: View { - 대표 이메일 : sodalive.official@gmail.com """) - .font(.custom(Font.preRegular.rawValue, size: 11)) + .appFont(size: 11, weight: .regular) .foregroundColor(Color.gray77) .padding(.horizontal, 13.3) } @@ -519,7 +519,7 @@ struct HomeTabView: View { Text(viewModel.errorMessage) .padding(.vertical, 13.3) .frame(width: screenSize().width - 66.7, alignment: .center) - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .background(Color.button) .foregroundColor(Color.white) .multilineTextAlignment(.leading) diff --git a/SodaLive/Sources/Home/HomeWeeklyChartItemView.swift b/SodaLive/Sources/Home/HomeWeeklyChartItemView.swift index fb7f23f..de4cffb 100644 --- a/SodaLive/Sources/Home/HomeWeeklyChartItemView.swift +++ b/SodaLive/Sources/Home/HomeWeeklyChartItemView.swift @@ -30,11 +30,11 @@ struct HomeWeeklyChartItemView: View { VStack(alignment: .leading, spacing: 6) { Text(content.title) .lineLimit(1) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) Text(content.creatorNickname) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) } } diff --git a/SodaLive/Sources/Home/RecommendChannel/RecommendChannelContentItemView.swift b/SodaLive/Sources/Home/RecommendChannel/RecommendChannelContentItemView.swift index fdd9594..9a48b1f 100644 --- a/SodaLive/Sources/Home/RecommendChannel/RecommendChannelContentItemView.swift +++ b/SodaLive/Sources/Home/RecommendChannel/RecommendChannelContentItemView.swift @@ -24,7 +24,7 @@ struct RecommendChannelContentItemView: View { VStack(alignment: .leading, spacing: 2) { Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .lineLimit(1) .truncationMode(.tail) @@ -34,7 +34,7 @@ struct RecommendChannelContentItemView: View { Image("ic_heart_white") Text("\(item.likeCount)") - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) } @@ -42,7 +42,7 @@ struct RecommendChannelContentItemView: View { Image("ic_comment_white") Text("\(item.commentCount)") - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) } } diff --git a/SodaLive/Sources/Home/RecommendChannel/RecommendChannelItemView.swift b/SodaLive/Sources/Home/RecommendChannel/RecommendChannelItemView.swift index e39ad0c..e295a2b 100644 --- a/SodaLive/Sources/Home/RecommendChannel/RecommendChannelItemView.swift +++ b/SodaLive/Sources/Home/RecommendChannel/RecommendChannelItemView.swift @@ -30,7 +30,7 @@ struct RecommendChannelItemView: View { HStack(spacing: 4) { Text("콘텐츠") - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) Text("\(item.contentCount)") diff --git a/SodaLive/Sources/Live/LatestFinishedLiveItemView.swift b/SodaLive/Sources/Live/LatestFinishedLiveItemView.swift index 5c12a3e..70f2606 100644 --- a/SodaLive/Sources/Live/LatestFinishedLiveItemView.swift +++ b/SodaLive/Sources/Live/LatestFinishedLiveItemView.swift @@ -22,14 +22,14 @@ struct LatestFinishedLiveItemView: View { .clipShape(Circle()) Text(item.nickname) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) .padding(.top, 20) Spacer() Text(item.relativeTimeText()) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(Color(hex: "78909C")) } .padding(16) diff --git a/SodaLive/Sources/Live/Now/LiveNowItemView.swift b/SodaLive/Sources/Live/Now/LiveNowItemView.swift index 6e0af8f..79e1936 100644 --- a/SodaLive/Sources/Live/Now/LiveNowItemView.swift +++ b/SodaLive/Sources/Live/Now/LiveNowItemView.swift @@ -48,12 +48,12 @@ struct LiveNowItemView: View { Spacer() Text(item.creatorNickname) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(.white) .padding(.horizontal, 2) Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(Color(hex: "#B0BEC5")) .lineLimit(1) .truncationMode(.tail) @@ -70,7 +70,7 @@ struct LiveNowItemView: View { .frame(width: 16) Text("\(item.price)") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.white) } .padding(.vertical, 4) @@ -81,7 +81,7 @@ struct LiveNowItemView: View { .padding(.bottom, 2) } else { Text("무료") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "#263238")) .padding(.vertical, 4) .frame(maxWidth: .infinity) diff --git a/SodaLive/Sources/Live/Now/SectionLiveNowView.swift b/SodaLive/Sources/Live/Now/SectionLiveNowView.swift index 2668e7f..0777b86 100644 --- a/SodaLive/Sources/Live/Now/SectionLiveNowView.swift +++ b/SodaLive/Sources/Live/Now/SectionLiveNowView.swift @@ -28,7 +28,7 @@ struct SectionLiveNowView: View { if items.count > 0 { Text("전체보기") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) .onTapGesture { AppState.shared.setAppStep(step: .liveNowAll(onClickParticipant: onClickParticipant)) } } diff --git a/SodaLive/Sources/Live/RecommendChannel/SectionRecommendChannelView.swift b/SodaLive/Sources/Live/RecommendChannel/SectionRecommendChannelView.swift index 166b705..16f7f96 100644 --- a/SodaLive/Sources/Live/RecommendChannel/SectionRecommendChannelView.swift +++ b/SodaLive/Sources/Live/RecommendChannel/SectionRecommendChannelView.swift @@ -88,7 +88,7 @@ struct SectionRecommendChannelView: View { .frame(width: screenSize().width * 0.18, height: screenSize().width * 0.18, alignment: .center) Text("더보기") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.white) .frame(width: screenSize().width * 0.18) .lineLimit(1) diff --git a/SodaLive/Sources/Live/Reservation/LiveReservationItemView.swift b/SodaLive/Sources/Live/Reservation/LiveReservationItemView.swift index 3618449..45a902f 100644 --- a/SodaLive/Sources/Live/Reservation/LiveReservationItemView.swift +++ b/SodaLive/Sources/Live/Reservation/LiveReservationItemView.swift @@ -37,28 +37,28 @@ struct LiveReservationItemView: View { VStack(alignment: .leading, spacing: 8) { Text(item.creatorNickname) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .lineLimit(1) .truncationMode(.tail) Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .lineLimit(1) .truncationMode(.tail) HStack(spacing: 4) { Text("\(dateDic["dayOfWeek"] ?? "")") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) Text("|") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) Text("\(dateDic["time"] ?? "")") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "98A2F6")) } } @@ -92,7 +92,7 @@ struct LiveReservationItemView: View { .frame(width: 12) Text("\(item.price)") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) } .padding(4) @@ -101,7 +101,7 @@ struct LiveReservationItemView: View { .cornerRadius(4) } else { Text("무료") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "#263238")) .padding(4) .frame(maxWidth: .infinity) diff --git a/SodaLive/Sources/Live/Reservation/MyLiveReservationItemView.swift b/SodaLive/Sources/Live/Reservation/MyLiveReservationItemView.swift index 0778076..891f69f 100644 --- a/SodaLive/Sources/Live/Reservation/MyLiveReservationItemView.swift +++ b/SodaLive/Sources/Live/Reservation/MyLiveReservationItemView.swift @@ -49,28 +49,28 @@ struct MyLiveReservationItemView: View { VStack(alignment: .leading, spacing: 8) { Text(item.creatorNickname) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .lineLimit(1) .truncationMode(.tail) Text(item.title) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(Color(hex: "B0BEC5")) .lineLimit(1) .truncationMode(.tail) HStack(spacing: 0) { Text("\(dateDic["dayOfWeek"] ?? "")") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) Text("|") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) Text("\(dateDic["time"] ?? "")") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "98A2F6")) } } @@ -104,7 +104,7 @@ struct MyLiveReservationItemView: View { .frame(width: 12) Text("\(item.price)") - .font(.custom(Font.preRegular.rawValue, size: 12)) + .appFont(size: 12, weight: .regular) .foregroundColor(.white) } .padding(4) @@ -113,7 +113,7 @@ struct MyLiveReservationItemView: View { .cornerRadius(4) } else { Text("무료") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "#263238")) .padding(4) .frame(maxWidth: .infinity) diff --git a/SodaLive/Sources/Live/Reservation/SectionLiveReservationView.swift b/SodaLive/Sources/Live/Reservation/SectionLiveReservationView.swift index 6ceac63..ce39156 100644 --- a/SodaLive/Sources/Live/Reservation/SectionLiveReservationView.swift +++ b/SodaLive/Sources/Live/Reservation/SectionLiveReservationView.swift @@ -28,7 +28,7 @@ struct SectionLiveReservationView: View { if items.count > 0 { Text("전체보기") - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) .onTapGesture { if !token.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { diff --git a/SodaLive/Sources/MyPage/MyPageView.swift b/SodaLive/Sources/MyPage/MyPageView.swift index 730330d..1a637d0 100644 --- a/SodaLive/Sources/MyPage/MyPageView.swift +++ b/SodaLive/Sources/MyPage/MyPageView.swift @@ -465,7 +465,7 @@ struct CategoryButtonItem: View { } Text(title) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(.white) } .onTapGesture { @@ -518,7 +518,7 @@ struct RecentItemView: View { .cornerRadius(16) Text(content.title) - .font(.custom(Font.preRegular.rawValue, size: 18)) + .appFont(size: 18, weight: .regular) .foregroundColor(.white) .multilineTextAlignment(.leading) .fixedSize(horizontal: false, vertical: true) @@ -528,7 +528,7 @@ struct RecentItemView: View { Text(content.creatorNickname) - .font(.custom(Font.preRegular.rawValue, size: 14)) + .appFont(size: 14, weight: .regular) .foregroundColor(Color(hex: "78909C")) .lineLimit(1) .padding(.horizontal, 6) diff --git a/SodaLive/Sources/Settings/Language/Views/LanguageSettingsView.swift b/SodaLive/Sources/Settings/Language/Views/LanguageSettingsView.swift index 0df3a85..d6a339e 100644 --- a/SodaLive/Sources/Settings/Language/Views/LanguageSettingsView.swift +++ b/SodaLive/Sources/Settings/Language/Views/LanguageSettingsView.swift @@ -27,7 +27,7 @@ struct LanguageSettingsView: View { ForEach(Array(LanguageOption.allCases.enumerated()), id: \.offset) { idx, option in HStack(spacing: 0) { Text(option.displayName) - .font(.custom(Font.preRegular.rawValue, size: 16)) + .appFont(size: 16, weight: .regular) .foregroundColor(Color.grayee) Spacer() if viewModel.pending == option {