커스텀 폰트 pretendard-bold, gmarket-bold를 사용하고 있던 것을 appFont 모디파이어를 사용하여 한국어는 pretendard, 그 외에는 시스템 폰트를 사용하도록 수정
This commit is contained in:
@@ -48,7 +48,7 @@ struct CharacterItemView: View {
|
||||
|
||||
if isShowRank {
|
||||
Text("\(rank)")
|
||||
.font(.custom(Font.preBold.rawValue, size: 72))
|
||||
.appFont(size: 72, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
.frame(height: capHeight)
|
||||
|
||||
@@ -19,7 +19,7 @@ struct CharacterSectionView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text(title)
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
Spacer()
|
||||
if let trailingTitle = trailingTitle {
|
||||
|
||||
@@ -68,7 +68,7 @@ struct CharacterView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack {
|
||||
Text("추천 캐릭터")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -78,7 +78,7 @@ struct CharacterDetailView: View {
|
||||
VStack(spacing: 16) {
|
||||
HStack {
|
||||
Text("장르의 다른 캐릭터")
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -263,7 +263,7 @@ extension CharacterDetailView {
|
||||
// 이름과 상태
|
||||
HStack(spacing: 8) {
|
||||
Text(viewModel.characterDetail?.translated?.name ?? viewModel.characterDetail?.name ?? "")
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
.truncationMode(.tail)
|
||||
@@ -301,7 +301,7 @@ extension CharacterDetailView {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
HStack {
|
||||
Text("[세계관 및 작품 소개]")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -319,7 +319,7 @@ extension CharacterDetailView {
|
||||
VStack(spacing: 8) {
|
||||
HStack {
|
||||
Text("원작")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.fontWeight(.bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
@@ -340,7 +340,7 @@ extension CharacterDetailView {
|
||||
}
|
||||
}) {
|
||||
Text("원작 보러가기")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.fontWeight(.bold)
|
||||
.foregroundColor(Color(hex: "3BB9F1"))
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -361,7 +361,7 @@ extension CharacterDetailView {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
HStack {
|
||||
Text("[성격 및 특징]")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -373,7 +373,7 @@ extension CharacterDetailView {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack {
|
||||
Text("⚠️ 캐릭터톡 대화 가이드")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
|
||||
Spacer()
|
||||
@@ -412,7 +412,7 @@ extension CharacterDetailView {
|
||||
extension CharacterDetailView {
|
||||
private var chatButton: some View {
|
||||
Text("대화하기")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.frame(maxWidth: .infinity)
|
||||
.frame(height: 54)
|
||||
|
||||
@@ -95,7 +95,7 @@ struct CharacterDetailGalleryView: View {
|
||||
// 상단 정보 (계산된 % 보유중, 정보 아이콘, 개수)
|
||||
HStack {
|
||||
Text("\(viewModel.ownershipPercentage)% 보유중")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Spacer()
|
||||
@@ -181,7 +181,7 @@ struct CharacterDetailGalleryView: View {
|
||||
.frame(width: 16)
|
||||
|
||||
Text("\(item.imagePriceCan)")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "#263238"))
|
||||
}
|
||||
.padding(.horizontal, 12)
|
||||
|
||||
@@ -16,11 +16,11 @@ struct RecentCharacterSectionView: View {
|
||||
VStack(alignment: .leading, spacing: 16) {
|
||||
HStack(spacing: 0) {
|
||||
Text("최근 대화한 캐릭터 ")
|
||||
.font(.custom(Font.preBold.rawValue, size: 20))
|
||||
.appFont(size: 20, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text("\(titleCount)")
|
||||
.font(.custom(Font.preBold.rawValue, size: 20))
|
||||
.appFont(size: 20, weight: .bold)
|
||||
.foregroundColor(Color(hex: "FDCA2F"))
|
||||
|
||||
Spacer()
|
||||
|
||||
@@ -26,7 +26,7 @@ struct OriginalWorkDetailHeaderView: View {
|
||||
|
||||
// 번역 데이터가 있으면 번역값을 우선 사용
|
||||
Text(item.translated?.title ?? item.title)
|
||||
.font(.custom(Font.preBold.rawValue, size: 26))
|
||||
.appFont(size: 26, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.top, 40)
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ struct OriginalWorkInfoView: View {
|
||||
VStack(spacing: 16) {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
Text("작품 소개")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text(response.translated?.description ?? response.description)
|
||||
@@ -176,7 +176,7 @@ struct OriginalWorkInfoView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
Text("원작 보러 가기")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
|
||||
ScrollView(.horizontal, showsIndicators: false) {
|
||||
@@ -203,7 +203,7 @@ struct OriginalWorkInfoView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
Text("상세 정보")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
HStack(spacing: 16) {
|
||||
|
||||
@@ -46,13 +46,13 @@ struct ChatRoomView: View {
|
||||
|
||||
VStack(alignment: .leading, spacing: 4) {
|
||||
Text(viewModel.characterName)
|
||||
.font(.custom(Font.preBold.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
.truncationMode(.tail)
|
||||
|
||||
Text(viewModel.characterType.rawValue)
|
||||
.font(.custom(Font.preBold.rawValue, size: 10))
|
||||
.appFont(size: 10, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 4)
|
||||
.padding(.vertical, 2)
|
||||
|
||||
@@ -117,7 +117,7 @@ struct AiMessageItemView: View {
|
||||
.frame(width: 24, height: 24)
|
||||
|
||||
Text("\(message.price ?? 5)")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "263238"))
|
||||
}
|
||||
.padding(.horizontal, 10)
|
||||
@@ -131,7 +131,7 @@ struct AiMessageItemView: View {
|
||||
}
|
||||
|
||||
Text("눌러서 잠금해제")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
.frame(width: maxWidth, height: imageHeight)
|
||||
|
||||
@@ -20,11 +20,11 @@ struct ChatQuotaNoticeItemView: View {
|
||||
.frame(width: 30, height: 30)
|
||||
|
||||
Text(remainingTime)
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text("기다리면 무료 이용이 가능합니다.")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
@@ -36,11 +36,11 @@ struct ChatQuotaNoticeItemView: View {
|
||||
Image("ic_can")
|
||||
|
||||
Text("10")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(Color(hex: "263238"))
|
||||
|
||||
Text("(채팅 12개) 바로 대화 시작")
|
||||
.font(.custom(Font.preBold.rawValue, size: 24))
|
||||
.appFont(size: 24, weight: .bold)
|
||||
.foregroundColor(Color(hex: "263238"))
|
||||
.padding(.leading, 4)
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ struct ChatSettingsView: View {
|
||||
VStack(spacing: 0) {
|
||||
Toggle(isOn: $isHideBg) {
|
||||
Text("배경 이미지 끄기")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
}
|
||||
.toggleStyle(.switch)
|
||||
@@ -43,7 +43,7 @@ struct ChatSettingsView: View {
|
||||
VStack(spacing: 0) {
|
||||
HStack {
|
||||
Text("배경 이미지 변경")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
.padding(.horizontal, 24)
|
||||
.padding(.vertical, 12)
|
||||
@@ -62,7 +62,7 @@ struct ChatSettingsView: View {
|
||||
HStack(spacing: 0) {
|
||||
VStack(alignment: .leading, spacing: 6) {
|
||||
Text("대화 초기화")
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
|
||||
HStack(alignment: .top, spacing: 0) {
|
||||
@@ -85,7 +85,7 @@ struct ChatSettingsView: View {
|
||||
.frame(width: 24, height: 24)
|
||||
|
||||
Text("30")
|
||||
.font(.custom(Font.preBold.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .bold)
|
||||
.foregroundColor(Color(hex: "263238"))
|
||||
}
|
||||
.padding(.vertical, 3)
|
||||
|
||||
@@ -24,7 +24,7 @@ struct TalkItemView: View {
|
||||
VStack(alignment: .leading, spacing: 6) {
|
||||
HStack(spacing: 4) {
|
||||
Text(item.title)
|
||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .bold)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user