From 7064b13d15157e494256d5ef8588dd90c7d25037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Mon, 13 Feb 2023 13:09:45 +0800 Subject: [PATCH] debug: add text demo --- example/text.js | 32 ++++++++++++++++++++++++++++++++ example/text2-out.png | Bin 0 -> 3190 bytes src/fonts.rs | 30 +++++++++++++++--------------- 3 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 example/text.js create mode 100644 example/text2-out.png diff --git a/example/text.js b/example/text.js new file mode 100644 index 00000000..ea771fdf --- /dev/null +++ b/example/text.js @@ -0,0 +1,32 @@ +const { promises } = require('fs') +const { join } = require('path') +const { performance } = require('perf_hooks') + +const { Resvg } = require('../index') + +async function main() { + const svg = ` + + + + + + ` + const t = performance.now() + const resvg = new Resvg(svg, { + background: '#fff', + font: { + fontFiles: ['./example/SourceHanSerifCN-Light-subset.ttf'], // Load custom fonts. + loadSystemFonts: false, // It will be faster to disable loading system fonts. + defaultFontFamily: 'Source Han Serif CN Light', + }, + logLevel: 'debug', // Default Value: error + }) + const pngData = resvg.render() + const pngBuffer = pngData.asPng() + console.info('✨ Done in', performance.now() - t, 'ms') + + await promises.writeFile(join(__dirname, './text2-out.png'), pngBuffer) +} + +main() diff --git a/example/text2-out.png b/example/text2-out.png new file mode 100644 index 0000000000000000000000000000000000000000..427758c2adc5dcec29f8ef89d8a66d3b96311af6 GIT binary patch literal 3190 zcmcgvS6GwT7A3_HFoXz-AORvpYUom={U`!bM~X^Oz)(a$N@yC|FN^^c3DV2J3}8V; zQCesYRf)R*kHyblP-V?lBTwHt? z%uVb#XV?mUHMS$Ku*n6_G_TiS$U_GkztsF(=-HkkcL)8a) zzYt~%8`w1ROcGYs3)FlB6f`IS8k8QC=On6B9X6r$Kdw13Hb-NAu5JoC5^$O4!JwpW zZHDIaE2feDfdbZF<=UK%wDSqUh!?Wfw5&hwpIImQ#tvKS-Z6x+gN? zfy-3eE&-+^o{7WC{H<`TbN^AJ^b`ZvNaenTMvN)Lxi#PRr)3JLan%S0YHS)YrC6CWRYWuG&k%8>>Hhy}@i-j;JeN*uzysK+>VN&iq zlG6!520nM^$=nhnV7NU5H>Ws#u7!G3H0>;G8oihGflE#c~nXIuHbkm&63)QNm)$#2gl8tx;H|}k{ zfXO`~91$Xm;EzuPArJMflM=uVM*jt{Lf1!PsOIC%4=-oN93Rc%W~J0AdKrkp40B;u znyC$Mf>V4na@5&dO)BPKZ!^7l@Jk%n>yRvU5_7ihcgXvdxl(|dTE*`~$nB`hcG)Fs zw1ad+t2SjFR;_v?u&MQ7Qi5@~BBm;Uy;(Dsn(FGk+9+T?rxfg73kEgry?Fhq$RC>) z1TELh5xzlyF2*+Pxw#3nR8}Q7uG<{HxVWU7$DvbaJLb$*Y# zD$p;R8vmHkEyaph3KvBR2VwVVXI}Mq#R>Kdj04~2x;Ncae(w0NH&sA67 z|2YhIntrCC_eH>DIQa(AL)soXQ=>yWyrreYV4XioGtw~cwqsYDA=Cw7Y-Ulu(&%EZ zFu{r^Vcz;PASgzT`WCE+-sf+K65Hzx(n6>Yr^}AT9;=Y|u{U_10qk#=?D)uMpkiYc zSlPS%C($vfnEqbC+kIMAkbkPN+Sn{qCD^Id*4okTsje@YY+2aeBW5yOh3Lo zaTqQ9;8=&6mv5vHLLCOn0P{39We=Vpptp<;^(Y!tA|(RlJ6dACEa$HZz;fkI44|s) zbYuosGNB$6jq!A~N~FfQGlGoHn0TGfH5c!JRt_g_B^!lBdzxS z6tLMpA{6U(8=-zAyEdaw)avRrk6X9`>K8otXsEl<726y7^T(&oJEjPA$OqXi37N)Z z+vwAUqFvv=RR=`OR>U487$c*V%buuFc!d2?^#$@i{k!*IO)9+bfXS=Sq7AmBzKwXG zgrx#{=B7R@H%{ilnLC;e&a<=-TO1rf@>Fu0Rq5Eaev?ruOVqB%&x>@K53VIcy1w-X z+u~?Gllu)$+y``{i`~7ZO6?_!C{JmG)4@o6VBg@2xk8}%kwS!{+TdDF&ZcG&_@Et7 z#J?WL5>q~5*@#yE;5to}nULcTt91Qn{eY>vyuI@^HDQrbB3%?YzPrJ{Gh29LQw1gh zN*Vb_5m`+!zDYn1UdL$I3~N%nE8K-t^026EFCa=pTf(9HwC~*1ALQuMsUVF)3bSEN z6v$d0dek7+>LuhmX{sU8#aFi(-8xN>C#KSxZJuxGJzc%xPS{O>Yd95szMPTKw|0M&1r26W7dGl!&r6+MZ1%&4qgygT2_*b^@ zV#w6{od)eIL8QF*053IMzA1fXpotv5n}vqgIl;w8^7;T?;VRVBN#&Vo$2(>7yzG|f z`Ch(+&d!$j{nO6f0^CAS!)#WrKy*BN3cy@Vv63z{QPQ9s9~FM4>ql3yEF0pFQi~6AGhK5-tUdje2Kc?_PF<)3Sy%~`XXdPd2}-hB zEVpkN`!H7Cw+Qn9=FstmA%v;U=$9f$6*$eC1;5@Ja^GBBm&ocUgUR#RWL;V|`&@II zIz(uefQ1eF+#M2snaYgsJgekGtOv$R1-Qw9WGX6Z#rQWpOd&r@ z>T^}R`8c%_G)f;n)H)>@k&_;1`1*<83o&G3X}}k2lHJnn=kpF=MQzs~a-@xkwJsqj z#L|-GXC)191ySCaC3@C4rLrr|t2ZY)C)ujze$kb6-|+Ce@@W-E=Z7+C0?;c*LCm3e z3S{6i!QQayG0?o;63uaOW{S*M8e8TmGU3Z!o6J#Jm`FjRz-T*R+zuy)KX0ky+H30~ zJ~#tAiGnUpT41Mx{qdN&!dhhi{E=)|GP-obdO@@<)2rnY%y@A}(WAS=zx6LlP=L5!AEzXa z^%E?ldr$o=;3E&PmxDk|$NW&VRbo8Yb>_BTq^k=*oG1y2B@<7%M6o(`9B>6o(_arW zdObe`$92|_IYsq^EbXi>#agu=Ltz)Mdrzdd!CSRc!Oz;)`H+TQH89-5I*{ zxg0w?&BYTNtAajau8dZ8kww3gcd4o6kn}zXT2h$CX1V;NH;qSg^33VcrBS&_C~1#B znaV%0*H1C~*Q%=mDis^h2_<&er?$Zr4EIs@KN^pd&~SZ56u-rm76G-Qg}GMu!&d*b z9elXvK+Uph_8&W zpdQVo2P0~g2u1>4;&J`F94K9YowMGK{F_k|5FQu-V&EEGg+3|oN)AE$%&G&3$cDpk zE2fK4l%7yp_LP(7YY^M53@b~z+_}Gcu+Qb)t$o@xrYFt%mQ9Lw+Q0{tXYq{-pUmXi zTIi`s15~_W*7hG|{lKZ~KqddIW6@)AiKo|^wGqrvYV?Q~?yx&fkXHjLG5l8_DX0v^ z40Ff^^|@M9sS|PhwuLFxY>fdk4;=sdkOyr;_7#oS4)VS@Lz+Wy7)`Trc=zsJfHuL(R_m_Ez-PjFp0Z)5W6toz;n0 Database { // - `cursive` - Comic Sans MS // - `fantasy` - Impact (Papyrus on macOS) // - `monospace` - Courier New - if !font_options.default_font_family.is_empty() { - // If a default font family exists, set all other families to that family. - // This prevents fonts from not being rendered in SVG. - fontdb.set_serif_family(&font_options.default_font_family); - fontdb.set_sans_serif_family(&font_options.default_font_family); - fontdb.set_cursive_family(&font_options.default_font_family); - fontdb.set_fantasy_family(&font_options.default_font_family); - fontdb.set_monospace_family(&font_options.default_font_family); - } else { - fontdb.set_serif_family(&font_options.serif_family); - fontdb.set_sans_serif_family(&font_options.sans_serif_family); - fontdb.set_cursive_family(&font_options.cursive_family); - fontdb.set_fantasy_family(&font_options.fantasy_family); - fontdb.set_monospace_family(&font_options.monospace_family); - } + // if !font_options.default_font_family.is_empty() { + // // If a default font family exists, set all other families to that family. + // // This prevents fonts from not being rendered in SVG. + // fontdb.set_serif_family(&font_options.default_font_family); + // fontdb.set_sans_serif_family(&font_options.default_font_family); + // fontdb.set_cursive_family(&font_options.default_font_family); + // fontdb.set_fantasy_family(&font_options.default_font_family); + // fontdb.set_monospace_family(&font_options.default_font_family); + // } else { + fontdb.set_serif_family(&font_options.serif_family); + fontdb.set_sans_serif_family(&font_options.sans_serif_family); + fontdb.set_cursive_family(&font_options.cursive_family); + fontdb.set_fantasy_family(&font_options.fantasy_family); + fontdb.set_monospace_family(&font_options.monospace_family); + // } debug!( "Loaded {} font faces in {}ms.", fontdb.len(),