# Input Action Prompt Icon Font This repo contains a font created from [Kenney's input prompt icons](https://kenney.nl/assets/input-prompts) and converted to a font using [icomoon](icomoon.io). The project includes a Godot demo scene, but the font itself can be used in any engine. ## How to Use Using Godot engine as an example: (the editor theme used here is [Godot Minimal Theme](https://github.com/passivestar/godot-minimal-theme) by passivestar) Use the font in `addons/input_prompt_icon_font/icon.ttf` in Label or RichTextLabel; Enter text like `xbox_button_a` to display the corresponding icon. The icon names match Kenney's icon names. Alternatively, you can open the demo scene in `addons/input_prompt_icon_font/demo/demo.tscn` to see all icon names. The demo folder is safe to exclude from the export; Check also [Exclude-Colored-Folders](https://github.com/univeous/Exclude-Colored-Folders). ## Why Use Fonts Instead of Images? Fonts are vector icons that can be scaled arbitrarily without losing quality. Although Kenney provides SVGs, in Godot they are rasterized upon import, so they cannot be scaled like true vector icons. Additionally, with fonts, we can freely add outlines, shadows, and other effects - something that's difficult to achieve with images. ## Screenshot ## Limitations Fonts (at least icomoon) only support single colors; therefore, multi-colored icons may be difficult to distinguish. Some icons may not display correctly. Due to my limited knowledge of SVG and fonts, I cannot fix this; contributions are very welcome. However, all common keyboard/mouse and controller button icons display correctly. ## Technical Details In icomoon, I used the following JavaScript code in the browser console to automatically fill in ligatures based on names: ```javascript document.querySelectorAll('.liga').forEach(e => { e.value = e.parentNode.parentNode.parentNode.parentNode.children[0].children[0].children[1].innerText; const event = new Event('change', { bubbles: true }); e.dispatchEvent(event); }); ``` ## Credits Kenney's Input Prompts: https://kenney.nl/assets/input-prompts Icomoon: https://icomoon.io/