K2FontLCD

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.

Freeware Up to 48×64 px / char Windows · Installer Formato .K2Font
K2FontLCD for Windows Freeware · Installer included · Latest version
DOWNLOAD K2FontLCD
⚠ Windows blocking the installation?
Check the FAQ
01

Introduction

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.

Who is this for?
For firmware and embedded-systems developers using Arduino, STM32, ESP32, MSP430 or any microcontroller driving monochrome LCD screens, with output for LCD controllers T6963 or AK0108.
02

Workflow

The typical process for creating a font from scratch follows these steps:

  1. Choose the character set — Select whether you will work with digits (0–9), uppercase letters (A–Z), lowercase letters (a–z) or graphic digits.

  2. Define the bitmap size — Set the width and height in pixels for each character using the Image Size controls.

  3. Configure the base font — Choose a system font, its size, bold or italic style, and adjust the initial position.

  4. Review and edit each character — Click on any character to see it enlarged and manually touch up its pixels if needed.

  5. Save the project — Save your work in .K2Font format to resume it later.

  6. Generate the code — Press Generate Code to export the data array to the clipboard.

03

The Interface

AreaDescription
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 indicatorWhen edit mode is active, the Edit Mode label appears. In this state size and font controls are locked.
Example text
Below the thumbnail panel a preview of the example text is shown using the current characters. You can customise it from Configuration → Sample text for each set (digits, uppercase, lowercase).
04

Image Size

Image Size defines the pixel dimensions of each character's bitmap. All characters in the set share the same size.

ControlFunction
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.
Important
The size can only be modified before entering edit mode. Once manual pixel editing has begun, the size controls are locked until a new project is created.

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.

05

Text Mode (system font)

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.

Numbers (0–9)

Generates 10 characters, 0 to 9. Starting ASCII code: 48.

Uppercase (A–Z)

Generates 26 characters, A to Z. Starting ASCII code: 65.

Lowercase (a–z)

Generates 26 characters, a to z. Starting ASCII code: 97.

Recommended fonts
Sans-serif fonts (Arial, Tahoma, Verdana, Segoe UI) generally produce better results on low-resolution screens. Serif fonts may generate very fine details that are lost during export.
06

Graphic Digit Mode

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.

Classic DigitsSegments with bevelled ends (diagonal cut at corners). More rounded, classic LCD display look.
Modern DigitsSegments with pointed ends (diamond shape). More stylised and modern look.

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.

Unavailable controls
In digit mode the following are disabled: Auto Size, Horizontal/Vertical Centering, Remove Margin, Font Name, Bold and Italic. Only the image size, thickness and margin controls are active.
07

Font Options

Only available in text modes (Numbers, Uppercase, Lowercase).

OptionDescription
Font nameDropdown list with all fonts installed on Windows. Fonts that cause loading errors are automatically filtered out.
Font sizeBase font size in points. Range: 1 to 65. Affects the stroke size inside the bitmap.
BoldApplies bold style to the selected font.
ItalicApplies italic style to the selected font.
Default font
On startup, the program automatically selects Microsoft Sans Serif as the default font. The font preference is saved with the project.
08

Position and Automatic Alignment

These control how the font is placed inside each character's bitmap.

Auto Size

Automatically calculates the bitmap size to fit exactly the largest character in the set, eliminating wasted space.

Center Horizontal

Centres each character horizontally inside the bitmap. Useful for proportional fonts where each letter has a different width.

Center Vertical

Centres each character vertically inside the bitmap.

Remove Font Margin

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.

Manual position

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.

Tip
Enable Auto Size and Remove Font Margin together for compact bitmaps where the character takes up exactly the space it needs, with no wasted empty pixels.
09

Character Selection

The program shows all characters of the set in the central panel. You can select the active character in three ways:

  • Direct click on the character thumbnail in the central panel.
  • Click on the example text — each character of the example text is also clickable.
  • Previous and Next buttons to navigate sequentially through the set.

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.

10

Manual Pixel Editing

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.

