4.4 KiB
libharfbuzz technical debt
Callable exports
- Callable exports - The remaining 9 throwing callable NIDs match the public 3.20 catalogue and the selected export metadata from an older
libharfbuzzimage and a laterlibSceVshHarfBuzzimage (SHA-25625af97e02c1fa8d318ff3697eb8a79057ee9b8c5e5e4ec321f25114aceb05628). The later image has a different module and library identity; matching NIDs do not establish forwarding or equivalent behavior. The version labels are not authenticated. Their prototypes and behavior are unverified; these declarations throw throughNotImplemented_nid_no_patch.
| Name | NID |
|---|---|
hb_blob_create |
hj1KIIN5D54 |
hb_face_create_for_tables |
l7GEYs5PMVU |
hb_face_destroy |
ULNHQXciJ3s |
hb_ft_face_create_cached |
RTxFQhlbF+U |
hb_icu_script_to_script |
u0E8Xi0easM |
hb_ot_layout_language_find_feature |
qos3JIrKrDg |
hb_ot_layout_script_get_language_tags |
HH-sRSNiSaU |
hb_ot_layout_table_get_script_tags |
wf6CfVJj9PQ |
hb_shape |
dM3hP4y99rM |
Functional
-
The eleven buffer exports have no console or title verification. Their signatures, 20-byte glyph records, Unicode properties, UTF-16 decoding and buffer behavior follow the pinned HarfBuzz 10.0.1 public API and backend; the console revision and its Unicode data are unknown. Buffers are opaque host allocations, not console object layouts. Returned arrays belong to that backend and remain valid only until the buffer contents change. Segment-property guessing uses the host process's default language, not a console language setting. Handles from another HarfBuzz instance cannot be mixed with these buffers. Null buffer handles throw except for destruction, which accepts null as the public API does; console null-handle behavior is unverified. Shaping, faces and blobs remain throwing exports.
-
Font functions: Console ABI, HarfBuzz version and behavior have not been measured. Fourteen font lifecycle, callback-table, immutability, scale and ppem APIs follow source-built HarfBuzz 10.0.1. They use backend-owned opaque handles and bridge native callbacks and destruction to guest System V callbacks. Callback data and font data are distinct; replacement and final release follow the backend's reference counting. Foreign object layouts and forwarding from
libSceVshHarfBuzzare not established. Bridge allocation failure throwsstd::bad_alloc; no console allocation-failure equivalence is claimed. -
Font callbacks are exercised by runtime tests using actual exports before and after NID patching and through native shaping with guest callbacks. They establish adapter behavior only. Null destruction and null-face construction follow the backend; other null font/function-table operations throw because no console contract is established. The other 9 exports, including guest shaping, faces and blobs, remain throwing placeholders. No title compatibility is claimed.
-
Legacy glyph setter: A null callback throws before changing the table or taking ownership of caller data. The pinned deprecated backend setter installs trampolines that later invoke that null pointer; this host-safety rejection has not been measured on a console. Modern nominal/variation null setters still reset their callbacks through the backend.
-
hb_ot_tag_to_script follows a disassembly of firmware 13.42
libSceVshHarfBuzz.sprx(export at0x4a850) and has not been measured on a console. Tags ending in2or3map through the ten Indic version-2 tags or toZzzz;DFLTreturns 0;mathreturnsZmth; a space in the third or fourth byte repeats the previous byte; any other tag only clears bit 5 of its first byte without validating letters. It does not call the pinned HarfBuzz backend, so it may differ from HarfBuzz 10.0.1 on some tags.