如何设置自定义字体重量?

sin*_*nek 3 fonts android

就像主题暗示的那样,我想以编程方式更改/设置任意字体的字体粗细.

编辑:我的意思是一般用于绘制字符串的字体.

谢谢你的任何信息.

kco*_*ock 8

据我所知,加载字体后无法修改.您可以从现有字体创建新的字体,如下所示:

Typeface typeface = Typeface.createFromAsset(getAssets(), "myfontfamily.otf");
Typeface boldTypeface = Typeface.create(typeface, Typeface.BOLD);
Run Code Online (Sandbox Code Playgroud)

当然,这还取决于您的特定字体是否具有不同的权重.典型地,(总是?)这些将反正单独的文件,例如,档案维拉三世具有Vera.ttf,VeraBd.ttf,VeraIt.ttf,VeraBI.ttf,分别用于每个不同的姿势/重量的组合.只需根据您需要的重量加载正确的字体.

编辑:是的,字体通常是非常专门针对不同的权重重绘,至少对于精心设计的字体.如果你只是寻找的东西像一个虚假的大胆风格(如Photoshop或办公室没有定义的大胆风格的字体做),你可能能够使用TextPaint类,并设置FAKE_BOLD_TEXT_FLAG标志,以获得类似的结果.或者,您可以使用不同的笔触宽度来获得类似的效果.尽管如此,它仍然限于非常小的修改,特别是在小尺寸的情况下,或者你可能最终将文本与笔划相交,并且看起来很简单.:)

我建议只玩假冒大胆的旗帜,看看情况如何,如果这是你想要完成的.