Make FontManager softload on modern ROL OS versions.
Detail: In recent ROL OS versions, the font cache dynamic area is managed entirely by the FontManager module -- the kernel no longer creates this dynamic area itself. This change prevented the UCS FontManager from loading, as it expected the font cache to already exist. The FontManager code has been modified to create the font cache DA itself if it detects that it does not exist. It will destroy the font cache DA on finalisation if it created the DA in the first place and it provides an appropriate dynamic area handler to process DA resize requests. So as to permit loading this version of the FontManager on all OS versions, the Font_ChangeArea SWI is still provided, the module initialisation code will do the right thing if it detects that the font cache DA already exists, and the finalisation code will only destroy the font cache DA if it was created by the initialisation code. Admin: Contributed by John-Mark Bell. Tested on an A9home with RO 4.42. This worked fine with the A9home's built-in ROM fonts. Additionally tested with a softloaded copy of the ROMFonts module from RO 5.11. This also performed as expected. Successfully tested UCS functionality using NetSurf with both language (Marugothic, Song) and symbol (TTF2f conversions of Cyberbit and others) fonts. Also successfully tested on RO 5.11, indicating no regression in behaviour. Unsuccessfully tested on RO 4.02 under RPCEmu. A vanilla build of FM 3.60 also fails on this setup. In both cases, the DPI values listed by *FontList are 4294967205 (= (2^32-1) - 90), which implies that the DPI calculations have been broken at some point. A 26bit version of FM 3.54 does not exhibit this behaviour. Version 3.61. Tagged as 'Manager-3_61'
Showing
Please register or sign in to comment