Files
pdfcraft/docs/development.md
T
Sameh ElhawaryandClaude Opus 5.5 d30bb111db M14: Arabic and Hebrew file names render in the tab strip, recent files and Properties (#285)
A tab named in Arabic showed replacement boxes: no interface font had the
glyphs, and egui joins the letters of a right-to-left word but places the
runs in logical order.

- Fonts: the interface takes `Arab` faces from the craft-fonts build input
  (also on wasm), and on desktop adds one font already installed on the
  machine as the last fallback of every family. It is read at runtime, never
  embedded; PDFCRAFT_SYSTEM_FONTS=0 turns it off and `cargo xtask screenshots`
  sets that. AGENTS.md §1.4 records the rule.
- Order: bidi::visual puts single-line text in display order with a
  left-to-right base, used for the painted tab label and hover text, the
  recent-files name and path, and the Properties File and Location rows.
  Accessibility names keep the logical text.

misc.rtl-ui stays planned: multi-line text, text input and a mirrored layout
are not done.

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-08 10:46:58 -04:00

2.2 KiB

Developing PdfCraft

Working instructions for agents and contributors are in AGENTS.md and CLAUDE.md. This page collects what the desktop app reads from its environment and where it writes its diagnostics.

Logs

The desktop app writes its log records to standard error and to logs/pdfcraft.log in its settings folder, next to app.ron: Linux and FreeBSD ~/.local/share/pdfcraft/logs/ (or $XDG_DATA_HOME/pdfcraft/logs/), macOS ~/Library/Application Support/PdfCraft/logs/, Windows %APPDATA%\PdfCraft\data\logs\. A start from a desktop menu, Finder or the Start menu has no terminal, so this file is what to attach to a bug report: a failed autosave, a page that would not render, a render worker that could not start and the report of an internal error all land there. Each launch moves the previous log to pdfcraft.1.log (and that one to pdfcraft.2.log), so the log of a run that crashed survives the next start. The file stops growing at 16 MiB. --version writes no file.

By default PdfCraft's own crates (pdfcraft*) log at info and everything else at warn. RUST_LOG replaces that with env_logger-style directives, for example RUST_LOG=debug, RUST_LOG=warn,pdfcraft_render=trace or RUST_LOG=info,wgpu_core=warn; a directive ending in * covers every target starting with it (pdfcraft*=debug). The logger is apps/pdfcraft/src/logging.rs. It never records the control-channel token or document passwords.

Environment variables

Variable Effect
RUST_LOG Log levels for standard error and the log file (see Logs)
RUST_BACKTRACE 1 adds a backtrace to the report of an internal error
XDG_DATA_HOME Linux/FreeBSD: base of the settings folder (pdfcraft/), the log folder and crash recovery
WGPU_POWER_PREF GPU choice; by default PdfCraft prefers the low-power (integrated) GPU
WGPU_BACKEND Graphics backend; by default Windows uses Direct3D 12, falling back to OpenGL
CRAFT_FONTS_DIR Build time: a craft-fonts checkout to embed (Japanese fonts)
PDFCRAFT_SYSTEM_FONTS 0 stops the desktop app from using an installed font for characters its embedded fonts lack (cargo xtask screenshots sets it)