Anda di halaman 1dari 8

BAB 5

TEKS DAN FONT

Dalam grafika komputer, teks manggambarkan tipe khusus dari objek geometri. Serangkaian teks secara
terpadu digambarkan dengan sederet karakter dengan pola pengkodean standar, seperti ASCII dan
Unicode. Penggambaran bentuk yang sebenarnya dari karakter ditentukan oleh font standar. Geometri
yang menggambarkan bentuk karakter ini dikenal sebagai glyph. Font merupakan kumpulan dari glyph
untuk seluruh abjad.
Java 2D menawarkan kumpulan font dan fitur manipulasi yang banyak. Yang paling tinggi tingkat
penggunaannya adalah pembuatan objek Font dan memanggil metode setFont dan drawString dalam
Graphics2D.
Objek font dapat dibuat dengan konstruktor berikut:

Font(String name, int style, int size)

Nama parameter menentukan nama font atau nama font yang logis. Sebuah font diidentifikasi dengan
nama font (juga disebut dengan nama font), seperti "Times New Roman." Font yang tersedia di lingkungan
tergantung pada platform. Java juga mendukung font logis untuk meningkatkan portabilitas. Sebuah font
logis dipetakan ke font fisik pada sistem tertentu. Misalnya, font logis "SansSerif" dipetakan ke "Arial" di
sistem Windows. Lima keluarga font logis yang selalu didukung di Jawa.

Serif
SanSerif
Monospaced
Dialog
DialogInput

Parameter style adalah digunakan untuk memilih bentuk font. Tiga bit didefinisikan dalam huruf, dan
mereka dapat dikombinasikan dengan bitwise ATAU "|" operator:

PLAIN
ITALIC
BOLD

Parameter ukuran digunakan untuk menentukan poin ukuran font.


Objek Font dapat dipilih dalam objek Graphics2D dengan method:
void setFont(Font font)

Font akan menyebabkan efek panggilan subsequent ke method selanjutnya untuk membentuk teks:
Void drawString(String s, int x, int y)
void drawString(String s, float x, float y)

Selain menerapkan font yang ada di sistem, juga memungkinkan untuk mendapatkan font baru dari font
yang sudah ada dengan memodifikasi atribut tertentu. Berikut metode di kelas Font untuk menghasilkan
font turunan:

Font deriveFont(int style)


Font deriveFont(float size)
Font deriveFont(int style, float size)
Font deriveFont(AffineTransform tx)
Font deriveFont(int style, AffineTransform tx)
Font deriveFont(Map attributes)

Listing berikut mendemonstrasikan fitur-fitur font:

Listing 5.1 FontFun1.java


import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;
import java.awt.font.*;
public class FontFun1 extends JApplet {
public static void main(String s[]) {
JFrame frame = new JFrame();
frame.setTitle("Fonts");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new FontFun1();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}

public void init() {


JPanel panel = new FontPanel();
getContentPane().add(panel);
}
}

class FontPanel extends JPanel {


public FontPanel() {
setPreferredSize(new Dimension(640, 480));
setBackground(Color.white);
}

public void paintComponent(Graphics g) {


super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
//menentukan nama, bentuk, dan ukuran font
Font font = new Font("Serif", Font.BOLD, 75);
//transformasi affine
AffineTransform tx = new AffineTransform();
tx.shear(0.5, 0);
//font turunan hasil modifikasi dengan
//transformasi affine
g2.setFont(font.deriveFont(tx));
g2.drawString("UIN Malang", 50, 125);
}
}
Latihan:
Ketiklah kode program diatas. Kemudian compile dan jalankan. Apa yang dihasilkan oleh
program tersebut? Jelaskan!
Jawab:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

Java 2D juga menyediakan fungsi-fungsi lanjutan yang berhubungan dengan operasi font. Secara khusus,
glyphs karakter dalam font dapat diambil sebagai objek Shape.

GlyphVector createGlyphVector (FontRenderContext frc, String str)


FontRenderContext obyek yang mendefinisikan ukuran tertentu yang diperlukan untuk merender font.
Hal tersebut dapat diperoleh dari objek shape Graphics2D oleh memanggil metode getFontRender-
Context. Setelah objek GlyphVector dibuat, maka obyek Shape sesuai dengan glyphs dapat diperoleh
dengan metode GlyphVector berikut:

