-var hb = require('harfbuzzjs/hbjs');
-var fs = require('fs');
-// some part of code derived from that by Ebrahim Byagowi,
-// under MIT License
-export function harfbuzzTest(inputString: string){
- WebAssembly.instantiate(fs.readFileSync(__dirname+"/../3rdparty/harfbuzzjs/hb.wasm"))
- .then(function (wsm) {
-
- hb = hb(wsm.instance);
-
-
- let fontdata = fs.readFileSync("/usr/share/fonts/truetype/freefont/FreeSerif.ttf");
-
- //hbjs(fontdata.instance);
-
- //console.log(a);
-
- var blob = hb.createBlob(fontdata); // Load the font data into something Harfbuzz can use
- var face = hb.createFace(blob, 0); // Select the first font in the file (there's normally only one!)
- var font = hb.createFont(face); // Create a Harfbuzz font object from the face
- var buffer = hb.createBuffer(); // Make a buffer to hold some text
- buffer.addText(inputString); // Fill it with some stuff
- buffer.guessSegmentProperties(); // Set script, language and direction
- hb.shape(font, buffer); // Shape the text, determining glyph IDs and positions
- var output : Array<{g : number,
- ax : number,
- dx : number,
- dy : number}> = buffer.json();
-
- // Enumerate the glyphs
- console.log("id\tax\tdx\tdy");
-
- var xCursor = 0;
- var yCursor = 0;
- for (var glyph of output) {
- var glyphId = glyph.g;
- var xAdvance = glyph.ax;
- var xDisplacement = glyph.dx;
- var yDisplacement = glyph.dy;
-
- var svgPath = font.glyphToPath(glyphId);
-
- console.log(glyphId + "\t" + xAdvance + "\t" + xDisplacement + "\t" + yDisplacement);
-
- // You need to supply this bit
- //drawAGlyph(svgPath, xCursor + xDisplacement, yDisplacement);
-
- // xCursor += xAdvance;
- }
-
- // Release memory
- buffer.destroy();
- font.destroy();
- face.destroy();
- blob.destroy();
- });
-}
\ No newline at end of file