Lock on edit
Once editing is confirmed, the Image Size, Font Position, Font Size, character type, font, bold, italic and alignment options are all locked. To return to creation mode you must press New, which will discard all manual changes.

Brush behaviour

  • The first click determines the edit colour: if the pixel was black it becomes white, and vice versa.
  • While holding the button and dragging, all pixels the cursor touches take the same colour as the first one.
  • Releasing the button ends the painting operation.
11

Shift Pixels

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).

ButtonEffect
UpShifts all pixels one row upward. The bottom row is left blank.
DownShifts all pixels one row downward. The top row is left blank.
LeftShifts all pixels one column to the left. The right column is left blank.
RightShifts all pixels one column to the right. The left column is left blank.
Typical use
These buttons are very useful for adjusting a character's position inside the bitmap without redrawing it, for example to vertically align a decimal point or colon symbol.
12

Undo

The program maintains a history of up to 20 undo steps per editing session. Press Ctrl+Z to undo the last operation.

Undo scope
Undo only works in edit mode. It is not possible to undo font, size or position changes made before entering edit mode. The history resets when changing the selected character.
13

Generate Code

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").

Automatic prefixes
When pressing Generate Code, the label field is automatically pre-filled according to the active set: N for numbers, CMA for uppercase and CMI for lowercase. You can change it freely.
14

Output Format

The export dialog allows you to configure how the code is generated according to the target LCD controller.

OptionDescription
LabelPrefix for each character name in the generated code.
BinaryValues in binary format with "b" suffix. The T6963 controller in 6×8 mode adds two leading zeros.
DecimalValues in decimal format.
HexadecimalValues in hexadecimal format with "0x" prefix.
T6963 controllerGenerates the array with the bit order for the Toshiba T6963 controller. Supports 8×8 and 6×8 mode.
AK0108 controllerGenerates the array with the bit order for the AK0108 controller (8 bits per column, vertical order).
Pins upFlips the data 180° before exporting. Equivalent to rotating the character image, useful when the LCD is mounted upside down.
Result in clipboard
On confirming the export, the code is automatically copied to the clipboard and a message confirms the dimensions of the generated array (columns × rows per character).
15

Projects .K2Font

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.

NewStarts a project from scratch. If there are unsaved changes, it asks before continuing.
OpenLoads an existing .K2Font file. Bitmap data is read directly and the program enters edit mode.
SaveSaves the current project as a .K2Font file. If it is the first time, opens the location and name dialog.
Close with changes
If you try to close the application or open a new project with unsaved changes, a confirmation dialog appears to prevent loss of work.

.K2Font file association

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.

Interface language

The interface is available in Spanish and English. Change the language from Configuration → Language. The preference is saved automatically.

Installation FAQ

1. Why is this software not digitally signed?

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.

2. How can I verify that the application is safe?

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.

3. Windows is blocking the installation and won't let me continue — what should I do?

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:

  1. Open the Windows Security menu.

  2. Go to the App & browser control section.

  3. Click on Smart App Control settings.

  4. Change the status to Off.

💡 Note
Once disabled, Windows will allow you to run the installer without any issues. If you wish, you can re-enable the protection after the installation is complete.

WHAT DOES K2FontLCD OFFER?

  • Font design for complete character sets: digits, uppercase and lowercase.
  • Graphic digit mode in 7-segment style, Classic and Modern variants.
  • Pixel-by-pixel editing with 20-step undo history (Ctrl+Z).
  • Automatic alignment: Auto Size, H/V Centering and Remove Margin.
  • Export compatible with T6963 and AK0108 LCD controllers.
  • Interface available in Spanish and English, with preference saving.

FORMATS AND COMPATIBILITY

  • Projects saved in .K2Font format with file association in Windows.
  • Exports code in binary, decimal or hexadecimal ready to paste into the IDE.
  • Compatible with T6963 (8×8 and 6×8 modes) and AK0108 controllers.
  • Fonts from any font installed on Windows.
  • Free distribution for personal and professional use, no registration or activation required.
  • Desktop application for Windows with installer and uninstaller included.