FontAwesome Converter is a Python tool that allows you to convert FontAwesome icons to PNG format with flexible options. The tool supports both SVG-based and font-based rendering methods and can generate icons in multiple sizes simultaneously.
- 🎨 Multiple Rendering Methods: Convert using SVG or font-based rendering
- 📐 Flexible Size Options: Generate icons in multiple preset sizes (16px to 512px)
- 🔣 Style Support: Convert icons in solid, regular, or brands styles
- 🎭 Color Customization: Apply custom colors to your icons
- 📁 Organized Output: Automatically organizes icons by size in separate folders
- 🔄 Batch Processing: Convert individual icons or the entire icon set
- 📊 Logging Control: Adjustable verbosity with multiple log levels
pip install fontawesome-converter
# Clone the repository
git clone https://github.com/SakuraPuare/fontawesome-converter.git
cd fontawesome-converter
# Install the package
pip install -e .
The /path/to/fontawesome
argument should point to the extracted FontAwesome package directory downloaded from fontawesome.com/download. After downloading the ZIP file, extract it and use the path to the extracted directory.
Expected Directory Structure
fontawesome-directory/
├── css/
├── js/
├── svgs/
│ ├── solid/
│ ├── regular/
│ └── brands/
├── webfonts/
└── metadata/
└── icons.json
Important notes:
- Make sure to use the path to the extracted directory, not the ZIP file
- The tool needs access to
svgs/
directory for SVG rendering andwebfonts/
for font rendering- The
metadata/icons.json
file is required for both rendering methods- Both Free and Pro versions of FontAwesome are supported
Convert a single icon:
fa-convert convert arrow-right /path/to/fontawesome --style solid --size 512 --color "#FF0000"
Convert all icons:
fa-convert convert-all /path/to/fontawesome --style solid --size 512
Option | Description |
---|---|
--style |
Icon style (solid, regular, brands) |
--size |
Maximum output size in pixels (will generate all standard sizes up to this value) |
--color |
Color for the icon (as hex code) |
--render-method |
Method to use for rendering (svg or font) |
--output-dir |
Directory to save the outputs |
--log-level |
Set logging verbosity (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
from fontawesome_converter import FontAwesomeConverter
# Initialize converter
converter = FontAwesomeConverter("/path/to/fontawesome")
# Convert a single icon
converter.convert_svg("arrow-right", style="solid", size=512, color="#FF0000")
# Convert all icons
converter.convert_all(style="solid", size=512, render_method="svg")
Converted icons are organized in the following structure:
View Output Directory Structure
output/
16px/
icon1_solid.png
icon2_regular.png
...
24px/
icon1_solid.png
icon2_regular.png
...
32px/
...
48px/
...
64px/
...
128px/
...
256px/
...
512px/
...
Basic Usage
Convert an icon to multiple sizes (maximum 512px):
fa-convert convert arrow-right /path/to/fontawesome
Custom Colors
Convert all "solid" style icons to blue PNGs:
fa-convert convert-all /path/to/fontawesome --style solid --color "#0000FF"
Verbose Logging
Adjust log level for detailed information:
fa-convert --log-level DEBUG convert arrow-right /path/to/fontawesome
- Python 3.10+
- FontAwesome files (can be downloaded from FontAwesome)
- Dependencies:
- cairosvg - for SVG rendering
- Pillow - for image processing
- loguru - for enhanced logging
- click - for CLI interface
- tqdm - for progress bars
This project is licensed under the MIT License - see the LICENSE file for details.