CATextLayer
에서 텍스트의 폰트를 지정해주려면, CTFontRef
를 만들어서 넘겨주어야 한다. 이 값은 CTFont
나 CGFont
타입과 브릿징되기 때문에 CTFont
를 만들어야 한다. 만약 시스템에 설치된 서드파티 폰트를 사용해서 CTFont
객체를 만들려면 해당 폰트의 포스트 스크립트 이름을 알고 있어야 한다. 즉 CATextLayer
에서 커스텀 폰트를 사용하려면 해당 커스텀 폰트의 포스트스크립트 이름이 필요하다는 이야기이다.
macOS에서는 간단하게 서체 관리자에서 해당 폰트를 선택하여 정보보기(cmd + i)를 통해 PostScript Name을 확인해서 이 값을 알 수 있다. 그런데 iOS에서는 서체 관리자가 없기 때문에 이 방법을 쓸 수 없다. 대신에 다음 코드를 사용해서 시스템의 모든 기본 폰트의 포스트 스크립트 이름을 출력할 수 있다.
/// Swift 3.0
for familyName in UIFont.familyNames {
for fontName in UIFont.fontsNames(forFamilyName: familyName) {
print("\(family Name) : \(fontName)")
}
}
만약 폰트를 아직 설치하지 않은 상태라면, TTF, OTF 파일이 있을 때, fc-scan
이라는 명령줄 도구를 사용해서 이를 알 수 있다. fs-scan --format "%{postscriptname}\"
을 실행하면 된다. 다음 명령은 현재 디렉토리 내의 모든 ttf, otf 파일에 대해서 포스트 스크립트 이름을 출력하는 예이다.
$ for file in "$arg"*.{ttf,otf}; do fc-scan --format "%{postscriptname}\" $file; done