photocraft/docs
kijoong ce6fccc3f5
fix(type): missing-font checks follow layout's PostScript resolution; split hyphenless style suffixes (#608)
* fix(text): split hyphenless PostScript style suffixes

A PostScript name without a hyphen kept its style in the guessed family:
`GmarketSansBold` became the family "Gmarket Sans Bold" at weight 400.
The guess now drops a trailing capitalised style word (Gmarket Sans, 700).
A lowercase ending ("Daylight") is not a style, and a style word after the
vendor tag MT stays in the legacy family ("Arial Rounded MT Bold").
Hyphenated names keep the last-hyphen parsing from #3878.

PSD import stores this guess when the exact face is absent. A legacy family
that ends in a style word without MT before it ("CooperBlack") is stored as
the shorter family (Cooper, 900) until the face is installed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(type): missing-font checks follow layout's PostScript resolution

When a run's stored family is not installed, layout draws it with its exact
PostScript face, or with the family guessed from that name if installed.
Missing-font detection compared only the stored family label, so such a run
was reported missing, and Replace Missing Fonts rewrote it whenever an
unresolved run shared the label. missing_fonts, missing_fonts_in_layer and
the replacement now use layout's decision.

#1406 already corrects the label when a PSD or Affinity file is opened with
the face installed, and #1844 finds exact faces outside the family prefix.
The label still stays on a run reopened from .pcraft after its font was
installed, on fonts that arrive after opening, and on a run created with
both "font" and "postscriptName". The tests take the .pcraft and command
paths.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: kijoong <gijoong.gim@gmail.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-13 12:48:09 -04:00
..
brand Licensing: MIT OR Apache-2.0 files, NOTICE, ArtCraft brand terms, attribution 2026-10-04 10:06:17 -04:00
images PSD text fill: keep the fix and its tests, drop the proof-only screenshots and example 2026-10-09 01:57:17 +07:00
architecture.md Support automatic monitor ICC profiles on Linux X11 (#2963) 2026-10-12 01:17:59 -04:00
brush-parity.md Brush Settings: use an amount slider for Hue Jitter (#4874) 2026-10-13 12:11:44 -04:00
camera-raw-histogram.md Camera Raw: read and write settings as a live PSD Smart Filter (part of #215) (#459) 2026-10-07 17:59:16 -04:00
camera-raw-zoom.md Rework Camera Raw filter preview and navigation (#781) 2026-10-07 18:40:24 -04:00
color-picker.md Type Color Picker opens the full Color Picker; screen eyedropper with a pixel loupe (#1232) 2026-10-09 00:30:50 -04:00
context-menu-inventory.md Zoom and Hand tools: right-click the canvas for the view menu (#3242) (#3255) 2026-10-11 12:50:01 -04:00
context-menu-parity.md Layers: right-clicking a layer-mask thumbnail opens the mask menu (fixes #4575) (#4605) 2026-10-13 01:15:13 -04:00
contributing.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696) 2026-10-10 15:09:04 -04:00
contributors.md About: contributor and model credits compiled in (grab bag + table, self-submitted names) (#898) 2026-10-07 21:22:11 -04:00
control-protocol.md Docs: document the engine.commands reply shape (#3684) (#3750) 2026-10-13 12:47:32 -04:00
decisions.md Keep duplicated Smart Objects linked to shared contents (#2222) 2026-10-10 05:05:56 -04:00
development.md fix(gpu): require consent to persist CPU recovery (#3539) 2026-10-13 12:46:33 -04:00
file-format-parity.md Palette PNGs open in Indexed Color mode with their colour table (part of #4804) (#4817) 2026-10-13 12:33:39 -04:00
five-algorithm-performance.json Five exact-output speedups: dense Extrude 160s to 0.39s (#2685) 2026-10-11 10:50:45 -04:00
five-algorithm-performance.md Five exact-output speedups: dense Extrude 160s to 0.39s (#2685) 2026-10-11 10:50:45 -04:00
font-resolution.md fix(type): missing-font checks follow layout's PostScript resolution; split hyphenless style suffixes (#608) 2026-10-13 12:48:09 -04:00
gaps.md Brush Settings: use an amount slider for Hue Jitter (#4874) 2026-10-13 12:11:44 -04:00
gpu-composite-reuse.md feat(gpu): composite Blend If on the GPU (#4395) (#4541) 2026-10-13 02:11:23 -04:00
hardware-parity.md Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#2696) 2026-10-10 15:09:04 -04:00
iris-blur-performance.md Speed up Iris Blur without changing output (#2578) 2026-10-10 14:00:53 -04:00
kra.md Add Krita (.kra) import (#4388) 2026-10-12 22:41:38 -04:00
localization-es.md i18n(es): native-style review of the Spanish catalog (#3154) 2026-10-11 10:43:15 -04:00
localization-it.md Italian: native-speaker review of the UI catalog (#4290) 2026-10-12 19:38:55 -04:00
localization-ko.md Improve Korean terminology and dynamic UI translation coverage (#604) 2026-10-07 16:32:47 -04:00
localization-parity.md i18n(sr): add a Serbian (Latin, Ekavian) UI catalog (#4436) 2026-10-12 22:50:20 -04:00
localization-zh-hans.md i18n: complete Simplified Chinese catalog and localize brush sections (#359) 2026-10-07 07:46:52 -04:00
localization.md i18n(sr): add a Serbian (Latin, Ekavian) UI catalog (#4436) 2026-10-12 22:50:20 -04:00
mcp.md Docs: document the engine.commands reply shape (#3684) (#3750) 2026-10-13 12:47:32 -04:00
nikon-nef-development.md Keep fitted Camera Raw colour during tuning and crop Nikon D5100 borders (#3201) 2026-10-11 19:12:19 -04:00
octagonal-mask-performance.md Compute exact octagonal mask shifts with bounded workspace (#2154) 2026-10-10 06:46:06 -04:00
ora.md OpenRaster: never overwrite an .ora with less than the document has (#3806) (#3881) 2026-10-13 02:04:02 -04:00
parity-checklist.md Type menu: Anti-Alias › None first and checked; checks follow the edited layer (#2983) (#2984) 2026-10-11 11:35:38 -04:00
pdn.md Add native layered Paint.NET (.pdn) import (#1998) 2026-10-09 21:05:00 -04:00
pixelate-performance.json Pixelate: CMYK Facet 13.7x faster, Lab halftone 5.0x faster (#2588) 2026-10-10 14:03:03 -04:00
pixelate-performance.md Pixelate: CMYK Facet 13.7x faster, Lab halftone 5.0x faster (#2588) 2026-10-10 14:03:03 -04:00
plugins.md Plug-ins: keep the originating error across parallel bands (#1654) 2026-10-09 09:11:00 -04:00
proximity-match-performance.md Proximity Match: 1.5-3.8x faster stroke searches, smaller mask tables (#2101) 2026-10-09 19:34:26 -04:00
quick-selection-performance.md Quick Selection: 3.5x faster CPU strokes with hybrid graph cuts (#2436) 2026-10-10 14:17:48 -04:00
radial-blur-performance.md Optimize Radial Blur sampling without changing output (#1499) 2026-10-09 14:41:52 -04:00
release-playbook.md docs: stop linking readers to the private craftrules repo (#493) (#779) 2026-10-08 15:04:21 -04:00
releasing.md Security: verify AppImage build inputs (#2270) 2026-10-11 22:33:26 -06:00
roadmap.md Tools: Artboard tool (#2858) (#2862) 2026-10-11 07:12:53 -04:00
scorecard.md Scorecard: Smart Object corner skew and perspective is done (FILE-215-6, #426) (#5094) 2026-10-13 11:46:42 -04:00
selection-distance-performance.md Selection distance transforms: 7.6-10.6x faster and correct past 4K (#2093) 2026-10-09 19:28:33 -04:00
shape-strokes.md Fix Shape Stroke controls, popup interactions and paint colours (#3019) 2026-10-11 09:46:44 -04:00
target-app-parity.md Play real Photoshop action sets: TrueGrit .atn mappings and fixes (#4356, #219) (#4698) 2026-10-13 01:10:58 -04:00
tilt-shift-performance.md Speed up Tilt-Shift with existing per-level halo trimming (#2880) 2026-10-11 11:58:04 -04:00
ui-design.md Themes: default light theme to Pro Light to preserve the Pro layout (#5016) (#5029) 2026-10-13 12:02:32 -04:00
ui-dialogs.md Shortcuts: ⌥⇧⌘N makes a new layer without the dialog (#4794) (#4807) 2026-10-13 12:11:37 -04:00
ui-parity.md Smart Filters: drag a filter up or down its stack to reorder it (#4897) 2026-10-13 12:18:42 -04:00