-------------------- 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.

