Problem on creating font using a custom ant task, which extends LWUIT's FontTask.
Posted
by Smithy
on Stack Overflow
See other posts from Stack Overflow
or by Smithy
Published on 2010-04-10T08:27:30Z
Indexed on
2010/04/10
8:33 UTC
Read the original article
Hit count: 240
Hi.
I am new to LWUIT and j2me, and I am building a j2me application for showing Japanese text vertically. The phonetic symbol part of the text should be shown in relatively small font size (about half the size of the text), small Kanas need to be shown as normal ones, and some 'vertical only' characters need to be put into the Private Use Area, etc.
I tried to build this font into a bitmap font using the FontTask
ant task LWUIT provided, but found that it does support the customizations mentioned above. So I decided to write my own task and add those.
Below is what I have achieved:
1 An ant task extending the LWUITTask
task to support a new nested element <verticalfont>
.
public class VerticalFontBuildTask extends LWUITTask {
public void addVerticalfont(VerticalFontTask anVerticalFont) {
super.addFont(anVerticalFont);
}
}
2 The VerticalFontTask
task, which extends the original FontTask
. Instead of inserting a EditorFont
object, it inserts a VerticalEditorFont
object(derived from EditorFont
) into the resource.
public class VerticalFontTask extends FontTask {
// some constants are omitted
public VerticalFontTask() {
StringBuilder sb = new StringBuilder();
sb.append(UPPER_ALPHABET);
sb.append(UPPER_ALPHABET.toLowerCase());
sb.append(HALFWIDTH);
sb.append(HIRAGANA);
sb.append(HIRAGANA_SMALL);
sb.append(KATAKANA);
sb.append(KATAKANA_SMALL);
sb.append(WIDE);
this.setCharset(sb.toString());
}
@Override
public void addToResources(EditableResources e) {
log("Putting rigged font into resource...");
super.addToResources(e);
//antialias settings
Object aa = this.isAntiAliasing()
? RenderingHints.VALUE_TEXT_ANTIALIAS_ON
:RenderingHints.VALUE_TEXT_ANTIALIAS_OFF;
VerticalEditorFont ft = new VerticalEditorFont(
Font.createSystemFont(
this.systemFace,
this.systemStyle,
this.systemSize),
null,
getLogicalName(),
isCreateBitmap(),
aa,
getCharset());
e.setFont(getName(), ft);
}
VerticalEditorFont
is just a bunch of methods logging to output and call the super. I am still trying to figure out how to extend it.
But things are not going well: none of the methods on the VerticalEditorFont
object get called when executing this task.
My questions are:
1 where did I do wrong?
2 I want to embed a truetype font to support larger screens. I only need a small part of the font inside my application and I don't want it to carry a font resource weighing 1~2MB. Is there a way to extract only the characters needed and pack them into LWUIT?
© Stack Overflow or respective owner