vectorcraft/crates/pdf/src
bflatastic 0687d2d127 Type: Paragraph Direction instead of an Automatic alignment toggle; bidi only where needed (review of #300)
Illustrator sets a paragraph's direction (Left-to-Right / Right-to-Left
Paragraph Direction in the Paragraph panel, with the Middle Eastern
options) and keeps its alignment buttons physical; it has no automatic
alignment toggle. So:

- ParaStyle.direction (None: from each paragraph's first strong
  character, as before; written only when set), the Paragraph panel's two
  direction buttons with Show Indic Options (original icons), and
  text.setFormat {direction: "auto"|"leftToRight"|"rightToLeft"}. The
  layout uses it as the base direction.
- The Automatic alignment check box is gone. Justify::Auto stays as the
  start of the paragraph's direction, set on new type only (text.create,
  the Type tools, with the mojikumi default in one new_type_para()):
  TextObject::point is Left again, so importers (PDF, SVG, DXF, EMF) keep
  their own alignment. The alignment buttons show what Auto resolves to.
- Bidi only where there is something right to left: plain paragraphs skip
  the algorithm (no per-layout allocation), it runs once per paragraph
  (shaping takes the paragraph's levels instead of recomputing them; path
  type computed it four times), and the shaper keeps Han, Hiragana,
  Katakana and Bopomofo in one segment (splitting at every change of
  script cost Japanese text a shaper call per kana-kanji switch).
- Vertical type keeps its logical order, so its glyphs and lines are not
  marked right to left (the caret no longer runs backwards down a column).
- PDF import puts Hebrew and Arabic, which PDFs (and VectorCraft's own
  export) draw in visual order, back in logical order with the direction
  that shows it as drawn; with bidi layout it came back mirrored.
- SVG import pins the direction SVG implies (left to right unless
  direction: rtl); SVG export also outlines right-to-left paragraphs.
- Docs (development.md), ROADMAP (folded into the Type entry, Type core
  row) and README updated; catalog rows for the new labels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 05:25:01 +07:00
