๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS

[iOS/Swift] custom font ์ง€์ •ํ•˜๊ณ  UIFont ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

by ํ‹ด๋”” 2022. 3. 19.
๋ฐ˜์‘ํ˜•

์‹œ์Šคํ…œ ํฐํŠธ๊ฐ€ ์•„๋‹Œ ์›ํ•˜๋Š” ๊ธ€๊ผด์„ iOS ํ”„๋กœ์ ํŠธ์— ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”! ๊ฐ‘์ž๊ธฐ ์ด์œ ์—†์ด ํฌ๋ž˜์‰ฌ ๋‚˜๋Š” ์ด์œ ๋„ ์•Œ์•„๋ด…์‹œ๋‹น

 

์šฐ์„  ์›ํ•˜๋Š” ๊ธ€๊ผด์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ์ฃผ์„ธ์š”

์ €๋Š” ์ฃผ๋กœ "๋ˆˆ๋ˆ„" ๋ผ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์š”

์ƒ์—…์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํฐํŠธ๋ฅผ ๋ชจ์•„๋†“์€ ์‚ฌ์ดํŠธ์—ฌ์„œ

์‰ฝ๊ฒŒ ์›ํ•˜๋Š” ๊ธ€๊ผด์„ ์ฐพ์•„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์š”

https://noonnu.cc/

 

๋ˆˆ๋ˆ„

์ƒ์—…์šฉ ๋ฌด๋ฃŒํ•œ๊ธ€ํฐํŠธ ์‚ฌ์ดํŠธ

noonnu.cc

์›ํ•˜๋Š” ํฐํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ 

์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ ๋ผ์ด์„ ์Šค ์š”์•ฝํ‘œ๋ฅผ ๊ผญ ํ™•์ธํ•ด ๋ณด์„ธ์šค

์ฃผ๋กœ ํฐํŠธ๋ฅผ ๋ฐ›์„ ๋•Œ ๋‘ ๊ฐ€์ง€ ํ™•์žฅ์ž๊ฐ€ ์žˆ์„ ๊ฑฐ์—์š”!

 

.otf

Open Type Font

.ttf

Tru Type Font 

 

xCode๋Š” ๋‘๊ฐ€์ง€ ํ™•์žฅ์ž ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹น

 

ํฐํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์œผ๋ฉด ์ฃผ๋กœ zip ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œ ๋ ๊ฑฐ์—์š”

๋”๋ธ” ํด๋ฆญํ•ด์„œ ์••์ถ• ํ•ด์ œํ•ด ์ค์‹œ๋‹น

ํ”„๋กœ์ ํŠธ๋กœ ๋Œ์•„๊ฐ€์„œ

์ƒˆ ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•ด ์ฃผ๊ณ  ํด๋”๋ช…์€ ์›ํ•˜๋Š”๋Œ€๋กœ ์ง€์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹น

์ €๋Š” Font๋ผ๊ณ  ์ •ํ•ด์คฌ์–ด์šค

 

ํด๋”์— ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ๊ธ€๊ผด์„ ๋„ฃ์–ด ์ค๋‹ˆ๋‹ค

์ด๋•Œ ์ค‘์š”ํ•œ๊ฑด ๊ผญ ํƒ€๊ฒŸ ์ฒดํฌ๋ฅผ ํ•ด์ฃผ์„ธ์š”!

๋งŒ์•ฝ ํƒ€๊ฒŸ ์ฒดํฌ๋ฅผ ๊นœ๋นกํ•˜๊ณ  ๋ชปํ–ˆ๋‹ค?

๊ทธ๋Ÿฌ๋ฉด ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ๋„ฃ์–ด์ฃผ๊ณ  ์–ผ๋Ÿฟ ์ฐฝ์—์„œ ํƒ€๊ฒŸ์„ ๋‹ค์‹œ ์ฒดํฌํ•ด์ฃผ์…”๋„ ๋˜๊ฒ ์ง€๋งŒ

File inspector์—์„œ ์ฒดํฌํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹น

ํ˜น์‹œ๋‚˜ ๋‚˜์ค‘์— ํƒ€๊ฒŸ์ด ๋ฐ”๋€Œ์—ˆ๋Š”๋ฐ ํฐํŠธ์—์„œ ์—๋Ÿฌ๋ฅผ ๋ฑ‰๋Š”๋‹ค?

๊ทธ๋Ÿฌ๋ฉด ์˜์‹ฌํ•ด ๋ณผ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํƒ€๊ฒŸ์ž…๋‹ˆ๋‹น ใ…Žใ…Žใ…Žใ…Ž

 

