svgToOtf function
Converts SVG icons to OTF font.
svgMap
contains name (key) to data (value) SVG mapping. Required.- If
ignoreShapes
is set to false, shapes (circle, rect, etc.) are converted into paths. Defaults to true. NOTE: Attributes like "fill" or "stroke" are ignored, which means only shape's outline will be used. - If
normalize
is set to true, glyphs are resized and centered to fit in coordinates grid (unitsPerEm). Defaults to true. fontName
is a name for a generated font.
Returns an instance of SvgToOtfResult class containing glyphs and a font.
Implementation
SvgToOtfResult svgToOtf({
required Map<String, String> svgMap,
bool? ignoreShapes,
bool? normalize,
String? fontName,
}) {
normalize ??= true;
final svgList = [
for (final e in svgMap.entries)
Svg.parse(e.key, e.value, ignoreShapes: ignoreShapes)
];
if (!normalize) {
for (var i = 1; i < svgList.length; i++) {
if (svgList[i - 1].viewBox.height != svgList[i].viewBox.height) {
logger.logOnce(
Level.warning,
'Some SVG files contain different view box height, '
'while normalization option is disabled. '
'This is not recommended.');
break;
}
}
}
final glyphList = svgList.map(GenericGlyph.fromSvg).toList();
final font = OpenTypeFont.createFromGlyphs(
glyphList: glyphList,
fontName: fontName,
normalize: normalize,
useOpenType: true,
usePostV2: true,
);
return SvgToOtfResult._(glyphList, font);
}