Graphics support
   Cross Platform
   Release notes
   Get it
Keil LCD extension
Display library



Can FontGen scale the fonts?

FontGen cannot scale any fonts. But you can select the font size during conversion. Consider that you chosed "Arial" font to be converted. As long as the font supports various sizes, you can select either 8 font size or 32 fontsize. The outputs for these two selections will be quite different. You can verify this using the trial version.

Does FontGen have a mouse driven GUI where a user can click pixel squares on/off to define custom fonts, and generate the bitmap patterns from scratch?

FontGen does not have an interface for you to create your own fonts using mouse clicks. FontGen can only convert BMP images, and fonts installed on your system to a C file.

Can FontGen produce the outputs by scanning the columns, not the rows?

FontGen is creating C code for the selected Windows font. But it does scan the rows, not the columns. The first byte of a glyph will hold the first 8 pixels of the first row of the glyph. You can see a sample glyph below:

                0x0C, 0x00,         /*  [    **     ]  */
                0x1E, 0x00,         /*  [   ****    ]  */
                0x1E, 0x00,         /*  [   ****    ]  */
                0x1B, 0x00,         /*  [   ** **   ]  */
                0x33, 0x00,         /*  [  **  **   ]  */
                0x31, 0x80,         /*  [  **   **  ]  */
                0x7F, 0x80,         /*  [ ********  ]  */
                0x60, 0xC0,         /*  [ **     ** ]  */
                0x60, 0xC0,         /*  [ **     ** ]  */
                0xC0, 0x60,         /*  [**       **]  */

FontGen cannot scan the columns, but you can use its rotation feature to have the same effect. Below is the output of the 270 degrees rotated glyph:

                0x80, 0x00,         /*  [*         ]  */
                0xF0, 0x00,         /*  [****      ]  */
                0x7C, 0x00,         /*  [ *****    ]  */
                0x1F, 0x80,         /*  [   ****** ]  */
                0x13, 0xC0,         /*  [   *  ****]  */
                0x11, 0xC0,         /*  [   *   ***]  */
                0x17, 0x80,         /*  [   * **** ]  */
                0x1E, 0x00,         /*  [   ****   ]  */
                0x78, 0x00,         /*  [ ****     ]  */
                0xE0, 0x00,         /*  [***       ]  */
                0x80, 0x00,         /*  [*         ]  */

Here, the column is scanned from bottom to top; and below is the "flip-Y" is selected with the 270 degrees rotation:

                0x00, 0x40,         /*  [         *]  */
                0x03, 0xC0,         /*  [      ****]  */
                0x0F, 0x80,         /*  [    ***** ]  */
                0x7E, 0x00,         /*  [ ******   ]  */
                0xF2, 0x00,         /*  [****  *   ]  */
                0xE2, 0x00,         /*  [***   *   ]  */
                0x7A, 0x00,         /*  [ **** *   ]  */
                0x1E, 0x00,         /*  [   ****   ]  */
                0x07, 0x80,         /*  [     **** ]  */
                0x01, 0xC0,         /*  [       ***]  */
                0x00, 0x40,         /*  [         *]  */

You can verify this using the trial version.

Can FontGen create fixed (or variable) width fonts?

FontGen can create both fixed with and variable width fonts. The result depends on the characteristics of the selected font for the conversion process.

If the selected font is a fixed-width font, like Arial New, the created font will have width of all glpyhs the same. (For such fonts the glyph_width field of struct FONT_DEF will be nonzero and will hold the fixed-width)

If the selected for is variable-width font, like Times New Roman, the created font will have different width information for all glpyhs. (For such fonts the glyph_width field of struct FONT_DEF will be zero and width_table field will point to the width table array)

What is this "display library" about?

Display library is offered as source code upon purchasing any version of FontGen. It is coded in C and verified with Keil uVision development environment and Keil LCD extension.

What is "unicode"?


Fundamentally, computers just deal with numbers. They store letters and other characters by assigning a number for each one. Before Unicode was invented, there were hundreds of different encoding systems for assigning these numbers. No single encoding could contain enough characters: for example, the European Union alone requires several different encodings to cover all its languages. Even for a single language like English no single encoding was adequate for all the letters, punctuation, and technical symbols in common use.

These encoding systems also conflict with one another. That is, two encodings can use the same number for two different characters, or use different numbers for the same character. Any given computer (especially servers) needs to support many different encodings; yet whenever data is passed between different encodings or platforms, that data always runs the risk of corruption.

