fontify
将 SVG 图标转换为 OTF 字体并生成 Flutter 兼容类。提供 API 和 CLI 工具。
将 SVG 图标转换为 OTF 字体并生成 Flutter 兼容类。提供 API 和 CLI 工具。
^2.0.0^1.15.0^1.0.0^1.3.0^1.8.0^0.2.0^4.0.0^2.1.0^5.1.0^3.1.0^1.11.0^1.17.0以下为英文项目原文快照,最新内容请访问 GitHub。
The Fontify package provides an easy way to convert SVG icons to OpenType font and generate Flutter-compatible class that contains identifiers for the icons (just like CupertinoIcons or Icons classes).
The package is written fully in Dart and doesn't require any external dependency. Compatible with dart2js and dart2native.
Globally activate the package:
$ pub global activate fontify
And it's ready to go:
$ fontify <input-svg-dir> <output-font-file> [options]
Required positional arguments:
<input-svg-dir>
Path to the input directory that contains .svg files.<output-font-file>
Path to the output font file. Should have .otf extension.Flutter class options:
-o or --output-class-file=<path>
Output path for Flutter-compatible class that contains identifiers for the icons.-i or --indent=<indent>
Number of spaces in leading indentation for Flutter class file.
(defaults to "2")-c or --class-name=<name>
Name for a generated class.-p or --package=<name>
Name of a package that provides a font. Used to provide a font through package dependency.Font options:
-f or --font-name=<name>
Name for a generated font.--[no-]normalize
Enables glyph normalization for the font.
Disable this if every icon has the same size and positioning.
(defaults to on)--[no-]ignore-shapes
Disables SVG shape-to-path conversion (circle, rect, etc.).
(defaults to on)Other options:
-z or --config-file=<path>
Path to Fontify yaml configuration file.
pubspec.yaml and fontify.yaml files are used by default.-r or --recursive
Recursively look for .svg files.-v or --verbose
Display every logging message.-h or --help
Shows usage information.Usage example:
$ fontify assets/svg/ fonts/my_icons_font.otf --output-class-file=lib/my_icons.dart --indent=4 -r
Updated Flutter project's pubspec.yaml:
...
flutter:
fonts:
- family: Fontify Icons
fonts:
- asset: fonts/my_icons_font.otf
Fontify's configuration can also be placed in yaml file.
Add fontify section to either pubspec.yaml or fontify.yaml file:
fontify:
input_svg_dir: "assets/svg/"
output_font_file: "fonts/my_icons_font.otf"
output_class_file: "lib/my_icons.dart"
class_name: "MyIcons"
indent: 4
package: my_font_package
font_name: "My Icons"
normalize: true
ignore_shapes: true
recursive: true
verbose: false
input_svg_dir and output_font_file keys are required.
It's possible to specify any other config file by using --config-file option.
svgToOtf and generateFlutterClass functions can be used for generating font and Flutter class.
The example of API usage is located in example folder.
<g> element's children are expanded to the root with transformations applied.
Anything else related to the group is ignored and group referencing is not supported.ignoreShapes is set to false,
every SVG shape's (circle, rect, etc.) outline is converted to path.
Note that any attributes like "fill" or "stroke" are ignored and only the outline is used,
so the resulting glyph may look different from SVG icon.
It's recommended to convert every element in SVG to path.normalize is set to false, it's recommended that SVG icons have the same height.
Otherwise, final result might not look as expected.Any suggestions, issues, pull requests are welcomed.