bawr
1.0.0
這是將圖標生成從SVG文件集中自動化為字體和地圖集的工具。
該工具的主要目的是將其添加到C ++項目的構建過程中,並讓其完成所有工作,然後您可以將SVG圖標用作字體或SpriteSheets。
項目URL是:https://github.com/mnesarco/bawr此項目基於先前的項目:https://github.com/mnesarco/ff-batch
從來源構建
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
或來自PYPI:
python3 -m pip install bawr| 概念 | 描述 |
|---|---|
| SVG圖標 | 它只是.svg格式的文件。它一定是一個正方形。 |
| 圖標集或集合 | 它是帶有SVG圖標的文件夾 |
| 配置文件 | 這是一個Python文件,具有生成文件的所有選項。按照慣例稱為config.py |
config.py的文件(您可以從示例中復制一個文件https://github.com/mnesarco/bawr/tree/main/main/examples) cd examples
python3 -m bawr.tool
您可以使用示例DIR(https://github.com/mnesarco/bawr/tree/main/examples)作為您項目的模板:
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為紀念Bertrand Arthur William Russell ,他是IX和XX百年的偉大邏輯學家,數學家和哲學家。