[英]Adding a custom font to macOS app using Swift
我遵循了一堆教程,但它不起作用:我只是想向 macOS 應用程序添加自定義字體。
我基本上嘗試過:
.ttf
字體文件添加到我的項目中:設置了目標成員資格,並且我還確保使用Bundle Phases
內的Copy Files
。 編譯后我可以看到所有文件都在 Bundle 中。 所以這似乎工作得很好。 Info.plist
:我添加Fonts provided by application
並為我想要添加的每個字體文件創建了一個項目(像myFont.tff
這樣的myFont.tff
)。
我確保我使用了正確的字體名稱。 我在我的系統上安裝了字體並使用 Interface Builder 配置了一個標簽,以便它使用所需的字體。 我打印了它的值print(myLabel.font.fontName)
。
令人困惑:如果我想添加到應用程序的完全相同的字體文件安裝在系統 Fontbook 中並被激活,則一切正常。 當我停用它時,它不起作用。 對我來說,這表明我使用了正確的字體名稱。
我找到了ATSApplicationFontsPath
並嘗試將它添加到Info.plist
,但既不使用路徑(由文檔推薦)或像.
(這似乎對那里的某些人有用)解決了。
感謝任何幫助!
根據以前的答案,我很難讓它發揮作用,所以我決定自己寫一個答案。 這是基於@ixany 和@rob-keniger 之前的回答。
Fonts
文件夾。 取消選中Add to targets
並Copy items if needed
選中Copy items if needed
。Application fonts resource path
添加到 Info.plist 並輸入Fonts
。Build Phases
並創建一個New Copy Files Phase
。Destinations
設置為Resources
並將子Subpath
為Fonts
。 然后將您的字體文件添加到列表中。我偶然解決了我的問題。
我注意到在捆綁文件中,我的字體被包含兩次:它們被復制到“資源”目錄以及我在“復制文件”構建階段中聲明的子路徑。 我從我的項目中刪除了字體,再次添加了它們(沒有檢查“目標成員資格”)並將它們添加到構建階段中,以便將它們復制到子路徑中。 在那之后它起作用了。
補充說明:
原來, Fonts provided by application
是 iOS 唯一的屬性,因此 macOS 實現不需要它。
此外, ATSApplicationFontsPath
不需要任何斜杠。 例如: Fonts
應該可以正常工作。
我很難找到 .ttf 字體文件的正確名稱,有時還發現了一些奇怪的行為:NSFont 從字體系列中隨機選擇字體(常規、中等、粗體……),而沒有任何代碼更改。 通過使用 .otf 文件,我也可以解決這個問題。
在運行 BigSur 的 Xcode 12 beta 1 中,上述所有內容均不適用於我,但這些步驟確實適用。
無需編輯構建階段或其他任何內容。
Xcode 12 要添加自定義字體,您必須從提供的字符串中排除擴展名。
IE
.font(.custom("your font name", size:xx)) // 每次都有效
.font(.custom("your font name.extension",size:xx)) // 總是失敗
Xcode 11.xx 並非如此, fontname.extension 正在工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.