The Java Program: FontShow.java

  1 /*
  2    Example of how to use this applet in an HTML file:
  3    <applet code=FontShow width=200 height=120>
  4       <param name="word" value="Fog">
  5       <param name="font" value="Helvetica">
  6    </applet>
  7 */
  8 
  9 import java.applet.Applet;
 10 import java.awt.*;
 11 
 12 public class FontShow extends Applet { 
 13    static final int LPAD=25;       // Horizontal and vertical margins
 14    private int size=24;
 15 
 16    public void paint (Graphics g) {
 17       String message = getParameter ("word");
 18       // Dialog, Helvetica, TimesRoman, Courier, or Symbol
 19       String font = getParameter ("font");
 20       g.setFont (new Font(font,Font.PLAIN,size));
 21 
 22       FontMetrics metrics = g.getFontMetrics();
 23       int fontAscent   = metrics.getAscent ();
 24       int fontDescent  = metrics.getDescent();
 25       int fontHeight   = metrics.getHeight(); // Ascent+Descent+Leading
 26       int messageWidth = metrics.stringWidth (message);
 27 
 28       // Compute positions in order to center the text
 29       int startX   = getSize().width/2 - messageWidth/2;
 30       int baseline = getSize().height/2 - fontDescent/2 + fontAscent/2;
 31       int prev = baseline-fontHeight;
 32       int next = baseline+fontHeight;
 33       int endX = startX+messageWidth+LPAD;
 34       int Y = baseline+fontDescent;
 35 
 36       // Horizontal lines showing the "ascent" of the font
 37       g.setColor (Color.green);
 38       g.drawLine (startX-LPAD,baseline-fontAscent,endX,baseline-fontAscent);
 39       g.drawLine (startX-LPAD,next-fontAscent,endX,next-fontAscent);
 40 
 41       // Horizontal lines showing the "descent" of the font
 42       g.setColor (Color.red);
 43       g.drawLine (startX-LPAD, Y, endX, Y);
 44       g.drawLine (startX-LPAD, prev+fontDescent, endX, prev+fontDescent);
 45 
 46       // Base lines for three lines of text
 47       g.setColor (Color.white);
 48       g.drawLine (startX-LPAD, baseline, endX, baseline);
 49       g.drawLine (startX-LPAD, prev, endX, prev);
 50       g.drawLine (startX-LPAD, next, endX, next);
 51 
 52       // Vertical line showing left margin
 53       g.drawLine (startX, next+LPAD, startX, prev-LPAD);
 54 
 55       // Three lines of text
 56       g.setColor (Color.black);
 57       g.drawString (message, startX, baseline);
 58       g.drawString (message, startX, prev);
 59       g.drawString (message, startX, next);
 60    }
 61 }