package com.chromium.fontinstaller.models; import android.graphics.Typeface; import android.util.Pair; import java.util.ArrayList; import java.util.List; public enum FontFamily { SANS_SERIF( "sans-serif", Typeface.NORMAL, Typeface.ITALIC, Typeface.BOLD, Typeface.BOLD_ITALIC ), SANS_SERIF_LIGHT( "sans-serif-light", Typeface.NORMAL, Typeface.ITALIC ), SANS_SERIF_THIN( "sans-serif-thin", Typeface.NORMAL, Typeface.ITALIC ), SANS_SERIF_CONDENSED( "sans-serif-condensed", Typeface.NORMAL, Typeface.ITALIC, Typeface.BOLD, Typeface.BOLD_ITALIC ), SANS_SERIF_MEDIUM( "sans-serif-medium", Typeface.NORMAL, Typeface.ITALIC ), SANS_SERIF_BLACK( "sans-serif-black", Typeface.NORMAL, Typeface.ITALIC ), SANS_SERIF_CONDENSED_LIGHT( "sans-serif-condensed-light", Typeface.NORMAL, Typeface.ITALIC ); private final String familyName; private final int[] styles; FontFamily(String familyName, int... styles) { this.familyName = familyName; this.styles = styles; } private static String styleToString(int style) { switch (style) { case Typeface.NORMAL: return "regular"; case Typeface.ITALIC: return "italic"; case Typeface.BOLD: return "bold"; case Typeface.BOLD_ITALIC: return "bold italic"; default: return null; } } public static List<Pair<String, Typeface>> getSystemTypefaces() { List<Pair<String, Typeface>> typefaces = new ArrayList<>(); for (FontFamily family : values()) { for (int style : family.styles) { typefaces.add(Pair.create( family.familyName + " " + styleToString(style), Typeface.create(family.familyName, style))); } } return typefaces; } }