Deep_Dev
article thumbnail

 

๐Ÿ“š Custom Font ์ถ”๊ฐ€

 

 

 

๊ธฐ์กด์— Xcode์— ์ปค์Šคํ…€ ํฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ,

์ด๋ ‡๊ฒŒ ํฐํŠธํŒŒ์ผ๋“ค์„ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ์ถ”๊ฐ€ํ•˜๊ณ ,

 

info์—์„œ ํฐํŠธ๋“ค์„ Target ์„ค์ •ํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ๋‹จ๋ง์ด์—์š”?

 

๋งˆ์ง€๋ง‰์œผ๋กœ, Font Extension ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์˜€๊ณ ์š” !

extension Font {
    
    // Bold
    static let pretendardBold28: Font = .custom("Pretendard-Bold", size: 16)
    static let pretendardBold24: Font = .custom("Pretendard-Bold", size: 20)
    
    // SemiBold
    static let pretendardSemiBold16: Font = .custom("Pretendard-SemiBold", size: 16)
    static let pretendardSemiBold18: Font = .custom("Pretendard-SemiBold", size: 18)
    
    // Medium
    static let pretendardMedium18: Font = .custom("Pretendard-Medium", size: 16)
    static let pretendardMedium16: Font = .custom("Pretendard-Medium", size: 26)
    
    // Regular
    static let pretendardRegular14: Font = .custom("Pretendard-Regular", size: 14)
    static let pretendardRegular16: Font = .custom("Pretendard-Regular", size: 18)
    
}

์ด๋Ÿฐ์‹์œผ๋กœ ๊ธ€์”จ์ฒด์˜ ๋‘๊ป˜์™€ ํฌ๊ธฐ๋ฅผ ํ•œ๋ฒˆ์— ์ง€์ •ํ•ด์„œ, ์‹ค์ œ Text์— Font๋ฅผ ์ ์šฉํ• ๋•Œ๋Š” ์ง€์ •ํ–ˆ๋˜ ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ๊ฐ–๋‹ค ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์ตœ๊ทผ ํ”„๋กœ์ ํŠธ์—์„œ ํฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ๋ถˆํŽธํ•œ ์ ๋“ค์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿค” ํ™€์ˆ˜ Size๋‚˜ ์ง€์ •๋˜์ง€ ์•Š์€ ํฐํŠธ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ถ”๊ฐ€๋ฅผ ํ•ด์ค˜์•ผํ–ˆ๊ณ , ๊ทธ์— ๋”ฐ๋ผ ์ฝ”๋“œ๊ฐ€ ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด Extension ํŒŒ์ผ์˜ ์ฝ”๋“œ๋Š” ๋Š์ž„์—†์ด ๋Š˜์–ด๋‚˜๊ฒ ์ฃ  ? 

 

๊ทธ๋ž˜์„œ ์—ด๊ฑฐํ˜• ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์ƒˆ๋กœ์šด ํฐํŠธ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๋“ฑ๋กํ•ด์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ Size ํ•˜๋‚˜๋งˆ๋‹ค ์ผ์ผ์ด ๋“ฑ๋กํ•ด๋„ ๋˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์•„๋ž˜ ์ฒ˜๋Ÿผ์š”.

 

import SwiftUI

extension Font {
    /// Black / ExtraBold / Bold / SemiBold / Medium / Regular / Light / ExtraLight / Thin
    enum FontWeight: String {
        case black = "Pretendard-Black"
        case bold = "Pretendard-Bold"
        case extraBold = "Pretendard-ExtraBold"
        case extraLight = "Pretendard-ExtraLight"
        case light = "Pretendard-Light"
        case medium = "Pretendard-Medium"
        case regular = "Pretendard-Regular"
        case semiBold = "Pretendard-SemiBold"
        case thin = "Pretendard-Thin"
    }
    
    static func setPretendard(weight: FontWeight, size: CGFloat) -> Font {
        return .custom(weight.rawValue, size: size)
    }
}

์ด๋ ‡๊ฒŒ ์—ด๊ฑฐํ˜•์œผ๋กœ Font Weight ๋ณ„๋กœ ๋“ฑ๋กํ•˜๊ณ , ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๋ฐ”๋กœ ๋“ฑ๋กํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•ฉ๋‹ˆ๋‹ค.

 

Text("Hello Apple")
	.font(.setPretendard(weight: .medium, size: 16))

 

์ด๋ ‡๊ฒŒ .font๋ฅผ ์ ์šฉ์‹œ์ผœ์•ผ ํ•  ๋•Œ๋งˆ๋‹ค weight๊ณผ size๋งŒ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ”๋กœ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜๋‹ˆ ํ›จ์”ฌ ํŽธํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ~!