Unicode is changing all that! Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language.

Read more from and wikipedia.

How can I insert chinese glyphs to the FontGen user interface with a western keyboard?

First you need the determine the character codes you're interested in. For this, you can use this simple application.

You can copy from that tool to FontGen, or use popup menu of FontGen to insert the character codes you're interested in.

The graphic above is a visual roadmap to the Basic Multilingual Plane. The colours in use are:

  •  Black  = Latin scripts and symbols
  •  Light Blue  = Linguistic scripts
  •  Blue  = Other European scripts
  •  Orange  = Middle Eastern and SW Asian scripts
  •  Light Orange  = African scripts
  •  Green  = South Asian scripts
  •  Purple  = Southeast Asian scripts
  •  Red  = East Asian scripts
  •  Light Red  = Unified CJK Han
  •  Yellow  = Aboriginal scripts
  •  Magenta  = Symbols
  •  Dark Grey  = Diacritics
  •  Light Grey  = UTF-16 surrogates and private use
  •  Cyan  = Miscellaneous characters
  •  White  = Unused


What is this Keil LCD extension about? Does this run on the PC or the micro?

Keil uVision development environment has an interface you to install 3rd party DLLs to simulate specific HW components. Keil LCD extension is such a DLL to simulate an LCD controller which is quite similar to Toshiba's T6963C controller.

When you install this DLL, you can view the "virtual LCD" on your PC; as you view the serial port, timers, and I/O ports. A sample view of this "virtual LCD" is shown here for this extension.

So in short, Keil LCD extension is an LCD simulator which runs on your PC, and has nothing to do with the actual micro. It just helps you to design and debug your LCD or user interface code, much much more faster, since it does not need a real micro, LCD to run.

We use the <your controller here> controller, would you know if it is the same one?

Both FontGen and display library has nothing to do with the actual LCD controller. They rely on an LCD controller driver module, which is expected to be written by you.

If you ask about the Keil LCD extension, it will work with only T6963C controller.

When I paste text from some applications to FontGen, I see some glyphs I do not want in the extended mapping table. Why does this happen?

FontGen operates works with Unicode characters natively, even for its basic/Latin version. MS Windows was using single byte character codes and with its character set definitions, it is able to show many different characters which is more than 2^8 in total.

Consider you try the AltGr+code key combinations to insert characters in your command prompt. You may copy and paste this character to FontGen, and see that FontGen says its code is not the code you used with AltGr.

This is basically occurs because while pasting to FontGen, MS Windows sends the unicode character code for the copied glyph. For example glyph for code 0xDD in command prompt will be sent as 0x0130 to FontGen with the windows-1254 character set.

So basically this is not a bug or problem, but something how MS Windows works.

But the main problem raises when you type some strings in your IDE which does not work with unicode characters natively, like Keil uVision . It will store the character code of the glyphs you type from the current windows code page (like 0xDD for the example above). However FontGen extended mapping table is generated to be searched for code 0x0130. For such configuration you'll not be able to print anything for your glyph.

The solution to this issue is to use the "care current codepage" checkbox on the FontGen user interface. When it is checked, the unicode character codes are converted to the single byte codes if there is a mapping for the current windows codepage.

Read more about character sets and codepages at microsoft.

In the example files I see a limitation. The mapping table have a limitation of 256 characters and unicode character codes are treated as 8 bit code. What happen if I encode 500 chinese characters?

You're right that the legacy mapping table has a limitation of max 256 characters. This table is expected to be indexed with (unicode_char & 0xFF).

This design intend does not cause any problem as long all the glyphs you're working in at the same 256-byte character range ((glyph_code & 0xFF00) is the same for all your glyphs). Otherwise the legacy mapping table is no good for you, even it is quite efficient to address it for any character.

This is why FontGen have the extended mapping table mechanism. It eliminates the problems mentioned above and still provides a fast indexing with the binary search mechanisms since it is ordered.

What is the extended mapping table for?

Extended mapping table is intended to fix the limitations of legacy mapping table. See above for this limitation.

What is "Font size must be between 0 and 0 points" warning about?

If you're experiencing font selection problem with the following warning/screens, make sure that you do not have ImageFox installed. ImageFox can cause this problem, and all will be OK when ImageFox is turned off.


Copyright 2006-2015 - dreamsware -