Java 字体高级,字符宽度

标签 java fonts fontmetrics

上下文

下面的代码产生了一个“漂亮”的“Hello World”

graphics.drawString("Hello World", 30, 30);

现在,如果相反,我绘制每个字符串,并通过 fontMetrics.getCharWidth(c) 手动前进,那么我最终会得到一个看起来狭窄/拥挤的 "Hello World".

问题

为什么会这样?除了每个字符的“advance”之外,我还需要添加什么来确保字符间距合理?

最佳答案

您使用 Graphics 中的哪种方法来渲染 char ? 这是我编写的代码,它运行完美,两种渲染方法的结果完全相同, 您可以分享您的那部分代码吗?

public class Test1 extends JPanel{

public static void main(String[] args) {

    Test1 test = new Test1() ;

    JFrame frame = new JFrame() ;
    frame.add(test) ;
    frame.setSize(800 , 600) ;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
    frame.setVisible(true) ;

}


@Override
public void paint(Graphics g) {     
    String text = "This is a text , Hello World!" ;

    g.drawString(text, 0, 100) ;        
    drawString(text, g, 0, 120) ;       
}

private void drawString (String s , Graphics g , int x , int y){
    for (int c1=0 ; c1 < s.length() ; c1++){

        char ch = s.charAt(c1); 
        g.drawString(ch+"", x, y) ;
        x+= g.getFontMetrics().charWidth(ch) ;
    }
}

关于Java 字体高级,字符宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670659/

相关文章:

css - 我无法使用@font-face

java - 如何在 Java2D 中剪辑字符串并在最后添加 ...?

swift - 使用 Swift 获取字体字形指标

java - 实现 Clarifai API

java - 在 JUnit/Spring 测试类中使用辅助类

linux - 从 GitHub 上的源代码安装 FontForge

qt - 如何在paintEvent之外获取QPainter的字体规范?

java - grails:如何禁用<s2ui:form>标记的可调整大小的属性

java - 套接字的多线程问题

iphone - iOS 7 中的 slim 系统字体叫什么名字?