Skip to content

Commit

Permalink
Use Exo 2 as the default font, with the old font (CJK) as a backup.
Browse files Browse the repository at this point in the history
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
  • Loading branch information
itdelatrisu committed Feb 2, 2017
1 parent 6555797 commit ac19406
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 21 deletions.
Binary file added res/Exo2-Bold.ttf
Binary file not shown.
Binary file added res/Exo2-Regular.ttf
Binary file not shown.
10 changes: 8 additions & 2 deletions src/itdelatrisu/opsu/options/Options.java
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,14 @@ public class Options {
/** Directory where temporary files are stored (deleted on exit). */
public static final File TEMP_DIR = new File(CACHE_DIR, "Temp/");

/** Font file name. */
public static final String FONT_NAME = "DroidSansFallback.ttf";
/** Main font file name. */
public static final String FONT_MAIN = "Exo2-Regular.ttf";

/** Bold font file name. */
public static final String FONT_BOLD = "Exo2-Bold.ttf";

/** CJK font file name. */
public static final String FONT_CJK = "DroidSansFallback.ttf";

/** Version file name. */
public static final String VERSION_FILE = "version";
Expand Down
44 changes: 25 additions & 19 deletions src/itdelatrisu/opsu/ui/Fonts.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,35 +56,41 @@ private Fonts() {}
*/
public static void init() throws SlickException, FontFormatException, IOException {
float fontBase = 12f * GameImage.getUIscale();
Font javaFont = Font.createFont(Font.TRUETYPE_FONT, ResourceLoader.getResourceAsStream(Options.FONT_NAME));
Font font = javaFont.deriveFont(Font.PLAIN, (int) (fontBase * 4 / 3));
DEFAULT = new UnicodeFont(font);
BOLD = new UnicodeFont(font.deriveFont(Font.BOLD));
XLARGE = new UnicodeFont(font.deriveFont(fontBase * 3));
LARGE = new UnicodeFont(font.deriveFont(fontBase * 2));
MEDIUM = new UnicodeFont(font.deriveFont(fontBase * 3 / 2));
MEDIUMBOLD = new UnicodeFont(font.deriveFont(Font.BOLD, fontBase * 3 / 2));
SMALL = new UnicodeFont(font.deriveFont(fontBase));
SMALLBOLD = new UnicodeFont(font.deriveFont(Font.BOLD, fontBase));
Font javaFontMain = Font.createFont(Font.TRUETYPE_FONT, ResourceLoader.getResourceAsStream(Options.FONT_MAIN));
Font javaFontBold = Font.createFont(Font.TRUETYPE_FONT, ResourceLoader.getResourceAsStream(Options.FONT_BOLD));
Font javaFontCJK = Font.createFont(Font.TRUETYPE_FONT, ResourceLoader.getResourceAsStream(Options.FONT_CJK));
Font fontMain = javaFontMain.deriveFont(Font.PLAIN, (int) (fontBase * 4 / 3));
Font fontBold = javaFontBold.deriveFont(Font.PLAIN, (int) (fontBase * 4 / 3));
Font fontCJK = javaFontCJK.deriveFont(Font.PLAIN, (int) (fontBase * 4 / 3));
DEFAULT = new UnicodeFont(fontMain);
BOLD = new UnicodeFont(fontBold.deriveFont(Font.BOLD));
XLARGE = new UnicodeFont(fontMain.deriveFont(fontBase * 3));
LARGE = new UnicodeFont(fontMain.deriveFont(fontBase * 2));
MEDIUM = new UnicodeFont(fontMain.deriveFont(fontBase * 3 / 2));
MEDIUMBOLD = new UnicodeFont(fontBold.deriveFont(Font.BOLD, fontBase * 3 / 2));
SMALL = new UnicodeFont(fontMain.deriveFont(fontBase));
SMALLBOLD = new UnicodeFont(fontBold.deriveFont(Font.BOLD, fontBase));
ColorEffect colorEffect = new ColorEffect();
loadFont(DEFAULT, colorEffect);
loadFont(BOLD, colorEffect);
loadFont(XLARGE, colorEffect);
loadFont(LARGE, colorEffect);
loadFont(MEDIUM, colorEffect);
loadFont(MEDIUMBOLD, colorEffect);
loadFont(SMALL, colorEffect);
loadFont(SMALLBOLD, colorEffect);
loadFont(DEFAULT, colorEffect, new UnicodeFont(fontCJK));
loadFont(BOLD, colorEffect, new UnicodeFont(fontCJK.deriveFont(Font.BOLD)));
loadFont(XLARGE, colorEffect, new UnicodeFont(fontCJK.deriveFont(fontBase * 3)));
loadFont(LARGE, colorEffect, new UnicodeFont(fontCJK.deriveFont(fontBase * 2)));
loadFont(MEDIUM, colorEffect, new UnicodeFont(fontCJK.deriveFont(fontBase * 3 / 2)));
loadFont(MEDIUMBOLD, colorEffect, new UnicodeFont(fontCJK.deriveFont(Font.BOLD, fontBase * 3 / 2)));
loadFont(SMALL, colorEffect, new UnicodeFont(fontCJK.deriveFont(fontBase)));
loadFont(SMALLBOLD, colorEffect, new UnicodeFont(fontCJK.deriveFont(Font.BOLD, fontBase)));
}

/**
* Loads a Unicode font and its ASCII glyphs.
* @param font the font to load
* @param effect the font effect
* @param backup the backup font
* @throws SlickException if the glyphs could not be loaded
*/
@SuppressWarnings("unchecked")
private static void loadFont(UnicodeFont font, Effect effect) throws SlickException {
private static void loadFont(UnicodeFont font, Effect effect, UnicodeFont backup) throws SlickException {
font.addBackupFont(backup);
font.addAsciiGlyphs();
font.getEffects().add(effect);
font.loadGlyphs();
Expand Down

0 comments on commit ac19406

Please sign in to comment.