Commit Graph
63 Commits
Author SHA1 Message Date
boykopovar 350c6eb323 fix(font): restore typography validation and reject unsupported shaping 2026-10-21 21:56:03 +03:00
boykopovar 34123d4e29 fix(font): restore encoded glyph identifiers and validation 2026-10-21 21:54:23 +03:00
boykopovar 512ae7f80f fix(font): use 32-bit resolution in driver callbacks 2026-10-21 21:54:22 +03:00
boykopovar 5f980378c4 fix(font): restore device cache ownership and detach outputs 2026-10-21 21:54:22 +03:00
boykopovar 6d318d168a fix(font): restore graphics and word creation argument slots 2026-10-21 21:53:07 +03:00
boykopovar aca0f63647 fix(font): allocate writing lines through caller memory callbacks 2026-10-21 21:51:31 +03:00
boykopovar f60226dcf5 fix(font): restore writing order and metrics validation 2026-10-21 21:51:27 +03:00
boykopovar 10829db69f fix(font): validate script and language selection 2026-10-21 21:51:25 +03:00
boykopovar 86c1daddde fix(font): match pixel resolution validation and locking 2026-10-21 21:50:05 +03:00
boykopovar cfbff67da6 fix(font): implement glyph attribute transitions and output 2026-10-21 21:50:05 +03:00
boykopovar add513ee50 fix(font): restore glyph support and image fill arguments 2026-10-21 21:50:04 +03:00
boykopovar f775cecf37 fix(font): define fill descriptors and device usage layouts 2026-10-21 21:50:03 +03:00
boykopovar 12eb05361a fix(font): recover canvas and texture construction signatures 2026-10-21 21:50:03 +03:00
boykopovar 340328ed04 fix(font): recover glyph rendering and resource signatures 2026-10-21 21:50:02 +03:00
boykopovar 60281539f9 fix(font): restore drawing frame and fill argument types 2026-10-21 21:50:02 +03:00
boykopovar e2f8adca1b fix(font): restore region and graphics transform signatures 2026-10-21 21:50:01 +03:00
boykopovar 30736adb89 fix(font): restore graphics lifecycle and metric signatures 2026-10-21 21:50:00 +03:00
Dean 083a3be61c Merge pull request #8058 from HQasper/claude/project-thread-md0z38
feat(libSceFont): open the other script files of a system font set
2026-10-21 06:26:24 +13:00
Adrià a93816cf8a Merge pull request #7730 from milescoviello/fix/font-missing-warning
fix(libSceFont): say once where system fonts were looked for when a set has none
2026-10-20 15:49:45 +02:00
Dean 52f7807a55 Merge pull request #6581 from Thomas73737/feat/libscefont-words
feat(libSceFont): implement handle and glyph attributes
2026-10-21 02:43:40 +13:00
Claude bff194647a feat(libSceFont): open the other script files of a system font set
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-19 18:31:56 +00:00
milescovielloandClaude Opus 5.5 41c75d2658 fix(libSceFont): say once where system fonts were looked for when a set has none
Without system font files, sceFontOpenFontSet returns
SCE_FONT_ERROR_FONT_OPEN_FAILED and logs `file=(none)` for each call.
Some titles then fail far from the cause: Astro's Playroom (PPSA01325)
lays out text with the failed set and stops on an out-of-heap or invalid
texture assertion (#7714). The first such open now prints the font set
and the directory searched to stderr, with how to supply the fonts.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 02:54:37 +00:00
Adrià 0bc3003f89 Merge pull request #6282 from Ondra97/codex/fix-font-face-lifetime
fix(font): serialize shared FreeType face lifetime
2026-10-18 23:27:19 +02:00
Thomas Abdelmalak ce4a1dc054 feat(libSceFont): implement handle and glyph attributes 2026-10-18 13:23:28 +03:00
Ondra97 7cdb99763d fix(font): serialize shared FreeType face lifetime 2026-10-15 10:46:49 +02:00
KernelPanicNTandClaude Opus 5.5 cf762829d1 feat(libSceFont): implement sceFontCharactersRefersTextCodes and text code stepping
sceFontCharactersRefersTextCodes fills a 64-byte FontTextCodes with the
order and code of a text character and keeps the current, start and
term characters at +0x28, +0x30 and +0x38. The traversal follows the
PS4 11.00 libSceFont.sprx disassembly posted in the review of #4050,
which implemented the same rules: Refers never compares the character
with the term and returns null for a clustered or synthetic character,
sceFontTextCodesStepNext returns null at the term after visiting it,
sceFontTextCodesStepBack returns null at the start character, and both
steps skip synthetic characters. Null from StepNext at the end of the
chain and from StepBack at the head of the chain is assumed and not
covered by the report.

The signatures follow Orbital's IDA type database and SharpProspero. A
null cursor or output returns null as in KytyPS5; a null text character
throws. guest_font_tests gets configure_windows_unwind so the expected
exception reaches the test on Windows.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 18:44:41 +00:00
Dean f4b47ee51f Merge pull request #4014 from ahir061/fix/macos-executable-directory
fix(libs): find the executable directory on macOS
2026-10-13 01:56:47 +13:00
Adrià 9ce99f8f4d Merge pull request #3697 from JAB-dev/fix/font-writing-letter-step
fix(libSceFont): return the letter step of sceFontWritingRefersRenderStepCharacter through a pointer
2026-10-11 23:52:50 +02:00
Adrià 6fa58ec0ac Merge pull request #3696 from JAB-dev/feat/font-syllable-string-state
feat(libSceFont): implement sceFontCharacterGetSyllableStringState
2026-10-11 23:52:45 +02:00
Ahir Barman MajiandClaude Opus 5.5 f30f3e8a84 fix(libs): find the executable directory on macOS
libSceFont and libSceNpEntitlementAccess located the executable
through /proc/self/exe, which macOS does not have, so finding the
system fonts and the entitlements file threw there. Use
_NSGetExecutablePath and resolve the path with
std::filesystem::canonical on macOS. Linux and Windows are unchanged.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-12 02:38:05 +05:30
Santhosh Kumar 17827dd9ab fix(filesystem): reject invalid parent traversal on Windows 2026-10-12 01:25:02 +05:30
JAB-devandClaude Sonnet 5.5 e127a525d1 feat(libSceFont): implement sceFontCharacterGetSyllableStringState
The call was an unimplemented stub. It now writes syllable state 0 and
returns OK for every character outside the Thai block, where a PS4
firmware 11.00 libSceFont measures 1, 3 or 4; Thai characters throw as
not implemented. A null character or result returns
SCE_FONT_ERROR_INVALID_PARAMETER, and a null character writes 0 to a
non-null result, as measured. The signature follows SharpProspero.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-11 17:32:23 +02:00
JAB-devandClaude Sonnet 5.5 b576273225 fix(libSceFont): return the letter step of sceFontWritingRefersRenderStepCharacter through a pointer
The second argument is an out pointer to the writing's letter step, as
KytyPS5 and the SharpProspero bindings declare it. It was filled as a
letter step struct, which wrote 64 bytes over the caller's 8-byte
pointer. The letter step now lives in the writing and the call stores
its address, or null when there is no current step.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-11 17:12:47 +02:00
fma-rc 5680c32381 fix(font): throw where the writing line error codes come from the PS4 module only and accept attribute 0 2026-10-11 09:41:52 +02:00
fma-rc 25afd95d35 fix(font): keep the step fields the library leaves alone and test multi-level closing 2026-10-11 05:55:36 +02:00
fma-rc eecba6888d feat(font): order writing line runs by embedding level and report their spacing 2026-10-11 05:48:07 +02:00
Abdulrahman Elkordy 5ea89c7d4c feat(font): keep a handle's script languages and typographic features
sceFontSetScriptLanguage, sceFontGetScriptLanguage,
sceFontSetTypographicDesign and sceFontGetTypographicDesign threw. With
the signatures SharpProspero declares, a font handle now keeps the
language set for each script and the feature set for each typographic
design, under the handle's lock, and returns them, with 0 for one never
set. They do not change shaping or rendering yet; TechnicalDebt records
the assumptions.

Claude-Session: https://claude.ai/code/session_012SLQbhAiexxW6TtjYToW8a
(cherry picked from commit c4dcbe4403dc635fde2a823dec311a939816cefc)
2026-10-11 01:03:52 +02:00
Adrià 695e0b928a Merge pull request #1551 from MarcZX100/fix/precise-subtick-polls
fix(windows): use precise waits in sub-millisecond polling loops
2026-10-10 10:52:48 +02:00
MarcZX100andShaan 54a9018514 fix(windows): use precise sleeps for sub-millisecond polling
Co-authored-by: Shaan <[email protected]>
2026-10-10 08:30:28 +00:00
Yassine a44e70957a fix(libSceFont): report vertical glyph metrics
sceFontGetCharGlyphMetrics and sceFontGetRenderCharGlyphMetrics set the
vertical bearing and advance to zero although the glyph is loaded with
FT_LOAD_VERTICAL_LAYOUT. The library's own text writing steps the pen by
that vertical advance, so every character of vertical text was placed on
the previous one.

The vertical metrics now follow the FreeType driver's metrics of a
rendered glyph: FreeType's vertical advance, and for a face without
vertical metrics a bearing of half the horizontal advance left of the
horizontal bearing and of half the advance left over by the glyph height.

guest_system_font checks every metric of a square glyph at 100 pixels.

(cherry picked from commit 04dd69f806379df8b52cfdeb2979f2595973a9b3)
(cherry picked from commit 11f6f9e954756ee8d4a3fc2be574ab3b57ecd7c5)
2026-10-10 21:23:19 +13:00
camezaro-intc 327201519a feat(font): implement sceFontDettachDeviceCacheBuffer
Detach the device cache buffer attached by sceFontAttachDeviceCacheBuffer. The signature is taken from the IDA type database of Orbital: it takes the library, a pointer to receive the buffer and a pointer to receive its size. When no cache buffer is attached, it reports NOT_ATTACHED_CACHE_BUFFER. If the library allocated the buffer itself and no buffer pointer is passed, the memory is freed. The owned bit is cleared and device_cache_buf is reset to null.
2026-10-08 00:36:52 -06:00
Dean e0924e28f1 Merge pull request #1160 from orbz22/feat/font-glyph-define-attribute
feat(font): accept sceFontGlyphDefineAttribute as a silent stub
2026-10-08 18:19:01 +13:00
Raihan Abdul MajidandClaude Opus 5.5 0a6a8a7b5c feat(font): accept sceFontGlyphDefineAttribute as a silent stub
PPSA01325 stops on sceFontGlyphDefineAttribute right after generating a character glyph: it sets attribute 0x11 to 0 on that glyph, deletes it without using it, and draws the character with sceFontRenderCharGlyphImageHorizontal. The meaning of the attributes is unknown, so the call checks the glyph and ignores the rest; TechnicalDebt lists it under silent stubs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01UTjpbMX7BUFMZZaxJE98zV
2026-10-07 22:46:48 +07:00
Claude 121d9332b5 build(libs): strip the MinGW static runtime flags once for all libraries
Every library CMakeLists.txt ended with the same block removing -static,
-static-libgcc and -static-libstdc++ from CMAKE_EXE_LINKER_FLAGS on MinGW,
because core/libs/CMakeLists.txt only removed them after adding the library
directories. Remove them before the libc and library directories are added
so each directory inherits the stripped flags, and drop the 52 copies.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_017pTZqAyVSZy2FZmaqakPHZ
2026-10-07 10:10:38 +00:00
Dean 762bab6f9a Merge pull request #863 from LeandroLP23/feat/font-writing-line-ordering-space
feat(font): implement sceFontWritingLineGetOrderingSpace
2026-10-07 11:04:45 +13:00
LeandroLP23andClaude Opus 5.5 6b69c70a02 feat(font): implement sceFontWritingLineGetOrderingSpace
Report the spacing the writing line applies: the modelled line places
each run at the sum of the previous advances, so every space is 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 12:31:30 +02:00
LeandroLP23andClaude Opus 5.5 025606ceb4 feat(font): implement sceFontGetFontResolution
Report the face's units per EM and the driver's face scale.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 09:34:56 +02:00
LeandroLP23andClaude Opus 5.5 34ba33faf7 feat(font): implement sceFontGetFontGlyphsCount and sceFontGetCharGlyphCode
Report the face's glyph count and the glyph index of a character through
the library's driver; the FreeType driver gains its glyphs_count entry.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 09:23:44 +02:00
Adrià FranchandClaude 83442e1e40 feat(font): implement writing lines
Create, destroy, clear, write runs, step through them and read the
line metrics, following KytyPS5. Layouts from SharpProspero.

Co-Authored-By: Claude <[email protected]>
2026-10-06 01:30:16 +02:00
Dean 90f20b393d Merge pull request #699 from merwie/feat/libs-ppsa12544-exports
feat(libs): add exports imported by PPSA12544
2026-10-06 12:18:11 +13:00