我使用自定义字体(BebasNeueLight)。在Font Book中看起来像这样:
我以通常的方式将它添加到iOS项目中;将其复制到项目中,在plist"应用程序提供的字体中添加了一个键#34;并添加了文件名BebasNeueLight.otf
)。
在Swift的标签中,我执行以下操作:
label.font = UIFont(name: "BebasNeueLight", size: 24.0)!
这是字体的实际Postscript名称。
当我运行应用程序时,我看到自定义字体已加载;但它显示常规样式(我既没有添加到我的项目或指定): 使用'常规'的字体书截图样式: 谁看过这个吗?我猜测有些事情是错误的'用字体本身。我在Android btw上运行良好。
- 编辑:
我使用正确的名称,我已经使用fontconfig和Swift代码获取此名称以打印字体(并且它正在加载自定义字体;只是不正确的样式..)。输出:
❯ fc-scan --format "%{postscriptname}\n" BebasNeueLight.otf
BebasNeueLight
-
故事板也会呈现字体“错误”字样。我已选择带有我的标签的字体(因为您可以看到渲染预览):
但是,故事板已经将它呈现为常规'类型(就像应用程序一样):
所以我认为出于某种原因这是字体本身的问题。
答案 0 :(得分:0)
我想问题出现在字体名称"BebasNeueLight"
,在您的应用代表处放置以下功能并调用它:
func printFonts() {
let fontFamilyNames = UIFont.familyNames
for familyName in fontFamilyNames {
print("------------------------------")
print("Font Family Name = [\(familyName)]")
let names = UIFont.fontNames(forFamilyName: familyName)
print("Font Names = [\(names)]")
}
}
然后检查加载的字体系列名称的名称可能是"BebasNeue-Light"
答案 1 :(得分:0)
问题是字体文件名中的“BebasNeueLight”与真实字体标题名称不对应。所以你需要以某种方式找到你的字体名称。其中一个变种是:
func listFontsNames(){
for family : String in UIFont.familyNames as [String]
{
print("Family : \(family)")
for name in UIFont.fontNames(forFamilyName: family)
{
print("name : \(name)")
}
}
}
当然你已经在项目和info.plist中添加了字体?
答案 2 :(得分:0)
您可以打印所有字体(见下文)。您还可以检查字体是否存在。
for family in UIFont.familyNames {
print("\(family)")
for name in UIFont.fontNames(forFamilyName: family) {
print(" \(name)") // <- FontName
}
}
从日志中复制并粘贴您的字体名称并尝试分配:
label.font = UIFont(name: "<PasteYourFontNameHere>", size: 24.0)!
有时字体名称不同。
答案 3 :(得分:0)
1.将字体文件添加到项目中
2.使用plist文件中的“应用程序提供的字体”添加新条目 您的每个文件,在应用程序提供的字体中将文件名添加到此数组
3。label.font = [UIFont fontWithName:@"BebasNeueLight" size:15];
夫特。
label.font = UIFont(name:"BebasNeueLight", size:15)
答案 4 :(得分:0)
最新的iOS SDK和Xcode(9.3)修复了这个问题,所以我猜这是IOS中的一个错误&lt; 11.3。
当前版本按预期工作:
❯ xcodebuild -showsdks
iOS SDKs:
iOS 11.3 -sdk iphoneos11.3
该设备还需要至少运行iOS 11.3!
所有其他设置(将字体添加到plist.info,使用正确的postscript字体名称等)都是正确的。
答案 5 :(得分:0)
您是否从xcode等设置了所有内容?如果没有,请按照
进行操作如果您使用的是webfont,请下载.ttf文件并将其放入您的项目中。如果需要,复制项目上的复选标记
接下来在info plist上添加此内容
PdfDocument pdfDocument = new PdfDocument(new PdfReader(new File("C:\\Users\\me\\lookAtMe.pdf")));
MyImageSeek meeseek = new MyImageSeek(pdfDocument);
for(Map.Entry<Rectangle, BufferedImage> en : meeseek.getImages(1).entrySet())
System.out.println(en.getKey() + "\t" + en.getValue());
现在看看字体系列名称。您也可以在字体文件中找到。从您下载的地方,您也将到达那里。就像我添加的字体ttf文件名是:Bakersfield Bold.ttf这个字体名称是:Bakersfield-Bold这就是它的快乐编码。
如果您已经完成,请按照以下步骤操作
<key>UIAppFonts</key>
<array>
<string>Your fontname.ttf</string>
<string>Bakersfield Bold.ttf</string>
</array>
可能在这里你在字体名称上犯了一个错误。