package javax.microedition.lcdui;
import android.graphics.Paint;
import android.graphics.Typeface;
public class Font {
public static final int FACE_SYSTEM = 0;
public static final int FACE_MONOSPACE = 32;
public static final int FACE_PROPORTIONAL = 64;
public static final int FONT_STATIC_TEXT = 0;
public static final int FONT_INPUT_TEXT = 1;
public static final int SIZE_MEDIUM = 0;
public static final int SIZE_SMALL = 8;
public static final int SIZE_LARGE = 16;
private static final int TEXT_SIZE_SMALL = 10;
private static final int TEXT_SIZE_MEDIUM = 16;
private static final int TEXT_SIZE_LARGE = 22;
public static final int STYLE_PLAIN = 0;
public static final int STYLE_BOLD = 1;
public static final int STYLE_ITALIC = 2;
public static final int STYLE_UNDERLINED = 4;
private final int size;
private final Paint typefacePaint;
private final float scale = 1.0f;
private Font(final int size, final Paint paint) {
this.size = size;
typefacePaint = paint;
typefacePaint.setTextSize(size);
}
public static Font getDefaultFont() {
return getFont(FACE_SYSTEM, STYLE_PLAIN, SIZE_MEDIUM);
}
public static Font getFont(final int face, final int style, final int size) {
int textSize;
int paintFlags = 0;
int typefaceStyle = Typeface.NORMAL;
Typeface base;
switch (face) {
case FACE_MONOSPACE:
base = Typeface.MONOSPACE;
break;
case FACE_SYSTEM:
base = Typeface.DEFAULT;
break;
case FACE_PROPORTIONAL:
base = Typeface.SANS_SERIF;
break;
default:
throw new IllegalArgumentException("unknown face " + face);
}
switch (size) {
case SIZE_LARGE:
textSize = TEXT_SIZE_LARGE;
break;
case SIZE_SMALL:
textSize = TEXT_SIZE_SMALL;
break;
default:
textSize = TEXT_SIZE_MEDIUM;
break;
}
if ((style & STYLE_BOLD) != 0) {
typefaceStyle |= Typeface.BOLD;
}
if ((style & STYLE_ITALIC) != 0) {
typefaceStyle |= Typeface.ITALIC;
}
if ((style & STYLE_UNDERLINED) != 0) {
paintFlags |= Paint.UNDERLINE_TEXT_FLAG;
}
final Typeface typeface = Typeface.create(base, typefaceStyle);
final Paint paint = new Paint(paintFlags);
paint.setTypeface(typeface);
return new Font(textSize, paint);
}
public int getHeight() {
return Math.round(size + typefacePaint.descent());
}
public int stringWidth(final String str) {
return Math.round(typefacePaint.measureText(str));
}
public int substringWidth(final String text, final int offset, final int len) {
return Math.round(typefacePaint.measureText(text, offset, offset + len));
}
public Paint getTypefacePaint() {
return typefacePaint;
}
public int charWidth(final char ch) {
return stringWidth(Character.toString(ch));
}
protected int getSize() {
return size;
}
public int getDescent() {
return Math.round(typefacePaint.descent());
}
}