K2FontLCD is a specialised tool for designing and generating character fonts for monochrome LCD screens.
It lets you create, edit and export complete character sets — digits, uppercase, lowercase and graphic digits — in the exact format required by the firmware, with full control over the size, position and style of each character.
K2FontLCD is a Windows desktop application for designing custom character sets for low-resolution monochrome LCD screens. Unlike operating system fonts, which cannot be used directly on microcontrollers, K2FontLCD generates the exact binary data array your firmware needs to display text on screen.
Each character is represented as a bitmap of up to 48×64 pixels where each pixel can be on (black) or off (white). The program supports up to 26 simultaneous characters (digits 0–9, uppercase A–Z or lowercase a–z) and exports them as a code block ready to paste into the IDE.
The typical process for creating a font from scratch follows these steps:
Choose the character set — Select whether you will work with digits (0–9), uppercase letters (A–Z), lowercase letters (a–z) or graphic digits.
Define the bitmap size — Set the width and height in pixels for each character using the Image Size controls.
Configure the base font — Choose a system font, its size, bold or italic style, and adjust the initial position.
Review and edit each character — Click on any character to see it enlarged and manually touch up its pixels if needed.
Save the project — Save your work in .K2Font format to resume it later.
Generate the code — Press Generate Code to export the data array to the clipboard.
| Area | Description |
|---|---|
| Left panel (zoom view) | Shows the selected character at large size with a grid for pixel-by-pixel editing. The active character is highlighted in blue/gold. |
| Central panel (thumbnails) | Shows all characters of the set at small size. The selected character is displayed in dark blue on gold background. Below it shows the example text with all characters chained together. |
| Controls panel (right) | Contains all settings: character type, font, size, position, alignment options and action buttons. |
| Mode indicator | When edit mode is active, the Edit Mode label appears. In this state size and font controls are locked. |
Image Size defines the pixel dimensions of each character's bitmap. All characters in the set share the same size.
| Control | Function |
|---|---|
| Horizontal bar (X) | Adjusts the bitmap width. Range: 2 to 48 pixels. The current value is shown in the indicator next to the bar. |
| Vertical bar (Y) | Adjusts the bitmap height. Range: 2 to 64 pixels. |
The indicators next to each bar show the current size in pixels. If the resulting size is insufficient for the chosen font, the indicator turns red as a warning.
The Numbers, Uppercase and Lowercase modes generate characters from a font installed on Windows. The program automatically draws each corresponding ASCII character inside the bitmap.
Generates 10 characters, 0 to 9. Starting ASCII code: 48.
Generates 26 characters, A to Z. Starting ASCII code: 65.
Generates 26 characters, a to z. Starting ASCII code: 97.
The Classic Digits and Modern Digits modes do not use system fonts. Instead, the program draws the numbers 0–9 using its own segment-based algorithm, similar to 7-segment displays but adapted to pixels. They are ideal for scoreboards, counters and digital clocks.
In this mode the Line Thickness control replaces the font selector and controls the segment thickness. The Margin control adjusts the internal separation of the segments from the bitmap edge.
Only available in text modes (Numbers, Uppercase, Lowercase).
| Option | Description |
|---|---|
| Font name | Dropdown list with all fonts installed on Windows. Fonts that cause loading errors are automatically filtered out. |
| Font size | Base font size in points. Range: 1 to 65. Affects the stroke size inside the bitmap. |
| Bold | Applies bold style to the selected font. |
| Italic | Applies italic style to the selected font. |
These control how the font is placed inside each character's bitmap.
Automatically calculates the bitmap size to fit exactly the largest character in the set, eliminating wasted space.
Centres each character horizontally inside the bitmap. Useful for proportional fonts where each letter has a different width.
Centres each character vertically inside the bitmap.
Removes each character's own margins (the space the font adds to the left and top). All characters are aligned to the same origin point.
If Auto Size is off, the Font Position X and Y bars allow you to manually shift the font inside the bitmap. The displayed value indicates the displacement in pixels relative to the centre of the bitmap.
The program shows all characters of the set in the central panel. You can select the active character in three ways:
The selected character is highlighted in dark blue on gold background in the thumbnail panel, and shown enlarged in the left editing panel. The Char indicator shows the corresponding ASCII symbol.
Clicking on any pixel in the zoom panel (left) activates edit mode. The first time you edit, the program warns that the bitmap size cannot be changed once editing has begun.
The four directional buttons (Up, Down, Left, Right) shift all pixels of the active character one position in the indicated direction. Pixels that exit from one edge are lost; pixels entering from the opposite edge are white (off).
| Button | Effect |
|---|---|
| Up | Shifts all pixels one row upward. The bottom row is left blank. |
| Down | Shifts all pixels one row downward. The top row is left blank. |
| Left | Shifts all pixels one column to the left. The right column is left blank. |
| Right | Shifts all pixels one column to the right. The left column is left blank. |
The program maintains a history of up to 20 undo steps per editing session. Press Ctrl+Z to undo the last operation.
Press the Generate Code button to open the export dialog. The generated code is automatically copied to the clipboard ready to paste into your IDE.
Before generating, the program checks that a start label has been defined. This label is used as a prefix for each character name in the generated code (for example, with label "F_", character 'A' will be called "F_A").
The export dialog allows you to configure how the code is generated according to the target LCD controller.
| Option | Description |
|---|---|
| Label | Prefix for each character name in the generated code. |
| Binary | Values in binary format with "b" suffix. The T6963 controller in 6×8 mode adds two leading zeros. |
| Decimal | Values in decimal format. |
| Hexadecimal | Values in hexadecimal format with "0x" prefix. |
| T6963 controller | Generates the array with the bit order for the Toshiba T6963 controller. Supports 8×8 and 6×8 mode. |
| AK0108 controller | Generates the array with the bit order for the AK0108 controller (8 bits per column, vertical order). |
| Pins up | Flips the data 180° before exporting. Equivalent to rotating the character image, useful when the LCD is mounted upside down. |
K2FontLCD saves the complete work state in project files with the .K2Font extension: all character bitmaps, set size, font, position, styles and the selected character.
| ›New | Starts a project from scratch. If there are unsaved changes, it asks before continuing. |
| ›Open | Loads an existing .K2Font file. Bitmap data is read directly and the program enters edit mode. |
| ›Save | Saves the current project as a .K2Font file. If it is the first time, opens the location and name dialog. |
From Configuration → Associate files .K2Font you can register the .K2Font extension in Windows so that double-clicking a .K2Font file automatically opens it with K2FontLCD. This operation requires administrator permissions; if the program is not running as such, it will offer to relaunch with the necessary permissions.
The interface is available in Spanish and English. Change the language from Configuration → Language. The preference is saved automatically.
This software is a completely free, non-profit project. Obtaining and maintaining an official Microsoft digital signature involves a high annual cost that is unfortunately not viable for a free project.
Transparency is our priority. Before running the installer, you can scan it on VirusTotal or any other external security tool. There you can verify, using dozens of antivirus engines simultaneously, that the file is 100% free of viruses and malware.
This happens due to a Windows 11 feature called Smart App Control. This tool automatically blocks any software that is not digitally signed, regardless of whether it is safe or not. As an independent developer, the system prevents installation by default.
To install the application, you can temporarily disable this feature by following these steps:
Open the Windows Security menu.
Go to the App & browser control section.
Click on Smart App Control settings.
Change the status to Off.
If K2FontLCD has been useful to you, please consider making a donation.
Every contribution helps maintain and improve the projects.