From c9fc005845d95efd58162b826bbb047fde1ca688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E4=B8=9D?= Date: Fri, 18 Mar 2022 16:04:19 +0800 Subject: [PATCH] test: add glyph path diff --- examples/basic.js | 32 +++++++++++++++++++++++++++++--- examples/foo.png | Bin 0 -> 2017 bytes examples/out.svg | 4 ++-- examples/skr-canvas.svg | 4 ++++ package.json | 1 + 5 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 examples/foo.png create mode 100644 examples/skr-canvas.svg diff --git a/examples/basic.js b/examples/basic.js index 023c323..a3f17ee 100644 --- a/examples/basic.js +++ b/examples/basic.js @@ -2,20 +2,46 @@ const { Buffer } = require('buffer') const { readFileSync, writeFileSync } = require('fs') const { join } = require('path') +const { convertSVGTextToPath, GlobalFonts } = require('@napi-rs/canvas') +const { render } = require('@resvg/resvg-js') + const { FontKit } = require('../wasm-node') const FONT_PATH = join(__dirname, 'OpenSans-Italic.ttf') +const glyphName = 'B' const data = readFileSync(FONT_PATH) const fontkit = new FontKit() const key = fontkit.add_font_from_buffer(data) const font = fontkit.query(key) -const svgPath = font.glyph_path('A').to_string() -console.info('em-box = ', font.units_per_em) +const svgPath = font.glyph_path(glyphName).to_string() +const width = font.units_per_em // embox +const ascender = font.ascender +const descender = font.descender +const height = ascender - descender + +console.info('em-box = ', width) +console.info('ascender = ', ascender) +console.info('descender = ', descender) -const svg = ` +const svg = ` ` writeFileSync(join(__dirname, './out.svg'), Buffer.from(svg)) console.info(svg) + +const svgText = ` + ${glyphName} + +` + +GlobalFonts.registerFromPath(FONT_PATH) +const result = convertSVGTextToPath(svgText) +console.info('skr-canvas \n', result.toString('utf8')) + +writeFileSync(join(__dirname, './skr-canvas.svg'), result) + +const pngData = render(result.toString('utf8')) + +writeFileSync(join(__dirname, './foo.png'), pngData) diff --git a/examples/foo.png b/examples/foo.png new file mode 100644 index 0000000000000000000000000000000000000000..eb7d6ec7693cc3c260c106f87b579e38a9324624 GIT binary patch literal 2017 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8Y9Be?5)7S2IF)*;N@N{tushIQjDkCog1IGb{ zxAC`R>H?Z%86Ma!WOit{z^LHxfiAih+egmVv2-kAcyNy@6p=dNf!@lf!5> l7%d$}OU2RJfYy~{L6R8b*B*IeA7ItZ;OXk;vd$@?2>>ruj%xq_ literal 0 HcmV?d00001 diff --git a/examples/out.svg b/examples/out.svg index a1b65cb..5ed4037 100644 --- a/examples/out.svg +++ b/examples/out.svg @@ -1,3 +1,3 @@ - - + + diff --git a/examples/skr-canvas.svg b/examples/skr-canvas.svg new file mode 100644 index 0000000..987f348 --- /dev/null +++ b/examples/skr-canvas.svg @@ -0,0 +1,4 @@ + + + + diff --git a/package.json b/package.json index 947c6e1..ab9e74d 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "url": "git@github.com:alibaba/font-toolkit.git" }, "devDependencies": { + "@napi-rs/canvas": "^0.1.21", "@swc-node/register": "^1.4.2", "@typescript-eslint/eslint-plugin": "^5.15.0", "@typescript-eslint/parser": "^5.15.0",