如何设置自定义字重?

3

如题,我想通过编程的方式为任意字体更改/设置字重

编辑:我的意思是通用于绘制字符串的字体。

感谢任何信息。

1个回答

8
据我所知,一旦加载字体,就无法修改。您可以从现有的字体创建新的 Typeface,如下所示:
Typeface typeface = Typeface.createFromAsset(getAssets(), "myfontfamily.otf");
Typeface boldTypeface = Typeface.create(typeface, Typeface.BOLD);

当然,这也取决于你使用的字体是否有不同的字重。通常(总是?)它们会是单独的文件,例如,Bitstream Vera Sans有Vera.ttf、VeraBd.ttf、VeraIt.ttf、VeraBI.ttf,每个不同的姿势/字重组合都有一个文件。只需根据需要加载适当的字体即可。
编辑:是的,字体通常会针对不同的字重进行重新绘制,至少对于设计良好的字体是这样的。如果你只是想要一种类似于伪粗体的样式(如Photoshop或Office为没有定义粗体样式的字体所做的那样),你可以使用TextPaint类,并设置FAKE_BOLD_TEXT_FLAG标志来获得类似的结果。另外,你还可以尝试使用不同的描边宽度来获得一些类似的效果。但要将其限制在非常小的修改范围内,特别是在小字号下,否则你可能会发现文本被描边所覆盖,看起来很难看。 :) 我建议你只是尝试使用伪粗体标志,看看效果如何,如果这是你想要实现的目标。

我更新了我的回答,可能会对你有所帮助,但不确定。 - Kevin Coppock
好的,我尝试过了,但似乎唯一的选择是使用自定义字体族。无论如何,感谢您的回答。 - sinek

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