Shape getOutline ()
Shape getOutline (float x, float y)

Parameneter x and y menentukan lokasi untuk rendering yang glyphs. Listing berikut mendemonstrasikan
teknik glyph

Listing 5.2 FontFun2.java


import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;
import java.awt.font.*;

public class FontFun2 extends JApplet {


public static void main(String s[]) {
JFrame frame = new JFrame();
frame.setTitle("Fonts");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new FontFun2();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}

public void init() {


JPanel panel = new FontPanel();
getContentPane().add(panel);
}
}

class FontPanel extends JPanel {


public FontPanel() {
setPreferredSize(new Dimension(640, 480));
setBackground(Color.white);
}

public void paintComponent(Graphics g) {


super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
Font font = new Font("Serif", Font.BOLD, 75);

FontRenderContext frc = g2.getFontRenderContext();


GlyphVector gv = font.createGlyphVector(frc, "UIN Malang");
Shape glyph = gv.getOutline(100,100);
g2.setStroke(new BasicStroke(3.0f));
g2.rotate(Math.toRadians(45), 100, 100);
g2.draw(glyph);
g2.setColor(Color.blue);
g2.fill(glyph);

}
}
Latihan:
Ketiklah kode program diatas. Kemudian compile dan jalankan. Apa yang dihasilkan oleh
program tersebut? Jelaskan!
Jawab:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________

Listing berikut mendemonstrasikan teknik menampilkan string menggunakan dengan menggunakan


modifikasi warna pada stroke (outline) dan pewarnaan pada area srting (huruf) yang ditampilkan:
Listing 5.3 FontFun3.java
import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;
import java.awt.font.*;
public class FontFun3 extends JApplet {
public static void main(String s[]) {
JFrame frame = new JFrame();
frame.setTitle("Fonts");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new FontFun3();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}

public void init() {


JPanel panel = new FontPanel();
getContentPane().add(panel);
}
}

class FontPanel extends JPanel {


public FontPanel() {
setPreferredSize(new Dimension(640, 480));
setBackground(Color.white);
}

public void paintComponent(Graphics g) {


super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
//menentukan nama, tipe, ukuran
Font font = new Font("Serif", Font.BOLD, 75);

//String yang ditampilkan


FontRenderContext frc = g2.getFontRenderContext();
GlyphVector gv = font.createGlyphVector
(frc, "UIN Malang");
Shape text = gv.getOutline(100,100);
//men-set ketebalan garis outline
g2.setStroke(new BasicStroke(5.0f));
//men-set warna garis outline
g2.setColor(Color.RED);
//putar sebesar 45 derajat
g2.rotate(Math.toRadians(45), 100, 100);
//menampilkan string
g2.draw(text);
//menset warna gradien

GradientPaint warnaGradien2 = new GradientPaint


(125,100,Color.blue,400,100,Color.green,false);
//menset warna dengan warna gradien
g2.setPaint(warnaGradien2);
//g2.setColor(Color.GREEN);
//mengisi string dengan warna gradien
g2.fill(text);
}
}
Latihan:
Ketiklah kode program diatas. Kemudian compile dan jalankan. Apa yang dihasilkan oleh
program tersebut? Jelaskan!
Jawab:
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
____________________________________________________________________________________
Tugas Projek
Tahap IV
Lengkapilah program yang sudah Anda buat sebelumnya dengan menu yang digunakan untuk
menampilkan text. Lihat screenshot berikut:

Gambar 3.1 Menu (objek) teks, (tipe garis) tipis, gradien (warna) terpilih

Keterangan:
1. Tampilan di atas hanya merupakan contoh saja.
2. Silahkan membuat program menurut kreativitas masing-masing, misalnya:
✔ Ditambah menu “pilihan warna” untuk menentukan warna (merah, kuning, hijau, dll)
menggunakan radioButton.
✔ Ditambah TextField yang digunakan untuk menentukan ketebalan garis.
✔ Dll
3. Penambahan menu “warna” diharapkan dapat diselesaikan dalam satu minggu, supaya tidak
terbebani pada tahapan projek berikutnya.
4. Happy codding…!

--- End of File ---

Anda mungkin juga menyukai