..
print M4.83: overprinting fills and strokes overprint in PDF 2026-10-05 17:39:28 +07:00
editing.rs M4.85: PDF security: encryption at every compatibility level, permissions, either password opens 2026-10-05 15:24:16 +07:00
encrypt.rs Lint: as_chunks for constant chunk sizes, as clippy 1.99 asks 2026-10-05 12:14:56 -07:00
export.rs Fix #296: variable fonts list and draw every named style 2026-10-07 21:01:26 +07:00
forms.rs M4.83: overprinting fills and strokes overprint in PDF 2026-10-05 17:39:28 +07:00
images.rs M4.73: PDF colour conversion, ICC profiles and output intent 2026-10-05 16:25:20 +07:00
import.rs PDF import (#337 follow-up): keep missing-font text live, decide each font's face once, Kangxi fix for CID text only 2026-10-07 17:47:25 -04:00
import_color.rs M4.46: PDF import keeps CMYK, Gray and spot colours 2026-10-05 09:37:11 +07:00
import_mask.rs M4.61: PDF import fidelity: opacity masks, isolate/knockout, pattern swatches, editable text, gradient meshes, stop opacity and Extend 2026-10-05 13:05:12 +07:00
import_scan.rs M4.62: PDF/.ai layers from optional content: named layers with visibility, print state and lock; art that is off as hidden layers 2026-10-05 13:05:12 +07:00
import_shading.rs M4.61: PDF import fidelity: opacity masks, isolate/knockout, pattern swatches, editable text, gradient meshes, stop opacity and Extend 2026-10-05 13:05:12 +07:00
import_text.rs Type: Paragraph Direction instead of an Automatic alignment toggle; bidi only where needed (review of #300) 2026-10-08 05:25:01 +07:00
lab_spot.rs M4.73: PDF colour conversion, ICC profiles and output intent 2026-10-05 16:25:20 +07:00
lib.rs PDF/.ai import: Japanese text as live type (CID fonts, vertical columns, missing fonts) 2026-10-07 23:45:31 +09:00
linearize.rs M4.86: PDF page thumbnails and fast web view (linearised files) 2026-10-05 18:05:36 +07:00
marks.rs M4.75: File → Print writes the job as a print-ready PDF: paper, scale, tiles, marks and bleed, separations 2026-10-05 15:13:10 +07:00
output.rs M4.82: PDF export writes top-level layers as PDF layers 2026-10-05 17:39:28 +07:00
pages.rs M4.85: PDF security: encryption at every compatibility level, permissions, either password opens 2026-10-05 15:24:16 +07:00
patch.rs M4.86: PDF page thumbnails and fast web view (linearised files) 2026-10-05 18:05:36 +07:00
pdfx.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
post.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
presets.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
settings.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
syntax.rs M4.86: PDF page thumbnails and fast web view (linearised files) 2026-10-05 18:05:36 +07:00
tests.rs M4.84: PDF/X-1a, PDF/X-3 and PDF/X-4 files written as their standards say 2026-10-05 17:19:11 +07:00
tests_blend.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_charstroke.rs M3.40: stroke on type — the Stroke panel edits the characters' stroke 2026-10-05 01:09:55 +07:00
tests_cmykblend.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_compression.rs M4.63: Links panel with status, Relink, Go To, Update, Edit Original, Embed/Unembed, Link Info and Placement Options 2026-10-05 12:40:05 +07:00
tests_dashalign.rs M3.68: groups, layers and type have their own fills, strokes and effects, with Contents and Characters rows 2026-10-05 00:59:34 +07:00
tests_editing.rs M4.43: PDFs and .ai files reopen editable; Save As writes PDF-compatible .ai 2026-10-05 10:34:15 +07:00
tests_encrypt.rs M4.84: PDF/X-1a, PDF/X-3 and PDF/X-4 files written as their standards say 2026-10-05 17:19:11 +07:00
tests_focal.rs M3.98: radial annotator extent ellipse, aspect handle and off-centre focal point 2026-10-05 04:43:43 +07:00
tests_fx.rs M3.43: effects render on type, placed images, symbol instances, blends, envelopes, meshes and repeats; a fill or stroke's own raster effects render and export as SVG filters on that element 2026-10-04 23:15:13 +07:00
tests_import_color.rs M4.46: PDF import keeps CMYK, Gray and spot colours 2026-10-05 09:37:11 +07:00
tests_import_fidelity.rs PDF/.ai import: the last glyph of type on a path stays on its path 2026-10-07 13:03:00 +07:00
tests_import_layers.rs M4.62: PDF/.ai layers from optional content: named layers with visibility, print state and lock; art that is off as hidden layers 2026-10-05 13:05:12 +07:00
tests_import_options.rs PDF/.ai import: art of a neighbouring artboard stays on its own page 2026-10-07 13:20:07 +07:00
tests_layers.rs M4.83: overprinting fills and strokes overprint in PDF 2026-10-05 17:39:28 +07:00
tests_live_text.rs Type: Paragraph Direction instead of an Automatic alignment toggle; bidi only where needed (review of #300) 2026-10-08 05:25:01 +07:00
tests_marks.rs M4.72: PDF export draws printer's marks in Registration around each page 2026-10-05 13:05:20 +07:00
tests_output.rs M4.73: PDF colour conversion, ICC profiles and output intent 2026-10-05 16:25:20 +07:00
tests_pdf13.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
tests_pdfx.rs M4.84: PDF/X-1a, PDF/X-3 and PDF/X-4 files written as their standards say 2026-10-05 17:19:11 +07:00
tests_presets.rs M4.84: PDF/X-1a, PDF/X-3 and PDF/X-4 files written as their standards say 2026-10-05 17:19:11 +07:00
tests_print.rs M4.75: File → Print writes the job as a print-ready PDF: paper, scale, tiles, marks and bleed, separations 2026-10-05 15:13:10 +07:00
tests_printadvanced.rs M4.83: overprinting fills and strokes overprint in PDF 2026-10-05 17:39:28 +07:00
tests_realtext.rs PDF/.ai import: Japanese text as live type (CID fonts, vertical columns, missing fonts) 2026-10-07 23:45:31 +09:00
tests_settings.rs M4.87: PDF 1.3 compatibility: transparency flattened with the chosen preset 2026-10-05 18:05:36 +07:00
tests_stroke.rs M3.68: groups, layers and type have their own fills, strokes and effects, with Contents and Characters rows 2026-10-05 00:59:34 +07:00
tests_strokeout.rs M3.68: groups, layers and type have their own fills, strokes and effects, with Contents and Characters rows 2026-10-05 00:59:34 +07:00
tests_textstroke.rs M4.59: pattern strokes and freeform gradients keep their look in PDF 2026-10-05 11:52:35 +07:00
tests_webview.rs M4.86: PDF page thumbnails and fast web view (linearised files) 2026-10-05 18:05:36 +07:00