본문 바로가기

iOS

Custom Font를 적용하고 싶다면?

728x90

xcode에서 폰트를 수정하고 싶을 때 아래와 같은 코드를 통해서 수정할 수 있다.

numberTextField.font = .systemFont(ofSize: 13, weight: .regular)
numberTextField.font = .systemFont(ofSize: 13)
numberTextField.font = .boldSystemFont(ofSize: 13)
numberTextField.font = .italicSystemFont(ofSize: 13)

이 때 사용되는 폰트는 Apple에서 기본적으로 제공하고 있는 Apple SD Gothic Neo 체이다. (폰트 스타일은 아래와 같이 Bold, Heavy, Light .. 등이 있다.) 

Apple SD Gothic Neo

 

Apple SD Gothic Neo체 말고도 시스템적으로 제공하고 있는 폰트들이 있다.

 

그러나 만약 개발자가 원하는 폰트가 시스템적으로 제공되지 않는다면?

만약 디자이너가 요청한 폰트가 다른 폰트라면? 우리는 해당 폰트 파일을 다운 받은 후 프로젝트에 적용해야 한다.

 

TTF VS OTF 

이 때 사용되는 폰트 파일은 크게 두 가지이다.

폰트 파일의 확장자가 .otf 인 것과 .ttf 인 것으로 나눌 수 있다.

 

이 두 가지의 차이에 대해서 알아보면 아래와 같다.

  • TTF
    • 포맷 방식이 True Type Font이다.
    • 문서 작업 및 디자인 작업에 적합한 대신 용량이 크다.
  • OTF 
    • 포맷 방식이 Open True Font이다.
    • 고해상도 출력 작업에 용이하고 용량이 작다.

이 외에도 차이점이 있으나, 두 파일의 경우 작업 방식/속도/파일 크기 등 상대적인 비교이므로 일반적인 작업을 하는 경우에는 큰 차이가 없다. 차이가 난다고 하더라도 프로젝트를 진행할 때 크게 영향을 주지 않는 미세한 차이라고 한다.

 

고행상도 대형 출력 작업 (300 dpi 이상)을 하면 OTF를 권장하고 그 외에는 상관이 없다.

그럼에도 하나를 고르자고 한다면, TTF보다 OTF가 조금 더 선명하다고 하니 파일이 두 개가 존재한다면 OTF로 받는 것이 좋다.

 

프로젝트에 폰트 적용 시 주의사항

xcode 프로젝트에 폰트 파일을 적용할 때 주의해야 하는 사항이 몇가지 있다.

먼저, 폰트 파일을 추가할 때 설정하는 것이 있는데, 이 때 주의할 것들이다.

 

1. 타겟 설정할 것 

위와 같이 옵션  설정을 해야 한다.

- copy items if needed

- create groups

- add to targets

(꼭 !! 타겟 설정을 해야 한다 !!)

 

2. info.plist에서 확장자까지 작성할 것 

그리고 Info.plist에 가서 추가를 할 때 반드시 확장자까지 작성해야 한다.

 


이렇게 폰트 파일을 넣고 프로젝트 내에서 설정을 한 뒤, 폰트를 적용했음에도 정상적으로 폰트가 변경되지 않는 경우가 있다.

대부분의 경우가 이럴 때의 원인은 폰트 파일이 가진 고유한 이름과 프로젝트 내에서 세팅한 이름이 다르기 때문이다.

 

이를 해결하기 위해서는 폰트 파일의 정확한 이름을 먼저 알아야 한다.

private func checkFontFile() {
        // Custom Font
        for family in UIFont.familyNames {
            print("========\(family)========")
            
            for name in UIFont.fontNames(forFamilyName: family) {
                print(name)
            }
        }
}

폰트 파일을 사용하는 곳에서 위와 같이 코드를 작성해서 파일의 고유한 이름을 찾는다.

 

코드를 실행하면, 프로젝트에서 사용할 수 있는 폰트 파일의 이름이 나타나게 되는데, 사용하고자 하는 파일의 이름 또한 보인다.

정확한 이름을 찾았다면, 파일 이름을 변경하고 info.plist에서 맞게 수정하면 된다. 

'iOS' 카테고리의 다른 글

SSAC - 다마고치 프로젝트 피드백 정리  (0) 2022.08.02
0729 Q&A 정리  (0) 2022.08.01
ATS(App Transport Security)  (0) 2022.07.28
UIResponder  (0) 2022.07.28
Delegate? DatsSource?  (0) 2022.07.28