openpencil/src
Danila Poyarkov 88bfacdc9e Rich text style runs with per-selection bold/italic/underline
StyleRun model: array of {start, length, style} with
CharacterStyleOverride (fontWeight, italic, textDecoration, etc.).

Renderer uses ParagraphBuilder.pushStyle/pop for mixed-style text.
TextEditor delegates paragraph building to renderer.buildParagraph().

⌘B/I/U apply to selection range when text is selected, or toggle
whole-node style when no selection. Style runs adjust on
insert/delete to preserve formatting across edits.

Fig roundtrip: import characterStyleIDs + styleOverrideTable from
TextData, export back with deduped style table.

B/I/U/S toggle buttons in TypographySection.
2026-03-01 09:03:38 +03:00
..
components Rich text style runs with per-selection bold/italic/underline 2026-03-01 09:03:38 +03:00
composables Rich text style runs with per-selection bold/italic/underline 2026-03-01 09:03:38 +03:00
engine Rich text style runs with per-selection bold/italic/underline 2026-03-01 09:03:38 +03:00
kiwi Extract @open-pencil/core package 2026-03-01 01:03:07 +03:00
stores Rich text style runs with per-selection bold/italic/underline 2026-03-01 09:03:38 +03:00
app.css Format codebase with oxfmt 2026-02-28 22:41:34 +03:00
App.vue Move variables UI to dialog opened from page properties 2026-03-01 01:54:57 +03:00
constants.ts Extract @open-pencil/core package 2026-03-01 01:03:07 +03:00
demo.ts Add variable collections to demo: primitives, semantic tokens, spacing 2026-03-01 02:04:41 +03:00
env.d.ts Replace emoji icons with Lucide via Iconify (unplugin-icons) 2026-02-28 08:24:42 +03:00
global.d.ts Consolidate shared types and remove inline duplicates 2026-02-28 23:06:47 +03:00
main.ts Preload system fonts on app startup 2026-03-01 02:57:58 +03:00
types.ts Extract @open-pencil/core package 2026-03-01 01:03:07 +03:00