myrole-docx-editor 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -0
- package/dist/chunks/sdk-BKkeAoJT.js +15065 -0
- package/dist/chunks/sdk-BKkeAoJT.js.map +1 -0
- package/dist/chunks/vars-blockly-C-cJRHx8.js +42 -0
- package/dist/chunks/vars-blockly-C-cJRHx8.js.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/react.js +36 -0
- package/dist/react.js.map +1 -0
- package/dist/types/packages/docx-editor/src/chrome.d.ts +28 -0
- package/dist/types/packages/docx-editor/src/commands.d.ts +16 -0
- package/dist/types/packages/docx-editor/src/comments.d.ts +24 -0
- package/dist/types/packages/docx-editor/src/editor.d.ts +293 -0
- package/dist/types/packages/docx-editor/src/embed.d.ts +7 -0
- package/dist/types/packages/docx-editor/src/font-manifest.d.ts +7 -0
- package/dist/types/packages/docx-editor/src/fonts.d.ts +5 -0
- package/dist/types/packages/docx-editor/src/html.d.ts +13 -0
- package/dist/types/packages/docx-editor/src/index.d.ts +20 -0
- package/dist/types/packages/docx-editor/src/inspector-ui.d.ts +6 -0
- package/dist/types/packages/docx-editor/src/inspector.d.ts +101 -0
- package/dist/types/packages/docx-editor/src/react.d.ts +24 -0
- package/dist/types/packages/docx-editor/src/ruler.d.ts +4 -0
- package/dist/types/packages/docx-editor/src/sdk.d.ts +85 -0
- package/dist/types/packages/docx-editor/src/ui/icons.d.ts +2 -0
- package/dist/types/packages/docx-editor/src/ui/shell.d.ts +57 -0
- package/dist/types/packages/docx-editor/src/variables.d.ts +68 -0
- package/dist/types/packages/docx-editor/src/vars-blockly.d.ts +9 -0
- package/dist/types/packages/docx-editor/src/vars-complete.d.ts +60 -0
- package/dist/types/packages/docx-editor/src/vars-library.d.ts +59 -0
- package/dist/types/packages/docx-editor/src/vars-panel.d.ts +38 -0
- package/dist/types/packages/docx-model/src/edit.d.ts +64 -0
- package/dist/types/packages/docx-model/src/editor.d.ts +254 -0
- package/dist/types/packages/docx-model/src/fonts.d.ts +60 -0
- package/dist/types/packages/docx-model/src/heal.d.ts +28 -0
- package/dist/types/packages/docx-model/src/index.d.ts +113 -0
- package/dist/types/packages/docx-model/src/insert.d.ts +30 -0
- package/dist/types/packages/docx-model/src/layout.d.ts +411 -0
- package/dist/types/packages/docx-model/src/numbering.d.ts +63 -0
- package/dist/types/packages/docx-model/src/paste.d.ts +51 -0
- package/dist/types/packages/docx-model/src/rels.d.ts +18 -0
- package/dist/types/packages/docx-model/src/spans.d.ts +69 -0
- package/dist/types/packages/docx-model/src/styles.d.ts +42 -0
- package/dist/types/packages/docx-model/src/tables.d.ts +196 -0
- package/dist/types/packages/docx-model/src/textbox.d.ts +61 -0
- package/dist/types/packages/docx-render/src/border.d.ts +39 -0
- package/dist/types/packages/docx-render/src/document.d.ts +55 -0
- package/dist/types/packages/docx-render/src/font-advances.d.ts +1 -0
- package/dist/types/packages/docx-render/src/hit.d.ts +94 -0
- package/dist/types/packages/docx-render/src/index.d.ts +12 -0
- package/dist/types/packages/docx-render/src/metrics.d.ts +6 -0
- package/dist/types/packages/docx-render/src/node-ctx.d.ts +36 -0
- package/dist/types/packages/docx-render/src/paragraph.d.ts +18 -0
- package/dist/types/packages/docx-render/src/parts.d.ts +40 -0
- package/dist/types/packages/docx-render/src/renderer.d.ts +251 -0
- package/dist/types/packages/docx-render/src/table.d.ts +15 -0
- package/dist/types/packages/docx-render/src/text.d.ts +396 -0
- package/dist/types/packages/docx-render/src/types.d.ts +514 -0
- package/dist/types/packages/docx-tags/src/add-comments.d.ts +2 -0
- package/dist/types/packages/docx-tags/src/comments.d.ts +19 -0
- package/dist/types/packages/docx-tags/src/grammar.d.ts +71 -0
- package/dist/types/packages/docx-tags/src/highlight.d.ts +22 -0
- package/dist/types/packages/docx-tags/src/index.d.ts +4 -0
- package/dist/types/packages/docx-tags/src/scan.d.ts +27 -0
- package/dist/types/packages/docx-vars/src/audit.d.ts +44 -0
- package/dist/types/packages/docx-vars/src/blockify.d.ts +61 -0
- package/dist/types/packages/docx-vars/src/blocks.d.ts +46 -0
- package/dist/types/packages/docx-vars/src/describe.d.ts +21 -0
- package/dist/types/packages/docx-vars/src/generate.d.ts +11 -0
- package/dist/types/packages/docx-vars/src/icons.d.ts +52 -0
- package/dist/types/packages/docx-vars/src/idioms.d.ts +36 -0
- package/dist/types/packages/docx-vars/src/index.d.ts +31 -0
- package/dist/types/packages/docx-vars/src/labels.d.ts +42 -0
- package/dist/types/packages/docx-vars/src/library.d.ts +47 -0
- package/dist/types/packages/docx-vars/src/phrase.d.ts +3 -0
- package/dist/types/packages/docx-vars/src/picker.d.ts +19 -0
- package/dist/types/packages/docx-vars/src/plugin.d.ts +126 -0
- package/dist/types/packages/docx-vars/src/plugins.d.ts +29 -0
- package/dist/types/packages/docx-vars/src/preview.d.ts +25 -0
- package/dist/types/packages/docx-vars/src/scenario.d.ts +20 -0
- package/dist/types/packages/docx-vars/src/substitute.d.ts +28 -0
- package/dist/types/packages/docx-vars/src/sync.d.ts +56 -0
- package/dist/types/packages/docx-vars/src/target-canvas.d.ts +66 -0
- package/dist/types/packages/docx-vars/src/tokens.d.ts +18 -0
- package/dist/types/packages/fonts/src/advances.d.ts +90 -0
- package/dist/types/packages/fonts/src/aliases.d.ts +27 -0
- package/dist/types/packages/fonts/src/families.d.ts +1 -0
- package/dist/types/packages/fonts/src/load.d.ts +25 -0
- package/dist/types/packages/fonts/src/metrics.d.ts +44 -0
- package/fonts/ttf/abadi-mt-condensed-extra-bold-400-normal.ttf +0 -0
- package/fonts/ttf/abadi-mt-condensed-light-400-normal.ttf +0 -0
- package/fonts/ttf/angsana-new-400-italic.ttf +0 -0
- package/fonts/ttf/angsana-new-400-normal.ttf +0 -0
- package/fonts/ttf/angsana-new-700-italic.ttf +0 -0
- package/fonts/ttf/angsana-new-700-normal.ttf +0 -0
- package/fonts/ttf/apple-color-emoji-400-normal.ttf +0 -0
- package/fonts/ttf/apple-symbols-400-normal.ttf +0 -0
- package/fonts/ttf/aptos-400-italic.ttf +0 -0
- package/fonts/ttf/aptos-400-normal.ttf +0 -0
- package/fonts/ttf/aptos-700-italic.ttf +0 -0
- package/fonts/ttf/aptos-700-normal.ttf +0 -0
- package/fonts/ttf/aptos-narrow-400-italic.ttf +0 -0
- package/fonts/ttf/aptos-narrow-400-normal.ttf +0 -0
- package/fonts/ttf/aptos-narrow-700-italic.ttf +0 -0
- package/fonts/ttf/aptos-narrow-700-normal.ttf +0 -0
- package/fonts/ttf/arial-400-italic.ttf +0 -0
- package/fonts/ttf/arial-400-normal.ttf +0 -0
- package/fonts/ttf/arial-700-italic.ttf +0 -0
- package/fonts/ttf/arial-700-normal.ttf +0 -0
- package/fonts/ttf/arial-black-700-normal.ttf +0 -0
- package/fonts/ttf/arial-hebrew-400-normal.ttf +0 -0
- package/fonts/ttf/arial-hebrew-700-normal.ttf +0 -0
- package/fonts/ttf/arial-narrow-400-italic.ttf +0 -0
- package/fonts/ttf/arial-narrow-400-normal.ttf +0 -0
- package/fonts/ttf/arial-narrow-700-italic.ttf +0 -0
- package/fonts/ttf/arial-narrow-700-normal.ttf +0 -0
- package/fonts/ttf/arial-rounded-mt-bold-400-normal.ttf +0 -0
- package/fonts/ttf/arial-unicode-ms-400-normal.ttf +0 -0
- package/fonts/ttf/avenir-400-italic.ttf +0 -0
- package/fonts/ttf/avenir-400-normal.ttf +0 -0
- package/fonts/ttf/avenir-700-normal.ttf +0 -0
- package/fonts/ttf/avenir-black-700-normal.ttf +0 -0
- package/fonts/ttf/avenir-book-400-normal.ttf +0 -0
- package/fonts/ttf/avenir-heavy-700-italic.ttf +0 -0
- package/fonts/ttf/avenir-heavy-700-normal.ttf +0 -0
- package/fonts/ttf/avenir-light-400-italic.ttf +0 -0
- package/fonts/ttf/avenir-light-400-normal.ttf +0 -0
- package/fonts/ttf/avenir-next-400-italic.ttf +0 -0
- package/fonts/ttf/avenir-next-400-normal.ttf +0 -0
- package/fonts/ttf/avenir-next-700-italic.ttf +0 -0
- package/fonts/ttf/avenir-next-700-normal.ttf +0 -0
- package/fonts/ttf/baskerville-old-face-400-normal.ttf +0 -0
- package/fonts/ttf/batang-400-normal.ttf +0 -0
- package/fonts/ttf/bauhaus-93-400-normal.ttf +0 -0
- package/fonts/ttf/big-caslon-400-normal.ttf +0 -0
- package/fonts/ttf/bookman-old-style-400-italic.ttf +0 -0
- package/fonts/ttf/bookman-old-style-400-normal.ttf +0 -0
- package/fonts/ttf/bookman-old-style-700-italic.ttf +0 -0
- package/fonts/ttf/bookman-old-style-700-normal.ttf +0 -0
- package/fonts/ttf/calibri-400-italic.ttf +0 -0
- package/fonts/ttf/calibri-400-normal.ttf +0 -0
- package/fonts/ttf/calibri-700-italic.ttf +0 -0
- package/fonts/ttf/calibri-700-normal.ttf +0 -0
- package/fonts/ttf/calibri-light-400-italic.ttf +0 -0
- package/fonts/ttf/calibri-light-400-normal.ttf +0 -0
- package/fonts/ttf/cambria-400-italic.ttf +0 -0
- package/fonts/ttf/cambria-400-normal.ttf +0 -0
- package/fonts/ttf/cambria-700-italic.ttf +0 -0
- package/fonts/ttf/cambria-700-normal.ttf +0 -0
- package/fonts/ttf/cambria-math-400-normal.ttf +0 -0
- package/fonts/ttf/candara-400-italic.ttf +0 -0
- package/fonts/ttf/candara-400-normal.ttf +0 -0
- package/fonts/ttf/candara-700-italic.ttf +0 -0
- package/fonts/ttf/candara-700-normal.ttf +0 -0
- package/fonts/ttf/century-400-normal.ttf +0 -0
- package/fonts/ttf/century-gothic-400-italic.ttf +0 -0
- package/fonts/ttf/century-gothic-400-normal.ttf +0 -0
- package/fonts/ttf/century-gothic-700-italic.ttf +0 -0
- package/fonts/ttf/century-gothic-700-normal.ttf +0 -0
- package/fonts/ttf/century-schoolbook-400-italic.ttf +0 -0
- package/fonts/ttf/century-schoolbook-400-normal.ttf +0 -0
- package/fonts/ttf/century-schoolbook-700-italic.ttf +0 -0
- package/fonts/ttf/century-schoolbook-700-normal.ttf +0 -0
- package/fonts/ttf/comic-sans-ms-400-normal.ttf +0 -0
- package/fonts/ttf/comic-sans-ms-700-normal.ttf +0 -0
- package/fonts/ttf/consolas-400-italic.ttf +0 -0
- package/fonts/ttf/consolas-400-normal.ttf +0 -0
- package/fonts/ttf/consolas-700-normal.ttf +0 -0
- package/fonts/ttf/corbel-400-italic.ttf +0 -0
- package/fonts/ttf/corbel-400-normal.ttf +0 -0
- package/fonts/ttf/corbel-700-italic.ttf +0 -0
- package/fonts/ttf/corbel-700-normal.ttf +0 -0
- package/fonts/ttf/cordia-new-400-italic.ttf +0 -0
- package/fonts/ttf/cordia-new-400-normal.ttf +0 -0
- package/fonts/ttf/cordia-new-700-italic.ttf +0 -0
- package/fonts/ttf/cordia-new-700-normal.ttf +0 -0
- package/fonts/ttf/courier-400-normal.ttf +0 -0
- package/fonts/ttf/courier-new-400-italic.ttf +0 -0
- package/fonts/ttf/courier-new-400-normal.ttf +0 -0
- package/fonts/ttf/courier-new-700-normal.ttf +0 -0
- package/fonts/ttf/dengxian-400-normal.ttf +0 -0
- package/fonts/ttf/dengxian-700-normal.ttf +0 -0
- package/fonts/ttf/dengxian-light-400-normal.ttf +0 -0
- package/fonts/ttf/didot-400-italic.ttf +0 -0
- package/fonts/ttf/didot-400-normal.ttf +0 -0
- package/fonts/ttf/didot-700-normal.ttf +0 -0
- package/fonts/ttf/edwardian-script-itc-400-normal.ttf +0 -0
- package/fonts/ttf/euphemia-ucas-400-italic.ttf +0 -0
- package/fonts/ttf/euphemia-ucas-400-normal.ttf +0 -0
- package/fonts/ttf/euphemia-ucas-700-normal.ttf +0 -0
- package/fonts/ttf/eurostile-400-normal.ttf +0 -0
- package/fonts/ttf/eurostile-700-normal.ttf +0 -0
- package/fonts/ttf/franklin-gothic-book-400-italic.ttf +0 -0
- package/fonts/ttf/franklin-gothic-book-400-normal.ttf +0 -0
- package/fonts/ttf/franklin-gothic-demi-400-italic.ttf +0 -0
- package/fonts/ttf/franklin-gothic-demi-400-normal.ttf +0 -0
- package/fonts/ttf/franklin-gothic-demi-cond-400-normal.ttf +0 -0
- package/fonts/ttf/franklin-gothic-medium-400-italic.ttf +0 -0
- package/fonts/ttf/franklin-gothic-medium-400-normal.ttf +0 -0
- package/fonts/ttf/franklin-gothic-medium-cond-400-normal.ttf +0 -0
- package/fonts/ttf/futura-400-italic.ttf +0 -0
- package/fonts/ttf/futura-400-normal.ttf +0 -0
- package/fonts/ttf/futura-700-normal.ttf +0 -0
- package/fonts/ttf/garamond-400-italic.ttf +0 -0
- package/fonts/ttf/garamond-400-normal.ttf +0 -0
- package/fonts/ttf/garamond-700-italic.ttf +0 -0
- package/fonts/ttf/garamond-700-normal.ttf +0 -0
- package/fonts/ttf/geneva-400-normal.ttf +0 -0
- package/fonts/ttf/georgia-400-italic.ttf +0 -0
- package/fonts/ttf/georgia-400-normal.ttf +0 -0
- package/fonts/ttf/georgia-700-normal.ttf +0 -0
- package/fonts/ttf/gill-sans-400-italic.ttf +0 -0
- package/fonts/ttf/gill-sans-400-normal.ttf +0 -0
- package/fonts/ttf/gill-sans-700-italic.ttf +0 -0
- package/fonts/ttf/gill-sans-700-normal.ttf +0 -0
- package/fonts/ttf/gill-sans-light-400-italic.ttf +0 -0
- package/fonts/ttf/gill-sans-light-400-normal.ttf +0 -0
- package/fonts/ttf/gill-sans-mt-400-italic.ttf +0 -0
- package/fonts/ttf/gill-sans-mt-400-normal.ttf +0 -0
- package/fonts/ttf/gill-sans-mt-700-italic.ttf +0 -0
- package/fonts/ttf/gill-sans-mt-700-normal.ttf +0 -0
- package/fonts/ttf/helvetica-400-italic.ttf +0 -0
- package/fonts/ttf/helvetica-400-normal.ttf +0 -0
- package/fonts/ttf/helvetica-700-italic.ttf +0 -0
- package/fonts/ttf/helvetica-700-normal.ttf +0 -0
- package/fonts/ttf/helvetica-neue-400-italic.ttf +0 -0
- package/fonts/ttf/helvetica-neue-400-normal.ttf +0 -0
- package/fonts/ttf/helvetica-neue-700-italic.ttf +0 -0
- package/fonts/ttf/helvetica-neue-700-normal.ttf +0 -0
- package/fonts/ttf/hoefler-text-400-italic.ttf +0 -0
- package/fonts/ttf/hoefler-text-400-normal.ttf +0 -0
- package/fonts/ttf/hoefler-text-700-italic.ttf +0 -0
- package/fonts/ttf/hoefler-text-700-normal.ttf +0 -0
- package/fonts/ttf/lucida-grande-400-normal.ttf +0 -0
- package/fonts/ttf/lucida-grande-700-normal.ttf +0 -0
- package/fonts/ttf/lucida-sans-400-italic.ttf +0 -0
- package/fonts/ttf/lucida-sans-400-normal.ttf +0 -0
- package/fonts/ttf/lucida-sans-700-italic.ttf +0 -0
- package/fonts/ttf/lucida-sans-700-normal.ttf +0 -0
- package/fonts/ttf/lucida-sans-unicode-400-normal.ttf +0 -0
- package/fonts/ttf/malgun-gothic-400-normal.ttf +0 -0
- package/fonts/ttf/malgun-gothic-700-normal.ttf +0 -0
- package/fonts/ttf/mangal-400-normal.ttf +0 -0
- package/fonts/ttf/mangal-700-normal.ttf +0 -0
- package/fonts/ttf/microsoft-sans-serif-400-normal.ttf +0 -0
- package/fonts/ttf/microsoft-yahei-400-normal.ttf +0 -0
- package/fonts/ttf/microsoft-yahei-700-normal.ttf +0 -0
- package/fonts/ttf/microsoft-yi-baiti-400-normal.ttf +0 -0
- package/fonts/ttf/monotype-sorts-400-normal.ttf +0 -0
- package/fonts/ttf/ms-gothic-400-normal.ttf +0 -0
- package/fonts/ttf/ms-mincho-400-normal.ttf +0 -0
- package/fonts/ttf/ms-ui-gothic-400-normal.ttf +0 -0
- package/fonts/ttf/new-york-400-italic.ttf +0 -0
- package/fonts/ttf/new-york-400-normal.ttf +0 -0
- package/fonts/ttf/news-gothic-mt-400-italic.ttf +0 -0
- package/fonts/ttf/news-gothic-mt-400-normal.ttf +0 -0
- package/fonts/ttf/news-gothic-mt-700-italic.ttf +0 -0
- package/fonts/ttf/news-gothic-mt-700-normal.ttf +0 -0
- package/fonts/ttf/nsimsun-400-normal.ttf +0 -0
- package/fonts/ttf/optima-400-italic.ttf +0 -0
- package/fonts/ttf/optima-400-normal.ttf +0 -0
- package/fonts/ttf/optima-700-italic.ttf +0 -0
- package/fonts/ttf/optima-700-normal.ttf +0 -0
- package/fonts/ttf/palatino-400-italic.ttf +0 -0
- package/fonts/ttf/palatino-400-normal.ttf +0 -0
- package/fonts/ttf/palatino-700-italic.ttf +0 -0
- package/fonts/ttf/palatino-700-normal.ttf +0 -0
- package/fonts/ttf/palatino-linotype-400-italic.ttf +0 -0
- package/fonts/ttf/palatino-linotype-400-normal.ttf +0 -0
- package/fonts/ttf/palatino-linotype-700-italic.ttf +0 -0
- package/fonts/ttf/palatino-linotype-700-normal.ttf +0 -0
- package/fonts/ttf/pmingliu-400-normal.ttf +0 -0
- package/fonts/ttf/pt-mono-400-normal.ttf +0 -0
- package/fonts/ttf/pt-mono-700-normal.ttf +0 -0
- package/fonts/ttf/segoe-ui-symbol-400-normal.ttf +0 -0
- package/fonts/ttf/simsun-400-normal.ttf +0 -0
- package/fonts/ttf/skia-400-normal.ttf +0 -0
- package/fonts/ttf/stencil-400-normal.ttf +0 -0
- package/fonts/ttf/symbol-400-normal.ttf +0 -0
- package/fonts/ttf/tahoma-400-normal.ttf +0 -0
- package/fonts/ttf/tahoma-700-normal.ttf +0 -0
- package/fonts/ttf/times-400-italic.ttf +0 -0
- package/fonts/ttf/times-400-normal.ttf +0 -0
- package/fonts/ttf/times-700-italic.ttf +0 -0
- package/fonts/ttf/times-700-normal.ttf +0 -0
- package/fonts/ttf/times-new-roman-400-italic.ttf +0 -0
- package/fonts/ttf/times-new-roman-400-normal.ttf +0 -0
- package/fonts/ttf/times-new-roman-700-italic.ttf +0 -0
- package/fonts/ttf/times-new-roman-700-normal.ttf +0 -0
- package/fonts/ttf/trebuchet-ms-400-italic.ttf +0 -0
- package/fonts/ttf/trebuchet-ms-400-normal.ttf +0 -0
- package/fonts/ttf/trebuchet-ms-700-italic.ttf +0 -0
- package/fonts/ttf/trebuchet-ms-700-normal.ttf +0 -0
- package/fonts/ttf/tw-cen-mt-400-normal.ttf +0 -0
- package/fonts/ttf/tw-cen-mt-700-normal.ttf +0 -0
- package/fonts/ttf/tw-cen-mt-condensed-400-normal.ttf +0 -0
- package/fonts/ttf/tw-cen-mt-condensed-700-normal.ttf +0 -0
- package/fonts/ttf/verdana-400-italic.ttf +0 -0
- package/fonts/ttf/verdana-400-normal.ttf +0 -0
- package/fonts/ttf/verdana-700-italic.ttf +0 -0
- package/fonts/ttf/verdana-700-normal.ttf +0 -0
- package/fonts/ttf/webdings-400-normal.ttf +0 -0
- package/fonts/ttf/wingdings-2-400-normal.ttf +0 -0
- package/fonts/ttf/wingdings-3-400-normal.ttf +0 -0
- package/fonts/ttf/wingdings-400-normal.ttf +0 -0
- package/fonts/ttf/yu-gothic-light-400-normal.ttf +0 -0
- package/fonts/ttf/yu-mincho-400-normal.ttf +0 -0
- package/fonts/ttf/yu-mincho-700-normal.ttf +0 -0
- package/package.json +63 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Tag } from '../../docx-tags/src/index';
|
|
2
|
+
/**
|
|
3
|
+
* Les sections d'une matrice ne forment pas un arbre dans la tête du rédacteur,
|
|
4
|
+
* mais une **table de cas** : pour telle temporalité et telle phase, quelle
|
|
5
|
+
* phrase ? Le bloc RÉMUNÉRATION en est l'exemple — quatre sections imbriquées
|
|
6
|
+
* pour quatre scénarios de contrat.
|
|
7
|
+
*
|
|
8
|
+
* On extrait ces scénarios des conditions elles-mêmes, pour en faire des
|
|
9
|
+
* interrupteurs. C'est la « toolbox préremplie » du brief : on bascule, le
|
|
10
|
+
* document se réécrit.
|
|
11
|
+
*/
|
|
12
|
+
export interface Scenario {
|
|
13
|
+
path: string;
|
|
14
|
+
label: string;
|
|
15
|
+
/** un booléen s'inverse ; un énuméré propose les littéraux vus dans le document */
|
|
16
|
+
options?: string[];
|
|
17
|
+
}
|
|
18
|
+
export declare function scenarios(tags: Tag[]): Scenario[];
|
|
19
|
+
export declare function readValue(obj: any, path: string): unknown;
|
|
20
|
+
export declare function writeValue(obj: any, path: string, value: unknown): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { StyledParagraph } from '../../docx-model/src/index';
|
|
2
|
+
import type { Tag } from '../../docx-tags/src/index';
|
|
3
|
+
import type { Evaluated } from './preview';
|
|
4
|
+
/**
|
|
5
|
+
* Applique les valeurs évaluées aux runs du document.
|
|
6
|
+
*
|
|
7
|
+
* On substitue **run par run** plutôt que paragraphe par paragraphe : après
|
|
8
|
+
* healing chaque tag est seul dans son run, donc remplacer son texte préserve
|
|
9
|
+
* la mise en forme de tout ce qui l'entoure. C'est la même propriété qui rend
|
|
10
|
+
* la réécriture possible côté docx.
|
|
11
|
+
*
|
|
12
|
+
* Le nombre de paragraphes est conservé même quand une section les masque :
|
|
13
|
+
* `bodyBlocks`, `tables` et `resolveNumbering` sont indexés par paragraphe et
|
|
14
|
+
* se désaligneraient si on en retirait.
|
|
15
|
+
*/
|
|
16
|
+
/** Boîte réservée pour un marqueur donné, quand un affichage tiers l'occupe. */
|
|
17
|
+
export type TagBox = (mark: string) => {
|
|
18
|
+
widthPx: number;
|
|
19
|
+
heightPx: number;
|
|
20
|
+
} | undefined;
|
|
21
|
+
/** Morceaux de phrase à dessiner en ligne, quand l'affichage n'est pas une pastille. */
|
|
22
|
+
export type TagInline = (tag: Tag) => {
|
|
23
|
+
text: string;
|
|
24
|
+
strong?: boolean;
|
|
25
|
+
}[] | undefined;
|
|
26
|
+
/** Marqueurs à poser en fin d'un paragraphe donné — affichages ancrés au texte. */
|
|
27
|
+
export type ParaMarks = (para: number) => string[];
|
|
28
|
+
export declare function substitute(paras: StyledParagraph[], tags: Tag[], ev: Evaluated, boxOf?: TagBox, inlineOf?: TagInline, marksAt?: ParaMarks): StyledParagraph[];
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sauvegarde et synchronisation.
|
|
3
|
+
*
|
|
4
|
+
* Trois contraintes mesurées, qui décident de tout :
|
|
5
|
+
*
|
|
6
|
+
* 1. **Un docx de matrice pèse jusqu'à 6,2 Mo** (`0_comedien.docx`), dont 99 %
|
|
7
|
+
* de polices embarquées. Le contenu qui change, lui, fait 33 Ko.
|
|
8
|
+
* 2. **On ne peut pas envoyer ça au déchargement de la page.** `sendBeacon` et
|
|
9
|
+
* `fetch(keepalive)` plafonnent à ~64 Ko — cent fois moins. Compter sur
|
|
10
|
+
* `pagehide` pour l'upload, c'est perdre le document.
|
|
11
|
+
* 3. **`visibilitychange` arrive bien avant**, page encore vivante : un `fetch`
|
|
12
|
+
* normal y passe. C'est là qu'il faut vider la file.
|
|
13
|
+
*
|
|
14
|
+
* D'où la séparation : l'**upload** part sur changement d'onglet et en différé
|
|
15
|
+
* pendant l'édition ; la **reprise après incident** ne stocke pas le document
|
|
16
|
+
* mais la liste des modifications, qui tient en quelques centaines d'octets et
|
|
17
|
+
* s'écrit instantanément, même sur `pagehide`.
|
|
18
|
+
*/
|
|
19
|
+
export type SyncState = 'clean' | 'dirty' | 'saving' | 'saved' | 'error' | 'local';
|
|
20
|
+
export interface SyncInfo {
|
|
21
|
+
state: SyncState;
|
|
22
|
+
/** taille du dernier envoi, en octets */
|
|
23
|
+
bytes?: number;
|
|
24
|
+
message?: string;
|
|
25
|
+
pending: number;
|
|
26
|
+
}
|
|
27
|
+
export interface SyncOptions {
|
|
28
|
+
/** produit le docx courant — appelé au dernier moment */
|
|
29
|
+
build(): Uint8Array;
|
|
30
|
+
/** nombre de modifications en attente */
|
|
31
|
+
pending(): number;
|
|
32
|
+
/** identifiant du document, pour la reprise */
|
|
33
|
+
key(): string;
|
|
34
|
+
/** état sérialisable à conserver pour la reprise */
|
|
35
|
+
snapshot(): unknown;
|
|
36
|
+
onState(info: SyncInfo): void;
|
|
37
|
+
/** différé pendant l'édition, en ms */
|
|
38
|
+
debounceMs?: number;
|
|
39
|
+
}
|
|
40
|
+
/** URL de dépôt présignée. Jamais de secret dans l'application — juste une URL déjà signée. */
|
|
41
|
+
export declare const endpoint: {
|
|
42
|
+
get: () => string;
|
|
43
|
+
set: (url: string) => void;
|
|
44
|
+
};
|
|
45
|
+
export interface Sync {
|
|
46
|
+
markDirty(): void;
|
|
47
|
+
/** envoie maintenant, sans attendre le différé */
|
|
48
|
+
flush(reason: string): Promise<void>;
|
|
49
|
+
/** modifications retrouvées d'une session interrompue */
|
|
50
|
+
recover(): unknown | null;
|
|
51
|
+
clearRecovery(): void;
|
|
52
|
+
dispose(): void;
|
|
53
|
+
}
|
|
54
|
+
export declare function createSync(o: SyncOptions): Sync;
|
|
55
|
+
/** Décrit un envoi pour l'utilisateur, en nommant le coût quand il est absurde. */
|
|
56
|
+
export declare function describePayload(bytes: number, fontBytes: number): string;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { MarkRect } from '../../docx-render/src/index';
|
|
2
|
+
import type { Contributions, MenuItem } from './index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Cible canvas.
|
|
5
|
+
*
|
|
6
|
+
* Le canvas peint le texte ; les décorations vivent dans une **couche DOM**
|
|
7
|
+
* posée par-dessus, en coordonnées de page. C'est le parti pris d'OnlyOffice :
|
|
8
|
+
* l'éditeur possède le canvas, les extensions n'y peignent jamais — on garde
|
|
9
|
+
* la fidélité du texte et tout CSS pour l'interaction.
|
|
10
|
+
*/
|
|
11
|
+
export interface OverlayOptions {
|
|
12
|
+
container: HTMLElement;
|
|
13
|
+
rects: MarkRect[];
|
|
14
|
+
contributions: Contributions;
|
|
15
|
+
onMenu(items: MenuItem[], x: number, y: number): void;
|
|
16
|
+
/**
|
|
17
|
+
* Texte à afficher dans le badge, quand ce n'est pas son libellé — l'onglet
|
|
18
|
+
* Technique montre le tag brut. Le canvas a réservé la place de CE texte :
|
|
19
|
+
* le badge doit donc afficher le même, sinon il déborde ou se coupe.
|
|
20
|
+
*/
|
|
21
|
+
textOf?(id: string): string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Couleur de provenance, en mode Résultat : la décoration n'est plus un
|
|
24
|
+
* badge mais une simple teinte sur la valeur, comme le surligneur du
|
|
25
|
+
* générateur. Renvoyer `undefined` laisse le badge normal.
|
|
26
|
+
*/
|
|
27
|
+
tintOf?(id: string): string | undefined;
|
|
28
|
+
/** badges déjà construits et mesurés — voir `prepareMarks` */
|
|
29
|
+
prepared?: Map<string, Prepared>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Badge préparé : son élément et la boîte qu'il occupe.
|
|
33
|
+
*
|
|
34
|
+
* On le construit et on le mesure AVANT la mise en page, parce que le renderer
|
|
35
|
+
* doit réserver sa place exacte dans le flux. Sans ça il ne reste que le calque
|
|
36
|
+
* posé par-dessus, qui recouvre ses voisins.
|
|
37
|
+
*/
|
|
38
|
+
export interface Prepared {
|
|
39
|
+
el: HTMLElement;
|
|
40
|
+
size: {
|
|
41
|
+
widthPx: number;
|
|
42
|
+
heightPx: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Construit les badges et les mesure hors écran.
|
|
47
|
+
*
|
|
48
|
+
* `maxWidthPx` est la largeur utile de la page : un badge qui tient plusieurs
|
|
49
|
+
* mots doit se replier ici EXACTEMENT comme il se repliera sur la page, sinon
|
|
50
|
+
* la boîte réservée ne correspond pas à ce qui sera posé dedans.
|
|
51
|
+
*/
|
|
52
|
+
export declare function prepareMarks(o: OverlayOptions, maxWidthPx: number): Map<string, Prepared>;
|
|
53
|
+
/**
|
|
54
|
+
* Regroupe les rectangles d'un même marqueur sur une même page, dans l'ordre
|
|
55
|
+
* de lecture. Un run replié occupe plusieurs lignes : on ne prend pas leur
|
|
56
|
+
* enveloppe, qui recouvrirait le voisin du dessus — le badge se pose sur la
|
|
57
|
+
* première ligne, les suivantes sont simplement masquées.
|
|
58
|
+
*/
|
|
59
|
+
export declare function group(rects: MarkRect[]): MarkRect[][];
|
|
60
|
+
/**
|
|
61
|
+
* Enveloppe chaque canvas et pose la couche de décorations.
|
|
62
|
+
*
|
|
63
|
+
* Le renderer remplace le contenu du conteneur par ses canvas : on ne peut donc
|
|
64
|
+
* préparer les enveloppes qu'après coup.
|
|
65
|
+
*/
|
|
66
|
+
export declare function paintOverlay(o: OverlayOptions): number;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Découpe un tag en morceaux colorables.
|
|
3
|
+
*
|
|
4
|
+
* Une grammaire Lezer serait la réponse propre pour un langage entier ; pour un
|
|
5
|
+
* tag de matrice — une expression sur une ligne — huit motifs suffisent. Ils
|
|
6
|
+
* sont essayés dans l'ordre, et la chaîne littérale passe en premier : sans ça
|
|
7
|
+
* `« à 25 % »` se ferait découper comme du code.
|
|
8
|
+
*/
|
|
9
|
+
export declare const TOKEN_RE: RegExp;
|
|
10
|
+
export type TokenKind = 'str' | 'delim' | 'fn' | 'path' | 'num' | 'word' | 'op';
|
|
11
|
+
export interface Token {
|
|
12
|
+
from: number;
|
|
13
|
+
to: number;
|
|
14
|
+
kind: TokenKind;
|
|
15
|
+
text: string;
|
|
16
|
+
}
|
|
17
|
+
/** Parcourt un tag et rend ses morceaux, dans l'ordre. */
|
|
18
|
+
export declare function tokens(text: string): Token[];
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lecture des avances (hmtx) et de la table cmap d'un TTF/OTF.
|
|
3
|
+
*
|
|
4
|
+
* Canvas `measureText` (CoreText/macOS) mesure les glyphes ~1% plus large que
|
|
5
|
+
* les avances du fichier de police. Sur une ligne pleine de 504pt en Arial 8,
|
|
6
|
+
* ça fait 5pt de trop et le dernier mot est renvoyé à tort.
|
|
7
|
+
*
|
|
8
|
+
* On calcule la largeur du fichier sur un texte de référence, on la compare à
|
|
9
|
+
* `ctx.measureText` du même texte, et le ratio sert de facteur de correction
|
|
10
|
+
* global par police. C'est le SEUL mécanisme qui corrige le biais sans casser
|
|
11
|
+
* les décisions de resserrement — un slack global ou un seuil différent change
|
|
12
|
+
* toutes les lignes, celui-ci ne change que la MESURE.
|
|
13
|
+
*
|
|
14
|
+
* ponytail: le parseur couvre cmap format 4 (le plus courant en ASCII/BMP) et
|
|
15
|
+
* hmtx seule — ni cmap 12, ni GPOS/GSUB, ni ligatures. Le ratio est correct
|
|
16
|
+
* pour du latin occidental, la cible de ces contrats.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Pré-parse un fichier de police et retourne une fonction de mesure rapide.
|
|
20
|
+
*
|
|
21
|
+
* Le parsing de cmap et hmtx ne se fait qu'une fois ; les appels suivants
|
|
22
|
+
* sont un simple parcours du texte avec des lookups dans des tableaux.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* De combien l'ENCRE d'une chaîne est-elle en retrait de son AVANCE ?
|
|
26
|
+
*
|
|
27
|
+
* Word coupe ses lignes sur l'encre, nous sur l'avance — mesuré : sur
|
|
28
|
+
* « CONTRAT CASCADEURS », sa ligne avance de 554,31 pt dans une colonne de
|
|
29
|
+
* 551,70 et son encre remplit exactement 551,70. La différence est l'approche
|
|
30
|
+
* du premier glyphe à gauche et celle du dernier à droite, que Word laisse
|
|
31
|
+
* pendre dans la marge.
|
|
32
|
+
*
|
|
33
|
+
* Une TOLÉRANCE ne remplace pas ce calcul : plate ou proportionnelle au corps,
|
|
34
|
+
* elle accorde la permission à toutes les lignes alors que Word ne l'accorde
|
|
35
|
+
* qu'à celles dont le dernier glyphe a une approche à donner. Les deux formes
|
|
36
|
+
* ont été balayées sur 400 documents et perdent de façon monotone.
|
|
37
|
+
*
|
|
38
|
+
* Les 219 faces que nous servons sont toutes en TrueType — table `glyf`, pas
|
|
39
|
+
* de CFF — donc la boîte d'un glyphe se lit en quatre entiers après son
|
|
40
|
+
* en-tête, et `loca` donne l'offset. Rien à installer.
|
|
41
|
+
*
|
|
42
|
+
* Renvoie `{ gauche, droite }` en EM : le retrait à retrancher de chaque bout.
|
|
43
|
+
*
|
|
44
|
+
* COUPER SUR L'ENCRE A ÉTÉ IMPLÉMENTÉ ET RÉFUTÉ. Le test de coupure a été
|
|
45
|
+
* changé pour retrancher le débord droit du mot candidat, et le corpus perd —
|
|
46
|
+
* même après avoir rebalayé `FINAL_LINE_SHRINK`, qui avait été calibré avec le
|
|
47
|
+
* test sur l'avance :
|
|
48
|
+
*
|
|
49
|
+
* test sur l'AVANCE, FINAL 0,25 45,27 par document, 39,15 pondéré ligne
|
|
50
|
+
* test sur l'ENCRE, FINAL 0,15 43,24 36,94
|
|
51
|
+
* test sur l'ENCRE, FINAL 0,20 44,16 37,84
|
|
52
|
+
* test sur l'ENCRE, FINAL 0,25 43,62 37,26
|
|
53
|
+
*
|
|
54
|
+
* L'hypothèse expliquait pourtant la ligne qui l'avait suggérée à 0,1 pt près.
|
|
55
|
+
* Elle ne tient pas sur 400 documents : Word ne coupe pas simplement sur
|
|
56
|
+
* l'encre. Ce qu'il fait de plus reste à trouver.
|
|
57
|
+
*
|
|
58
|
+
* La lecture est gardée — `nodeSurface` publie désormais les mêmes
|
|
59
|
+
* `actualBoundingBox*` qu'un vrai canvas, ce qui rend les deux chemins
|
|
60
|
+
* comparables et permettra de tester la prochaine hypothèse sans reconstruire
|
|
61
|
+
* un parseur `glyf`.
|
|
62
|
+
*/
|
|
63
|
+
export declare function createInkTrim(buf: ArrayBuffer): ((text: string) => {
|
|
64
|
+
gauche: number;
|
|
65
|
+
droite: number;
|
|
66
|
+
}) | undefined;
|
|
67
|
+
export declare function createMeasurer(buf: ArrayBuffer): ((text: string) => number) | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Largeur d'un texte en unités de design (hmtx), divisée par unitsPerEm.
|
|
70
|
+
*
|
|
71
|
+
* Retourne la largeur en « em » : multiplier par la taille en px donne des px.
|
|
72
|
+
* Retourne `undefined` si le fichier ne peut pas être lu.
|
|
73
|
+
*
|
|
74
|
+
* ponytail: version non-cachée pour les usages ponctuels (calibration).
|
|
75
|
+
* Pour le rendu, utiliser `createMeasurer` qui parse une seule fois.
|
|
76
|
+
*/
|
|
77
|
+
export declare function textWidthEm(buf: ArrayBuffer, text: string): number | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Facteur de correction Canvas → hmtx pour une police donnée.
|
|
80
|
+
*
|
|
81
|
+
* `< 1` si Canvas mesure plus large (le cas courant), `> 1` sinon.
|
|
82
|
+
* Retourne `undefined` si la calibration échoue.
|
|
83
|
+
*/
|
|
84
|
+
/**
|
|
85
|
+
* Facteurs de correction pour toutes les polices servies.
|
|
86
|
+
*
|
|
87
|
+
* Même pattern que `fontLineRatios` : on fetch chaque TTF et on calibre.
|
|
88
|
+
*/
|
|
89
|
+
export declare function measureAllCorrections(ctx: CanvasRenderingContext2D, baseUrl?: string): Promise<Record<string, number>>;
|
|
90
|
+
export declare function canvasCorrection(ctx: CanvasRenderingContext2D, family: string, fontBuf: ArrayBuffer): number | undefined;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Names a document uses for a font we serve under another name.
|
|
3
|
+
*
|
|
4
|
+
* PostScript spellings (`ArialMT`, `TimesNewRomanPSMT`), vendor variants
|
|
5
|
+
* (`Futura LT`) and metric-compatible clones (`Arimo`) all reach us as literal
|
|
6
|
+
* strings out of `w:rFonts`, and every lookup in this codebase is exact-match.
|
|
7
|
+
* Unaliased, such a name misses the web font, misses the line-height table and
|
|
8
|
+
* misses the advance table at once — three different wrong answers, none of
|
|
9
|
+
* which logs anything.
|
|
10
|
+
*
|
|
11
|
+
* This table used to live inside `scripts/build-metrics.py`, which meant only
|
|
12
|
+
* the line-height table knew about it; the font loader and the Node measurer
|
|
13
|
+
* did not, so `Arial MT` (4342 runs in the corpus) silently fell back. Before
|
|
14
|
+
* that it was hand-written into the generated `metrics.ts`, where a
|
|
15
|
+
* regeneration erased nineteen entries in one go.
|
|
16
|
+
*
|
|
17
|
+
* alias → the served family whose metrics it borrows.
|
|
18
|
+
*/
|
|
19
|
+
export declare const FONT_ALIASES: Record<string, string>;
|
|
20
|
+
/**
|
|
21
|
+
* The served family a name resolves to, or undefined if we serve nothing for it.
|
|
22
|
+
*
|
|
23
|
+
* Tries the alias table, then a case- and separator-insensitive match: a
|
|
24
|
+
* document that writes `Times-New-Roman` means the same font, and exact
|
|
25
|
+
* matching is the only reason it would miss.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveFamily(name: string, served: Iterable<string>): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const FAMILIES: readonly ["Abadi MT Condensed Extra Bold", "Abadi MT Condensed Light", "Angsana New", "Apple Color Emoji", "Apple Symbols", "Aptos", "Aptos Narrow", "Arial", "Arial Black", "Arial Hebrew", "Arial Narrow", "Arial Rounded MT Bold", "Arial Unicode MS", "Avenir", "Avenir Next", "Avenir Black", "Avenir Book", "Avenir Heavy", "Avenir Light", "Baskerville Old Face", "Batang", "Bauhaus 93", "Big Caslon", "Bookman Old Style", "Calibri", "Calibri Light", "Cambria", "Cambria Math", "Candara", "Century", "Century Gothic", "Century Schoolbook", "Comic Sans MS", "Consolas", "Corbel", "Cordia New", "Courier", "Courier New", "DengXian", "DengXian Light", "Didot", "Edwardian Script ITC", "Euphemia UCAS", "Eurostile", "Franklin Gothic Book", "Franklin Gothic Demi", "Franklin Gothic Demi Cond", "Franklin Gothic Medium", "Franklin Gothic Medium Cond", "Futura", "Garamond", "Geneva", "Georgia", "Gill Sans", "Gill Sans Light", "Gill Sans MT", "Helvetica", "Helvetica Neue", "Hoefler Text", "Lucida Grande", "Lucida Sans", "Lucida Sans Unicode", "Malgun Gothic", "Mangal", "Microsoft Sans Serif", "Microsoft YaHei", "Microsoft Yi Baiti", "Monotype Sorts", "MS Gothic", "MS Mincho", "MS UI Gothic", "New York", "News Gothic MT", "NSimSun", "Optima", "Palatino", "Palatino Linotype", "PMingLiU", "PT Mono", "Segoe UI Symbol", "SimSun", "Skia", "Stencil", "Symbol", "Tahoma", "Times", "Times New Roman", "Trebuchet MS", "Tw Cen MT", "Tw Cen MT Condensed", "Verdana", "Webdings", "Wingdings", "Wingdings 2", "Wingdings 3", "Yu Gothic Light", "Yu Mincho"];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load all @myrole/fonts @font-face declarations and wait for them to be ready.
|
|
3
|
+
* Import the CSS side-effect first, then call `await loadFonts()` before rendering.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* import './faces'
|
|
7
|
+
* import { loadFonts } from './load'
|
|
8
|
+
* await loadFonts() // resolves when every woff2 is painted-ready
|
|
9
|
+
* ctx.font = '12px Calibri' // guaranteed to hit the real font
|
|
10
|
+
*/
|
|
11
|
+
export { FAMILIES } from './families';
|
|
12
|
+
import { FAMILIES } from './families';
|
|
13
|
+
export type FontFamily = (typeof FAMILIES)[number];
|
|
14
|
+
/**
|
|
15
|
+
* Wait until every declared @font-face is loaded (or 15 s timeout).
|
|
16
|
+
* Returns the list of families that actually loaded.
|
|
17
|
+
*
|
|
18
|
+
* `document.fonts.ready` ne suffit PAS : une @font-face que rien n'a encore
|
|
19
|
+
* demandée n'est pas « en attente », donc `ready` se résout aussitôt sans avoir
|
|
20
|
+
* rien téléchargé. Le canvas dessinait alors du sans-serif de repli là où le
|
|
21
|
+
* document demande du Times New Roman — texte gris et lourd, chaque glyphe
|
|
22
|
+
* différent de Word même à la bonne position. Il faut réclamer chaque face
|
|
23
|
+
* explicitement.
|
|
24
|
+
*/
|
|
25
|
+
export declare function loadFonts(): Promise<FontFamily[]>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hauteur de ligne réelle de chaque police, lue dans les TTF qu'on sert.
|
|
3
|
+
*
|
|
4
|
+
* Word compose une ligne « simple » comme
|
|
5
|
+
* `(hhea.ascender − hhea.descender + hhea.lineGap) / unitsPerEm`. Ni OS/2
|
|
6
|
+
* `usWin*`, ni `fontBoundingBox*` du Canvas — les trois donnent des valeurs
|
|
7
|
+
* différentes, et seule la première correspond à ce que Word dessine.
|
|
8
|
+
*
|
|
9
|
+
* On lit donc la valeur dans le fichier, au démarrage, plutôt que de tenir une
|
|
10
|
+
* table à la main : celle-ci laissait des trous, et une police absente
|
|
11
|
+
* retombait sur un ratio générique — 6 % trop court sur chaque ligne d'un
|
|
12
|
+
* contrat composé uniquement en Century Gothic.
|
|
13
|
+
*
|
|
14
|
+
* ponytail: lecture directe des deux tables qui nous intéressent, pas de
|
|
15
|
+
* bibliothèque de polices. Un parseur OpenType complet pèse 200 ko pour trois
|
|
16
|
+
* entiers 16 bits.
|
|
17
|
+
*/
|
|
18
|
+
import { type FontFamily } from './load';
|
|
19
|
+
/**
|
|
20
|
+
* Ascendante, descendante et interligne d'une police, en em.
|
|
21
|
+
*
|
|
22
|
+
* `ascent` et `descent` sont ce que `measureText().fontBoundingBoxAscent` et
|
|
23
|
+
* `…Descent` rendent dans Chrome — vérifié sur 89 des 91 familles servies. Ils
|
|
24
|
+
* placent la LIGNE DE BASE ; `ratio` donne la hauteur de la ligne entière.
|
|
25
|
+
*/
|
|
26
|
+
export interface FontMetrics {
|
|
27
|
+
/** hhea.ascender / unitsPerEm */
|
|
28
|
+
ascent: number;
|
|
29
|
+
/** −hhea.descender / unitsPerEm (positif) */
|
|
30
|
+
descent: number;
|
|
31
|
+
/** hhea.lineGap / unitsPerEm */
|
|
32
|
+
lineGap: number;
|
|
33
|
+
}
|
|
34
|
+
/** Décodage des deux tables dont dépendent la hauteur de ligne et la baseline. */
|
|
35
|
+
export declare function fontMetricsOf(ttf: ArrayBuffer): FontMetrics | undefined;
|
|
36
|
+
/** Décodage des deux tables dont dépend la hauteur de ligne. */
|
|
37
|
+
export declare function lineRatioOf(ttf: ArrayBuffer): number | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Ratio de hauteur de ligne par famille, lu dans les fichiers servis.
|
|
40
|
+
*
|
|
41
|
+
* `baseUrl` doit pointer le dossier qui contient `ttf/` — par défaut celui du
|
|
42
|
+
* module, ce qui marche avec un bundler qui réécrit les URL relatives.
|
|
43
|
+
*/
|
|
44
|
+
export declare function fontLineRatios(baseUrl?: string): Promise<Partial<Record<FontFamily, number>>>;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|