, , ,
|
This four big arrows allow you to shift whole or only marked area
to the four directions: left, right, up and down.
|
,
|
Use this two buttons to rotate marked area of character image. This buttons
rotate only in two directions.
|
,
|
This two buttons allow you do mirroring (up and down, right and left).
|
|
Tap this button to invert whole image or marked area.
|
|
This button clears marked or whole area. The confirmation window will apear before action.
|
|
This button or Mark command in the Edit menu allows you mark
area of character image.
When this button is active (inverted) then mark mode is on.
To mark an area: tap mark button to set marking mode active, tap somewhere
in the drawing area to set first corner of marked area, second time you
tap will finish marking.
|
|
This button or Paste command from Edit menu allows you get image from
clipboard and put it to the place you moved it.
To put image to the buffer: set Paste mode active. Tap somewhere in the
drawing area and image will apear on the screen, move it to the place you
wish to put it and unpress stylus to finish operation.
|
|
This button, Ánd Copy command in the Edit menu copies marked area or whole image
of character to the system clipboard.
|
|
This button or Cut comand in the Edit menu moves marked area to the system
buffer and clears marked area to the editor.
|
PALMOS FONT STRUCTURE.
 Font in the PalmOS looks like 'NFNT' bitmapped font resource which used
on the Macintosh computers. PalmOS font consists of a header component,
which describes the font, and a glyph data information component,
which contains the definitions of the glyphs in the font. See
table below:
+----------------------------------------------------+
| 0. FONT HEADER - (13 words or 26 bytes length). |
+----------------------------------------------------+
| 1. BIT IMAGE TABLE (variable size). |
+----------------------------------------------------+
| 2. BIT MAP LOCATION TABLE (variable size). |
+----------------------------------------------------+
| 3. WIDTH OFFSET TABLE (variable size). |
+----------------------------------------------------+
FONT HEADER:
Font header size is 13 Words (26 Bytes).
The header component is presented by the FontType C structure declaration which shown below:
--- [ Begin part of .../include/PalmOS3/UI/Font.h: ] ---
typedef struct {
SWord fontType; // font type
SWord firstChar; // ASCII code of first character
SWord lastChar; // ASCII code of last character
SWord maxWidth; // maximum character width
SWord kernMax; // negative of maximum character kern
SWord nDescent; // negative of descent
SWord fRectWidth; // width of font rectangle
SWord fRectHeight; // height of font rectangle
SWord owTLoc; // offset to offset/width table
SWord ascent; // ascent
SWord descent; // descent
SWord leading; // leading
SWord rowWords; // row width of bit image / 2
} FontType;
--- [ End part of .../include/PalmOS3/UI/Font.h: ] ---
Explanation of fontheader structure elements:
| fontType
|
Signed word value specifies the general characteristics
of the font (fixed-width, proportional, colors and so on).
Default value for PalmOS ROM fonts is 0x9000.
|
| firstChar |
ASCII code of the first character in font. (0>= x <=255). |
| lastChar |
ASCII code of the last character in font. (0>= x <=255). |
| maxWidth |
Maximum width in the pixels of the widest character in the font. |
| kernMax |
Maximum kerning. An integer value that specifies the distance
from the font rectangle's glyph origin to the left edge of the
font rectangle, in pixels. If a glyph in the font kerns to the
left, the amount is represented as a negative number. If the
glyph origin lies on the left edge of the font rectangle, the
value of the kernMax field is 0.
In the PalmOS this value is 0 by default.
|
| nDescent |
Negated descent value. If this font has very large tables and
this value is positive, this value is the high word of the
offset to the width/offset table (owTLoc).
If this value is negative, it is the negative of the descent
and is not used by the Font Manager.
|
| fRectWidth |
Font rectangle width. An integer value that specifies the width,
in pixels, of the image created if all the glyphs in the font
were superimposed at their glyph origins.
|
| fRectHeight |
Font rectangle height. An integer value that specifies the
height, in pixels, of the image created if all the glyphs in
the font were superimposed at their glyph origins. This value
equals the sum of the maximum ascent and maximum descent
measurements for the font. |
| owTLoc
|
Offset to width/offset table. An integer value that specifies
the offset to the offset/width table from this point in the
font record, in words:
owTloc=rowWords*fRectHeight+(lastChar-firstChar)+8;
If this font has very large tables, this value is only the low
word of the offset and the negated descent value (nDescent) is
the high word:
nDescent=owTloc >> 16;
owTLoc=owTloc & 0xFFFF;
|
| ascent |
Maximum ascent. An integer value that specifies the maximum
ascent measurement for the entire font, in pixels. The ascent
is the distance from the glyph origin to the top of the font rectangle.
|
| descent |
Maximum descent. An integer value that specifies the maximum
descent measurement for the entire font, in pixels. The descent
is the distance from the glyph origin to the bottom of the font
rectangle.
ascent+descent=fRectHeight.
|
| leading |
An integer value that specifies the leading measurement for
the entire font, in pixels. Leading is the distance from the
descent line of one line of single-spaced text to the ascent
line of the next line of text. |
| rowWords |
Bit image row width. An integer value that specifies the width
of the bit image, in words. This is the width of each glyph's bit
image as a number of words.
rowpixels = rowWords * 16.
|
Explanation of glyph data information components:
* Bit image table. The bit image of the glyphs in the font. The glyph
images of every defined glyph in the font are placed sequentially in order
of increasing ASCII code. The bit image is one pixel image with no undefined
stretches that has a height given by the value of the font rectangle element
and a width given by the value of the bit image row width element.
Here is binary view of the BitImageTable of 8 pixels heigh for
three characters: 'A', 'B' and for default char symbol:
+--------+-------+------+.......
-->00000000000000000000000000000000--+
+->00111111011111100111111110000000--+
+->01000010001000010100000010000000--+
01000010001111100100000010000000
01111110001000010100000010000000
01000010001000010100000010000000
11100111011111100111111110000000
00000000000000000000000000000000
+--------+-------+------+.......
The same in the hexadecimal view:
0000 0000 3F7E EF80 4221 4080 423E 4080
7E21 4080 4221 4080 E77E 7F80 0000 0000
NOTE: The image is padded at the end with extra pixels to make its length
a multiple of 16.
* Bitmap location table. For every character in the font, this table
contains a word that specifies the bit offset to the location of the
bitmap for that glyph in the bit image table. If a glyph is missing
from the font, its entry contains the same value for its location as
the entry for the next glyph. The missing glyph is the last glyph of
the bit image for that font. The last word of the table contains the
offset to one bit beyond the end of the bit image.
For the characters 'A', 'B' and default symbol of the previous example
this table is:
0000 000A 0012 0020
You can determine the image width of each glyph from the bitmap
location table by subtracting the bit offset to that glyph from the
bit offset to the next glyph in the table.
* Width/offset table. For every glyph in the font, this table contains
a word with the glyph offset in the high-order byte and the glyph's
width, in integer form, in the low-order byte. The value of the offset,
when added to the maximum kerning value for the font, determines the
horizontal distance from the glyph origin to the left edge of the bit
image of the glyph, in pixels. If this sum is negative, the glyph origin
is to the right of the glyph image's left edge, meaning the glyph kerns
to the left. If the sum is positive, the origin is to the left of the
image's left edge. If the sum equals zero (by default), the glyph origin
corresponds with the left edge of the bit image. Missing glyphs are
represented by a word value of -1 (0xFFFF). The last word of this table
is also -1, representing the end.
Thanks to Timothy Lyangouzov - for the some tips and cyrhack fonts.
If you have some info to add write me please.
DEVELOPER'S CORNER.
Here are fonts from font developers.
| The following fonts are from Erik Van Blokland ( www.letterror.com): |
| LTRBitmaps.zip |
A zip bundle of seven beaty fonts. They ready for fonthack substitutions. |
|
| The following fonts are from Jason R. Cupp:
|
| spinsugar.zip |
Zip archive with SpinSugar fonts. They are very good for system font replacement! |
|
The following fonts .zip archive is from Rainer Zenz: |
|
a-fonts.zip |
  A lot of professional Fonts for all needs. Better readable and elegant fonts, designed as replacement for the Palm OS fonts.
