TypesetOK (TOK) ืืื ืชืืื ืช ืขืืืื ืฉืืืื ืืช ืืืืจื ืืช ืฉื ืื ืชื ืืชืื ืืืจื ืืืช ืืจืืจื: ืืืคืฉืจ ืขืืืื ืืืืืง, ื ืงื ืืืืืืชื ืฉื ืกืคืจืื, ืืงืกืืื ืขืืจืืื ืืกืคืจื ืงืืืฉ, ืืืืืืืช ืืฉืชืืฉ ืคืฉืืื ืื ืืื.
ืืืฉื ืฉื ืื ืจืืืช, ืขืืืื ืืงืฆืืขื ืืขืืจืืช ื ืฉืขื ืขื ืชืืื ืืช ืืืืฉื ืืช ืื ืขื ืืืื ืืงืจืื ืืืกืืจืืืื ืฉืื ืชืืื ืืืชืืืื ืืฆืืจืื ืืืืคืืืจืคืื ืืขืืจืืช. TypesetOK ืืกืคืงืช ืกืืืืช ืขืืืื ืขืฆืืืืช ืื ืขืืื โ ืืืงืืืช ืืขืจืืืช ืืืงืกื ืืขื ืืคืงืช ืงืืืฅ PDF ืืืื ืืงืจืืื ืืืืืคืกื.
- ืืืฉืืจ ืฉืืจืืช ืขืืจื ืืืขื: ืฉืืืื ืฉื ืืืืงืช ืจืืืื ืืืืื ืืืืื ืช, ืืชืืืช ืืืชืืืช ืืชืจืืืืช (ืืืืชืจืดื: ื, ื, ื, ืช, ืจ, ื) ืืืืืืจืืชื Knuth-Plass ืืฉืืืจืช ืฉืืจืืช ืืืคืืืืืืช ืืงืืืช ืขืืืื ืืงืกื ืืคืื ืืืืืฉืจืื.
- ืฉืืืื ืืืื ืืคืกืงืืืช: ืืืืจืช ืืจืืืืื ืืืืืงืื ืืคื ื ืืืืจื ืคืกืงื, ืื ืืกืืช ืฉืืจื (ืืื ืื ืืฆืื), ืืื ืืขืช ืฉืืจืืช ืืชืืืืช.
- ืืืืื ืืืช ืืืืื ืืฉืืื (RTL): ืชืืืื ืืืื ืืืืขืืช ืืืงืกื ืขืืจื ืืื ืืืงื ืืชืืื ื, ืืืื ืฉืืืื ืืืืืืื ืืืืขืืืช (BiDi).
- ืืงืกื ืื ืืงื ืืืขืื ืืงืจื: ืชืืืื ืืืื ืืืงืกื ืขื ื ืืงืื ืืื ืืืขืืื ืืื ืฉืืืืฉืื ืืจืคืืื, ืขื ืขืืฆืื ืืืคื ืื ืืชืงืื (Font Shaping).
- ืกืืจ ืืื ืืงืื ืชืงื ื: ืกืืืืจ ืื ืจืืื ืืืืืืื ืฉื ืชืืื ืืื ืืงืื (ืืืช ืืกืืก, ื ืงืืืืช ืฉื/ืฉื, ืืืฉ, ื ืืงืื ืืืขืืื) ืืื ืืขืช ืงืคืืฆืืช ืฉื ืกืืื ื ืื ืืงืื.
- ืืื ืฉืืืช ืงืืืฉ: ืื ืืขืช ืฉืืืจืช ืฉืืจืืช ืืคืืฆืื ืืืืื ืืฉืืืช ืงืืืฉ (ืืืกืืจ ืฉืืืจื ืืฉืืืช ืืืืดื ืืืื ืืช).
- ืืกืคืืจ ืขืืืืื ืขืืจื (ืืืืืจืื): ืืกืคืืจ ืขืืืืื ืืืืืืื ืืืืชืืืช ืขืืจืืืช ืืคื ืืืืืื ืืืกืืจืชืืื (ืืืื ืืดื, ืืดื, ืืกืืืื ืืจืฉ/ืืจืฉืืื ืชืงื ื).
- ืชืฆืืืช ืืคืืืืช ืขืืืืื: ืฆืคืืื ืืืกืื ืืคืจืืกืช ืกืคืจ ืคืชืื (ืขืืื ืืื ื ืืขืืื ืฉืืืื ืื ืืฆื ืื) ืืืฉืงืคืช ืืืืืืง ืืช ืืืืืืจืืืช ืืขืืืืื.
- ืขืืจื ืืงืกื ืืืื ื ืืชืฆืืื ืืคืืฆืืช: ืขืจืืืช ืืงืกื ืจืฆืืคื (Story Editor) ืืืืื ืืืขืืื, ืืฆื ืชืฆืืื ืืงืืืื ืฉื ืืืคืื ืืืชืขืืื ืช ืชืื ืืื ืืงืืื.
- ืฉืืืื ื ืืื ืืชืงืจืื (ืืื): ืืคืชืืจื ืชืงืจืื, ืืชืืื ืืืืจื ืืืืื ืืืืื, ืืชืืืื ืืืืืืช ืืฉืื ืืืข ืืืืฉืืื ื ืืืืื (Pinch to Zoom ืืืืืงื ืืฉืชื ืืฆืืขืืช).
- ืืืื ืืงืกืืื ืงื: ืคืชืืืช ืืกืืื ืืงืกื ืคืฉืืืื (
.txt), ืงืืืฆื Markdown, ืื ืคืจืืืงืื ืขืืจ. - ืกืคืจ ืจืฆืืฃ: ืคืจืืกื ืงืืืกืืช ืื ืงืืื ืืกืคืจื ืงืจืืื, ืขืืื ืืืืืช.
- ืกืคืจ ืขื ืืขืจืืช ืฉืืืืื: ืืงืกื ืจืืฉื ืขื ืืืืจ ืืขืจืืช ืชืืชืื ืืืชืขืืื ืืคื ืืฆืืจื.
- ืขืืื ืืงืื ืืจืก: ืืื ื ืื-ืืืจื ืืืื ืื ืืขืืื ื ืฉืืช, ืืืืจืืช ืืืคื ืืืืข.
- ืืฃ ืืืจื ืืืงืจืืืช ืืืืืืช: ืคืจืืกืืช ืชืืจื ืืืช ืจื-ืืืจืืืช ืืืงืกื ืจืืฉื ืืืคืจืฉืื ืืงืืืืื.
- ืืืฆืื ืืฉืืจ ื-PDF: ืืคืงืช ืงืืืฆื PDF ืืงืืืจืืื ืืืืื ืืฉืืจืืช ืืื ืืข ืืขืืืื, ืืืืืืื ืืืืขืช ืืืคื ืื (Font Subsetting), ืืืื ืื ืืฆืคืืื, ืืืคืกื ืืืชืืช ืื ืืกืืจื ืืืคืืก.
- ืคืืจืื ืงืืืฅ ืคืจืืืงื (
.tok): ืฉืืืจื ืืืขืื ื ืืืืจื ืฉื ืื ืืืืจืืช ืืขืืืื, ืืืืคืืืจืคืื ืืืืงืกืืื ืืงืืืฅ ืืจืืื ืืื.
ืืชืืื ื ืืืืขืืช ื-Windows ืืืืืขื ืืืจืกื ืฉืืืื ืืช ืืืื ื ืืืคืขืื, ืืื ืฆืืจื ืืืชืงื ืช ืืื ืคืืชืื:
- ืืืจืื: ืืืื ืกื ืืืฃ ื-Releases ื-GitHub ืืืืจืืื ืืช ืืืจืกื ืืืืจืื ื:
- ืงืืืฅ ืืชืงื ื:
TypesetOK-Setup.exe - ืื ืืืืื ื ืืืืช: ืงืืืฅ
.zipืืืืืืฅ ืืื ืืชืงื ื.
- ืงืืืฅ ืืชืงื ื:
- ืืคืขืื:
- ืืงืืืฅ ืืชืงื ื: ืืคืขืืื ืืช ืืืฉืฃ ืืขืงืื ืืืจ ืืืืจืืืช.
- ืืงืืืฅ ZIP: ืืืฆื ืืช ืืชืืงืืื ืืืืฆื ืืืืฆื ืืคืืื ืขื
TypesetOK.exe.
- ืชืืืืช ืขืืืื ืืืกืื:
- ืืืกื ืืคืชืืื ืืืจื ืชืื ืืช ืืืื ื (ืืืฉื "ืกืคืจ ืจืฆืืฃ") ืื ืฆืจื ืืกืื ืืืฉ.
- ืืืืืงื, ืืงืืืื ืื ืืืื (
Ctrl+I) ืืช ืืืงืกื ืฉืืื. - ืืืื ื ื ืฉืืืืื, ืืจืืืืื ืืืืคื ืื ืืืืฆืขืืช ืกืจืืื ืืืืื.
- ืฉืืจื ืืช ืืคืจืืืงื (
Ctrl+S) ืืืืฆืื ื-PDF ืืืืืฆืช ืืคืชืืจ (Ctrl+E).
| ืคืขืืื | ืงืืฆืืจ ืืงืฉืื (ืขืืจืืช / ืื ืืืืช) |
|---|---|
| ืืกืื ืืืฉ | Ctrl + N |
| ืคืชืืืช ืืกืื | Ctrl + O |
| ืืืื ืืกืื (ืืงืกื / Markdown) | Ctrl + I |
| ืฉืืืจืช ืืกืื | Ctrl + S / Ctrl + ื |
| ืฉืืืจื ืืฉื | Ctrl + Shift + S |
| ืืืฆืื ื-PDF ืืืคืืก | Ctrl + E / Ctrl + ืง |
| ืืืืื ืคืขืืื (Undo) | Ctrl + Z / Ctrl + ื |
| ืืืฆืืข ืืืืจ (Redo) | Ctrl + Y |
| ืชืฆืืืช ืขืืืืื | Ctrl + 1 |
| ืชืฆืืื ืืคืืฆืืช (ืขืืจื + ืขืืืืื) | Ctrl + 2 |
| ืขืืจื ืืงืกื ืืืื | Ctrl + 3 |
| ืืืืืช ืืื | Ctrl + + / Ctrl + = |
| ืืงืื ืช ืืื | Ctrl + - |
| ืืชืืืช ืขืืื ืืืืื | Ctrl + 0 |
| ืืืกืคืช ืขืืื ืืืฉ | Ctrl + Enter |
| ืืื ืคืงืืืืช ืืคืขืืืืช ืืืืจ | Ctrl + K |
- ืืื ืืชืืื ื ืืื ืืืช?
ืื, ืืฉืืืืฉ ืืืฉื, ืืืืืื ืืื-ืืกืืจื (ืืืชืื ืืจืืฉืืืTOK-NCCL v1.1). ืฉืืืืฉ ืืกืืจื ืืืกืืจ ืื ืคืจื ืืื ืืขืื ืืืืืืืช. - ืืื ืฆืจืื ืืืืืจ ืืืื ืืจื ื?
ืื. TypesetOK ืืื ืชืืื ื ืฉืืืื ืืช ืืงืืืืช (Offline). ืื ืืขืืืื ืืืืกืืืื ืฉืืื ื ืฉืืจืื ืืฆืืื ืืืืฉื ืืืื. - ืืืื ืืืคื ืื ืืืืืื ืืชืืื ื?
ืืชืืื ื ืืืืืช ืืืคื ืื ืขืืจืืื ืืืืืชืืื ืืจืืฉืืื ืืืคืฉื (ืืืื Frank Ruhl Libre, Noto Rashi, David Libre ืืขืื), ืืืืคืฉืจืช ืฉืืืืฉ ืืืืคื ืื ืืืืชืงื ืื ืืืืฉืืื. - ืืืืื ืฉืื ื ืืฆื ืืคืจืืืงื?
ืืชืืื ื ื ืืฆืืช ืืคืืชืื ืคืขืื (ืืจืกื 0.3.30). ื ืฉืื ืืืื ืืฉืืืข ืืขืจืืช, ืืืืืื ืชืงืืืช ืืืงืฉืืช ืืืฃ ื-Issues.
TypesetOK ืื ืืื ืืืจืืืืงืืืจื ืืืืืืจืืช ืืืคืจืืื ืืืืคื ืงืฉืื ืืื ืืืฉืืื ืืืืคืืืจืคืื ืืืื ืฉืืืช ืืชืฆืืื ืืฉืืืื ืืช:
- ืืืืช ืขืืืื ืืืืคืืืจืคืื ื-Rust (
crates/):tok-core: ืืืื ืืืกืื (TDM), ืขืฅ ืืืจืจืื ืืืจืืื ืืกืื, ืืืกืืืจืืืช ืฉืื ืืืื ืืืจื ืืงืฆืืืช ืืืืื/ืืืฆืืข ืืืืจ (Undo/Redo).tok-typeset: ืื ืืข ืืคืจืืกื ืืจืืฉื, ืขืืฆืื ืืืคื ืื ืืชืงืื (HarfBuzz / rustybuzz), ืืืืืจืืชื Knuth-Plass ืืฉืืืจืช ืคืกืงืืืช, ืืืืฉืืจ ืขืืจื ืืกืืจืชื.tok-pdf: ืืคืงืช ืงืืืฆื PDF ืืงืืืจืืื ืืฉืืจืื, ืืืืขืช ืืืคื ืื (Subsetting) ืืชืืืื ืืคืืจืืื ืงืื-ืืคืืก.tok-storage: ื ืืืื ืืจืืื ืืคืจืืืงื (.tok), ืืืืกื, ืืฉืืืจื ืืืจืืื ืืกืืืช.tok-cli/tok-ipc: ืืืฉืง ืฉืืจืช ืคืงืืื ืืชืงืฉืืจืช ืืื-ืชืืืืืืช (IPC) ืืขืืื.
- ืืขืืคืช ืฉืืืื ืขืืืื ื-TypeScript & Electron (
packages/):tok-canvas: ืงื ืืก ืชืฆืืื ืืืืจ ืืืฆืื ืืคืืืืช ืขืืืืื ืขื ืืกืืก ืืืฉืืื ืืคืจืืกื ืืืืืืงืื ืฉื ืืืืื.tok-story-editor: ืขืืจื ืืงืกื ืจืฆืืฃ ืืืืจื ื ืืืืคืฉืจ ืขืืืื ืฉืืืคืช ืขื ืชืืื ืืืกืื.tok-ui: ืกืืืืช ืืขืืืื ืืจืืฉืืช, ืกืจืืื ืืืื, ืืื ืคืงืืืืช (Ctrl+K), ืคืื ืืื ืืกืื ืื ืืช.tok-electron: ืืขืืคืช ืืืคืืืงืฆืื ืืฉืืืื ืืช ืืืงืืืืช ื-Windows.
ืืืขืื ืืื ืื ืืชืจืื ืืงืื, ืืื ืืช ืขืฆืืืืช ืื ืืืจืืฅ ืกืืืืช ืคืืชืื:
ืืจืืฉืืช:
- Node.js 20+
- Rust 1.85+ ืขื Cargo
ืืืจืืืช ืืจืฆื:
# ืฉืืคืื ืืืืืจ
git clone https://github.com/TypesetOK/typesetok.git
cd typesetok
# ืืชืงื ืช ืชืืืืืช ืฆื-ืืงืื ืืื ืืื
npm install
npm run build
# ืืจืฆืช ืืืืงืืช
npm test
cargo test --workspace
# ืืคืขืืช ืืืคืืืงืฆืื ืืฉืืืื ืืช
npm startืืชืืื ื ืืืคืฆืช ืชืืช ืจืืฉืืื TOK-NCCL v1.1 (TypesetOK Source-Available Non-Commercial Copyleft License):
- ืฉืืืืฉ ืืืฉื, ืืืืืื ืืชืืจื ื ืื-ืืกืืจื: ืืืชืจ ืืืืคืฉื.
- ื ืืืจืืช ืืืจืืืืช: ืื ืืจืกื ื ืืืจืช ืืืืืช ืืืืฉืืจ ืชืืช ืืืชื ืจืืฉืืื ืืืงืื ืืงืืจ ืืืื.
- ืฉืืืืฉ ืืกืืจื: ืืืืื ืจืืฉืืื ืืกืืจื ื ืคืจื ืืืืฆืจื ืืชืืื ื.
TypesetOK (TOK) is a modern desktop publishing (DTP) application designed for typesetting Hebrew books, literature, and traditional sacred texts.
Instead of relying on legacy monolithic software or overly complex design suites, TypesetOK offers a clean, visual, and approachable desktop workspace tailored specifically to the unique needs of Hebrew typography and book publishing.
- Natural Hebrew Justification: Balanced word spacing combined with traditional expanding letters (Ahalterm: ื, ื, ื, ืช, ืจ, ื) and the Knuth-Plass optimal line-breaking algorithm to deliver harmonious, readable columns.
- Paragraph & Flow Control: Precise space before/after, first-line indentation, margin collapsing, and orphan/widow suppression.
- Native RTL & Bidirectional Text: Natural right-to-left layout across the entire environment, with seamless handling of embedded numbers and Latin phrases (Unicode BiDi).
- Vocalization & Cantillation Marks: Comprehensive rendering support for vocalized Hebrew (niqqud) and biblical cantillation accents (ta'amei ha-mikra) powered by advanced font shaping (rustybuzz / HarfBuzz).
- Canonical Unicode Normalization: Automated normalization and ordering (base character, shin/sin dot, dagesh, vowel, accent) preventing glyph collisions and floating diacritics.
- Sacred Names Protection: Guard against improper word splitting and line breaks across holy names (Tetragrammaton and divine names).
- Hebrew Page Numbering (Gematria): Automatic traditional Hebrew numeral conversion following standard liturgical conventions (including ืืดื, ืืดื, and formal gershayim punctuation).
- Facing Pages (Spread Canvas): Realistic two-page book spread reflecting the layout engine's exact geometry and margins.
- Integrated Story Editor & Split View: Distraction-free continuous text editing alongside a synchronized real-time typesetting canvas preview.
- Fluid Zoom & Navigation: Canvas zoom controls, fit-to-window preset, and multi-touch trackpad pinch-to-zoom and two-finger panning.
- Effortless Document Import: Seamlessly import plain text (
.txt), Markdown files, or existing TypesetOK project documents (.tok). - Continuous Book: Clean single-column layout for novels, essays, and continuous prose.
- Book with Footnotes: Main narrative with dynamic footnote frames anchored to citations.
- Two-Column Booklet: Elegant dual-column format for bulletins, pamphlets, and communal newsletters.
- Talmud & Rabbinic Commentary: Multi-flow page layouts designed for central text accompanied by surrounding commentaries (Tzurat HaDaf).
- Direct PDF Generation: Output crisp vector PDF files directly from the layout engine, complete with font subsetting, ready for digital distribution or professional printing.
- Unified Project Archive (
.tok): Comprehensive project container preserving document tree, typography settings, styles, and geometry.
- Download: Head to the Releases page and grab either the standalone ZIP or the setup installer (
TypesetOK-Setup.exe). - Launch: Run
TypesetOK.exedirectly (no developer setup required). - Start Layout: Choose a template or create a blank document, paste, type, or import (
Ctrl+I) your text, adjust margins and styles, save (Ctrl+S), and export to PDF (Ctrl+E).
| Action | Shortcut (English / Hebrew Layout) |
|---|---|
| New Document | Ctrl + N |
| Open Document | Ctrl + O |
| Import Document (Text / Markdown) | Ctrl + I |
| Save Document | Ctrl + S / Ctrl + ื |
| Save As | Ctrl + Shift + S |
| Export to Print PDF | Ctrl + E / Ctrl + ืง |
| Undo | Ctrl + Z / Ctrl + ื |
| Redo | Ctrl + Y |
| Pages View | Ctrl + 1 |
| Split View (Editor + Pages) | Ctrl + 2 |
| Text Editor View | Ctrl + 3 |
| Zoom In | Ctrl + + / Ctrl + = |
| Zoom Out | Ctrl + - |
| Fit Page to Window | Ctrl + 0 |
| Add New Page | Ctrl + Enter |
| Typesetting Command Palette | Ctrl + K |
- Is TypesetOK free to use?
Yes, for personal study, community, educational, and non-commercial publishing under the TOK-NCCL v1.1 license. Commercial publishing or hosted typesetting services require a dedicated commercial license from the project authors. - Does it require an internet connection?
No. TypesetOK is a 100% offline desktop application. Your manuscripts, documents, and data remain strictly local on your computer. - Which Hebrew fonts are included?
The application includes high-quality open-source Hebrew typefaces (such as Frank Ruhl Libre, Noto Rashi Hebrew, David Libre, and Noto Serif Hebrew) licensed under the SIL Open Font License, and also supports local fonts installed on your operating system. - What is the current project status?
TypesetOK is under active development (current release v0.3.30). Community feedback, bug reports, and typographical suggestions are welcomed on the GitHub Issues page.
TypesetOK features a decoupled architecture strictly separating high-performance typography computation from the desktop UI layer:
- High-Performance Rust Core (
crates/):tok-core: The Document Model (TDM) tree, transactional undo/redo history, and deterministic state management.tok-typeset: The core layout and typography engine, HarfBuzz / rustybuzz font shaping, Knuth-Plass paragraph breaking, and Hebrew justification.tok-pdf: Direct vector PDF generation with font subsetting and pre-press geometry boxes.tok-storage: Project archive container (.tok), compression, and asset serialization.tok-cli/tok-ipc: Native command-line interface and inter-process communication bridge.
- Desktop Workbench in TypeScript & Electron (
packages/):tok-canvas: High-performance facing-pages canvas accurately reflecting layout engine geometry.tok-story-editor: Integrated distraction-free narrative editor for continuous writing.tok-ui: Workbench shell, ribbon toolbars, command palette (Ctrl+K), inspector panels, and modals.tok-electron: Native Windows desktop shell running fully offline.
For contributors, building from source, or setting up a local development environment:
Prerequisites:
- Node.js 20+ and
npm - Rust 1.85+ with Cargo
Build & Run Instructions:
# Clone repository
git clone https://github.com/TypesetOK/typesetok.git
cd typesetok
# Install dependencies and build TypeScript & UI bundle
npm install
npm run build
# Run test suites (TypeScript & Rust)
npm test
cargo test --workspace
# Launch desktop application
npm startTypesetOK is licensed under the TOK-NCCL v1.1 (Source-Available Non-Commercial Copyleft License):
- Free for Personal & Non-Commercial Use: Personal study, community, and non-commercial publishing.
- Share-Alike: Modifications and derivative works must remain under the same license.
- Commercial Use: Requires a separate commercial license.
