Commit Graph
4115 Commits
Author SHA1 Message Date
Shao Wenbin 1e32767cef CJK-MOJI8: preserve narrow punctuation and manual body compression 2026-10-08 20:18:30 +08:00
Shao Wenbin bc43965a45 CJK-MOJI7: validate spacing data and inspect nested typography rules 2026-10-08 20:14:16 +08:00
Shao Wenbin d9f24b6ad5 CJK-MOJI6: respect glyph clusters and regional punctuation metrics 2026-10-08 20:09:29 +08:00
Shao Wenbin a35f03c126 CJK-MOJI5: balance spacing priorities and fit discrete compression endpoints 2026-10-08 20:05:19 +08:00
Shao Wenbin 14b04cbaf8 CJK-MOJI4: implement public preset boundary policies and punctuation classes 2026-10-08 20:01:57 +08:00
Shao Wenbin d16a7423b8 CJK-MOJI3: report only unsupported Mojikumi rules in preflight 2026-10-08 19:55:16 +08:00
Shao Wenbin c66d502c79 CJK-MOJI2: apply Mojikumi spacing and kinsoku priorities during composition 2026-10-08 19:54:22 +08:00
Shao Wenbin e1755c3cbe CJK-MOJI1: resolve Mojikumi tables and preserve IDML references 2026-10-08 19:50:50 +08:00
Shao Wenbin 4f8d230d70 CJK-BASE: integrate font resolution and special-text preflight branches 2026-10-08 19:50:38 +08:00
Shao Wenbin af43dd88c9 FONT7: validate replacement coverage and reject placeholder font fallbacks 2026-10-08 19:19:33 +08:00
Shao Wenbin f36636b95f FONT6: unify localized font matching and replacement recommendations 2026-10-08 19:02:39 +08:00
Shao Wenbin 39482d1b8c FONT5: diagnose missing glyphs in generated text with frame locations 2026-10-08 18:56:14 +08:00
Shao Wenbin 06ed81e547 FONT4: resolve composite fonts and fallback for generated note labels 2026-10-08 18:54:26 +08:00
Shao Wenbin 4f1aa8773d FONT3: prompt for missing fonts when opening documents 2026-10-08 18:34:32 +08:00
Shao Wenbin 6c18ccdc3b FONT2: resolve inherited fonts during document-wide replacement 2026-10-08 18:33:42 +08:00
Shao Wenbin 2dbbf98900 FONT1: preserve composite font references and unify usage checks
Resolve imported composite fonts by resource identity and preserve literal
display names. Export AppliedFont as an object reference instead of registering
a composite definition as an ordinary font family.

Share composite lookup and typed font usage between composition, font inventory,
and preflight. Include nested cells and notes, and report only component fonts
selected by the document's characters.

Add synthetic coverage for reference round trips, footnote character mapping
and metrics, nested font inventory, component replacement, and undo.
2026-10-08 18:21:10 +08:00
Shao Wenbin 7c10b3ad41 IDML1: preserve anchored text frames and footnote artwork
Resolve forward story references before importing embedded frames and groups.
Compose embedded stories, retain anonymous-story objects for screen and PDF
rendering, and invalidate layout caches when embedded frame geometry changes.

Measure inline objects by geometry, fill open contours, reject cyclic frame
references, and distinguish unplaced stories from located overset text.

