Commit Graph
27 Commits
Author SHA1 Message Date
Adrià 63d5eb00e4 Merge pull request #10892 from EagleBearerYS/feat/scefont-glyph-render-image-v2
feat(libSceFont): render generated glyphs with sceFontGlyphRenderImage
2026-10-27 07:59:02 +01:00
Adrià cbaacd2910 Merge pull request #9731 from hypermoist/feat/font-words
feat(libSceFont): build and search word dictionaries as the console does
2026-10-26 11:42:17 +01:00
Adrià 34b882ff19 Merge pull request #9722 from hypermoist/feat/font-graphics-fill-descriptors
feat(libSceFont): build the graphics region and fill descriptors as the console does
2026-10-25 23:49:00 +01:00
Yunus Shaikh fe79da22ff refactor(libSceFont): split RenderCodeWithStyle and ApplyStyleFrame out of the char render path
RenderCharGlyphImageCore keeps its handle and bound-renderer checks and
hands the rest of the render, from the glyph lookup to the output fill,
to RenderCodeWithStyle, which takes the style as an argument. The
surface style-frame rule moves into ApplyStyleFrame, with
SurfaceStyleFrame finding a surface's valid frame, and
ResolveSurfaceStyleState now calls the two. The char render calls pass
the same style as before and behave as before.
2026-10-25 07:27:33 +00:00
hypermistandClaude Opus 5.5 dfc3c4e5f6 Merge remote-tracking branch 'origin/feat/font-get-font-style-information' into feat/font-get-glyphs-outline-profile
Dropped the pre-restructuring struct block; the outline profile stub stays removed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 13:33:09 +13:00
hypermistandClaude Opus 5.5 4e8c077237 Merge remote-tracking branch 'upstream/main' into feat/font-get-font-style-information
Kept main's Api.hpp declarations and dropped the duplicated struct block from Unimplemented.cpp.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 13:22:32 +13:00
hypermistandClaude Opus 5.5 be0142a377 Merge remote-tracking branch 'upstream/main' into feat/font-words
Kept main's Api.hpp declarations and dropped the duplicated struct block from Unimplemented.cpp.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 12:39:45 +13:00
hypermistandClaude Opus 5.5 9539761192 refactor(libSceFont): declare sceFontSetGraphicsErrorCallback in the library header
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 12:06:11 +13:00
hypermistandClaude Opus 5.5 45047622f2 Merge remote-tracking branch 'upstream/main' into feat/font-graphics-fill-descriptors
Kept main's Api.hpp struct definitions and dropped the duplicates from FontGraphics.hpp.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 12:06:11 +13:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
hypermistandClaude Opus 5.5 928729bdfb feat(libSceFont): report the glyph outline profile through the FreeType driver
sceFontGetFontGlyphsOutlineProfile reports the maxp maximum contours,
points, composite contours and composite points through the driver slot
at SysDriver+0x70, as libSceFont and libSceFontFt do in firmware 13.60.
A maxp older than 1.0 returns SCE_FONT_ERROR_NO_SUPPORT_FUNCTION, and a
failed call clears the output. Font-set records, which the console
merges over system font entries, still throw.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 22:02:15 +13:00
hypermistandClaude Opus 5.5 2dd8d4902d feat(libSceFont): report font style information through the FreeType driver
sceFontGetFontStyleInformation fills the 24-byte style block through the
driver slot at SysDriver+0x48, as libSceFont and libSceFontFt do in
firmware 13.60: the FreeType family and style names, the italic and bold
flags, the OS/2 weight class when it is a multiple of 100 from 100 to 900,
the width class below 10, and 1 plus a right-to-left head direction plus
0x80 for vertical metrics. A font-set record supplies the same fields
directly. A failed call points both names at an empty string and clears
the rest.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 18:30:38 +13:00
hypermistandClaude Opus 5.5 da04d2eede feat(libSceFont): report font metrics through the FreeType driver
sceFontGetFontMetrics fills the 64-byte metrics block through a new
driver slot at SysDriver+0x98, as libSceFont and libSceFontFt do in
firmware 13.60. Form 1 reads hhea, 2 the OS/2 typographic values, 3 the
OS/2 Windows values and 4 the vertical values from vhea or OS/2; 2 and 3
fall back to hhea when OS/2 is missing or gives an empty range. The
bounding box, em size, raw weight deltas and slant follow. A failed call
clears the block and sets both weights to 1.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 18:11:40 +13:00
Dean ca6fbf762c Merge pull request #8633 from vittoriosalvadore/codex/fix-font-point-dpi-scales
fix(libSceFont): use current style for glyph and kerning scales
2026-10-24 09:13:36 +13:00
hypermistandClaude Opus 5.5 213cb216fa feat(libSceFont): build and search word dictionaries as the console does
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-22 23:16:36 +13:00
hypermistandClaude Opus 5.5 6116b70b04 feat(libSceFont): build the graphics region and fill descriptors as the console does
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-22 22:57:00 +13:00
boykopovar 350c6eb323 fix(font): restore typography validation and reject unsupported shaping 2026-10-21 21:56:03 +03:00
boykopovar 512ae7f80f fix(font): use 32-bit resolution in driver callbacks 2026-10-21 21:54:22 +03:00
maximaxi01 f956527f67 fix(libSceFont): use current style for glyph and kerning scales 2026-10-20 15:16:58 -04: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
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
Thomas Abdelmalak ce4a1dc054 feat(libSceFont): implement handle and glyph attributes 2026-10-18 13:23:28 +03: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
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à 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 Galvin 9d4e6d2f28 feat(font): open system font sets from a font directory
sceFontOpenFontSet failed for every set type, so PPSA21564 drew no text
in system fonts (the title screen copyright line, credits, button
guides). It now loads the set's primary font file from
ANYPS5_SYSTEM_FONTS, or anyps5-fonts beside the executable: console
files under their own names first, then openly licensed substitutes
(Noto Sans, Noto Sans Mono, Noto Sans Thai, Noto Sans CJK). The
PS5-only JG2 set types are accepted.

System font handles use the system font context. Their faces are
loaded by FreeType in host memory: about 1 MiB per CJK face does not
fit the font memory the title sizes for the console's fonts, and
sceFontCreateRenderer then failed with ALLOCATION_FAILED. Handles of
the same font file share one copy of its bytes.
2026-10-06 10:27:09 +13:00
Dean GalvinandClaude Opus 5.5 00e4f7678d feat(font): port shadPS4's sceFont and sceFontFt on FreeType
Ported from shadPS4 (GPL-2.0-or-later) with system fonts removed, stubs made to throw,
and sceFontCloseFont implemented.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01ButHENCbXXt8h4EZuWUabJ
2026-09-28 16:45:30 +13:00