カスタムフォントを取り入れたつもりが、実装不具合で取り込めていないことがあったので、フォントが正しく取り込めていることを確認するためのテストコードの実装を紹介します。
カスタムフォントを取得する手順
1. .ttfファイルからフォントを読み込み、プロジェクトに追加する
.ttfファイルや.otfファイルは以下のリンクからダウンロードできます。今回はZen Kaku Gothic Newを使用します。
ダウンロードした.ttfファイルをプロジェクトにドラッグ&ドロップし、ファイルがターゲットに含まれていることを確認してください。
2. Info.plistにフォント名を追加する
Fonts provided by application
(または UIAppFonts
)というキーを追加します。そのキーに、プロジェクトに追加したフォントファイルの名前を配列として追加します。
3. フォント名を取得するコード
以下のコードは、特定のフォント名がシステムに含まれているかを確認するクラスです。
ContentView.swift
class FontManager {
func containsFont(_ name: String) -> Bool {
return UIFont.familyNames
.flatMap { UIFont.fontNames(forFamilyName: $0) }
.contains(name)
}
}
4. テストコードを書く
それぞれのフォントのテストケースを定義することで、フォントが取得できていることを確認できます。
showFontFamilyTests.swift
import XCTest
@testable import showFontFamily
final class showFontFamilyTests: XCTestCase {
let fontManager = FontManager()
override func setUpWithError() throws {
}
override func tearDownWithError() throws {
}
func testContainZenKakuGothicNewBlack() throws {
let result = fontManager.containsFont("ZenKakuGothicNew-Black")
XCTAssertTrue(result)
}
func testContainZenKakuGothicNewBold() throws {
let result = fontManager.containsFont("ZenKakuGothicNew-Bold")
XCTAssertTrue(result)
}
func testContainZenKakuGothicNewLight() throws {
let result = fontManager.containsFont("ZenKakuGothicNew-Light")
XCTAssertTrue(result)
}
func testContainZenKakuGothicNewMedium() throws {
let result = fontManager.containsFont("ZenKakuGothicNew-Medium")
XCTAssertTrue(result)
}
func testContainZenKakuGothicNewRegular() throws {
let result = fontManager.containsFont("ZenKakuGothicNew-Regular")
XCTAssertTrue(result)
}
}
参考リンク