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 }