private Font recursiveFindBestFontSize(Font font, String text, int minFontSize, int fontSize, int maxFontSize) {
		if(isFontSmallEnough(font, text)) { // the best size is between fontSize and maxFontSize
			if(fontSize >= maxFontSize - 1) return font; // fontSize is the best
			minFontSize = fontSize;
			fontSize = (fontSize + maxFontSize) / 2;
		} else if(fontSize > minFontSize) { // the best size is between minFontSize and maxFontSize
			maxFontSize = fontSize;
			fontSize = (minFontSize + fontSize) / 2;
		} else return font; // can't get any smaller

		font = new Font(FONT_NAME, FONT_STYLE, fontSize);
		return recursiveFindBestFontSize(font, text, minFontSize, fontSize, maxFontSize);
	}