Commit Graph
97 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
Yunus Shaikh 7d86f79ebe fix(libSceFont): follow the module's frame order and leave vertical glyph renders unimplemented
BunnyFl ran firmware 13.42's libSceFont natively against this PR's
checks. With both set, the surface's style frame wins over the argument,
so it is now taken first. A frame that sets no scale, zeroed or only
initialised, is accepted and keeps the glyph's generation scale instead
of returning SCE_FONT_ERROR_INVALID_PARAMETER. A valid
sceFontGlyphRenderImageVertical call, and sceFontGlyphRenderImage on a
vertical font, throw again: the module draws the char call's pixels
there but reports a different advance and stride (40/40 against 90/90
at 40 px), and one case doesn't name the rule.

The test drops the vertical comparison and the non-renderer pointer
check, whose result in the module depends on memory past the pointer,
and checks the frame order and the unscaled frames.
2026-10-26 05:05:24 -07: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
Dean ca8257d923 Merge pull request #10952 from AZLisme/feat/batch2-font-letter-traversal
fix(libSceFont): exhaust render-step character traversal
2026-10-26 22:06:04 +13: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
Dean fd450a5b9b Merge pull request #8997 from HQasper/claude/project-thread-wjykmu
fix(libSceFont): select the Hangul Light system font
2026-10-26 11:08:35 +13:00
Dean fe86ec4a3d Merge pull request #10539 from hypermoist/feat/font-get-glyphs-outline-profile
feat(libSceFont): report the glyph outline profile through the FreeType driver
2026-10-26 02:20:13 +13:00
AZLisme 0afde4ec7c fix(libSceFont): exhaust characters within a writing step 2026-10-25 18:13:22 +08:00
Yunus Shaikh 68820535b9 feat(libSceFont): render generated glyphs with sceFontGlyphRenderImage
Draw a glyph from sceFontGenerateCharGlyph through the sceFontRenderCharGlyphImage rasterizer at the glyph's own scale, with the renderer argument checked as sceFontBindRenderer checks it and the style frame argument, else the surface's frame, applied as surface frames are. The horizontal and vertical forms place the image like their character forms. The three functions build on RenderCodeWithStyle and ApplyStyleFrame from the previous commit and move out of Unimplemented.cpp.
2026-10-25 07:27:44 +00: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
klosixgaming-arch 0e46a0c497 fix(libSceFont): resolve a default string direction at creation
A string created from a text source in the default horizontal form (0x10)
reported 0x10. TEKKEN: DARK RESURRECTION (PPSA31371) passes the reported form
to sceFontCreateWritingLine, which only accepts 0x11 and 0x12, so the call
failed and the layout width was 0.

On firmware 13.42 sceFontCreateString decides the direction for a default-form
source and sceFontStringGetWritingForm returns the stored form. The string
gets 0x12 when its first strong character is left to right, 0x11 when it is
right to left, and 0x12 when it has none. Left-to-right and right-to-left marks
count as strong, embeddings and overrides do not, and text between an isolate
initiator and its PDI is skipped. Explicit 0x11 and 0x12 sources keep their
form.

The test follows the table reported on the pull request. Which characters are
strong is decided by Unicode block ranges here, not by the full bidi class
tables.
2026-10-24 19:21:23 -05:00
hypermistandClaude Opus 5.5 6f4d796c2f refactor(libSceFont): use the library header in the font words source and test
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 12:39:45 +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 d3525d37cd fix(libSceFont): check a null outline profile before the font-set path
A valid font-set handle with a null output now returns
SCE_FONT_ERROR_INVALID_PARAMETER instead of throwing, matching the
handle, then output, order of the firmware.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 01:29:12 +13:00
hypermistandClaude Opus 5.5 2fce9e473b fix(libSceFont): check the font handle before reading it in the outline profile
ComputeFontGlyphsOutlineProfile read font->library before checking the
handle and cleared the output only after the context lookup, relying on
sceFontGetFontGlyphsOutlineProfile to have validated the handle. It now
rejects a null or non-font handle with SCE_FONT_ERROR_INVALID_FONT_HANDLE
first, clearing a non-null output, then checks the output, then clears it
before the library and context lookups, matching the firmware 13.60 order.
The test also covers a null output with a bad handle and a handle with no
library.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 00:58:25 +13: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
hypermist 3880821a12 test(libSceFont): register the font metrics test away from other open PRs 2026-10-24 18:21:11 +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
xandClaude Sonnet 5.5 c0024158db fix(libSceFont): measure glyphs through a zero-extent render surface
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

Claude-Session: https://claude.ai/code/session_01QLz9JYSXCPssYHgRW1CxJH
2026-10-22 22:16:45 -05:00
hypermist 2db8ab23eb Merge remote-tracking branch 'upstream/main' into feat/font-graphics-fill-descriptors 2026-10-23 14:41:28 +13:00
hypermist 7e3a978f60 Merge remote-tracking branch 'upstream/main' into feat/font-words 2026-10-23 14:29:22 +13:00
Dean a661d12e30 Merge pull request #8375 from orezraey/fix/font-system-fonts-wide-env
fix(libSceFont): open fonts and the system font directory under non-ASCII paths on Windows
2026-10-23 08:54:15 +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 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
maximaxi01 a4079e9d4c fix(libSceFont): select the Hangul Light system font 2026-10-21 08:26:13 +00:00
maximaxi01 f956527f67 fix(libSceFont): use current style for glyph and kerning scales 2026-10-20 15:16:58 -04:00