@@ -38,6 +38,19 @@ const resolveUseTags = ($, $svg) => {
3838 } ) ;
3939} ;
4040
41+ const resolveViewBox = ( $ , $svg ) => {
42+ const viewBox = $svg . attr ( 'viewBox' ) ;
43+
44+ if ( viewBox ) {
45+ return ;
46+ }
47+
48+ const width = $svg . attr ( 'width' ) ;
49+ const height = $svg . attr ( 'height' ) ;
50+
51+ $svg . attr ( 'viewBox' , `0 0 ${ width } ${ height } ` ) ;
52+ } ;
53+
4154module . exports = async ( { buffer, width, height } = { } ) => {
4255 if ( ! Buffer . isBuffer ( buffer ) ) {
4356 throw new Error ( 'required "options.buffer" is missing' ) ;
@@ -50,6 +63,9 @@ module.exports = async ({ buffer, width, height } = {}) => {
5063 throw new Error ( '"options.buffer" is not a valid SVG image' ) ;
5164 }
5265
66+ resolveViewBox ( $ , $svg ) ;
67+ resolveUseTags ( $ , $svg ) ;
68+
5369 const { naturalWidth, naturalHeight } = await loadImage ( Buffer . from ( $ . xml ( $svg ) ) ) ;
5470
5571 let w , h ;
@@ -71,7 +87,6 @@ module.exports = async ({ buffer, width, height } = {}) => {
7187 $svg . attr ( 'width' , `${ w } ` ) ;
7288 $svg . attr ( 'height' , `${ h } ` ) ;
7389
74- resolveUseTags ( $ , $svg ) ;
7590
7691 const image = await loadImage ( Buffer . from ( $ . xml ( $svg ) ) ) ;
7792 const canvas = createCanvas ( w , h ) ;
0 commit comments