package org.emdev.common.fonts;
import android.graphics.Typeface;
import java.util.Arrays;
import java.util.List;
import org.emdev.common.fonts.data.FontFamily;
import org.emdev.common.fonts.data.FontFamilyType;
import org.emdev.common.fonts.data.FontInfo;
import org.emdev.common.fonts.data.FontPack;
import org.emdev.common.fonts.data.FontStyle;
import org.emdev.common.fonts.typeface.TypefaceEx;
public class SystemFontProvider extends AbstractFontProvider {
public static final String SYSTEM_FONT_PACK = "System";
public SystemFontProvider() {
super(0, SYSTEM_FONT_PACK);
}
@Override
protected List<FontPack> load() {
return Arrays.asList((FontPack) new SystemFontPack(this, SYSTEM_FONT_PACK));
}
@Override
public TypefaceEx getTypeface(final FontPack fp, final FontFamilyType type, final FontStyle style) {
final int st = style.getStyle();
final Typeface family = type.getSystem();
final Typeface target = Typeface.create(family, st);
final boolean fake = (st & Typeface.BOLD) != (target.getStyle() & Typeface.BOLD);
return new TypefaceEx(fp, type, style, target, fake);
}
private static class SystemFontPack extends FontPack {
public SystemFontPack(SystemFontProvider manager, final String name) {
super(manager, name);
for (final FontFamilyType type : FontFamilyType.values()) {
final FontFamily ff = new SystemFontFamily(type);
this.types[type.ordinal()] = ff;
}
}
}
private static class SystemFontFamily extends FontFamily {
public SystemFontFamily(final FontFamilyType type) {
super(type);
for (final FontStyle fs : FontStyle.values()) {
final FontInfo fi = new FontInfo("", fs);
this.fonts[fs.ordinal()] = fi;
}
}
}
}