2012-04-17 99 views
5

我有几个字体有不同的风格,可以说:“MyFont_default.otf”,“MyFont_italic.otf”,“MyFont_bold.otf”Android的 - 多种字体样式,组合成一个单一的字体(字体)

常,我想设置这样一个TextView的字体:

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

我的问题是:是否有可能将所有这些字体结合成一个单一的字体,说“MyFont”,并根据TextView的风格的定义在XML布局文件(斜体,粗体)中,TextView要以适当的字体显示?

回答

1

使用某种字体编辑器将字体组合成单个文件。许多字体在单个文件中带有多种样式,这是您在这种情况下需要的。

+0

谢谢您的回复。受到时间的限制,我最终使用了单独的字体,因为它变成了最快捷的方式。 (但不是最优雅的) – 2012-05-03 09:11:34

+0

有这个问题,不能结合字体,但我最终发现[这个伟大的解决方案](http://alinberce.wordpress.com/2012/01/25/using-custom-fonts -in-android-bold-italic-regular-you-name-it /),它使用简单的自定义TextView来覆盖setTypeface方法。 – 2012-07-26 11:16:50

2

我没有适当的评价,但我可以证实,这种方法的工作。 使用FontForge(二进制适用于Windows):

  1. 与FontForge(常规,粗体,斜体)打开多个文件杂项文件。
  2. 确保选择显示的字体
  3. 使用文件的“常规”版本窗口>从窗口
  4. 见,确实其他子字体在保存对话框中列出保存TTC(粗体,斜体)
  5. 保存并在Android中使用此TTC文件

我在TextView中显示的HTML文本进行了测试: <b>Test</b> Test <i>Test</i> - > “测试测试测试“,这在之前的Android 2.3.7版本中无法使用,并且使用这种ttc字体,文本的所有三个版本都完美显示。

正如我所说的,在导出时选择Regular字体很重要,因为这是Android使用的默认字体(我从Bold版本开始导出并且全是粗体)。

+0

在一个ttc文件中合并两个otf,为我工作(在2.3.3和4.4上)。非常感谢。 – Jumpa 2014-12-05 15:24:59

+0

这帮了我很多!感谢您抽出宝贵的时间。应该是被接受的答案:D – Tharkius 2017-09-11 09:00:02

+0

你确定这实际上有效吗?对我来说,Android似乎只使用常规版本,并将其修改为适合粗体和斜体的样式。 – Oderik 2017-11-21 12:21:18