package org.geogebra.common.awt; /** * Platform independent Font * */ public abstract class GFont { /** neither bold or italic font */ public static final int PLAIN = 0; /** bold font */ public static final int BOLD = 1; /** italic font */ public static final int ITALIC = 2; /** * Returns the style of this <code>Font</code>. The style can be PLAIN, * BOLD, ITALIC, or BOLD+ITALIC. * * @return the style of this <code>Font</code> * @see #isBold * @see #isItalic */ public abstract int getStyle(); /** * Returns the point size of this <code>Font</code>, rounded to an integer. * Most users are familiar with the idea of using <i>point size</i> to * specify the size of glyphs in a font. * * @return the point size of this <code>Font</code> in 1/72 of an inch * units. */ public abstract int getSize(); /** * Indicates whether or not this <code>Font</code> object's style is ITALIC. * * @return <code>true</code> if this <code>Font</code> object's style is * ITALIC; <code>false</code> otherwise. */ public abstract boolean isItalic(); /** * Indicates whether or not this <code>Font</code> object's style is BOLD. * * @return <code>true</code> if this <code>Font</code> object's style is * BOLD; <code>false</code> otherwise. */ public abstract boolean isBold(); /** * Indicates whether or not this <code>Font</code> can display a specified * <code>String</code>. For strings with Unicode encoding, it is important * to know if a particular font can display the string. This method returns * an offset into the <code>String</code> <code>str</code> which is the * first character this <code>Font</code> cannot display without using the * missing glyph code. If the <code>Font</code> can display all characters, * -1 is returned. * * @param str * a <code>String</code> object * @return an offset into <code>str</code> that points to the first * character in <code>str</code> that this <code>Font</code> cannot * display; or <code>-1</code> if this <code>Font</code> can display * all characters in <code>str</code>. */ public abstract int canDisplayUpTo(String str); /** * @param style * font style (GFont.PLAIN, GFont.BOLD, GFont.ITALIC or sum of * last two) * @param fontSize * font size * @return derive fonts */ public abstract GFont deriveFont(int style, int fontSize); /** * @param style * font style (GFont.PLAIN, GFont.BOLD, GFont.ITALIC or sum of * last two) * @param fontSize * font size * @return derive fonts */ public abstract GFont deriveFont(int style, double fontSize); /** * @param style * font style (GFont.PLAIN, GFont.BOLD, GFont.ITALIC or sum of * last two) * @return derive fonts */ public abstract GFont deriveFont(int style); /** * @return font name */ public abstract String getFontName(); /** * @param serif * @return style as required by JLaTeXMath */ public int getLaTeXStyle(boolean serif) { int style = 0; if (isBold()) { style = style | 2;// TeXFormula.BOLD; } if (isItalic()) { style = style | 4;// TeXFormula.ITALIC; } if (!serif) { style = style | 1;// TeXFormula.SANSSERIF; } return style; } }