c64-keyboard-font rebuilds Commodore 64 keycap lettering from photographs
Photo-based reconstruction of classic Commodore 64 keycap lettering, with desktop fonts, webfont, editable outlines, and a specimen.
At a glance
- What is it?
- c64-keyboard-font is a CC0 typeface reconstructed from photographs of a single Central European Commodore 64 keyboard, with cleaned-up outlines, function-key labels and all 63 PETSCII graphic front legends. It ships TTF, OTF and WOFF2 files plus a preview package, and it is a font of printed keycaps rather than the machine's screen bitmap.
- Who is it for?
- c64-keyboard-font suits a designer or developer who wants authentic Commodore 64 keycap shapes in a document, a web project or a retro interface, and it is the wrong choice for a project that needs the machine's actual screen font, since lowercase input is deliberately folded to uppercase and the outlines are reconstructions rather than the character ROM.
- Can I use it commercially?
- Yes. CC0-1.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 15 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A font taken from plastic rather than from a character ROM
c64-keyboard-font is a font recreated from photographs of classic Commodore 64 keycaps, with cleaned-up shapes and consistent proportions. That single sentence contains the whole idea and also the whole caveat.
The Commodore 64 is famous for a screen character set that is blocky, restricted and unmistakably 1980s. This font is not that. It is the lettering printed on the physical keys, the letters, numbers and symbols moulded into the caps of the machine's keyboard, redrawn as vector outlines and packaged as a typeface you can install in any application.
The distinction matters for anyone deciding whether to use it. A retro interface usually wants the screen font, the sharp pixel grid of the character generator, and this project deliberately does not provide that. What it provides is the physical object, the thing on the keycap, which is a different aesthetic and a different set of problems, since a moulded plastic symbol has curves, ink spread and print proportions that a pixel grid does not have.
The author is Levente Szabadkai, and the licence is CC0 1.0 Universal, so the whole repository, font files, outlines, scripts, documentation and specimen images, can be used, modified and redistributed, including commercially, without attribution.
The last push was on 2026-10-07, and the recent tags are v1.112, v1.111 and v1.110, all published on the same day, 2026-10-07.
One physical keyboard is the reference for every glyph
The source section of the README is short and it explains both the strength and the limit of the project.
The lettering comes from the author's own Commodore 64, a Central European unit, and its keycaps are the reference for every letter, number and symbol in the font. There is a photograph of that keyboard in the repository, and two comparison images, one named for the latest reference and one for normalization, which suggests the process involves comparing successive renders against the photograph and adjusting proportions.
The limitation follows directly. A Central European Commodore 64 is not the same keyboard as every other one ever made, and the legends on a Central European unit differ in places from those on other regional machines. A glyph that matches this keyboard's keycap may therefore differ slightly from the keycap on a machine sold elsewhere.
What the documentation is careful about is the relationship between the photograph and the outlines. The PETSCII symbols are described as reconstructed outlines, where identities and key assignments come from the Ultimate Commodore 64 Reference and frame thickness, curves and print proportions are inferred from the keyboard photograph. They are not exact photo traces.
That is the honest framing, and it is a sensible one. A true trace of a moulded symbol carries the lighting, the wear and the lens distortion of the photograph, all of which are noise. Inferring the outline from the photo while taking the identity from a reference document is the way to get a usable glyph set.
What the font actually contains
The included glyphs are listed in the README, and the list is worth reading closely because it defines the scope.
There are uppercase letters, numbers, punctuation, arrows, the pound sign and pi. There are selected accented letters, including Hungarian characters, which is a direct consequence of the source keyboard being a Central European unit. There are function-key labels f1 to f12. And there are all 63 PETSCII graphic front legends, arranged by key in the preview.
One behaviour is unusual and deliberate. Lowercase input displays as uppercase. That is not a limitation of the drawing, it is the point, because a Commodore 64 keycap for a letter shows the uppercase form, so a font that reproduced the keycaps has nothing to show for a lowercase character.
The distinction the project keeps drawing is between the printed legends and the screen bitmap font. The README states that the font recreates printed key legends, including smooth geometric reconstructions of the PETSCII graphics, rather than the screen bitmap font. Anyone expecting the familiar blocky character set will find something else here, and anyone who wants the keycap look will find exactly what they were after.
The pi character comes with its own small detail. It is unframed, as on the key, and it also works with the Commodore key according to the PETSCII section.
Left legends, right legends and where the codes live
The PETSCII half of the font needs some explanation, and the documentation provides it.
The left legends correspond to Commodore plus key, and the right legends to Shift plus key in uppercase and graphics mode. A PETSCII reference sheet is included in the repository, and the preview exposes the symbols through a set of buttons so you can insert them into the type tester and copy them into your application.
The encoding itself is not guesswork. The identities and key assignments come from the Ultimate Commodore 64 Reference, and the project links that source, while the key map and encoding guide with the codes and keyboard combinations lives in docs/PETSCII.md.
There is a practical constraint here that catches people. The preview handles the special character codes for you, but copied symbols need this font to display correctly. In other words, the workflow is: pick a symbol in the preview, copy the text, paste it into your application, and make sure C64 Keyboard is the selected font there, otherwise the character will render as a missing glyph or a substitute.
There is also a versioning note worth knowing if you already use the font. If you have an earlier version installed, replace it with version 1.112 and restart the applications that still show the old font, because the former U+E000 symbol and the U+E020 to U+E028 key-name legends are no longer included. Those code points have been dropped rather than moved, which means anything that referenced them will break until it is updated.
The toolchain that redraws a keycap
The repository ships editable outlines and the scripts that turn them into fonts, which is what makes this a project rather than a set of files.
The editable outlines are in glyphs/ and the build tools in scripts/, with the build instructions in docs/BUILDING.md and the version history in CHANGELOG.md. The Python dependencies describe the pipeline:
pillow==12.3.0
fonttools[woff]==4.66.1
numpy==2.5.3
opencv-python-headless==5.0.0.93
skia-pathops==0.9.2The shape of that list says a lot. Pillow and numpy handle raster work, which is the image side of tracing and comparing against the photograph. OpenCV in its headless build is the imaging library for the same reason, chosen in the headless variant so the build does not need a display server. skia-pathops is the interesting one, because boolean path operations on outlines are what you need to clean up a traced shape, to remove overlaps and to produce a well-formed contour. And fontTools with the woff extra is what turns the cleaned outlines into a TTF, an OTF and a WOFF2 webfont.
Every version is pinned exactly, which is what you want for a build that has to produce the same output on a maintainer's machine and on a contributor's machine, since the comparison images in the repository are only meaningful if the rendering is reproducible.
The preview is a static preview.html file, and the complete package C64-Keyboard.zip bundles the fonts with it, so the specimen can be opened locally without a server.
Installing the font and using the specimen
Using the font is ordinary, and the documentation is explicit about the sequence.
Install the TTF or the OTF, then select C64 Keyboard in your application. There is a webfont as well, a WOFF2 file, for use on the web, and a complete package that contains the fonts together with a preview page.
To try it out, the online preview is the quickest route, or you can download and extract the complete package and open preview.html. The type tester in the preview is where the PETSCII symbols are inserted, by clicking a function-key or PETSCII button, and then the text is copied from the tester into your application where you select C64 Keyboard as the font.
That flow is the practical centre of the project, and it exists because the PETSCII characters are not typeable. There is no keyboard combination on a modern machine that produces them, so the preview is the input method, and the font is what makes the result render.
The repository also carries a specimen.png preview image and the raw keyboard.jpg reference, so you can judge the reconstruction against the photograph without installing anything at all.
CC0 for the work, trademarks stay with someone else
The licence section is the most carefully worded part of the README and it deserves a close reading.
To the extent possible under law, Levente Szabadkai dedicates the copyright and related rights he holds in the repository to the public domain under CC0 1.0 Universal. The documentation lists what that covers: the font files, the editable outlines and traces, the build scripts, the preview, the documentation, the mappings and the specimen images. The permission is broad, use, modify and redistribute, including commercially, without attribution.
Then there are the two limits, and they matter.
The first is that the close-up photographs used for tracing are not included. So the reference images stay out of the repository, whatever their licence status.
The second is that CC0 does not grant rights held by others in the historical keycap designs or in any trademarks. A reconstructed letterform is arguably a drawing of a design that someone else created, and the project is careful not to claim otherwise. The closing line is explicit: C64 Keyboard is an independent, unofficial reconstruction and is not endorsed by Commodore.
That is the shape of a careful licence, and for a team using the font in a commercial project the practical advice is short. Use it, modify it, sell it if you want, and keep the project name and any Commodore marks out of your product name.
Editorial conclusion
c64-keyboard-font suits a designer or developer who wants authentic Commodore 64 keycap shapes in a document, a web project or a retro interface, and it is the wrong choice for a project that needs the machine's actual screen font, since lowercase input is deliberately folded to uppercase and the outlines are reconstructions rather than the character ROM. Before using the PETSCII symbols, check docs/PETSCII.md for the code points, and note that copied symbols only render correctly where the font itself is installed.
Frequently asked questions
What is the c64-keyboard-font?
It is a typeface recreated from photographs of classic Commodore 64 keycaps, with cleaned-up shapes and consistent proportions, published under CC0 1.0 Universal. It reproduces the printed key legends rather than the machine's screen bitmap font.
Which characters does the C64 Keyboard font include?
Uppercase letters, numbers, punctuation, arrows, the pound sign and pi, selected accented letters including Hungarian characters, function-key labels f1 to f12, and all 63 PETSCII graphic front legends. Lowercase input displays as uppercase, because the keycaps show uppercase forms.
How do I insert the PETSCII symbols?
Open the online preview or preview.html and click the function-key or PETSCII buttons, which insert the symbols into the type tester, then copy the text into your application and select C64 Keyboard. The codes and keyboard combinations are documented in docs/PETSCII.md, and the copied symbols need the font installed to render.
What happened in version 1.112 of c64-keyboard-font?
The former U+E000 symbol and the U+E020 to U+E028 key-name legends are no longer included, so anyone with an earlier version installed should replace it with version 1.112 and restart applications that still show the old font.
Can I use the C64 Keyboard font commercially?
Yes. The author dedicated the font files, editable outlines, build scripts, preview, documentation, mappings and specimen images to the public domain under CC0 1.0 Universal, which permits use, modification and redistribution, including commercially, without attribution. The underlying keycap designs and trademarks remain with others, and the project is an unofficial reconstruction not endorsed by Commodore.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/szabadkai-c64-keyboard-font)Was this useful?