36 Commits

Author SHA1 Message Date
alonso.torres
f171c147f5 🎉 Add a CJK text selection menu and readings over several spans
Selecting text in a Japanese or Chinese layout now shows a menu above
the selection: Ruby, Emphasis, and for Japanese, Warichu and Combine.
Ruby opens an input to add, change or remove the reading; Emphasis
opens a list of marks with icons; Warichu and Combine toggle on the
selection. The renderer exports the selection bounds so the menu can
centre on them, and new icons draw each emphasis mark.

A reading had to cover a single span, so putting emphasis on part of a
word blocked furigana on it. A reading can now cover adjacent spans of
different styles:

- Applying a reading gives the selected spans one new ruby-group id.
  Splitting a span keeps the id. Spans without one, as in every
  existing file, keep one base per span; matching readings alone never
  join, so per-character readings such as 天天 stay apart.
- The span binary marks a span that joins the previous base with bit 2
  of the ruby flags byte, so the format keeps its size.
- Paragraph::ruby_groups defines a base for the renderer. Horizontal
  placement, long-reading spacing, paint, bounds, justification,
  overflow and line breaks use it, as do the vertical base units, ruby
  layout and column breaks.
- The editor accepts a reading over any selection without readings or
  warichu, or over a whole base. Warichu still needs one span.
- HTML and foreignObject draw one ruby per base, CSS code generation
  writes one set of rules per base, and SVG export draws one reading
  per line of a base through the new ruby-x and ruby-width keys.

AI-assisted-by: claude-opus-5-5
2026-11-12 00:49:45 +01:00
alonso.torres
221ac11f22 ✨ Preserve Japanese text in browser rendering and export
Render Japanese annotations in HTML and SVG and expose their styles
in CSS code generation. Preserve vertical position data from WASM,
while keeping the legacy SVG renderer on its horizontal layout path.

Cover generated markup, styles and copied SVG output.
2026-11-12 00:47:09 +01:00
Andrey Antukh
81c3b3cd56
📎 Update copyright name on file header (#11346) 2026-08-25 11:55:10 +02:00
Elena Torró
ef3511e519
✨ Add basic individual strokes implementation (#10648) 2026-07-22 16:13:38 +02:00
Alonso Torres
6b50e2d822
🐛 Fix errors with code generation (#10217)
* 🐛 Fix errors with code generation

* 🐛 Add cancelation of effects in inspect code
2026-06-18 17:55:55 +02:00
Andrey Antukh
c5de4c27b0 Merge remote-tracking branch 'origin/main' into staging 2026-06-01 12:57:39 +02:00
Yamila Moreno
ddba2ffa75
📎 Update Kaleidos Copyright (#9929) 2026-05-29 11:24:58 +02:00
Elena Torro
5ba53f7296 🎉 Add background blur for wasm render 2026-03-18 17:43:27 +01:00
Xaviju
058a555594
🎉 Add shadow panel to inspect styles tab (#7566) 2025-10-22 12:17:14 +02:00
Xavier Julian
7bacd8fbca ♻️ Refactor defmulti fn into case switches 2025-09-16 14:17:14 +02:00
Xavier Julian
55513b9ae5 🎉 Inspect styles tab: layout element panel 2025-09-15 13:39:00 +02:00
Xavier Julian
f4b38af649 ✨ Display border-radius as logical properties in inspect tab 2025-09-15 09:46:01 +02:00
Xavier Julian
0210b310b7 🎉 Inspect styles tab: layout panel 2025-09-12 10:27:41 +02:00
Xaviju
dadeda4476
🐛 Display stroke properties in inspect tab (#6955) 2025-07-28 16:17:54 +02:00
Andrey Antukh
9ee488009f ♻️ Add substantial refactor on how types are organized
This mainly affects types related to colors, fills and texts, moving library
based operations from color namespace.
2025-07-23 08:03:23 +02:00
Xaviju
ee23d72d13
🐛 Fix null when copying shadow color on inspect tab (#6923)
Co-authored-by: Xavier Julian <xaviju@proton.me>
2025-07-22 14:06:06 +02:00
Xavier Julian
0daa8be0b5 ✨ Add visibility group and attributes to info tab 2025-07-09 11:19:30 +02:00
alonso.torres
f86156b619 ✨ Plugins support for code generation 2024-06-24 15:26:21 +02:00
alonso.torres
4b846b17f0 🐛 Fix problem when exporting html texts 2024-03-25 15:35:04 +01:00
alonso.torres
5c33bc6892 🐛 Make the layout boards export as responsive markup 2024-03-14 15:52:26 +01:00
alonso.torres
dc2c83bb62 🐛 Fix problems with absolute positioning and hidden elements 2023-12-07 16:54:48 +01:00
Alejandro Alonso
5285e1a4dd ✨ Improving code gen for multiple fills 2023-11-22 23:08:47 +01:00
Andrey Antukh
52fbc678f3 ♻️ Move app.common.pages to app.common.files 2023-11-16 11:07:36 +01:00
alonso.torres
351f7fd1bb ✨ Create grid from selection 2023-10-25 15:03:09 +02:00
alonso.torres
5a9421a1e2 🐛 Fix problem with inspect 2023-10-20 13:04:33 +02:00
Eva
dfe1022d7b 💄 Update inspect tab in code area 2023-10-19 20:12:20 +02:00
alonso.torres
d420f30835 ✨ Grid area attributes for html generation 2023-10-06 12:18:55 +02:00
alonso.torres
7fd02022ac 🐛 Improve html generation 2023-10-02 12:36:41 +02:00
alonso.torres
9d05fdf3df 🐛 Fix some cases for the html preview 2023-09-27 13:27:14 +02:00
alonso.torres
641f8fb250 ✨ Dynamic preview html output 2023-09-25 15:26:49 +02:00
alonso.torres
723c14bef2 🐛 Fix problems with code generation 2023-09-25 15:26:49 +02:00
alonso.torres
ac184a7c8f ✨ Improved codegen 2023-07-10 14:49:25 +02:00
alonso.torres
cb502fc70d ✨ Improved code gen 2023-07-10 14:49:25 +02:00
alonso.torres
68c85c8fa5 ✨ Changes to transform 2023-07-10 14:49:25 +02:00
alonso.torres
3741a65276 ✨ Moved text styles to css when generating code 2023-07-10 14:49:25 +02:00
alonso.torres
a2c59acfa9 ✨ Update info panel 2023-07-10 14:49:25 +02:00