Font Terminology : Font « SWT 2D Graphics « Java Tutorial






TermMeaning
baselineThe imaginary line the font sits on
ascentThe number of pixels that characters reach above the baseline to the top of typical lowercase characters
descentThe number of pixels that characters reach below the baseline
heightThe total height of characters in pixels, equal to the ascent plus the descent plus the leading area
leading areaThe number of pixels above the top of typical lowercase characters


Font Terminology
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.FontMetrics;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class FontMetricsPaintSWT {
  public static void main(String[] args) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Canvas Example");
    shell.setLayout(new FillLayout());

    Canvas canvas = new Canvas(shell, SWT.NONE);

    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        
        Font font = new Font(shell.getDisplay(), new FontData("Helvetica", 18, SWT.NORMAL));
        e.gc.setFont(font);
        e.gc.drawText("My Text", 0, 0);
        
        FontMetrics fm = e.gc.getFontMetrics();
        int bHeight = fm.getLeading() + fm.getAscent();
        int oHeight = fm.getAscent();
        int yHeight = fm.getAscent() + fm.getDescent();
        int totalHeight = fm.getHeight(); // Equals fm.getLeading() + fm.getAscent()
                                          // + fm.getDescent();
        
        e.gc.drawLine(10,bHeight,100,bHeight);
        e.gc.drawLine(10,oHeight,100,oHeight);
        e.gc.drawLine(10,yHeight,100,yHeight);
        e.gc.drawLine(10,totalHeight,100,totalHeight);
        
        
        font.dispose();

      }
    });

    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
}








18.13.Font
18.13.1.Creating Fonts
18.13.2.Font TerminologyFont Terminology
18.13.3.Changing FontsChanging Fonts
18.13.4.Using FontMetrics to get char width
18.13.5.Get system default fontGet system default font