Add synthetic round-trip, composition, preflight, pixel-rendering, and PDF
regressions. Update the roadmap with the supported import and rendering paths.
2026-10-08 18:08:44 +08:00
skylar taylor-barrick 637d05e776 #91: reject PDF pages before narrowing on Wasm 2026-10-08 00:31:43 -06:00
skylar taylor-barrick bae5a92dbb #72: preserve typed generic dialog values 2026-10-08 00:23:35 -06:00
skylar taylor-barrick e3d2312f00 #89: preserve browser import context and PDF options 2026-10-08 00:15:24 -06:00
skylar taylor-barrick e9cc4b49ec #61: honor MCP typing, story and page contracts 2026-10-08 00:08:17 -06:00
skylar taylor-barrick 8662526736 browser-correctness: fix print, startup flags, and document MIME 2026-10-08 00:08:16 -06:00
Haseom Shin ac4c7e6b8e Images: set SVG text in the shared fonts when the bundled ones lack it 2026-10-08 14:58:56 +09:00
Haseom Shin 36000e75f5 Compose: don't panic when a hyphenated paragraph starts with a no-break letter 2026-10-08 14:58:08 +09:00
aiongg 0f52f3ba89 Text: stories made in a right-to-left-bound document fill their columns from the right (#100) 2026-10-08 01:57:30 -04:00
aiongg 3c83f4f477 Tables: new tables take their paragraph's direction, and the Table panel sets a table's direction (#100) 2026-10-08 01:54:14 -04:00
aiongg fa22e61f83 PDF: PDF/A exports keep placed PNG, JPEG, GIF and WebP images by writing them without interpolation (#71) 2026-10-08 01:51:30 -04:00
aiongg 1ccf4fbfbe File open: an .indd file is an unreadable file like any other
Remove the INDD signature check and message, and .indd/.indt from the
Open filters and drop routing. The alert tests use a generic unreadable
file.
2026-10-08 00:51:47 -04:00
aiongg b757687a41 Merge branch 'main' into fix/21-indd-message
# Conflicts:
#	apps/designcraft/src/main.rs
#	crates/engine/src/cmd/file.rs
2026-10-08 00:47:23 -04:00
Brandon ThomasandClaude Opus 5.5 38ec9ce7e0 Merge #106 (includes #83, #84, #81) into fix/empty-paragraph-mark
An empty paragraph's mark format now also supplies #83's first-baseline
heights through line_metrics.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:30:23 -04:00
Brandon ThomasandClaude Opus 5.5 01eef9ed21 Merge origin/main into fix/empty-paragraph-mark
The empty paragraph's mark metrics feed line_metrics alongside main's CJK
line reference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:28:22 -04:00
Brandon ThomasandClaude Opus 5.5 bed9438612 Merge #81 (includes #83, #84) into fix/compose-baseline-frame-fit
#83's Keep Lines Together tests change expectation: with the last baseline
allowed on the bottom inset, the first frame holds one more line, so the
10-line paragraph splits 7/3 instead of 6/4 (the keep rule is unchanged).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:24:30 -04:00
Brandon ThomasandClaude Opus 5.5 0237d5de93 Merge origin/main into fix/compose-baseline-frame-fit
Vertical Type is now the story's direction: the full-descent check reads
FrameSpec::vertical, and the vertical-extent test sets the story vertical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:20:01 -04:00
aiongg dc18c10448 Merge #84 into fix/29-kerning-across-runs 2026-10-07 23:14:02 -04:00
aiongg 0ae0dc7707 Merge the fork's fix/29-kerning-across-runs
# Conflicts:
#	crates/compose/src/shape.rs
#	crates/compose/src/tests.rs
2026-10-07 23:14:02 -04:00
aiongg 1bdca77eea Merge the fork's feat/text-editing-and-frames 2026-10-07 23:12:38 -04:00
aiongg 673039f5dc Merge the fork's feat/layout-parity 2026-10-07 23:12:31 -04:00
Brandon ThomasandClaude Opus 5.5 4eb4e72d94 Merge #84 (text editing, includes #83) into fix/29-kerning-across-runs
Hidden place-holders, now shaped from pieces, also zero #83's typographic
ascent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:09:21 -04:00
aiongg 124bddaf8b Text: a change of kenten character keeps the kerning across it
Pieces of a paragraph that differ only in how they are painted are
shaped together; the kenten character only picks the emphasis mark drawn
over the text, so it is one of those paint attributes, like kenten
itself.
2026-10-07 23:08:45 -04:00
aiongg 3a10a749db Text: a missing font's substitute takes fallback fonts across a colour change
Text is shaped in pieces that differ only in paint, so each piece group,
and each piece shaped apart, takes its style's environment: a missing
font's substitute draws the characters it lacks from fallback fonts
whatever Draw Missing Glyphs from Fallback Fonts says.
2026-10-07 23:08:13 -04:00
aiongg c8d4ed8fa3 Merge main into fix/29-kerning-across-runs
# Conflicts:
#	crates/compose/src/shape.rs
#	crates/compose/src/tests.rs
2026-10-07 23:07:47 -04:00
aiongg e13dee0728 Text: Bold and Italic link the document's own fonts
Bold and Italic find the linked style through the document's font scope,
so a family from the document's fonts folder links its own styles; the
Character panel's B and I state reads the same scope.
2026-10-07 23:04:29 -04:00
Brandon ThomasandClaude Opus 5.5 44e8981364 Merge origin/main into fix/29-kerning-across-runs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:02:09 -04:00
aiongg b40e221d58 Text: a frame removed from a thread keeps the story's direction
Tests that a frame taken out of a vertical or right-to-left thread gets
a new story with the thread's vertical setting and column direction.
2026-10-07 23:02:03 -04:00
aiongg f2f14120f3 Merge #83 into feat/text-editing-and-frames 2026-10-07 23:01:07 -04:00
Brandon ThomasandClaude Opus 5.5 fc6101d10f Merge origin/main into feat/text-editing-and-frames
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:58:36 -04:00
Brandon ThomasandClaude Opus 5.5 f2b8c3dce1 Merge origin/main into feat/layout-parity
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 22:58:28 -04:00
aiongg 5e515725c6 IDML: one reader and writer for the paragraph Kashidas attribute
The paragraph Kashidas attribute is imported and exported by the Arabic
attribute code; the second copy in the paragraph defaults, which read and
wrote the same values, is gone.
2026-10-07 22:57:58 -04:00
aiongg 487e10f766 Merge main into feat/layout-parity
# Conflicts:
#	ROADMAP.md
2026-10-07 22:57:15 -04:00
aiongg 6fe91b0dfb Text: a drop cap in a document font aligns its left edge
A drop cap set in one of the document's own fonts measures its side
bearing in that font, through the document's font scope, so Align Left
Edge puts its ink at the indent.
2026-10-07 22:57:03 -04:00