Repository navigation
feat(libSceFreeType): expose composite glyph components - #9398
Conversation
MarcZX10
left a comment
There was a problem hiding this comment.
The wrapper’s ABI widths match the guest record, and it stages native outputs before publishing them in the documented order. The synthetic composite-font tests cover valid components, error preservation, aliases, signed matrix values, and slot stability. The reported full build and 10/10 focused tests are detailed, with an independent Windows focused run as additional evidence. git diff --check passes and the current head merges cleanly with main.
Please rebase onto current main (4a17c71757; the test base in the PR is 0c6a5bd593) and rerun the focused FreeType tests, conventions, and overlap checks before merge. This PR is the declared prerequisite for #9399, so that follow-up can then rebase on the merged result. Hosted product build jobs are skipped. I did not run a local FreeType build or test in this environment.
Dismissing a stale review: the requested changes were addressed after it (new head) and the merge queue blocks on it. Please request changes again if anything is still open.
jotitadev
left a comment
There was a problem hiding this comment.
Linux run of the current head, since the description covers Windows only. On Linux FT_Fixed, FT_Int and FT_UInt have the LP64 widths, so this covers the wrapper on the other ABI.
Machine: Linux x86_64, i7-8700 (6 cores / 12 threads, AVX2), Ubuntu 26.04, GCC 15.2, Release, BUILD_TESTING=ON. Head 6ff3a6433 merged onto main e2d457be3. The merge is clean even though the branch is about 4,700 commits behind.
- Build ok. All 30
freetypetests pass,guest_freetype_subglyphamong them (20 of 20 repeated runs), pluspatched_libraries. In the patchedlibSceFreeType.prx,FT_Get_SubGlyph_Infois exported asvOhW2Wdz0t4. mainhas no stub for this export, so the test cannot link againstmain. Instead, I checked four mutations of the wrapper. The test catches all of them: swappingtransform.xy/yx(line 87), copying outputs on a backend error (line 81),arg1 = hostArg2(line 86) andflags = 0(line 86).
Written with AI assistance (Claude Code). I ran the builds and tests above on my machine.
…plement Remove 32 stubs whose NIDs are implemented by other open pull requests (FreeType functions in boykopovar#9398 boykopovar#9399 boykopovar#9404 boykopovar#9410 boykopovar#9465 boykopovar#9588 boykopovar#9792 boykopovar#9924 boykopovar#9933 boykopovar#10579 boykopovar#10588 boykopovar#10591 boykopovar#10600 boykopovar#10601 boykopovar#10602 boykopovar#10606 boykopovar#10613 boykopovar#10616 boykopovar#10897) and correct the count in the debt entry.
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
@Ondra97 Thanks. Since this was opened, |
|
@oneandonlydean Addressed in 6443eb9. I merged The complete Windows build passed, followed by 111/111 focused tests with zero skips, including all 65 public-header audit/compilation tests and the subglyph regression. All 368 patched libraries loaded successfully. GitHub's conventions check passed; the hosted Windows job is still running. I updated the PR description with the tested revisions and commands. |
What
Add
FT_Get_SubGlyph_Infoto the guest FreeType bridge. After loading a composite glyph withFT_LOAD_NO_RECURSE, callers can retrieve each component's glyph index, flags, arguments and transformation through the native slot. Its privatesubglyphspointer remains hidden. The wrapper widens the native matrix to signed 64-bit guest fields and preserves native output-store order and unchanged outputs on error.The name/NID
vOhW2Wdz0t4is in the PS5 3.20 inventory. Signatures, required output pointers and error behavior follow bundled FreeType 2.13.3; console ABI and errors remain unverified in library debt. The existing font fixture builder accepts caller-providedglyf,locaandmaxptables while retaining its defaults.Refreshed against main
3d19f3fed31be38d7196ea1bd74e29ab6cc3c9a4, retaining the public-header repair and all newer FreeType APIs and debt entries from main. The subglyph export remains declared exactly once in umbrella-reachableinclude/Api.hpp.The wrapper implementation, generated-font fixture builder and subglyph regression are byte-identical to the earlier published
6443eb91420a195006d199fa6790b2c00388cederevision. The existing topic commits are retained.Tested
Revalidated on 2026-10-30: base
3d19f3fed31be38d7196ea1bd74e29ab6cc3c9a4, submitted headbfece9d7b2b23996c95621620a2866f94e83101b. Main was merged into the existing branch to preserve its topic history.Windows 11 Pro 10.0.26300 x64; AMD Ryzen 9 7900X, 31.7 GiB RAM, NVIDIA GeForce RTX 4070 Ti SUPER (these tests use the CPU). WinLibs MinGW-w64 GCC 15.2.0 r7 UCRT, Release,
BUILD_TESTING=ON,ANYPS5_ENABLE_SPIRV_TOOLS=ON, pinned bundled dependencies.relinkerandlibsbuild, patched-library checker and every executable used by the focused selection passed on the submitted sources.guest_freetype_subglyphexecuted 30 valid component comparisons and 63 error comparisons, including native parity, aliases, signed transforms, preserved error outputs and unchanged guest slots.The refreshed overlap scan lists #9588 and five base-conflicting shared-file comparisons: #9933, #10589, #10602, #10606 and #10897. I inspected their shared patches: they concern glyph objects, PostScript private dictionaries, outline allocation, module/library lifetime or table validation. None adds, removes or changes
FT_Get_SubGlyph_Infoor the composite-font builder. #9588 already declares this PR as an ordering prerequisite; it is not a prerequisite in the other direction. No mixed-stack runtime test is claimed.No title or PS5-hardware run, native Linux execution of this refreshed head or complete CTest suite is claimed. Console ABI and equivalence to the console's FreeType version remain unverified. Earlier revision evidence is retained below with its own revisions.
Earlier submitted-revision validation (historical)
Windows 11 Pro build 26300 x64; AMD Ryzen 9 7900X, 31.66 GiB RAM, NVIDIA RTX 4070 Ti SUPER (the font tests use the CPU). WinLibs MinGW-w64 GCC 15.2.0 UCRT POSIX SEH r7, CMake 4.3.1, Python 3.14.7, Ninja, Release,
BUILD_TESTING=ON,ANYPS5_ENABLE_SPIRV_TOOLS=OFF, pinned recursive bundled submodules.Tested base
17f8dfad513b134a4996991109fc9db47a3bb905, submitted head7b43258012ca9ea059edef12ddd4696fb7f97381, on 2026-10-28:guest_freetype_subglyphexecuted all 30 valid component comparisons and 63 error comparisons, checking aliases, signed transforms, error-output preservation and unchanged guest slots against native FreeType.Commands from
build_tools/p9398/s, with the supported WinLibs toolchain onPATH:The refreshed overlap scan against the tested main found no conflicts among comparable PRs. It could not compose #9419, #9465, #9588, #10579, #10582, #10588, #10591, #10593, #10594, #10600, #10601, #10604, #10611, #10613, #10897 and #11613 with main. I compared their exact shared-file patches from the common ancestors: none adds, removes or changes the subglyph export. Those changes concern other APIs or NID tests. No new dependency is required, and their combined runtime behavior is not claimed as tested.
The generated TrueType fixtures exercise composite components loaded with
FT_LOAD_NO_RECURSE, signed offsets, point matching, matrix variants, aliased outputs, errors and slot stability. Earlier negative controls and mutation evidence remain in the review history and belong to their stated revisions.No title, PS5 hardware run, native Linux execution of this refreshed head or complete CTest suite is claimed. Console ABI and equivalence to the console's FreeType version remain unverified.
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)