前提・実現したいこと
テキストが含まれるSVG要素で作成した画像をPNGに変換する際に、テキストのフォントをWebフォントで適用させたものにしたいのですが、PNGに変換する時にWebフォントが無視され、デフォルトフォントが適用されてしまいます。SVG要素をそのままHTMLで表示する場合は、Webフォントは問題なく適用されるのですが、pngに変換すると指定したフォントは適用されない画像になってしまいます。
Webフォントの適用の仕方を含めたやり方がよくのか、そもそもPNGへ変換する際にWebフォントは適用出来ないのか、何かご存知の方がおりましたら、助言して頂きたく宜しくお願い致します。
<SVGからPNGに変換する際に参考にしたサイト>
https://qiita.com/jkawamoto/items/792359460aa1c364ee90
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
HTML
1// SVG要素 2<svg id="svg_sample" xmlns="http://www.w3.org/2000/svg" version="1.1" width="110" height="110"> 3 4 <style> 5 @font-face { 6 font-family: 'Sawarabi Mincho'; 7 src: url(https://fonts.gstatic.com/ea/sawarabimincho/v1/SawarabiMincho-Regular.eot); 8 src: url(https://fonts.gstatic.com/ea/sawarabimincho/v1/SawarabiMincho-Regular.eot?#iefix) format('embedded-opentype'), 9 url(https://fonts.gstatic.com/ea/sawarabimincho/v1/SawarabiMincho-Regular.woff2) format('woff2'), 10 url(https://fonts.gstatic.com/ea/sawarabimincho/v1/SawarabiMincho-Regular.woff) format('woff'), 11 url(https://fonts.gstatic.com/ea/sawarabimincho/v1/SawarabiMincho-Regular.ttf) format('truetype'); 12 } 13 </style> 14 15 <text x="55" y="55" id="sample" text-anchor="middle" style="fill: red; font-weight: bold; font-size: 16px; font-family: Sawarabi Mincho;">さんぷる</text> 16 <rect x="5" y="5" width="100" height="100" rx="15" ry="15" fill="transparent" stroke="red" stroke-width="2" id="kaku"/> 17</svg> 18 19 20 21<script type="text/javascript"> 22 23・・・・・・・・・・・・ 24 25 // SVGをPNGに変換して、CANVASへ設定 26 function createSVG(){ 27 var svg = document.querySelector("svg"); 28 29 var svgData = new XMLSerializer().serializeToString(svg); 30 var canvas = document.getElementById("base"); 31 32 // 出力サイズ 33 canvas.width = 360; 34 canvas.height = 360; 35 canvas.style.marginTop = ""; // 位置 36 37 var ctx = canvas.getContext("2d"); 38 ctx.beginPath(); 39 40 clipObject(styleCipher,ctx); 41 42 var image = new Image(); 43 image.src = "data:image/svg+xml;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(svgData))); 44 45 // canvasに画像イメージが生成された時 46 image.onload = function(){ 47 ctx.drawImage(image, 0, 0); 48 canvas.toDataURL(); 49 image.src = "data:image/png;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(canvas))); 50 51 var a = canvas.toDataURL(); 52 imageCreate = spritImgUrl(a); 53 54 var testimg = document.getElementById("testimg"); 55 testimg.setAttribute("src",a); 56 57 } 58 59 } 60 61・・・・・・・・・・・・ 62 63</script> 64
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー