Java颠倒文本 - 错误还是功能?

Jam*_*ams 4 java swing language-features

在使用Java字体类和Swing时,我将字体大小设置为负值.

我发现这使文本被颠倒了.这是一个错误还是一个功能?谁能解释为什么会出现这种情况?

试试看:

import java.awt.Font;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class UpsideDown extends JFrame{

    public UpsideDown(){
        setSize(500,500);
        setContentPane(new Panel());
        setVisible(true);
    }

    public class Panel extends JPanel{
        public void paintComponent(Graphics g){
            Font f = new Font("Sans-Serif", Font.PLAIN, -50);
            g.setFont(f);
            g.drawString("Upside Down", 400, 100);
        }
    }

    public static void main(String args[]){
        new UpsideDown();
    }
}
Run Code Online (Sandbox Code Playgroud)

上下翻转

Pur*_*ari 6

似乎发生了这种情况:

  1. Swing向下绘制字体的高度,因为它将字体大小与字体的字形高度相乘.-50 * glyph_height是否定的 - >向下而不是向上.
  2. 它还将字形(字母)的宽度绘制到左侧,这也是因为它将字体大小与字体指定的字形宽度相乘.