Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ADD ARGUMENT OPTIONS: --metadata #39

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
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