测试字体是否是Java中的一等
发布时间:2020-12-14 16:20:56 所属栏目:Java 来源:网络整理
导读:我正在列出用户机器上可用的所有等宽字体.我可以通过以下方式获取Swing中的所有字体: String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment() .getAvailableFontFamilyNames(); 有没有办法弄清楚哪些是均匀的? 提前致谢. 解决方法 您可以使
我正在列出用户机器上可用的所有等宽字体.我可以通过以下方式获取Swing中的所有字体:
String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment() .getAvailableFontFamilyNames(); 有没有办法弄清楚哪些是均匀的? 提前致谢. 解决方法
您可以使用
FontMetrics课程的
getWidths()方法.根据JavaDoc:
您可以使用FontMetrics类的charWidth(char)方法.例如: 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(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java连接mysql数据库学习示例
- java – Collections类中静态final字段背后的目的是什么?
- java – HttpMediaTypeNotAcceptableException升级到Spring
- java – 获取ArrayIndexOutOfBound:1异常
- java – 测试Maven插件时抛出NoSuchElementException
- Java写入已删除的文件
- java – 将.class文件放在版本控制下?
- 我可以在Java代码中使用它们来利用Kotlin的Coroutines吗?
- java – Spring jdbcTemaplate如何一次性将完整的批量大小发
- java – 为JAR文件启动嵌入式jetty服务器