์ด์ œ ํฐํŠธ ํŒŒ์ผ์„ ๋“ฑ๋กํ•ด ์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ์šฉ

info.plist ๋กœ ๊ฐ€์ค์‹œ๋‹น

ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์‹œ๊ณ  ํƒ€๊ฒŸ ์„ ํƒ ํ›„

info ํƒญ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์šฉ

 

Fonts provided by application ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค๋‹ˆ๋‹ค'

์ž, ์ด์ œ ์ง‘์ค‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹น

Item์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ

๊ฐ’์„ ๊ผญ

ํฐํŠธ์ด๋ฆ„ + ํ™•์žฅ์ž๊นŒ์ง€ ๋‹ค ์ ์–ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‚˜์ค‘์— ์„ฑ๊ฒฉ ์•ˆ์ข‹์•„์งˆ ์ผ์ด ์ƒ๊น๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹ใ…‹

๊ผญ ํŒŒ์ผ๋ช… ๊ทธ๋Œ€๋กœ + ํ™•์žฅ์ž๊นŒ์ง€ ์ ์–ด์ฃผ์„ธ์š”!

ํฐํŠธ ํŒŒ์ผ ๋ช…์ด ํฐํŠธ๋ช…์ด ์•„๋‹ˆ๋ผ ํฐํŠธ 'ํŒŒ์ผ' ๋ช…์ด๊ธฐ ๋•Œ๋ฌธ์—

ํฐํŠธ ํŒŒ์ผ๋ช…์„ ๋ณ€๊ฒฝํ•œ๋‹ค๋ฉด

info.plist์— ๋“ฑ๋ก๋œ ์ด๋ฆ„๋„ ๋ณ€๊ฒฝํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!!! ๊ผญ๊ผญ

 

์ด์ œ ์‹ค์ œ ํฐํŠธ ์ด๋ฆ„์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!!

๋Œ€๋ถ€๋ถ„์˜ ํฐํŠธ๋Š” ํฐํŠธ ํŒŒ์ผ๋ช…์— ์ ํžŒ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธด ํ•˜์ง€๋งŒ

ํฐํŠธ ์ด๋ฆ„๊ณผ ํฐํŠธ ํŒŒ์ผ ๋ช…์ด ๋‹ฌ๋ผ์„œ

ํฐํŠธ ํŒŒ์ผ ๋ช… ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ

 

ํฐํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ

ํฐํŠธ ์—†์Œ ์—๋Ÿฌ๋ฅผ ๋ฑ‰์–ด๋ƒ…๋‹ˆ๋‹น

 

๋ถ„๋ช… ํฐํŠธ๋„ ์žˆ๊ณ  ํŒŒ์ผ๋„ ์ž˜ register ํ•ด์คฌ๋Š”๋ฐ

์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค? 

ํฐํŠธ ์ด๋ฆ„๊ณผ ํŒŒ์ผ๋ช…์ด ๋‹ฌ๋ผ์„œ ์ƒ๊ธด ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค!

 

class RootViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        getFontName()
    }
    
    func getFontName() {
        for family in UIFont.familyNames {

            let sName: String = family as String
            print("family: \(sName)")
                    
            for name in UIFont.fontNames(forFamilyName: sName) {
                print("name: \(name as String)")
            }
        }
    }
}

VC์— ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์•ผ

for family in UIFont.familyNames.sorted() {
    let names = UIFont.fontNames(forFamilyName: family)
    print("Family: \(family) Font names: \(names)")
}

 

์ด ์ฝ”๋“œ๋Š” ๊ณต์‹์‚ฌ์ดํŠธ์—์„œ ์ œ๊ณตํ•ด ์ฃผ๋Š” ์ฝ”๋“œ์ธ๋ฐ

์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹น

 

 

์ฝ˜์†”์— ํฐํŠธ๊ฐ€ ์ฐํž ํ…๋ฐ ์ถ”๊ฐ€ํ•ด ์ค€ ํฐํŠธ๋ฅผ 

Ctrl + F ๋กœ ์ฐพ์•„ ์ค๋‹ˆ๋‹ค

์ด๋•Œ๋Š” ํฐํŠธ์˜ Regular๋‚˜ medium ์ด๋Ÿฐ๊ฑธ๋กœ ๊ฒ€์ƒ‰ํ•˜์‹œ๋ฉด ์•ˆ๋˜๊ณ  ๋”ฑ ํฐํŠธ ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜์‹œ๋ฉด ๊ธˆ๋ฐฉ ์ฐพ์•„์š”!

