Membuat custom Font sendiri di J2ME


Saya menemukan masalah dengan pembentukan font dalam satu image (png) yang dihasilkan oleh MWT MicroFont-Maker. Untuk font yang memiliki lebar tetap (dengan style Serif) tidak ada masalah, namun akan menjadi masalah jika ternyata lebar setiap karakter berbeda-beda. Lalu saya mencoba mengubah sedikit contoh program yang tersedia di forum nokia, agar dapat menampilkan karakter dengan lebar yang berbeda-beda. Gambar font tetap dibentuk dengan tool MicroFont-Maker :

java -jar microfont-maker.jar /usr/share/fonts/msttcore/arial.ttf  traceme_char.txt default 12 000000 tracemefont -dir -png

Perintah tersebut akan membuat sebuah file font image bernama tracemefont.png dan juga terbentuk sebuah folder bernama tracemefont yang berisi file-file image karaketer yang membentuk file image font tracemefont.png. Setiap gambar yang dihasilkan dalam folder bernama <KODE_KARAKTER>.png. Kode karakter dapat berubah unicode ataupun ascii tergantung pada encoding yang kita berikan pada perintah microfont-maker sebelumnya.

Begikut adalah deklarasi class CharFonts yang saya kembangkan :

import java.io.IOException;
import java.util.Hashtable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/**
*
* @author budsus
*/
public class CharFonts {
private static String sequence = “1234567890-‘\”.,:\u00BAABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”;
private static Hashtable fontChars;

public static void inialise(String fontname) throws IOException {
fontChars = new Hashtable();
for(int i=0; i < sequence.length(); i++) { char c = sequence.charAt(i); int code = c; fontChars.put(new Integer(code), Image.createImage( fontname + "/" + code + ".png") ); } fontChars.put(new Integer(32), Image.createImage( fontname + "/32.png") ); } public static int drawChar(Graphics g, char ch, int x, int y) { // find the position in the font if (ch != ' ') { int i = sequence.indexOf(ch); System.out.println(i); if (i == -1) { throw new IllegalArgumentException("unsupported character"); } } int code = ch; Integer key = new Integer(code); Image img = (Image)fontChars.get(key); int wChar = img.getWidth(); // draw it g.drawImage(img, x, y, Graphics.TOP | Graphics.LEFT); return wChar; } public static void drawString(Graphics g, String s, int x, int y) { // this is faster than using s.charAt() char[] chs = s.toCharArray(); for (int i = 0; i < chs.length; i++) { x += drawChar(g, chs[i], x, y); } } } [/sourcecode] Berikut adalah contoh hasil dari pemakaian class CharFonts untuk menampilkan karakter derajat : [caption id="attachment_435" align="aligncenter" width="225" caption="Contoh Custom Font di J2ME"]Contoh Custom Font di J2ME[/caption]

2 thoughts on “Membuat custom Font sendiri di J2ME

Komentar ditutup.