Ini adalah alat untuk mengotomatiskan pembuatan ikon dari set file SVG ke dalam font dan atlas.
Tujuan utama dari alat ini adalah untuk menambahkannya ke proses pembangunan proyek C ++ Anda dan membiarkannya melakukan semua pekerjaan, maka Anda dapat menggunakan ikon SVG Anda sebagai font atau sebagai spritesheets.
URL proyek adalah: https://github.com/mnesarco/bawr Proyek ini didasarkan pada proyek sebelumnya: https://github.com/mnesarco/ff-batch
Membangun dari sumber
git clone https:://github.com/mnesarco/bawr.git
cd bawr
python3 -m pip install --upgrade build
python3 -m pip install wheel
python3 -m build
python3 -m pip install dist/bawr-0.0.6-py3-none-any.whl
Atau dari pypi:
python3 -m pip install bawr| Konsep | Keterangan |
|---|---|
| Ikon SVG | Ini hanya file dalam format .svg. Itu pasti persegi. |
| Set atau koleksi ikon | Ini adalah folder dengan ikon SVG |
| File konfigurasi | Ini adalah file python dengan semua opsi untuk menghasilkan file Anda. Dengan konvensi itu disebut config.py |
config.py (Anda dapat menyalin yang dari contoh dir https://github.com/mnesarco/bawr/tree/main/examples) cd examples
python3 -m bawr.tool
Anda dapat menggunakan Contoh Dir (https://github.com/mnesarco/bawr/tree/main/examples) sebagai templat untuk proyek Anda:
examples/
├── config.py
├── icons/
└── bootstrap-icons/
examples/build/
├── atlas_cells.hpp
├── atlas.cpp
├── atlas.hpp
├── atlas.png
├── my-icons_codes.hpp
├── my-icons.cpp
├── my-icons.hpp
├── my-icons_loader.hpp
└── my-icons.ttf
config.py ) #------------------------------------------------------------------------------
# Import all required stuff:
#------------------------------------------------------------------------------
from bawr . config import *
#------------------------------------------------------------------------------
# Define an environment (Use the name that you want, but extend Environment):
#------------------------------------------------------------------------------
class Env ( Environment ):
# [Optional] FONTFORGE_PATH = Path to fontforge executable, deduced if it is in PATH
# FONTFORGE_PATH = ...
# [Optional] INKSCAPE_PATH = Path to inkscape executable, deduced if it is in PATH
# INKSCAPE_PATH = ...
# [Optional] BAWR_OUTPUT_DIR = Where all the output will be generated. Default = ./build
# BAWR_OUTPUT_DIR = ...
# [Optional] BAWR_SOURCE_DIR = Where all the icon folders will be found. Default = ./
# BAWR_SOURCE_DIR = ...
pass
#------------------------------------------------------------------------------
# Define your icon sets (extend IconSet):
#------------------------------------------------------------------------------
class BootstrapIcons ( IconSet ):
# [Mandatory] src = directory name (which contains svg icons)
src = 'bootstrap-icons'
# [Optional] select = selection of icons from the directory: list( tuple(file-name, glyph-name) )
select = [
( 'info-circle' , 'infoCircle' ),
( 'file-earmark' , 'fileEarmark' ),
( 'folder2-open' , 'folderOpen' ),
( 'hdd' , 'save' ),
( 'file-earmark-arrow-up' , 'fileImport' ),
( 'file-earmark-arrow-down' , 'fileExport' ),
( 'folder' , 'folder' ),
( 'sliders' , 'sliders' ),
( 'eye' , 'eye' ),
( 'layers' , 'layers' ),
]
# [Optional] options = Special options for generators
options = {
"font_transformation" : [( 'scale' , 0.75 , 0.75 )],
"atlas_preprocessors" : [
RegexReplacePreprocessor (
{
"currentColor" : "#ffffff" ,
'width="1em"' : 'width="16"' ,
'height="1em"' : 'height="16"' ,
}
)
],
"atlas_margin" : 0.0625
}
# Another icon set with different options
class MyIcons ( IconSet ):
src = 'icons'
options = {
"atlas_preprocessors" : [
RegexReplacePreprocessor (
{
'fill:#000000' : "fill:#ffffff" ,
'stroke:#000000' : 'stroke:#ffffff' ,
}
)
]
}
#------------------------------------------------------------------------------
# [Optional]
# Define Font generator to generate truetype fonts using FontForge
# (extend Font)
#------------------------------------------------------------------------------
class MyFont ( Font ):
# Generated font copyright notice [Mandatory]
copyright = "Copyright 2020 Frank D. Martinez M."
# Font name [Mandatory]
name = "my-icons"
# Font family [Mandatory]
family = "my-icons"
# First font glyph code [Optional] (default = 0xe000)
# start_code = 0xe000
# List ot tuple of the icon sets included in this font [Mandatory]
collections = ( BootstrapIcons , MyIcons )
# Global font transformation [Optiona] (See: Font transformations)
# transformation = []
# Output format [Optional] (default = ['ttf'])
# output_formats = ['ttf']
# Verbose output. Shows glyph generation details [Optional] (default = False)
# verbose = False
#------------------------------------------------------------------------------
# [Optional]
# You can generate a C++ font header file with glyph codes ready to use in C++.
# (extend CppFontHeader)
#------------------------------------------------------------------------------
class MyCppFontH ( CppFontHeader ):
# [Mandatory] Reference to the font generator to use
source = MyFont
# [Optional] Generate constexpr values (default = false)
constexpr = True
# [Optional] name of the generated c++ file (default = source.name)
# name = ...
# [Optional] namespace of the generated c++ file (default = icons)
# namespace = ...
# [Optional] Generate macros (default = True)
# macros = ...
# [Optional] Prefix for all macros (default = Icon_)
# macro_prefix = ...
#------------------------------------------------------------------------------
# [Optional]
# You can Embed your font binary into a C++ source file to be linked.
# (extend CppEmbedded)
#------------------------------------------------------------------------------
class MyCppFontEmbed ( CppEmbedded ):
# [Mandatory] Reference to the binary file to embed
source = "${BAWR_OUTPUT_DIR}/my-icons.ttf"
# [Optional] name prefix for the generated files (default = source name)
# name = ...
# [Optional] namespace for the generated files (default = icons)
# namespace = ...
#------------------------------------------------------------------------------
# [Optional]
# You can generate C++ code to load your font into Dear ImGui.
# (extend CppEmbedded)
#------------------------------------------------------------------------------
class MyCppFontImGui ( ImGuiFontLoader ):
# [Mandatory] reference to the font
font = MyFont
# [Mandatory] reference to the font header
header = MyCppFontH
# [Mandatory] reference to the embedded binary
data = MyCppFontEmbed
# [Optional] name prefix for the generated files (default = font.name)
# name = ...
# [Optional] namespace for the generated files (default = icons)
# namespace = ...
#------------------------------------------------------------------------------
# [Optional]
# You can generate an optimized png atlas with all your icons in different sizes.
# (extend Atlas)
#------------------------------------------------------------------------------
class MyAtlas ( Atlas ):
# [Optional] width of the atlas image (default = 512)
width = 512
# [Mandatory] sizes of the icons to be generated and included in the atlas
sizes = ( 16 , 32 , 64 )
# [Mandatory] References to collections (icon sets) to be included
collections = ( BootstrapIcons , MyIcons )
# [Optional] name prefix for the generated files (default = font.name)
# name = ...
# [Optional] Embed the Atlas png into a C++ source.
class MyCppAtlasEmbed ( CppEmbedded ):
source = "${BAWR_OUTPUT_DIR}/atlas.png"
#------------------------------------------------------------------------------
# [Optional]
# Generate a C++ header file with the atlas cells (frames) to be used in your code.
# (extend CppAtlasHeader)
#------------------------------------------------------------------------------
class MyAtlasHeader ( CppAtlasHeader ):
source = MyAtlas
https://github.com/mnesarco/bawr/blob/main/imgui.md
Bawr untuk menghormati Bertrand Arthur William Russell , seorang ahli logika, matematikawan, dan filsuf IX dan XX berabad -abad.