Commit Graph
57 Commits
Author SHA1 Message Date
Steffen Becker ad38994c65 feat: add ruler for tab stops and indents
Click the strip to place a stop of the selected type, drag to move it, drag it
off to drop it; the two triangles set the paragraph's first-line and left
indent. Sticky inside the scroll area, so it clears the toolbar island and
stays aligned with the page as it scrolls or zooms.
2026-08-07 17:47:30 +02:00
Steffen Becker 92d641f72f feat: honour a paragraph's own tab stops
CSS only has the fixed tab-size grid, so a tab that resolves to one of the
paragraph's stops is measured and given the exact advance as an inline margin.
A hanging indent implies a stop at the text position, as in Word.
2026-08-06 21:45:47 +00:00
Steffen Becker c014a73da2 feat: support first-line and hanging indents
Only the block's left margin was read, so w:firstLine, w:hanging and
fo:text-indent were dropped: every hanging-indent paragraph rendered with
its first line flush with the rest instead of outdented.

Stored as the signed indentFirst attr in cm (negative = hanging) and
rendered as CSS text-indent. Word splits it into two exclusive
attributes by sign, ODF keeps one signed value.
2026-08-06 19:58:33 +00:00
Steffen Becker 3a68a144cb fix: read OOXML toggles as ST_OnOff, not as element presence
w:evenAndOddHeaders, w:titlePg and w:pageBreakBefore were treated as on
whenever the element existed, but w:val="false"/"0"/"off" turns them off
and both Word and the docx lib write that explicit form.

A file with <w:evenAndOddHeaders w:val="false"/> therefore took the
even-page header variant on every second page, which is empty — the
header and footer vanished from page 2 onwards.
2026-08-06 19:53:47 +00:00
Steffen Becker f48e5508a8 feat: honour the document's widow-orphan setting
Widow-orphan control was hardcoded on. It is a per-paragraph property in
both formats, so a file that turns it off paginated differently from
Word and LibreOffice.

Stored as the widowControl attr next to breakBefore. DOCX resolves
w:widowControl direct-then-style-chain-then-docDefaults; ODF reads
fo:widows/fo:orphans, where only an explicit 0 means off (absent is the
XSL-FO default of 2). Export rides the existing PBX sentinel rather than
adding a pass.
2026-08-06 19:45:08 +00:00
Steffen Becker b1c515fd2f fix: adopt the DOCX document default font into the Standard style
Body paragraphs carry no w:pStyle, so the default style never reached
usedStyles and Standard kept the editor's Liberation Serif 12pt. Run
suppression meanwhile resolves against w:docDefaults, so the file's body
font was dropped with no run mark left to render it: a Calibri 11pt Word
document rendered as Liberation Serif 12pt.
2026-08-06 19:18:58 +00:00
Steffen Becker d608771105 feat: add table options 2026-08-06 20:01:44 +02:00
Steffen Becker 1ed9f3d172 feat: table-styles 2026-08-05 19:01:25 +02:00
Steffen Becker ca4fbd422b feat: table margin edge resize 2026-07-31 17:46:26 +02:00
Steffen Becker 3dcae6f640 feat: named character styles 2026-07-30 23:34:23 +02:00
Steffen Becker 603f4df905 feat: paragraph style manager ui 2026-07-30 19:58:47 +02:00
Steffen Becker ebb76a5104 feat: docx import/export of named paragraph styles 2026-07-29 11:35:07 +02:00
Steffen Becker d79287c10a feat: odf import/export of named paragraph styles 2026-07-29 10:53:54 +02:00
Steffen Becker d461ce09a6 fix: align styles and headings to libreoffice 2026-07-28 22:45:24 +02:00
Steffen Becker 56f884a412 feat: dropdown for text styles 2026-07-27 20:35:55 +02:00
Steffen Becker f1ba14c948 feat: add paragraph frames and background 2026-07-19 16:34:23 +02:00
Steffen Becker 2a7abed917 feat: odd/even variants for footer/header 2026-07-18 16:42:23 +02:00
Steffen Becker da1bcd8794 feat: images in header/footer 2026-07-18 15:50:26 +02:00
Steffen Becker dce22ab3f4 fix: header and footer editor 2026-07-18 11:49:49 +02:00
Steffen Becker 6535d4c58d fix: page breaks, empty lines, ... 2026-07-15 22:19:49 +02:00
Steffen Becker 40c139dd2c feat: add embedded font loading 2026-07-11 14:07:36 +02:00
Steffen Becker a535738301 fix ellipse text field 2026-07-11 12:36:17 +02:00
Steffen Becker 0526579f2b fix: text field frame 2026-07-10 16:25:20 +02:00
Steffen Becker 8e6c4817d8 feat: add lazy tiff to png decoding 2026-07-10 13:02:27 +02:00
Steffen Becker edf51d9a68 fix: show linked images 2026-07-10 00:11:14 +02:00
Steffen Becker efaa9439b5 fix: import misses page break 2026-07-09 23:13:43 +02:00
Steffen Becker 0e96eaab97 fix: import space after paragraph 2026-07-09 00:08:19 +02:00
Steffen Becker 1fb81c389f feat: insert date/time 2026-07-08 23:21:07 +02:00
Steffen Becker bbd84cbeed feat: new page formats A3, A5, letter, legal 2026-07-08 19:21:18 +00:00
Steffen Becker d11fc065f8 docs: clean up comments 2026-07-08 19:21:12 +00:00
Steffen Becker 15f7e50976 fix: import of columns 2026-07-08 19:17:42 +00:00
Steffen Becker de283adab5 feat: introduce columns 2026-07-08 19:17:16 +00:00
Steffen Becker e44f09ef42 feat: proper ordered list cycling 2026-07-05 11:51:07 +02:00
Steffen Becker d018092cce feat: improve ordered list 2026-07-04 21:45:05 +02:00
Steffen Becker 3b7e7606bb feat: bullet symbols 2026-07-04 17:14:54 +02:00
Steffen Becker 15b9386eb7 feat: add table frame menue 2026-07-04 00:00:44 +02:00
Steffen Becker 0aa9399f93 feat: textbox and shapes 2026-07-03 22:53:38 +02:00
Steffen Becker 6731134d06 fix: fix aligment for docx import 2026-07-02 23:22:00 +02:00
Steffen Becker 86376ca7e3 fix: import correct font size of empty lines 2026-07-02 23:10:02 +02:00
Steffen Becker a5bb2deaa2 feat: table of content 2026-07-01 21:17:44 +02:00
Steffen Becker a2c0e78de8 feat: docx import 2026-06-30 19:38:20 +02:00
Steffen Becker 418f152d4b feat: header row toggle 2026-06-28 12:23:41 +02:00
Steffen Becker 3cc2e65423 feat: table cells background/shading 2026-06-28 10:59:22 +02:00
Steffen Becker 98e7ee2458 feat: add hyperlinks 2026-06-27 19:55:56 +02:00
Steffen Becker f6d1348a43 feat: manual pagebreaks 2026-06-25 20:49:07 +02:00
Steffen Becker 86083e0556 fix: paragraph spacing default 2026-06-25 17:19:17 +02:00
Steffen Becker 8acae13b9a refactor: organize lib/editor 2026-06-24 23:34:24 +02:00
Steffen Becker 453602a440 fix: type errors 2026-06-24 22:49:13 +02:00
Steffen Becker 20706c80cb feat: image image text wrapping 2026-06-24 21:49:59 +02:00
Steffen Becker f79be768f9 feat: add image width height adaption and rotation 2026-06-24 21:49:59 +02:00