์ €๋Š” pretendard ๊ธ€๊ผด์ด๋‹ˆ ์ด ์ด๋ฆ„์œผ๋กœ ์ฐพ์•„์ฃผ๋ฉด

family: Pretendard
name: Pretendard-Regular
name: Pretendard-Thin
name: Pretendard-ExtraLight
name: Pretendard-Light
name: Pretendard-Medium
name: Pretendard-SemiBold
name: Pretendard-Bold
name: Pretendard-ExtraBold
name: Pretendard-Black

์ด๋ ‡๊ฒŒ ์ฝ˜์†”์— ์ฐํžŒ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”!

๋‹คํ–‰ํžˆ ํฐํŠธ๋ช…๊ณผ ํŒŒ์ผ๋ช…์ด ๊ฐ™์•„์š”! ๊ทธ๋Ÿฐ๋ฐ ๊ฐ™์ง€ ์•Š๋Š” ํฐํŠธ๋ช…์ด ์žˆ์œผ๋‹ˆ ๊ผญ ํ•œ๋ฒˆ ์กฐํšŒํ•ด ์ค์‹œ๋‹ค

 

xib์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ๊ต‰์žฅํžˆ ์‰ฝ์Šต๋‹ˆ๋‹ค

view์— UILabel์„ ์ถ”๊ฐ€ํ•ด ์ค์‹œ๋‹น

์—ฌ๊ธฐ์„œ ํฐํŠธ๋ฅผ ์„ ํƒํ•ด ์ฃผ์„ธ์š”

Custom์„ ์„ ํƒํ•ด ์ค๋‹ˆ๋‹น

ํฐํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•ด ์ฃผ์„ธ์š” ์ž…๋ ฅ์ฐฝ์ด ์—†์–ด๋„ ํ‚ค๋ณด๋“œ๋กœ 

pre๊นŒ์ง€ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ๊ฒ€์ƒ‰๋˜๋”๋ผ๊ตฌ์š”

๊ทธ๋Ÿฌ๋ฉด ์›ํ•˜๋Š” ํฐํŠธ๊ฐ€ ํŒจ๋ฐ€๋ฆฌ๋กœ ์ง€์ •๋˜๊ณ 

์„ธ๋ถ€์ ์ธ ๊ธ€๊ผด์€ Style๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹น

 

์Šคํƒ€์ผ๊ณผ ํฐํŠธ ์‚ฌ์ด์ฆˆ๊นŒ์ง€ ์ง€์ •ํ•˜๊ณ  ๋‚˜๋ฉด ์ด๋ ‡๊ฒŒ ์‰ฝ๊ฒŒ ์ž˜ ์ ์šฉ๋œ๊ฑธ ํ™•์ธํ•˜ ์‹ค ์ˆ˜ ์žˆ์–ด์š”!

 

programmatically ํ•˜๊ฒŒ ํ•ด๋ณธ๋‹ค๋ฉด

        label.text = "test test test"
        label.font = UIFont(name: "Pretendard-ExtraBold", size: 15)

์ด๋ ‡๊ฒŒ ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹น

๋”ฐ๋กœ UIFont ์ต์Šคํ…์…˜๊ณผ ํƒ€์ž…์„ ์œ„ํ•œ enum์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ ??!!

 

์ž ์—ฌ๊ธฐ์„œ ์ฃผ์˜ ํ•  ๊ฒƒ!

open var font: UIFont!

UILable์˜ font๋Š” ๊ฐ•์ œ ์–ธ๋ž˜ํ•‘์ด๋ผ๋Š” ๊ฒƒ!

๊ทธ๋ž˜์„œ ์—†๋Š” ํฐํŠธ๋ช…์„ UIFont๋กœ ์ „๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฑฐ์—์š”!!

ํฐํŠธ๋ช…๊ณผ ํฐํŠธ ํŒŒ์ผ๋ช…์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ํฐํŠธ ํŒŒ์ผ๋ช…์„ UIFont์˜ name์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋ฉด

์—†๋Š” ํฐํŠธ๋ฅผ ์ฐพ์•„์˜ค๋ผ๋Š” ๋ง์— xCode๋Š” ์—๋Ÿฌ๋ฅผ ๋ฑ‰์Šต๋‹ˆ๋‹ค ใ… ใ… ใ… 

์‚ฝ์งˆ ํ•˜์ง€ ์•Š๊ฒŒ ์ฃผ์˜!!

 

 


์ฐธ๊ณ  ์‚ฌ์ดํŠธ ๋ฐ ๋„์„œ


 

Apple Developer Documentation

 

developer.apple.com

 

 

Print all available font families and font names (Swift)

Print all available font families and font names (Swift) - get-fonts

gist.github.com

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€