Просто дайте ему цвет CSS
, например:
a
{
color:red;
}
Сравните нарисованные длины нескольких символов (m, i, 1,. должно быть хорошим набором).
Для моноширинных шрифтов все они будут равны, для шрифтов переменной ширины - нет.
Согласно этот ответ , Java не слишком много знает об основных деталях шрифта, поэтому вам придется провести некоторые сравнения размеров шрифта.
Вероятно, не применимо в вашем случае, но если вы просто хотите установить моноширинный шрифт, используйте логическое имя шрифта:
Font mono = new Font("Monospaced", Font.PLAIN, 12);
Это будет гарантированный моноширинный шрифт. в вашей системе.
Вы можете использовать метод getWidths () класса FontMetrics . Согласно JavaDoc:
Получает продвинутую ширину первых 256 символов шрифта. Продвижение - это расстояние от крайней левой точки до крайней правой точки на базовой линии персонажа. Обратите внимание, что продвижение строки не обязательно является суммой продвижения ее символов.
Вы можете использовать метод charWidth (char)
класса FontMetrics . Например:
Set<String> monospaceFontFamilyNames = new HashSet<String>();
GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontFamilyNames = graphicsEnvironment.getAvailableFontFamilyNames();
BufferedImage bufferedImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
Graphics graphics = bufferedImage.createGraphics();
for (String fontFamilyName : fontFamilyNames) {
boolean isMonospaced = true;
int fontStyle = Font.PLAIN;
int fontSize = 12;
Font font = new Font(fontFamilyName, fontStyle, fontSize);
FontMetrics fontMetrics = graphics.getFontMetrics(font);
int firstCharacterWidth = 0;
boolean hasFirstCharacterWidth = false;
for (int codePoint = 0; codePoint < 128; codePoint++) {
if (Character.isValidCodePoint(codePoint) && (Character.isLetter(codePoint) || Character.isDigit(codePoint))) {
char character = (char) codePoint;
int characterWidth = fontMetrics.charWidth(character);
if (hasFirstCharacterWidth) {
if (characterWidth != firstCharacterWidth) {
isMonospaced = false;
break;
}
} else {
firstCharacterWidth = characterWidth;
hasFirstCharacterWidth = true;
}
}
}
if (isMonospaced) {
monospaceFontFamilyNames.add(fontFamilyName);
}
}
graphics.dispose();