initial commit: gd-controls plugin scaffolding

- promptfont font assets and license
- key_mapping CSVs for Godot input bindings and prompt-font glyphs
  across keyboard/mouse, PC/Xbox/Sony/Nintendo controllers, and touch
- gen.py generates prompt_font_mapping.gd from key_mapping/promptfont.csv,
  splicing between STARTGEN/ENDGEN markers
- device, manager, file_manager scaffolding (work in progress)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Daniel Samson
2026-04-28 23:07:46 +01:00
co-authored by Claude Opus 4.7
commit ab63851a74
38 changed files with 36469 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
## About PromptFont
This is a font designed for user interfaces and button prompts in games. It includes the base alphabet, icons for keys, gamepad buttons, devices, and a wide variety of general user interface icons like stats, actions, items, attributes, and more. All the icons included in the font are custom made and available under the same [SIL Open Font Licence](LICENSE.txt). Included trademarks however of course still belong to their respective owners.
PromptFont is based on the Xolonium font by Severin Meyer.
## Attribution
If you use this font in your project please leave an attribution notice in your credits like this:
> PromptFont by Yukari "Shinmera" Hafner, available at https://shinmera.com/promptfont
## Release Files
The [PromptFont release](https://codeberg.org/shinmera/promptfont/releases/download/latest/promptfont.zip) includes a couple of files. Here's what they're for:
- ``LICENSE.txt``
A copy of the SIL Open Font license
- ``README.md``
A copy of this readme
- ``index.html``
A copy of the [website](https://shinmera.com/docs/promptfont) so you can use it offline as well
- ``glyphs.json``
This is a JSON file with an array of the glyphs the font provides. Each glyph is an object with the following attributes:
- ``character`` The actual character as a one-character string
- ``code`` The unicode codepoint name (``U+XXXX``)
- ``codepoint`` The actual codepoint as an integer
- ``category`` The category the glyph belongs to
- ``name`` The unique human-readable name of the glyph
- ``code-name`` The unique code-readable name of the glyph. It only contains lowercase characters a-z, numbers 0-9, and dashes. This should make it easy to turn into a code symbol
- ``tags`` A list of tags that apply to the glyph. There are a number of tags for glyph variants and so on, but the most important categories are probably:
- ``analog`` Analog stick movements and `l`, `r`, `s` for the sticks
- ``button`` Button presses and `x`, `y`, `a`, `b`, `l1`, `r1`, `l3`, `r3`, etc for the buttons
- ``dpad`` Dpad movements
- ``key`` Keyboard keys
- ``touch``, ``press``, ``hold``, ``release``, ``move-l``, ``move-r``, ``move-u``, ``move-d``, etc for movements
- ``device`` Device icons
- ``xbox`` Applies to Xbox style gamepads
- ``nintendo`` Applies to Nintendo style gamepads
- ``sony`` Applies to Sony Playstation style gamepads
- ``generic`` Applies to any gamepad
- ``ui`` User interface icons
- ``wide-alternate`` The glyph has a wider alternate variant to its standard unit square representation. You can get the variant by shifting the codepoint up by 2560 (`0xA00`). If you use a text system that supports ligatures, you can instead use a zero-width space (`U+200B`) after a glyph to select its wide variant, if available. Since the zero-width space is invisible, if no wide alternate is available, it won't be visible that you tried to select for one, making the process completely transparent.
- ``backfill`` This is a backfill glyph, intended for use together with another appropriate glyph. By using a different colour for the backfill glyph than for the following glyph, you can provide additional contrast and styling control for your prompt displays. If you use a text system that supports ligatures, you can instead use a zero-width joining space (`U+200A`) after a glyph to select its appropriate backfill glyph. So to create, for instance, a backfilled left click, you would write ``\\u278A\\u200A\\u278A`` and change the text colour for the first two and third characters.
- ``tags.txt``
A plaintext CSV file that maps all of the tags to the ``code-name`` of each glyph that was tagged as such. Each line is simply the tag name followed by the code names separated by a space.
- ``promptfont.txt``
A plaintext UTF-8 file that contains all the characters that the font provides.
- ``promptfont.ttf`` ``promptfont.otf`` ``promptfont.woff`` ``promptfont.woff2``
Compiled versions of the font, which you should be able to use directly in-engine or other programs.
- ``promptfont.css``
A CSS file that includes CSS classes for every special glyph, so you can easily embed it in HTML pages and JS games.
- ``promptfont.h`` ``promptfont.cs`` ``promptfont.py`` ``promptfont.lua`` ``promptfont.lisp`` ``promptfont.rs`` ``promptfont.gd`` ``promptfont.gml``
Source files that define constants for the special glyphs to allow easier embedding in C, C++, C#, Python, Lua, Lisp, Rust, GDScript and GML.
- ``promptfont.exe`` ``promptfont.run`` ``promptfont.o``
Binaries of the promptfont utilities. You can use this to search for glyphs or to compile the data files from the json representation.
- ``atlas-*.png``
Texture atlases of the various glyphs. Each glyph is 64x64 pixels and has a 1 pixel margin around itself. They are ordered left to right top to bottom according to their filename in the ``glyphs/`` directory of this repository. Since these rasterised versions don't scale well we heavily recommend you to use the fonts directly.
## Engine Specifics
Since there's far too many engines out there and their methods vary a lot, we can't include guides in this repository. For specifics on how to use this font in your engine of choice, please consult the [user-contributed Wiki](https://shinmera.com/project/promptfont/wiki/).
## Contributing Glyphs
For a brief guide on what to watch out for if you'd like to contribute to this font, please see the [CONTRIBUTING.md](CONTRIBUTING.md) file. If you'd like to request new glyphs to be added, please comment on the [issue ticket]().
## Support
If you'd like to support the continued development of PromptFont, please consider becoming a backer on Patreon:
[![Patreon](https://filebox.tymoon.eu//file/TWpjeU9RPT0=)](https://patreon.com/shinmera)