Android - 将多种字体样式组合成一个单一的字体(Typeface)

5

我有几种不同风格的字体,比如:"MyFont_default.otf", "MyFont_italic.otf", "MyFont_bold.otf"

通常情况下,我会像这样设置TextView的字体:

Typeface tf=Typeface.createFromAsset(context.getAssets(), "MyFont_italic.otf");
textView.setTypeface(tf);

我的问题是:是否可能将所有这些字体合并成一个单一的字体,比如说“我的字体”,并根据在XML布局文件中定义的TextView样式(斜体、粗体),以适当的字体显示TextView?
2个回答

4
我没有足够的声望来发表评论,但我可以确认这些方法可行。使用FontForge(Windows可用二进制文件):
  1. 打开您的多个.otf文件与FontForge(常规,粗体,斜体)。
  2. 确保选择显示字体“Regular”版本的窗口
  3. 在该窗口中使用文件>保存ttc
  4. 确实看到其他子字体在保存对话框中列出(粗体,斜体)
  5. 保存并在Android中使用此ttc文件
我在TextView中测试了一个html文本: <b>Test</b> Test <i>Test</i>-> "测试测试测试" 在Android 2.3.7中以前不起作用,并且使用这种ttc字体后三个版本的文本都能完美地显示。
正如我所说,选择“Regular”字体进行导出非常重要,因为那是Android使用的“默认”字体(我首先从粗体版本导出,结果全部都是粗体)。

将两个OTF合并为一个TTC文件,在我的设备上成功了(在2.3.3和4.4上)。非常感谢。 - Jumpa
这对我帮助很大!感谢您花时间。应该被接受的答案:D - Tharkius
你确定这真的有效吗?对我来说,似乎Android只是使用常规版本并修改它以应用粗体和斜体样式。 - Oderik

1
使用某种字体编辑器将字体合并成一个文件。许多字体在单个文件中具有多种样式,这正是您在此情况下所需要的。

感谢您的回复。由于时间的限制,最终我使用了不同的字体,因为这被证明是最快的方法。(但并不是最优雅的方法) - Andy Res
曾经遇到过这个问题,无法组合字体,但最终找到了这个伟大的解决方案,它使用简单的自定义TextView来重写setTypeface方法。 - Chris Blunt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接