The main family includes 12 fonts for all needs. The rest is everything from Ultra-Small to Blackletter. All with complete additional characters.

|
This font is from Harry Konstas, www.total.net: |
| hkfont.zip |
This is a 40x25 monospaced font (English, code page 437) designed to be used for with QED and onBoardC (for programmers).

|
This font is from Ronald E. Buelow, http://www.ealoha.com/palm |
| coolfnts.zip |
Some Cool Palm Fonts.
Replace your Palm Fonts with something a little more readable, easy to install.
Complete archive includes HackMaster, FontHack and several font tools.

|
The following fonts .zip archive is from Jiro: |
| Fonts.zip |
It is zip archive of beautiful fonts. (Palatino, Verdana, Coronet).
|
|
The following fonts included to the Handy Pilot Font Editor archive: |
| Narrowed.pdb |
You may use it instead PalmOS standard font. |
| Times.pdb |
Times font. Try to replace to large system one. |
| NOTE1: |
Files with .pdb extension are PalmOS databases with one record of font data.
No unpackers needed for them. They are ready to be loaded direct to the Palm(tm) orgainzer memory.
|
| NOTE2: |
If you have placed your fonts to the PalmGear H.Q. site, add it to the
Development:Fonts subcategory too, please.
|
How to embed custom fonts to the program you develop. Palm OS v3.x
It is easy to embed custom fonts to Palm applications you develop.
Here is four steps explanation of how to do it by PalmOS v3.0 API:
- Transfer font database from Palm handheld to your desktop
computer. You will have <font_name>.pdb file in the backup directory.
If you are using PilRC
v2.03 (or higher) by Wes Cherry of Scumby Soft then skip next two steps and improve your .rcp
file with new features.
- Extract font data record from font database file. Use any programmers
binary editor to remove first 88 bytes of database header or use record
to file convertion utility (see internet links
page). Font data begins with 0x9000 value.
- Now you have extracted font data in the fontname.nft file.
This binary file is ready to link as a resource to the program you
are developing.
At the end of Makefile process all files with *.bin extension are linked
to the program as a resources. The first part of *.bin file name is
resource name, the second is resorce ID.
So, to add your font to program you shuld make a copy of extracted font
data file to file with *.bin extension and give it resource name and ID.
Let name font resource as 'pFNT' and its ID 1000 (0x03e8).
For the example in the below, resource file is 'pFNT03e8.bin'.
Just add line 'cp customfont.nft pFNT03e8.bin' to MakeFile before linknig.
- Look at the examples of the GNU C source code:
--- [ globals.h ] ---
#define CustomFont0 129
...
--- [ main.rcp ] ---
...
LABEL "Test of my Font" AUTOID AT (CENTER 64) USABLE FONT CustomFont0
...
--- [ main.c ] ---
static VoidHand FontHandle0;
...
static int StartApplication( void )
{
/* 'pFNT' and 0x03e8 are custom font resourse name and its
hexadecimal reource id. */
FontHandle0=DmGetResource( 'pFNT', 0x03e8);
/* Now we define ID for memory block of custom font. Font ID should
be greater than 128 because values less than 128 are
reserved for system use. */
FntDefineFont( CustomFont0, MemHandleLock( FontHandle0 ));
FrmGotoForm( FormID_MainForm );
return 0;
}
static int StopApplication( void )
{
FrmCloseAllForms();
/* Unlock memory block and release custom font resource */
MemHandleUnlock( FontHandle0 );
DmReleaseResource( FontHandle0 );
return 0;
}
------------------
| NOTE: |
FntDefineFont() function runs only on PalmOS v3.x and higher,
so check version of PalmOS before run this function.
Description of how to embed custom fonts on PalmOS versions 2.x is under writing and will be available soon.
|
Tips for the MetroWerks CodeWarrior(tm) users.
CodeWarrior's (v1.5lite) resource constructor is not allowing use custom font ID at all.
Use third party resource utilites, or change font ID of objects inside of your program.
To add custom font data file as a custom resource to the CodeWarrior project you should follow this steps:
- Go to the 'EDIT menu'->'project name Settings'->'Targets'->'File Mappings'
- Set the following fields: FileType to 'TEXT', extension - '.r', Compiler 'Rez', clear all flags, press 'Change' and 'Save' button.
- Create res.r text file:
--- [ res.r ] ---
...
READ 'pFNT' (0x3e8) "customfont.nft";
...
-----------------------
- Add res.r file to the resources group of the project and do make.
INTERNET LINKS.
Pilot Font Editor by Sergey Menshikov. This is another Palm Pilot font designing tool which works under Windows(tm).
FontHack123 a HackMaster utility to substitute fonts to PalmOS applications.
Pilot Font Tools by New Data Masters. This is another Palm Pilot font editor for Windows(tm).
FontHackPlus by Rick Bram another HackMaster extension for the font substitution.
HackMaster is a tool for managing extensions to the PalmOS. You will need it to run fonthacks.