Java 从资源中动态加载和分类字体

Java 从资源中动态加载和分类字体,java,android,fonts,Java,Android,Fonts,我想知道是否有人知道或有办法从assets文件夹中动态加载所有字体.ttf和.otf,并按族对其进行分类,我有一种静态方法(这还没有完全完成),我有一种方法返回一个包含所有字体族的列表,硬编码,所以我有另一种方法返回给定字体族(字符串)的字体给定和它的样式: public Typeface getTypeface(Context context, String name, int textStyle) { String fontFileName = ""; switch (nam

我想知道是否有人知道或有办法从assets文件夹中动态加载所有字体.ttf和.otf,并按族对其进行分类,我有一种静态方法(这还没有完全完成),我有一种方法返回一个包含所有字体族的列表,硬编码,所以我有另一种方法返回给定字体族(字符串)的字体给定和它的样式:

public Typeface getTypeface(Context context, String name, int textStyle)
{
    String fontFileName = "";
    switch (name)
    {
        case "ComicNeue-Angular":
        {
            switch (textStyle)
            {
                case Typeface.NORMAL: {} break;
                case Typeface.BOLD: {} break;
                case Typeface.ITALIC: {} break;
                case Typeface.BOLD_ITALIC: {} break;
            }
        } break;
        case "ComicNeue":
        {
            switch (textStyle)
            {
                case Typeface.NORMAL: {} break;
                case Typeface.BOLD: {} break;
                case Typeface.ITALIC: {} break;
                case Typeface.BOLD_ITALIC: {} break;
            }
        } break;
        case "Impact":
        {
            switch (textStyle)
            {
                case Typeface.NORMAL: {} break;
                case Typeface.BOLD: {} break;
                case Typeface.ITALIC: {} break;
                case Typeface.BOLD_ITALIC: {} break;
            }
        } break;
        case "LiberationSans":
        {
            switch (textStyle)
            {
                case Typeface.NORMAL: {} break;
                case Typeface.BOLD: {} break;
                case Typeface.ITALIC: {} break;
                case Typeface.BOLD_ITALIC: {} break;
            }
        } break;
        case "Roboto":
        {
            switch (textStyle)
            {
                case Typeface.NORMAL: {} break;
                case Typeface.BOLD: {} break;
                case Typeface.ITALIC: {} break;
                case Typeface.BOLD_ITALIC: {} break;
            }
        } break;
    }
    return Typeface.createFromAsset(context.getAssets(), fontFileName);
}
我想添加所有字体并按族对其进行分类,以便可以加载包含所有字体族的微调器。因此,如果我将另一个字体系列添加到文件夹中,我就不必在代码中添加行。(我必须在项目中再添加7种字体)

有什么想法吗


提前谢谢

建议:不要试图打破Android开发模式,只需捆绑您的字体即可。如果你想在你的应用程序中定制任何东西,Android的方法是将其捆绑在自己的应用程序中。如果这是一个基于webview的应用程序,您可以使用webfonts,但这比立即加载捆绑资产更糟糕。如何捆绑字体?实际上我正在寻找并阅读无法捆绑的.ttf文件我想你已经找到了?是的,我可以使用外部字体,我只想按系列对不同的ttf或OTF进行分类,所以当我将字体设置为typeface.BOLD时,它会选择正确的字体文件。然后我有个坏消息告诉你:“BOLD”opentype规范中没有,只有“权重”,并且在数字权重和它们在人类语言中的含义之间没有官方映射。重量为200的字体可以是粗体,重量为900的字体可以是粗体——CSS有规则说400是正常的,等等,Opentype没有任何这样的规则。