-------------------- AmigaOS 3.5/3.9 project ------------------------- diskfont 44.1 (1.5.1999) - Bumped to V44. - Recompiled with SAS/C 6.58 - Converted to use registerized parameters throughout the library, inlined static functions, no longer uses A4 to reference data. - Replaced the code that queries the global environment variable "diskfont". It now uses dos.library routines to read the variable rather than reading all the data on its own. - The extended library function (offset -24) now returns NULL. diskfont 44.2 (7.9.1999) - Replaced the roll-your-own case-insensitive string comparison code with Stricmp(). - Improved handling of soft linked objects. Their type, size and protection bits are now resolved, if possible. diskfont 46.3 (26.2.2002) - Fixed bug in genfont.c, now using OT_UnderLined with ObtainInfo as documented, not with SetInfo. - Fixed bug in availfonts.c, it searched the taglist in tagged disk fonts at the wrong position. - Fixed 30 char fontname restriction, stack overwriting etc in opendiskfont.c, genfont.c, scaledfont.asm. Font names that dont fit in a DiskFontHeader structure are now stored in an extra segment added to the fonts seglist. - In fontcontents.c more than 30 chars for the fontname are now allowed if the underlying file system supports it. - Replaced 0 with MEMF_ANY where appropriate. - Fixed genfont.c to use MEMF_PUBLIC for the font memory. - Fixed scaledfont.asm to use MEMF_PUBLIC for the font memory. - Added EOpenEngine, ECloseEngine, ESetInfoA, EObtainInfoA, EReleaseInfoA public functions. These are similar to that of bullet.library but dont use a global BulletBase variable (which has to be set to the font engine library base every time). Written in C. - Changed genfont.c to use the new public bullet stubs, removed old private bullet stubs from asm2c.asm. - Implemented GetDiskfontCtrl and SetDiskFontCtrlA introduced in V45 of diskfont.library from scratch using the published documentation. Extended env.c to parse the new cache and sorting params. The actual cache and sorting feature are not yet implemented. - Added AvailFonts flag AFF_OTAG for showing only fonts accessible via bullet API, AFF_OTAG|AFF_SCALED shows scalable fonts accessible via bullet API with an additional entry with YSize 0. - Added OpenOutlineFont() and CloseOutlineFont() - Fixed genfont.c to retry with OT_DotSize of 100% if ESetInfo() fails since not all font engines support a non-default OT_DotSize. - Added WriteDiskFontHeader() and WriteFontContents(). - Created a SetFunction() routine for WeighTAMatch that considers the TA_CharSet tag. - Rewrote AddDiskFont() in C, now does not mark fonts with different TA_CharSet as duplicates. - Replaced library.asm, residenttag.asm, diskfont_lib.i with libbase.c. diskfont 46.4 (4.3.2002) - Added fontcache from V45. - Disabled sorting (qsort from sc.lib would destroy a6) - Bugfix: With FontCache enabled, it did depend from whether AFF_BITMAP was specified or not while creating the cache if bitmap fonts were added to the cache. It did NOT depend on the ACTUAL AFF_BITMAP flag whether bitmap fonts were retrieved from the cache. Fixed, now the handling of bitmap fonts is equivalent to the handling of AFF_OTAG and AFF_OTAG|AFF_SCALED fonts. diskfont 46.5 (5.3.2002) - Re-Enabled sorting of AvailFonts() result by adding a dfqsort() function that keeps the library base pointer. - Sorting is now based on YSize if the names are equal. diskfont 46.6 (5.3.2002) - Bugfix: Sorting of AvailFonts() result did only work with AFF_TAGGED specified, otherwise it sorted non-allocated memory. diskfont 46.7 (7.3.2002) - Bugfixes: While introducing the cache, two more bugs were introduced: - Not the TagItems were written to the fontcache, but their addresses... - If a .font file contained both tagged and untagged fonts, for the untagged fonts a wrong taglist was created. - The WeighTAMatch patch now returns zero for non-matching charsets. - Added DFCTRL_CHARSET to set/retrieve the default charset to assume if no charset is specified. - Replaced unused SYMSET parameter in env:diskfont with CHARSET/N. This makes it possible to specify the default charset before locale.library is loaded (before IPrefs). This way you can replace "topaz/8" and "topaz/9" :-) - If the default charset is set to something different from ISO 8859-1 Latin1, topaz/8 and topaz/9 in the new charset are loaded from disk to be available via OpenFont() from graphics.library. If no topaz/8 or topaz/9 in the new charset are found on disk, the user is asked via a (timed) Alert whether to continue with the new charset or switch back to ISO 8859-1 Latin1 (default). While the non-Latin1 charset is set its not possible to expunge the library since the alternate topaz fonts are opened. - Created topaz/8_cs111, topaz/9_cs111 and topaz/11_cs111 tagged disk fonts (size 9 with correct TA_DeviceDPI aspect ratio tag) to be able to set the default charset to ISO 8859-15 Latin9. - Created AvailFonts flag AFF_CHARSET to signal that the caller is charset aware. If not specified, only fonts in the current default charset are returned. Fonts accessible via bullet API have the special charset value 1000 if AFF_CHARSET was specified and the current default charset if not. - Created CharSets/111 to be copied to L:CharSets/111. This is a charset mapping file from ISO-8859-15 Latin9 to Unicode. The filename is the charset number (http://www.iana.org/assignments/character-sets), the mapping files can be created with ft2cp from the FT2Engine package by using the official Unicode mapping tables from http://www.unicode.org/Public/MAPPINGS/. - Changed genfont.c to use and store the charset information instead of always creating ISO-8859-1 Latin1 fonts. The charset mapping table from the charset to Unicode is searched in L:CharSets/. When setting the default charset and L:CharSets/%ld is not available, an Alert is shown and charset set back to default. - Tested everything with ISO-8859-15 Latin9 (with Euro): Installed Fonts/topaz#? to FONTS:, L/CharSets/111 to L:CharSets/111, installed new diskfont.library, changed envarc:diskfont to "charset=111 cache=yes descending", called SYS:Prefs/Font and set the fonts to those that are available in Latin9 (currently topaz and all fonts with .otag files), rebooted, voila. diskfont 46.8 (12.3.2002) - Setting default charset to 0 via SetDiskFontCtrl() now works (it is set to DEFAULTDEFAULTCHARSET), this fixes a problem with locale.library V46 and old .language libraries with loc_CodeSet of 0. diskfont 46.9 (12.3.2002) - SetDiskFontCtrl(DFCTRL_CHARSET,...) now touches env:sys/font.prefs to force IPrefs to force a reload of the system fonts. diskfont 46.10 (14.3.2002) - Added AvailFonts() flag AFF_TYPE, needed by asl.library. - Added ObtainCharsetInfo(), needed by asl.library. diskfont 46.11 (20.3.2002) - Removed DFCS_GUINAME, the GUI names in the IANA character-sets file were suboptimal. - Now the mapping tables in L:CharSets/ have the MIME name as filename instead of the IANA number. - Tools/SetFontCharset accepts the charset name and adds the MIME name to the font file. - All font names changed from NN_cs111 to NN_ISO-8859-15. diskfont 46.12 (26.3.2002) - Changed Tools/SetFontCharset.c to use diskfont includes from here. diskfont 46.13 (26.3.2002) - Moved TA_CharSet to diskfont.h. -------------------- AmigaOS 3.1.4.(1) project ----------------------- diskfont 46.14 (4.1.2018) - Made a couple of character sets compatible to the default character set, in particular 8859-15 (ISO-LATIN1 with EURO) and AMIGA-1251. diskfont 46.17 (6.1.2018) - Removed support for charsets at this time, just added a dummy that makes the library aware of the ISO-8859-1 mapping. diskfont 46.18 (7.1.2018) - The library did not return the current (default) charset, hence confused ASL. Bummer! diskfont 46.19 (18.1.2018) - AvailFonts() also tried to parse the tags if the number of tags was zero. Fixed! - NewFontContents() includes now a safety mechanism in order to avoid parsing something that does not at all look like a tag in tagged fonts. Unfortunately, broken tagged fonts are around. - Unfortunately, disk font names cannot be longer than 30 characters due to the documented DiskFontHeader structure fonts must follow. - AvailFonts() now also parses volume names called FONTS: and not only assigns. diskfont 46.20 (15.2.2018) - Due to an oversight, the library init function did not read the environment variables. This was fixed. diskfont 46.21 (4.3.2018) - Diskfont blocks now requesters in its prefs reading function. diskfont 46.22 (17.9.2018) - Recompiled with better compiler settings to keep diskfont shorter. No functional changes. ---------------------- AmigaOS 3.2 project --------------------------- diskfont 46.23 (27.12.2019) - The diskfont.library NewLock() function is superfluous as the corresponding softlink resolution is part of the dos.library Lock() implementation anyhow and hence is just replicated here. diskfont 47.1 (29.6.2020) - Bumped the version number to 47 for the AmigaOS 3.2 release. - Fixed a bug that would prevent OpenFont() from opening .otag fonts with an explicit path specification. [Backported from AOS4 V46.14] - Fixed a bug in OpenOutlineFont() due to which it was impossible to open .otag fonts not residing in FONTS: or in the root directory. [Backported from AOS4 V46.15] - Opening an outline font could end up returning a non-matching font from memory if no suitable bitmap was present on disk and the font engine failed to open. Now fixed. [Backported from AOS4 V46.17] - Fixed a bug in the outline font generation code which could cause a font to be closed twice. [Backported from AOS4 V46.18] - OpenDiskFont() now checks if the TextAttr parameter is NULL before using it. This fixes Enforcer hits with StrICQ that could occur if no fonts were specified in its settings. [Backported from V50.53] - When freeing unused fonts in the Expunge() routine, the pointer to the next font was being read from the current one after its memory had already been freed. Now fixed. [Backported from V51.8] - As of V47, the functions dealing with direct outline font handling, namely EOpenEngine(), ECloseEngine(), ESetInfoA(), EObtainInfoA(), EReleaseInfoA(), OpenOutlineFont() and CloseOutlineFont(), are no longer compatible with their previous (V46) implementation. That one was (unintentionally) modeled after an obsolete version of the AmigaOS 4 diskfont.library API; this change is mandatory in order to prevent OS 3.2 programs using the above functions from crashing when they're run on AmigaOS 4. Please do NOT use the outline font API in your applications if the version of diskfont.library is lower than 47. - The header files diskfont/diskfont.h, clib/diskfont_protos.h, and pragmas/diskfont_pragmas.h are also affected by the API change, as well as the SFD file lib/amiga/sfd/diskfont_lib.sfd. If you are an OS developer, please make sure to update your local copy of those. - Added the still missing autodoc entries for the new direct outline font handling functions.