From 90fd2d0d5cd08096bea0a6b60200db7a18d8b72b Mon Sep 17 00:00:00 2001 From: Tan Kian-ting Date: Fri, 19 Apr 2024 01:25:07 +0800 Subject: [PATCH] add text measurement --- 3rdparty/harfbuzzjs/hb.wasm | Bin 0 -> 315481 bytes README.md | 3 +- package-lock.json | 11 +++ package.json | 1 + src/index.js | 147 ++++++++++++++++++++++++++++++--- src/index.ts | 158 ++++++++++++++++++++++++++++++++---- text.lisp | 94 +++++++++++++-------- text.lisp.pdf | Bin 356684 -> 180187 bytes text2.lisp | 38 +++++++++ 9 files changed, 391 insertions(+), 61 deletions(-) create mode 100755 3rdparty/harfbuzzjs/hb.wasm create mode 100644 text2.lisp diff --git a/3rdparty/harfbuzzjs/hb.wasm b/3rdparty/harfbuzzjs/hb.wasm new file mode 100755 index 0000000000000000000000000000000000000000..427871a100710a33aab6598550ee818bdaa0b0c5 GIT binary patch literal 315481 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≷?7= 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≤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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 6801888..db3f025 100644 --- a/README.md +++ b/README.md @@ -14,4 +14,5 @@ - [ ] close pdf - [v] add character - [ ] add path - - [ ] basic typesetting format \ No newline at end of file + - [ ] basic typesetting format + - [v] text measuring width in pt \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5498402..f83f9f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "dependencies": { "@pdf-lib/fontkit": "^1.1.1", + "harfbuzzjs": "^0.3.5", "pdf-lib": "^1.17.1", "typescript-parsec": "^0.3.4" }, @@ -1021,6 +1022,11 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/harfbuzzjs": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/harfbuzzjs/-/harfbuzzjs-0.3.5.tgz", + "integrity": "sha512-SbNxmVAyhlUJTHdaxgK5S6Uqy4mXIu80Vl6KDn8d+ctPAF6W3DY2yehB4BwIC24I/Tk5HGLjaQkyny5gY0r41Q==" + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2464,6 +2470,11 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "harfbuzzjs": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/harfbuzzjs/-/harfbuzzjs-0.3.5.tgz", + "integrity": "sha512-SbNxmVAyhlUJTHdaxgK5S6Uqy4mXIu80Vl6KDn8d+ctPAF6W3DY2yehB4BwIC24I/Tk5HGLjaQkyny5gY0r41Q==" + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", diff --git a/package.json b/package.json index f01ade4..f1cfa21 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "license": "MIT", "dependencies": { "@pdf-lib/fontkit": "^1.1.1", + "harfbuzzjs": "^0.3.5", "pdf-lib": "^1.17.1", "typescript-parsec": "^0.3.4" }, diff --git a/src/index.js b/src/index.js index 3b0d718..dae4421 100644 --- a/src/index.js +++ b/src/index.js @@ -157,6 +157,43 @@ SINGLE.setPattern((0, typescript_parsec_2.alt)((0, typescript_parsec_2.apply)((0 LISPS.setPattern((0, typescript_parsec_2.alt)((0, typescript_parsec_2.apply)((0, typescript_parsec_2.kmid)((0, typescript_parsec_2.seq)((0, typescript_parsec_2.str)("("), __), (0, typescript_parsec_2.rep_sc)(LISP), (0, typescript_parsec_2.str)(")")), applyList), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.kright)((0, typescript_parsec_2.str)("'"), (0, typescript_parsec_2.kmid)((0, typescript_parsec_2.seq)((0, typescript_parsec_2.str)("("), __), (0, typescript_parsec_2.rep_sc)(LISP), (0, typescript_parsec_2.str)(")"))), applyQuoted))); CON_STR_INNER.setPattern((0, typescript_parsec_2.alt)((0, typescript_parsec_2.apply)((0, typescript_parsec_2.tok)(TokenKind.Id), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.tok)(TokenKind.Int), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.tok)(TokenKind.Flo), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.tok)(TokenKind.Str), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.tok)(TokenKind.Other), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.tok)(TokenKind.SpaceNL), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.kright)((0, typescript_parsec_2.tok)(TokenKind.BSlash), (0, typescript_parsec_2.tok)(TokenKind.LParen)), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.kright)((0, typescript_parsec_2.tok)(TokenKind.BSlash), (0, typescript_parsec_2.tok)(TokenKind.RParen)), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.kright)((0, typescript_parsec_2.tok)(TokenKind.BSlash), (0, typescript_parsec_2.tok)(TokenKind.LBrack)), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.kright)((0, typescript_parsec_2.tok)(TokenKind.BSlash), (0, typescript_parsec_2.tok)(TokenKind.RBrack)), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.kright)((0, typescript_parsec_2.tok)(TokenKind.BSlash), (0, typescript_parsec_2.tok)(TokenKind.Apos)), tokenToStr), (0, typescript_parsec_2.apply)((0, typescript_parsec_2.kright)((0, typescript_parsec_2.tok)(TokenKind.BSlash), (0, typescript_parsec_2.tok)(TokenKind.BSlash)), bSlashTokenToStr), LISPS)); CON_STR.setPattern((0, typescript_parsec_2.apply)((0, typescript_parsec_2.kmid)((0, typescript_parsec_2.str)("["), (0, typescript_parsec_2.rep_sc)(CON_STR_INNER), (0, typescript_parsec_2.str)("]")), applyStrings)); +/** + * measuer the width of a test in px + * @param inputString the string to be measured + * @param fontFamily font family name + * @param fontSizePt font size in pt + * @returns the width in px + */ +async function measureWidthPx(inputString, fontFamily, fontSizePt) { + return await WebAssembly.instantiate(fs.readFileSync(__dirname + "/../3rdparty/harfbuzzjs/hb.wasm")) + .then(function (wsm) { + var hb = require('harfbuzzjs/hbjs'); + hb = hb(wsm.instance); + let fontName = (0, child_process_1.spawnSync)('fc-match', ['--format=%{file}', fontFamily]); + const fontPath = fontName.stdout.toString(); + let fontdata = fs.readFileSync(fontPath); + 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 + font.setScale(fontSizePt * 4 / 3 * 1000, fontSizePt * 4 / 3 * 1000); + 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 = buffer.json(); + var totalX = 0; + for (var glyph of output) { + var xAdvance = glyph.ax; + totalX += xAdvance; + } + // Release memory + buffer.destroy(); + font.destroy(); + face.destroy(); + blob.destroy(); + return totalX / 1000; + }); +} function astToString(ast, isInQuoted) { if (Array.isArray(ast)) { const ast2 = ast.map((x) => astToString(x, isInQuoted)); @@ -369,11 +406,8 @@ async function drawText(pageIndex, fontFamily, textSize, color, x, y, text) { const path = fcMatch.stdout.toString(); pdfDoc.registerFontkit(fontkit_1.default); const fontBytes = fs.readFileSync(path); - console.log("A2A", (0, pdf_lib_1.rgb)(0, 0, 0)); const customFont = await pdfDoc.embedFont(fontBytes); - console.log("A3A", (0, pdf_lib_1.rgb)(0, 0, 0)); const rgbColor = await hexColorToRGB(color); - console.log("A4A", (0, pdf_lib_1.rgb)(0, 0, 0)); let a = await pdfDoc.getPage(0).drawText(text, { x: x, y: y, @@ -384,10 +418,10 @@ async function drawText(pageIndex, fontFamily, textSize, color, x, y, text) { await pdfDoc.save(); } async function hexColorToRGB(hex) { - let rgbHex = /[#]?(\d{2})(\d{2})(\d{2})/.exec(hex); - let r = parseInt(rgbHex[1], 16) / 256.0; - let g = parseInt(rgbHex[2], 16) / 256.0; - let b = parseInt(rgbHex[3], 16) / 256.0; + let rgbHex = /[#]?([\dA-Fa-f]{2})([\dA-Fa-f]{2})([\dA-Fa-f]{2})/.exec(hex); + let r = parseInt(rgbHex[1], 16) / 255.0; + let g = parseInt(rgbHex[2], 16) / 255.0; + let b = parseInt(rgbHex[3], 16) / 255.0; return (0, pdf_lib_1.rgb)(r, g, b); } function listRef(l, i) { @@ -463,6 +497,24 @@ async function interp(prog, env) { }; } } + // define manipulation + if (op.id === "define") { + const vari = prog[1]; + const data = await interp(prog[2], env); + if (prog.length !== 3) { + throw invalidLengthException('define', 2); + } + else if (!isItem(vari) || !isItem(data)) { + throw new Error("the type of replace and variable should be the same."); + } + else if (env[vari.id] !== undefined) { + throw new Error("variable can't be duplicated defined."); + } + else { + env = extendEnv(env, vari.id, true, data); + return { type: ItemType.Unit }; + } + } /** let function */ else if (op.id === "let" || op.id === "letrec") { const bindings = prog[1]; @@ -531,9 +583,13 @@ async function interp(prog, env) { } } else { - const argsMapped = await Promise.all(prog.slice(1).map(async (x) => { - return interp(x, env); - })); + let argsMapped = []; + for (var i = 1; i < prog.length; i++) { + argsMapped.push(await interp(prog[i], env)); + } + /* const argsMapped = await Promise.all( prog.slice(1).map(async (x) => { + return interp(x, env); + })); */ // binary basic operator if (op.id === "+") { return interpBinary(add, argsMapped); @@ -604,6 +660,73 @@ async function interp(prog, env) { } } } + else if (op.id === "and") { + if (prog.length !== 3) { + throw invalidLengthException('and', 2); + } + else if (!argsMapped[0].hasOwnProperty('type') || argsMapped[0].type !== ItemType.Bool + || !argsMapped[1].hasOwnProperty('type') || argsMapped[1].type !== ItemType.Bool) { + throw new Error("the arg of 'and' is not valid boolean value"); + } + else { + let ret = { + type: ItemType.Bool, + bool: argsMapped[0].bool && argsMapped[1].bool + }; + return ret; + } + } + else if (op.id === "or") { + if (prog.length !== 3) { + throw invalidLengthException('or', 2); + } + else if (!argsMapped[0].hasOwnProperty('type') || argsMapped[0].type !== ItemType.Bool + || !argsMapped[1].hasOwnProperty('type') || argsMapped[1].type !== ItemType.Bool) { + throw new Error("the arg of 'or' is not valid boolean value"); + } + else { + let ret = { + type: ItemType.Bool, + bool: argsMapped[0].bool || argsMapped[1].bool + }; + return ret; + } + } + // measuring + else if (op.id === "measureWidthPx") { + if (prog.length !== 4) { + throw invalidLengthException('measureWidthPx', 3); + } + else { + let text = argsMapped[0].str; + let fontfamily = argsMapped[1].str; + let sizePt = argsMapped[2].flo; + let returnValue = await measureWidthPx(text, fontfamily, sizePt); + return { + type: ItemType.Flo, + flo: returnValue + }; + } + } + else if (op.id === "isList") { + const arg = argsMapped[0]; + if (prog.length !== 2) { + throw invalidLengthException('isList', 1); + } + else if (arg.type === ItemType.Ls) { + let a = { + type: ItemType.Bool, + bool: true, + }; + return a; + } + else { + return { + type: ItemType.Bool, + bool: false, + }; + } + } else if (op.id === "car") { const arg = argsMapped[0]; if (prog.length !== 2) { @@ -631,7 +754,7 @@ async function interp(prog, env) { else if (op.id === "cons") { const arg = argsMapped; if (prog.length !== 3) { - throw invalidLengthException('cdr', 2); + throw invalidLengthException('cons', 2); } else if (!arg[1].hasOwnProperty('type') || arg[1].type !== ItemType.Ls) { throw new Error("the 2nd arg of 'cons' is not a list."); @@ -693,7 +816,7 @@ async function interp(prog, env) { // set manipulations else if (op.id === "set!") { const vari = prog[1]; - const replacer = prog[2]; + const replacer = await interp(prog[2], env); if (prog.length !== 3) { throw invalidLengthException('set!', 2); } diff --git a/src/index.ts b/src/index.ts index 2b266a3..9260f7f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,7 +20,7 @@ import { tok, opt, } from "typescript-parsec"; - +import {inspect} from "node:util"; /** input lisp file */ @@ -265,6 +265,55 @@ CON_STR.setPattern( apply(kmid(str("["), rep_sc(CON_STR_INNER), str("]")), applyStrings) ); +/** + * measuer the width of a test in px + * @param inputString the string to be measured + * @param fontFamily font family name + * @param fontSizePt font size in pt + * @returns the width in px + */ +async function measureWidthPx(inputString: string, fontFamily : string, fontSizePt: number): Promise{ + return await WebAssembly.instantiate(fs.readFileSync(__dirname+"/../3rdparty/harfbuzzjs/hb.wasm")) + .then(function (wsm) { + var hb = require('harfbuzzjs/hbjs'); + hb = hb(wsm.instance); + + let fontName = spawnSync('fc-match', ['--format=%{file}', fontFamily]); + const fontPath = fontName.stdout.toString(); + let fontdata = fs.readFileSync(fontPath); + + + 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 + font.setScale(fontSizePt * 4/3* 1000 , fontSizePt*4/3 * 1000 ); + 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(); + + var totalX = 0; + for (var glyph of output) { + var xAdvance = glyph.ax; + totalX += xAdvance; + + } + + // Release memory + buffer.destroy(); + font.destroy(); + face.destroy(); + blob.destroy(); + + return totalX / 1000; + }); +} + + function astToString(ast: AST, isInQuoted? : boolean): string { if (Array.isArray(ast)) { const ast2 = ast.map((x)=>astToString(x, isInQuoted)); @@ -480,13 +529,10 @@ const fcMatch = await spawnSync('fc-match', ['--format=%{file}', fontFamily]); const path = fcMatch.stdout.toString(); pdfDoc.registerFontkit(fontkit); const fontBytes = fs.readFileSync(path); - console.log("A2A",rgb(0,0,0)); const customFont = await pdfDoc.embedFont(fontBytes); - console.log("A3A",rgb(0,0,0)); const rgbColor = await hexColorToRGB(color); - console.log("A4A",rgb(0,0,0)); let a = await pdfDoc.getPage(0).drawText(text, { x: x, @@ -501,10 +547,10 @@ const path = fcMatch.stdout.toString(); async function hexColorToRGB(hex: string): Promise{ - let rgbHex = /[#]?(\d{2})(\d{2})(\d{2})/.exec(hex); - let r = parseInt((rgbHex as RegExpExecArray)[1], 16)/256.0; - let g = parseInt((rgbHex as RegExpExecArray)[2], 16)/256.0; - let b = parseInt((rgbHex as RegExpExecArray)[3], 16)/256.0; + let rgbHex = /[#]?([\dA-Fa-f]{2})([\dA-Fa-f]{2})([\dA-Fa-f]{2})/.exec(hex); + let r = parseInt((rgbHex as RegExpExecArray)[1], 16)/255.0; + let g = parseInt((rgbHex as RegExpExecArray)[2], 16)/255.0; + let b = parseInt((rgbHex as RegExpExecArray)[3], 16)/255.0; return rgb(r,g,b); } @@ -587,6 +633,22 @@ async function interp(prog: AST, env: Env): Promise { } } } + // define manipulation + if (op.id === "define") { + const vari : ItemId = prog[1] as ItemId; + const data = await interp(prog[2], env); + if (prog.length !== 3){ + throw invalidLengthException('define', 2); + }else if (!isItem(vari) || !isItem(data)){ + throw new Error("the type of replace and variable should be the same.") + }else if(env[vari.id] !== undefined){ + throw new Error("variable can't be duplicated defined.") + }else { + env = extendEnv(env, vari.id, true, data); + return {type:ItemType.Unit}; + } + } + /** let function */ else if (op.id === "let" || op.id === "letrec"){ const bindings = prog[1]; @@ -647,10 +709,16 @@ async function interp(prog: AST, env: Env): Promise { } } else{ + let argsMapped = []; + for (var i=1;i { + /* const argsMapped = await Promise.all( prog.slice(1).map(async (x) => { return interp(x, env); - })); + })); */ // binary basic operator if (op.id === "+") { return interpBinary(add, argsMapped); @@ -706,7 +774,69 @@ async function interp(prog: AST, env: Env): Promise { }; } } - } else if (op.id === "car") { + }else if (op.id === "and"){ + if (prog.length !== 3){ + throw invalidLengthException('and', 2); + }else if (!argsMapped[0].hasOwnProperty('type') || (argsMapped[0] as Item).type !== ItemType.Bool + || !argsMapped[1].hasOwnProperty('type') || (argsMapped[1] as Item).type !== ItemType.Bool){ + throw new Error("the arg of 'and' is not valid boolean value") + }else{ + let ret = { + type : ItemType.Bool, + bool: (argsMapped[0] as ItemBool).bool && (argsMapped[1] as ItemBool).bool + }; + return ret as Item; + } + }else if (op.id === "or"){ + if (prog.length !== 3){ + throw invalidLengthException('or', 2); + }else if (!argsMapped[0].hasOwnProperty('type') || (argsMapped[0] as Item).type !== ItemType.Bool + || !argsMapped[1].hasOwnProperty('type') || (argsMapped[1] as Item).type !== ItemType.Bool){ + throw new Error("the arg of 'or' is not valid boolean value") + }else{ + let ret = { + type : ItemType.Bool, + bool: (argsMapped[0] as ItemBool).bool || (argsMapped[1] as ItemBool).bool + }; + return ret as Item; + } + } + + // measuring + else if (op.id === "measureWidthPx"){ + if (prog.length !== 4){ + throw invalidLengthException('measureWidthPx', 3); + }else{ + let text = (argsMapped[0] as ItemStr).str; + let fontfamily = (argsMapped[1] as ItemStr).str; + let sizePt = (argsMapped[2] as ItemFlo).flo; + let returnValue = await measureWidthPx(text, fontfamily, sizePt); + return { + type: ItemType.Flo, + flo: returnValue + } + } + } + + else if (op.id === "isList"){ + const arg = argsMapped[0]; + if (prog.length !== 2){ + throw invalidLengthException('isList', 1); + }else if ((arg as Item).type === ItemType.Ls){ + + let a = { + type: ItemType.Bool, + bool: true as boolean, + }; + return a as Item; + }else{ + return { + type: ItemType.Bool, + bool: false as boolean, + }; + } + } + else if (op.id === "car") { const arg = argsMapped[0]; if (prog.length !== 2){ throw invalidLengthException('car', 1); @@ -728,7 +858,7 @@ async function interp(prog: AST, env: Env): Promise { }else if (op.id === "cons") { const arg = argsMapped; if (prog.length !== 3){ - throw invalidLengthException('cdr', 2); + throw invalidLengthException('cons', 2); }else if (!arg[1].hasOwnProperty('type') || (arg[1] as Item).type !== ItemType.Ls){ throw new Error("the 2nd arg of 'cons' is not a list.") }else{ @@ -778,11 +908,10 @@ async function interp(prog: AST, env: Env): Promise { return subString(str, i as ItemInt, prog[3] as ItemInt);} } } - // set manipulations else if (op.id === "set!") { const vari : ItemId = prog[1] as ItemId; - const replacer = prog[2]; + const replacer = await interp(prog[2], env); if (prog.length !== 3){ throw invalidLengthException('set!', 2); }else if (!isItem(vari) || !isItem(replacer) @@ -968,6 +1097,7 @@ async function run(){ const prog = fs.readFileSync(filename, { encoding: 'utf8' }); console.log(await evaluate(prog)); + const pdfBytes = await pdfDoc.save(); fs.writeFileSync(filename+'.pdf', pdfBytes, 'binary'); diff --git a/text.lisp b/text.lisp index 1d38465..3023dbd 100644 --- a/text.lisp +++ b/text.lisp @@ -1,39 +1,65 @@ -(letrec ( - (defaultFontFormat - '(("fontFamily" "Gentium") - - ("color" "#000000") - ("size" 12) - ) - ) - (map (lambda (f l) - (if (!= l '()) - (cons (f (car l)) (map f (cdr l))) - '()))) - (emptyDict '()) - (extendDict (lambda (dict var data) (cons (cons var (cons data '())) dict))) - (dictRef (lambda (dict key) - (if (= dict '()) false - (if (= key (car (car dict))) (car (cdr (car dict))) (dictRef (cdr dict) key)) - ))) +(begin +(define defaultFontFormat + '(("fontFamily" "Gentium") + ("color" "#ff0000") + ("fontSize" 12) ) +) + + +(define map (lambda (f l) + (if (!= l '()) + (cons (f (car l)) (map f (cdr l))) + '()))) +(define emptyDict '()) +(define extendDict (lambda (dict var data) (cons (cons var (cons data '())) dict))) +(define dictRef (lambda (dict key) + (if (= dict '()) false + (if (= key (car (car dict))) (car (cdr (car dict))) (dictRef (cdr dict) key)) + ))) +(define setDictItem (lambda (dict key data) + (if (= (dictRef dict key) false) + false + (setDictItemAux dict '() key data) +))) + +(define setDictItemAux (lambda (oldDict newDict key data) +(if (= oldDict '()) newDict +(if (= (car(car oldDict)) key) + (setDictItemAux (cdr oldDict) (cons (cons key (cons data '())) newDict) key data) + (setDictItemAux (cdr oldDict) (cons (car oldDict) newDict) key data) +)))) -(begin (addPDFPage '()) -(drawText - (dictRef defaultFontFormat "fontFamily") - (dictRef defaultFontFormat "size") - (dictRef defaultFontFormat "color") - 40.0 - 50.0 - "blah" -) (addPDFPage '()) +(define text2boxAux2 (lambda (format text) + (if (isList text) + (if (= (listRef text 0) "fontSize") + (let ((newFormat (setDictItem format "fontSize" (listRef text 1)))) (text2boxAux1 newFormat (listRef text 2))) + text) + (cons format (cons text '()))) +)) + +(define text2boxAux1 (lambda (format txt) +(if (isList txt) +(map (lambda (x) (text2boxAux2 format x)) txt) +(cons format (cons txt '())) +))) + +(define text2box (lambda (txt) (text2boxAux1 defaultFontFormat txt))) + -(map (lambda (x) (+ x 2)) '(8 9 10)) -(let ((dict emptyDict)) - (let ((dictExtended - (extendDict - (extendDict emptyDict 1 2) 2 4))) - (dictRef dictExtended 2) -)))) \ No newline at end of file + + +(drawText +(dictRef defaultFontFormat "fontFamily") +(dictRef defaultFontFormat "fontSize") +(dictRef defaultFontFormat "color") +40.0 +50.0 +"blah" +) +(define text '("abracabra" ("fontSize" 18 "貓") "foo")) +(text2box text) +(measureWidthPx "1314abc" "Gentium" 12.0) +) \ No newline at end of file diff --git a/text.lisp.pdf b/text.lisp.pdf index 08e08686487b894715567faaf5aac7d89e0e3554..335d5699028c25694bdf15c52c3e0319b518bde1 100644 GIT binary patch delta 3806 zcmV<44k7W(;uYKf3XnM%FbY0C3UhRFWnpa!c$_Qbath%xR4@R-kx(K5sF8Ii1llST z1c9K1paHd@0`ZjsF)_DsECp{G0Wz0SVFfUMI0`RDX>xOPAT%}#FHB`_XLM*FGc-3a z3O+sxb98cLVQmU{oZVboZ(O$#e%G%!kI926-Y-QEz_G2=DAELR+6E2$pjcZ~g{?KD zH4y*%e%!;$%Ervwbo#^j<>L0_^eD8@!RU# zSF1dOxgeK)x45`E|7Q6cI8frBOHP1Uqg4Vufe)WvUoTggKi52Yy~1!g7Yd&qHtjtI zWF6*Jo}9k=@at-w&4u#h^qceB#d`g1@hMo1eT7lRuxFK409v zSzKS7U$62vdG1P9A^U0hx9cl^e6)aQQd#Pw=dW+B-h=gKn*a6u-C}dxv$yA$x09V4 zd^0cYiBm~PtCNqxO;2Ci4}X%upp(o0DA)tjf+mv0vn*7`J0eld8%iBS8o@3in|w1 z$o}l*^IVeauv+APT7LWT`FH2sC~NjC4W;H@Ctcv0iC^K!;#IHO~#BIz9J^ z*^8u0b0}+!8~nN>r!{z@@By#!N=Q@2V_iEZ#g6%TtU1XtVsxY{uRxlzx@7xqu)&Rt zow97xcnv71wwox3zAeL9=z&!B0XsBvfeAtaiOdUth)9(Rdt;rIb&aBHjzNS}beVHX zRC?s0O?XOaMabC)f0R;a2W6?9--DpMg* zi@LvTN>oj7&2ZODfV4N6qq>FYlTW6o9@!^7RvvfHF#WM##(CRMF(T?mCVe9O&$I+p z4EvE#$ohTgB&X#ZIdtVpRl);*l~P>Dp~?MKa79aW)3Aaa8cfYS zOoa!c>QI@o8iT|Pl@)lL(OLdsSe6a6XN`qA(!MeQt5E?kp$f&YH+G^jG9O+6eWY#e zmk|e$WgFC!)8X(6W)d)PdQ1(Y4@0;2Thq-Ij+zfD<^n+Z?(^3$TZ>_Ss=K+4rh1%O z0LRpSFsrFqT;9V_D?C80;ablMAvcw|skOY1st%C*3fXCwOjF~Gi>89Vre2-xip5ES zKZf==B*T?02sr*s?bAR$RmC+-UnwtqwIZ_iF)HD+x{CzLC#bA84iooXg3M(Uv?-)c zphlf}fSxD>@G#-DGu2FOTR@iZ2?4^CT?1-=Tw3UPJ&+?00u~$(Q?8#im{J|iD|}g& z8vy>im)mIcQ>=+?sXPG7tDr1`=X%Oma9Y7$ve9S5#}$R`jU-fhg=L^bMP(-T`5REw z7v5yhO)1#(p<0MaVs!7rOn^iVcg$VnKd6u1>@e$7wnht45=IM^=n+V5mz_z#)9_$_ z9iIT7U8h;H-b2A6vyhp6cLY=-;Nge^lQ3rIK?+XxWsuq%r?*}0 zX$t|&ri8jSgoAh_H3Yi)Dvaq0#CX}^P(H7!pApF#&Ip*Etll1y zB#5ctl1zmj1qlY+Dz|;k9z?EK&RZ>Htf~TBSpgDvc(aV}2w~4wSWFRROv5&Rk0I#O zy-`#WVMa9%DcQfZbE;J_AvMs}O_#^% zO}N?`-M7mF(D<5xEzf*oww6M$^JMx8@*dG_l4qvSCJw zS1q=q2C{&YT2w1i@?(;wsYcL$$u{&r0i4rTR8HUl6`E0Wl-vr}oHoR0;29{ff&vs)UnA-?ojr>!KEX2(wbuf9q~Hu{a40h_KAz zA7ERzlcV)O-b5kuR-(C^m60_91jXO6GNZVnaqg@fD+Du6cTX-S*_tGOOb98il1Kdm zd#bXD$8~VrKgMt@BRAdRlry16+ld%tw?)|}0gS2YSs9@Wiu6OLG>aqvuvF2F&Wlvd z-QfChpdl^QDjo&SZ6Nc@2aB$5wr;_*@HLAWVgEXdLU5}FsDPf1Iu4e*Y`-@=Kn-w^ zCGK*IcWb#rJ08=w1Tpr1$heQ>ngRG)l)yHbI_bq>@2YwPmT8A6;Wci%C~FVUL*8ltpH7XqVl3FwH>8G|7R8a| zHbiqkp~r>~EfjA>AHK#m0yfmw7Q4trCeq5-N8J01)~=ci9{Rk0Wg=ixbJEfZcAgE5 zso!;MZUX$LZ zYITrg_H5Z2LyT0{MS9DHWp?*OO}M+HGwIufR+fo26z_a=uyV=*V0{-8i6p7n_z>x6 zG2!CxrfDTXC=&`-XUAaoO(u#+SZ354F%<7LnH`AT7fUmL-leuidgqY(AZU8r6T7o_ zR5Exi>fI-rPMTaqO4Q7ZfH=(=&NAIZy;~wuuVW%oOQYtj5i{Z+G7~|#xSdW8lxr*q zGTQcVBG~RuVVO~1yA{hwkVmpJ;>le+u)PCg3OtnJOx}ulMLneygut{Lxypdos`E}M zddTtIuD%|BT32Cq{r(8g7|c!A!%Z25nO5(dVlZYSH|+7TxLrx&OyL=gQ^NIC;G{6s zn+tV7qD>pQVUPFASL4?f5)xQthq}d~Q2QZ*UtQl3@nPlkRy$4Kg^PmfQRfZcyz5b~ z?x;^T_V6t1p*g;7U~|LIyj=)KC`-uYg9OW@vaN^-Cix%EK9Q_>|%k zk1Rk6Q%}+MfJ15DZqf~(Taq_a;KI^E@<$9L%{of#R)-`J6m%~9=1}ZeM}9Tdz#nf$ zr2*=H2s>8&3;VsMI3}ZGv#+!vHvz7a_n> z+ARcrdCHVKChI5;dTO^3^3#1+b=dI2m2>p%F}t0_UOD#5HOwy!WJ#{j@EenjH2FS% zQoB6b-{=J#qrTrN}*FIOO2ATb~_ATl6b3NJ}+WMz0D zTOcqXF*G1u3O+sxb98cLVQmU{oGr?s5x^i21<}2OfI(0?iawG8C<_bZ59W!T1z5|W zfHdhc$S5C!3dirBNoMojPWPAJF<}Go_Xgt%Wo~41baG{3Z3<;>WN%_>3JP;{VRCeM U5OQT^3Nbf1IW;&6B_%~qMoVHt;Q#;t delta 4110 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 aFKeWi4-#$<5fTv<78Zm&eypesQu-g53cZg2 diff --git a/text2.lisp b/text2.lisp new file mode 100644 index 0000000..d222fea --- /dev/null +++ b/text2.lisp @@ -0,0 +1,38 @@ +(letrec ( + (defaultFontFormat + '(("fontFamily" "Gentium") + ("color" "#ff0000") + ("size" 12) + ) + ) + (map (lambda (f l) + (if (!= l '()) + (cons (f (car l)) (map f (cdr l))) + '()))) + (emptyDict '()) + (extendDict (lambda (dict var data) (cons (cons var (cons data '())) dict))) + (dictRef (lambda (dict key) + (if (= dict '()) false + (if (= key (car (car dict))) (car (cdr (car dict))) (dictRef (cdr dict) key)) + ))) + ) + +(begin +(addPDFPage '()) +(drawText + "Gentium" + "#ff0000" + "12" + 40.0 + 50.0 + "blah" +) +(addPDFPage '()) + +(map (lambda (x) (+ x 2)) '(8 9 10)) +(let ((dict emptyDict)) + (let ((dictExtended + (extendDict + (extendDict emptyDict 1 2) 2 4))) + (dictRef dictExtended 2) +)))) \ No newline at end of file -- 2.39.2