java斜体_Java可以指示字体是否为斜体字

是否有方法确定字体对象

真的?

斜体(不是要求斜体字体)?

在我的测试FONT.is italic()、FONT.getStyle()、FONT.getAttributes()中,如果使用FONT.italic样式创建了一个字体对象,那么它都表示该字体对象为斜体。这不考虑是否找到合适的斜体字体。结果是,对于所有意图和目的,字体对象都是斜体,但实际上呈现为纯文本,并且您无法通过编程检查此条件。

这会影响Oracle JDK 11和OpenJDK。

示例代码:

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.GraphicsConfiguration;

import java.awt.font.TextAttribute;

import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

public class SimpleFontTest {

private static Font FONT = new Font("Impact", Font.ITALIC, 18);

private static String TEXT = "The Quick Brown Fox";

public static void main(String args[]){

if (args.length > 0 && args[0] != null) {

String fontName = args[0];

FONT = new Font(fontName, Font.ITALIC, 18);

}

// All the different ways that this proves the font is italic

System.out.println("isItalic? " + FONT.isItalic());

System.out.println("style is Font.ITALIC? " + ((FONT.getStyle() & 0b10) == Font.ITALIC));

System.out.println("attributes include POSTURE_OBLIQUE? " + FONT.getAttributes().get(TextAttribute.POSTURE).equals(TextAttribute.POSTURE_OBLIQUE));

JFrame f = new JFrame("Simple Font Test: " + System.getProperty("java.vendor"));

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JLabel label = new JLabel("JLabel: " + TEXT);

label.setFont(FONT);

GraphicsConfiguration gc = f.getGraphicsConfiguration();

BufferedImage image = gc.createCompatibleImage(400, 50);

Graphics2D g = image.createGraphics();

g.setFont(FONT);

g.setColor(Color.BLACK);

g.setBackground(Color.WHITE);

g.clearRect(0, 0, image.getWidth(), image.getHeight());

g.drawString("BufferedImage: " + TEXT, 10, 15);

g.dispose();

JLabel picLabel = new JLabel(new ImageIcon(image));

f.add(label, BorderLayout.PAGE_START);

f.add(picLabel, BorderLayout.CENTER);

f.setSize(400, 200);

f.setVisible(true);

}

}

SYSOUT:

isItalic? true

style is Font.ITALIC? true

attributes include POSTURE_OBLIQUE? true

图形输出:

9MZEA.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值