You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Offer missing document fonts before conversion #413
Office and HWPX documents can name fonts that are not installed on the computer. Filee currently substitutes them silently. The result may stay readable, but different font metrics can change wrapping, pagination and table layout. #409 prevents completely blank text when rhwp's own fallback fonts are absent, but it intentionally does not solve exact document typography.
Proposed flow
When a text-rendering step discovers missing families:
Keep the conversion in the bottom-right progress card and pause before the final render.
Show the missing families and the replacements Filee would use, for example: Times New Roman → Liberation Serif.
Offer Get fonts, Continue with replacements, and Cancel.
After fonts are installed, release the font cache, check the families again, and resume the same job. If some are still absent, keep the remaining list visible.
For freely licensed families, Filee can download a pinned archive with a checksum and install it per user. For proprietary families, it should not redistribute font files silently: Get fonts can open the official source or let the user choose font files they already obtained.
Non-interactive conversions
CLI: print the missing families and substitutions, then continue by default; a future --require-fonts option can fail instead.
Watch folders: use a saved continue/fail policy so an unattended job never waits forever.
Implementation notes
RhwpFonts.Plan already knows which families are absent and which replacements it chose. The missing piece is an interactive question on a ConversionJob/FileResult, rendered by ToastWindow, whose answer the running conversion can await. LibreOffice routes need an OOXML/HWPX preflight because substitution happens inside LibreOffice.
Acceptance cases
No prompt when every referenced family is installed.
A DOCX referencing absent Times New Roman/Calibri lists both before rendering.
Continuing produces the current fallback result.
Installing an available font refreshes discovery and resumes without restarting Filee.
Cancelling removes partial outputs.
CLI and watch-folder conversions never block on a GUI prompt.
A less intrusive default may be safer than pausing every conversion:
Keep converting with the current substitutions. In the existing bottom-right job card, show one compact line such as “2 document fonts are missing”.
Let that line expand to the family/substitution list. Offer Review fonts (and, only where Filee has a trusted legal source, Get fonts); never download or install anything automatically.
Keep Continue with replacements implicit: dismissing the notice or doing nothing should not block the job. A later preset/advanced option could make exact fonts required and pause before rendering.
Do not show the notice for embedded fonts, known metric-compatible aliases, or families that become available after refreshing the font cache.
Watch folders and CLI should remain non-blocking and record the same warning in history/log output.
This gives users who care about exact pagination a clear path without turning ordinary drag-and-drop conversions into a modal setup flow. The implementation can also be staged: detection + passive notice first, trusted font providers/install-and-retry later.
I implemented the non-blocking first stage in #417. It detects referenced families before LibreOffice/rhwp rendering, keeps conversion running, reports the same warning in GUI/CLI, and offers trusted font sources without silently downloading or installing anything. Embedded fonts, theme placeholders, installed families and known metric-compatible aliases are excluded.
#417 is merged, thanks @Perricheno: the next release lists document fonts that aren't installed on the conversion's card, with a link to get them where one exists. Nothing is blocked or downloaded, and the command line and watch folders only report it. Closing this.
Activity
Perricheno commentedon Oct 22, 2026
A less intrusive default may be safer than pausing every conversion:
This gives users who care about exact pagination a clear path without turning ordinary drag-and-drop conversions into a modal setup flow. The implementation can also be staged: detection + passive notice first, trusted font providers/install-and-retry later.
Perricheno commentedon Oct 22, 2026
I implemented the non-blocking first stage in #417. It detects referenced families before LibreOffice/rhwp rendering, keeps conversion running, reports the same warning in GUI/CLI, and offers trusted font sources without silently downloading or installing anything. Embedded fonts, theme placeholders, installed families and known metric-compatible aliases are excluded.
KnifeLemon commentedon Oct 23, 2026
#417 is merged, thanks @Perricheno: the next release lists document fonts that aren't installed on the conversion's card, with a link to get them where one exists. Nothing is blocked or downloaded, and the command line and watch folders only report it. Closing this.