在 iOS 專案中加入 `DINCond-Bold.otf` 自定義字體後,設置到 `UILabel` 或 `UITextView` 發現文字整體向上偏移,不再垂直居中,影響視覺效果。
使用 macOS 自帶的「字體簿」打開 `.otf` 文件,查看預覽中文字是否偏移。若預覽正常,問題可能在代碼設置;若預覽也偏移,則是字體文件本身的問題。
換用其他同風格字體(如 `DIN Alternate`、`Helvetica Neue Condensed Bold` 等)測試,若新字體正常,說明原字體文件有缺陷。
// 方案一:調整 UILabel 的垂直對齊
label.contentVerticalAlignment = .center
// 方案二:使用 NSAttributedString 微調 baselineOffset
let attrStr = NSMutableAttributedString(string: "文字")
attrStr.addAttribute(.font, value: UIFont(name: "DINCond-Bold", size: 17)!, range: NSRange(location: 0, length: attrStr.length))
attrStr.addAttribute(.baselineOffset, value: -2, range: NSRange(location: 0, length: attrStr.length)) // 視實際偏移量調整
label.attributedText = attrStr
確認 `Fonts provided by application` 陣列中已正確包含該字體文件名,且 Target Membership 勾選正確。
結論:多數情況下是字體文件本身的垂直度量設計導致,更換字體是最徹底的解決辦法;若不可更換,可通過 `baselineOffset` 微調補救。