Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ Name for a generated class.
Name of a package that provides a font. Used to provide a font through package dependency.
- `--[no-]format`
Format dart generated code.
- `--[no-]metadata`
Includes base64-encoded images of the font in comments.

Font options:
- `-f` or `--font-name=<name>`
Expand Down Expand Up @@ -102,6 +104,7 @@ icon_font:
class_name: "MyIcons"
package: my_font_package
format: true
metadata: true

font_name: "My Icons"
normalize: true
Expand Down
1 change: 1 addition & 0 deletions bin/generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ void _run(CliArguments parsedArgs) {
ignoreShapes: parsedArgs.ignoreShapes,
normalize: parsedArgs.normalize,
fontName: parsedArgs.fontName,
includeMeta: parsedArgs.includeMeta,
);

writeToFile(parsedArgs.fontFile.path, otfResult.font);
Expand Down
8 changes: 8 additions & 0 deletions lib/src/cli/arguments.dart
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,13 @@ const _kArgAllowedTypes = <CliArgument, List<Type>>{
CliArgument.format: [bool],
CliArgument.verbose: [bool],
CliArgument.help: [bool],
CliArgument.includeMeta: [bool],
CliArgument.configFile: [String],
};

const kDefaultVerbose = false;
const kDefaultFormat = false;
const kDefaultIncludeMeta = true;
const kDefaultRecursive = false;

const kOptionNames = EnumClass<CliArgument, String>({
Expand All @@ -39,6 +41,7 @@ const kOptionNames = EnumClass<CliArgument, String>({
CliArgument.className: 'class-name',
CliArgument.fontPackage: 'package',
CliArgument.format: 'format',
CliArgument.includeMeta: 'metadata',

CliArgument.fontName: 'font-name',
CliArgument.normalize: 'normalize',
Expand All @@ -59,6 +62,7 @@ const kConfigKeys = EnumClass<CliArgument, String>({
CliArgument.className: 'class_name',
CliArgument.fontPackage: 'package',
CliArgument.format: 'format',
CliArgument.includeMeta: 'metadata',

CliArgument.fontName: 'font_name',
CliArgument.normalize: 'normalize',
Expand All @@ -85,6 +89,7 @@ enum CliArgument {
className,
fontPackage,
format,
includeMeta,

// Font-related
fontName,
Expand All @@ -109,6 +114,7 @@ class CliArguments {
this.className,
this.fontPackage,
this.format,
this.includeMeta,
this.fontName,
this.recursive,
this.ignoreShapes,
Expand All @@ -131,6 +137,7 @@ class CliArguments {
map[CliArgument.className] as String?,
map[CliArgument.fontPackage] as String?,
map[CliArgument.format] as bool?,
map[CliArgument.includeMeta] as bool?,
map[CliArgument.fontName] as String?,
map[CliArgument.recursive] as bool?,
map[CliArgument.ignoreShapes] as bool?,
Expand All @@ -146,6 +153,7 @@ class CliArguments {
final String? className;
final String? fontPackage;
final bool? format;
final bool? includeMeta;
final String? fontName;
final bool? recursive;
final bool? ignoreShapes;
Expand Down
5 changes: 5 additions & 0 deletions lib/src/cli/options.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ void defineOptions(ArgParser argParser) {
help: 'Formate dart generated code.',
defaultsTo: kDefaultFormat,
)
..addFlag(
kOptionNames[CliArgument.includeMeta]!,
help: 'Includes base64-encoded images of the font in comments.',
defaultsTo: kDefaultIncludeMeta,
)
..addSeparator('Font options:')
..addOption(
kOptionNames[CliArgument.fontName]!,
Expand Down
6 changes: 5 additions & 1 deletion lib/src/common/api.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ SvgToOtfResult svgToOtf({
bool? ignoreShapes,
bool? normalize,
String? fontName,
bool? includeMeta,
}) {
normalize ??= true;
includeMeta ??= true;

final svgList = [
for (final e in svgMap.entries)
Expand All @@ -53,7 +55,9 @@ SvgToOtfResult svgToOtf({
}
}

final glyphList = svgList.map(GenericGlyph.fromSvg).toList();
final glyphList = svgList
.map((svg) => GenericGlyph.fromSvg(svg, includeMeta: includeMeta))
.toList();

final font = OpenTypeFont.createFromGlyphs(
glyphList: glyphList,
Expand Down
7 changes: 5 additions & 2 deletions lib/src/common/generic_glyph.dart
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,10 @@ class GenericGlyph {
return GenericGlyph(outlines, bounds);
}

factory GenericGlyph.fromSvg(Svg svg) {
factory GenericGlyph.fromSvg(
Svg svg, {
bool? includeMeta,
}) {
final pathList = svg.elementList.whereType<PathElement>();

final outlines = [
Expand All @@ -106,7 +109,7 @@ class GenericGlyph {
ratioX: svg.ratioX,
ratioY: svg.ratioY,
offset: svg.offset,
preview: svg.toBase64(),
preview: includeMeta == true ? svg.toBase64() : null,
);

return GenericGlyph(outlines, svg.viewBox, metadata);
Expand Down