Change History
--------------
2024-12-03 luaotfload v3.29

    *  Preserve subtypes while letterspacing.
    *  Improve logging for auxiliary functions.
    *  Improve cache path selection when parts of cache path are not writable.
    *  Fix broken luaotfload-tool.

2024-02-28 luaotfload v3.28

    *  Improving compatibility with Windows paths

2024-02-14 luaotfload v3.27

    *  Improved support for arabic mark rendering in \texttt{node} mode.
    *  Better ordering of GSUB substitutions.
    *  Avoid dropping hyphens in DVI mode
    *  Compatibility with \identifier{luatex} 1.18
    *  Various bug fixes

2023-08-31 luaotfload v3.26

    *  Reimplement mathsize feature recently dropped from fontloader

luaotfload v3.25 has been skipped

2023-08-19 luaotfload v3.24

    *  Add experimental configuration option to change default font lookup location
       precedence.
    *  Support xdvipsk in DVI mode
    *  Preserve soft-hyphens when dropping default ignorable characters
    *  Hash cache keys to better support certain rather inflexible operating
       systems
    *  Various bug fixes

2022-10-03 luaotfload v3.23

    *  More reliable ToUnicode mappings in Harf mode
    *  Various bug fixes

2022-06-15 luaotfload v3.22

    *  Tailored case mappings
    *  Avoid database rebuilds when switching Lua versions
    *  Improved attribute settings of ActualText nodes in harf mode
    *  Callback-based customization for color parameter
    *  Various bug fixes

2022-03-18 luaotfload v3.21

    *  Fix performance regression introduced in version 3.19.
    *  More reliably support TrueType based variable fonts in harf mode.

2022-02-27 luaotfload v3.20

    *  A bug in luaotfload-tool has been corrected.
    *  The directory for the font name database has been corrected and no
       longer uses the development directory.

2022-02-24 luaotfload v3.19

    *  When used with LuaTeX 1.15.0 or newer, variable fonts are supported
       when using the harf shaper too.
    *  A new algorithm for selecting fonts based on font family names allows
       to more reliably load fonts based on their family name.
    *  The compiled font database gets compressed to reduce disk space and
       improve performance on newer systems.
    *  Text automatically gets normalized to Unicode's NFC before shaping.
       This improves rendering for text written in decomposed forms for many
       fonts. This can be turned off by passing the -normalize font feature.
    *  The fontloader has been synced with the context code from 2022-02-24.
       This fixes some broken rendering of TrueType based variable fonts.
    *  A number of small bugfixes.

2021-05-21 luaotfload v3.18

    *  Allow using variable fonts without explicitly specifying any axis values
    *  The fontloader has been synced with the context code from 2021-05-20
    *  Multiple small fixes, mostly concerning discretionaries in harf mode.

2021-01-08 luaotfload v3.17

    *  The fontloader has been synced with the context code from 2021-01-07.
       This improves support for advanced CFF based OpenType variable fonts.

2020-12-31 luaotfload v3.16

    *  The fontloader has been synced with the context code from 2020-12-30
    *  The entry point is called luaotfload.lua instead of
       luaotfload-main.lua (but the old name is still provided for 
       compatibility).
    *  pre/post_shaping_filter callbacks has been added.
    *  The number of lua-files and submodules shown in the log-file 
       has been reduced. But it is extended again by setting the environment 
       variable LUAOTFLOAD_TRACE_SUBMODULES=1.
    *  The HarfBuzz based shaper will in some situations drop hyphenation
       points. This happens less frequently now since the new version uses
       first/second discretionaries (the mechanism described in the LuaTeX manual,
       section 5.6 for the of-f-ice example) to support a limited amount of
       nesting.
    *  When the node shaper is used, experimental support for 
       OpenType variable fonts has been added. To use them, set the font 
       feature axis to a comma separated list of axis names and values. 
       (E.g.  axis={weight=600}) The supported axis names and value 
       range depend on the font.
    *  The font features upper and lower can be used to map
       the text of a font to upper or lowercase before displaying it. Currently
       this implements the untailored Unicode case mapping algorithm, but it is
       planned to add tailoring later.
    *  A number of small bugfixes.

2020-09-02 luaotfload v3.15
    * The font database is updated more reliably if fonts get deleted.
    * In multiple error cases, error messages are shown instead of silently
      generating bad output.
    * Write glyph ids instead of internal identifiers to DVI files. This
      allows using OpenType fonts when working with dvilualatex.
      (This requires additional support from the DVI reader)
    * The set of font features which are enabled by default has been 
      changed to be more similar to HarfBuzz.
      Especially Above-base mark Positioning (abvm),
      Below-base mark Positioning (blwm), Contextual
      Alternates (calt), Cursive Positioning (curs),
      Distances (dist), and Required Contextual Alternates
     (rclt) are now enabled by default for all scripts.
    * Added a mathfontdimen font feature which allows emulating
      fontdimen values from xetex or traditional \TeX\ math fonts.
    * Initial support for variable fonts in node mode.


2020-05-01 luaotfload v3.14
    * bug fix for luaotfload-tool, luaotfload-tool --list=basename failed (texlive list)
    * fontloader patched to resolve issue #124
    
2020-05-01 luaotfload v3.13
    * A problem with text fonts with minimal math table has been fixed (issue 148.)
      In new luaotfload versions, math parameters will only be loaded for fonts with `script=math`.
      If you do want to set math parameters for fonts with other scripts, add `-nomathparam`.
      We strongly recommend against setting math parameters for text fonts because
      these would overwrite parameters from actual math fonts.
    * A bug in harf-mode that could lead to missing chars and freezing was corrected (issue 141).
    * A font size problem in harf-mode has been fixed (issue 147).
    * An error if the main function was called twice has been fixed (issue 145).
    * Allow .ttf fonts to be loaded with a map file with luahbtex (issue 142) (issue 143).
    * Fonts installed for a single user on windows are now found (issue 138).
    * A problem with wrong \TeX-ligatures in harf mode has been fixed (issue 139).
    * The debugging output has been changed (issue 131).
    * a missing U+1E9E (Capital ß) in a font is replaced by 
      SS instead of giving a missing character.
    * extended the color handling to be compatible with the luacolor package  
    * sync with context files from 2020-04-30
    
2020-02-02 luaotfload v3.12
    * new experimental feature multiscript
    * new experimental feature fallback
    * extension of the color feature to color output glyphs 
    * Small bug correction
    
2019-11-10 luaotfload v3.11
    * Changed the handling of the script key in harf mode to be more compatible with behaviour of the node mode. 
      It now expects the name of a script that is actually in the font instead of a ISO 15924 script tag. See issue 117.
    * Corrected a number of small typos and bugs in harf mode.

2019-11-04 luaotfload v3.1
    * added code to use the harfbuzz library of luahbtex ("mode=harf")
    * fonts in ttc can now be indexed by name
    * remove a number of lua tables from the global environment (_G) to reduce the pollution. 
      Kept there are only the tables luaotfload, fonts and nodes.
    * sync with context files from 2019-10-29

2019-09-13 luaotfload v3.0
    * invisible option to avoid that some glyph are shown (issue #63)
    * correct small bug in xheight calculation 

2019-08-11 luaotfload v2.99
    * some clean up
    * fix a bug in luaotfload.aux.resolve_fontname()  (issue #76)
    * removed dependency on slnunicode (PR#72) 
    * sync with context files from 2019-08-11

2019-06-20 luaotfload v2.98
    * add embolden key
    * add missing char detection issue #65
    * sync with context files from 2019-07-04
    
2019-05-18 luaotfload v2.97
    * fix issue #47
    * fix whatsits interfering with letterspacing (issue #53)
    * fix luaotfload-tool switches version and find not working correctly (PR#59)
    * fix luaotfload-tool support of ttc fonts (PR#58)
    * sync with context files from 2019-05-18 (improves handling of large fonts, see e.g. issue #55 and PR#58)
    
2019-01-28 luaotfload v2.96
    * repaired broken letterspace (issue #38)
    * changed handling of spaces in letterspacing
    * changed handling of ligatures in letterspacing
    * corrected detection of bold fonts (issue #41)

2019-01-28 luaotfload v2.95
    * imported context files of 2019-01-28
    * changed bold indification (for lucida demi bold) (issue #33)
    * changed handling of tex file (issue #35)
    * changed resolver code (pr #36)

2019-01-14 luaotfload v2.94
    * imported context files of 2018-12-19
    * removed luaotfload-characters from init - use the basics-chr instead.
    * allow custom fontloaders through the mode-key https://github.com/u-fischer/luaotfload/pull/25
    * resolved issue #29

2018-10-28 luaotfload v2.93
    * reinserted forgotten man files
    * unified and improved version/module info for automatic tagging


2018-10-21 luaotfload v2.92
    * better deva support, issue #9
    * test for --safer and abort, issue #12 
    * newest context files   
    * correct file: syntax for tfm files, issue #11.    

2018-10-03 luaotfload v2.91
    * solved copy & paste of variant glyphs, https://tex.stackexchange.com/questions/451442/localized-glyphs-locl-have-unicode-value-ufffd
    * solved problem with PUA no longer accessible with \char, see https://github.com/u-fischer/luaotfload/issues/7

2018-09-21 luaotfload v2.9 
    * added various testfiles for the l3build system/travis tests to the github repository
    * solved a bug regarding directions https://github.com/u-fischer/lua-font-pond/issues/12
    * adapted luaotfload-letterspace to new fontloader
    * solved the case problem see https://github.com/u-fischer/lua-font-pond/issues/6
    * Fix parsing of font.conf see https://github.com/lualatex/luaotfload/pull/420
    * imported new versions of the context files - fontloader is compatible with luatex 1.08 again
    * adapted the files list 
    * created a luaotfload-filelist.lua which describes the files of the package
    * removed some not functional files 
    * adapted mkstatus to use the new file list.
    
2017-01-29, luaotfload v2.8:
    * Latest fontloader code.
    * Support for Luatex 1.0.
    * Integration of the extended AFM handler.
    * Fixes to font family assignment.
    * Skip initialization if Luaotfload is already loaded.
    * Optical sizes advertised by fonts treated as big points.

2016/04/21, luaotfload v2.7:
    * Rework lookup chaining.
    * Combining glyphs from different fonts (``combo: ...`` requests).
    * Glyph fallbacks.
    * Latest fontloader code.
    * Adapt packaging to changed upstream file layout.
    * Remove support for builtin Fontforge libraries (this includes the PFA,
      PFB, DFONT, and feature file readers).
    * Allow configuration of anonymous lookups.

2015/12/09, luaotfload v2.6
    * Add ``sign`` target to makefile for automated package signing.
    * Add ``--dumpconf`` option to luaotfload-tool for generating configuration
      files.
    * Move fontloader files to subtree src/fontloader.
    * New script ``mkimport`` facilitates maintenance of code imported from
      Context.
    * Revised letterspacing, now utilizing the ``node.direct`` interface.
    * Revized colorization of fonts, utilizing ``node.direct`` (Dohyun Kim).
    * Colorization was moved to the ``post_linebreak_filter`` stage.
    * Move remaining functionality from ``luaotfload-override`` into
      initialization.
    * Write names index if fonts were removed.
    * Separate module loading from initialization.
    * Custom fontloader package with the files from Lualibs removed.
    * Swappable fontloader via configuration option.
    * Lualibs are now a dependency when used in a TeX run as well.
    * Respect interword spaces when letterspacing.

2014/07/13, luaotfload v2.5
    * Remove legacy code.
    * Remove compatibility with the old mkluatexfontdb script.
    * Remove test directory. Use https://bitbucket.org/phg/lua-la-tex-tests
      instead.
    * Remove luaotfload.lua from luaotfload.dtx; it is now a separate file
      luaotfload-main.lua.
    * Standard source tree structure: the code is now located in the ./doc,
      ./scripts, ./src, ./build, and ./misc directories.
    * Move the heavier LPEG parsers from luaotfload-features (syntax) and
      luaotfload-database (fontconfig) into the new file
      luaotfload-parsers.lua.
    * Move logging routines from luaotfload-override in to luaotfload-log.
    * Scan local font files (``--local`` flag to luaotfload-tool, flag
      ``scan_local`` during TeX run).
    * Add bisection mode (``--bisect``) to luaotfload-tool.
    * Add functions for accessing the database: ``aux.font_index()`` and
      ``aux.read_font_index()``.
    * Distinguish XDG configuration paths (Reuben Thomas)
    * Optional configuration via rc files.
    * Configure default features via configuration file.

2013/12/31, luaotfload v2.4
    * Additional self-tests, now in separate file (luaotfload-diagnostics.lua)
    * Better path and directory handling, especially on Windows
    * database now indexes Type1 fonts (PFA, PFB) and makes them accessible
      with style modifiers (requires --format=+pfa,pfb option to luaotfload-tool)
    * Test runner (script mktests)
    * New luaotfload-tool option: ``--no-reload``
    * ``luaotfload-tool --find`` now understands request syntax
    * text (Lua script) version of the font index is filtered through gzip by
      default, the ``--no-compress`` option of luaotfload-tool will prevent
      this
    * rename ``luaotfload-merged.lua`` (the fontloader package from Context)
      to ``luaotfload-fontloader.lua``
    * Treat arguments of the ``letterspace`` option as percentages; add
      ``kernfactor`` option that behaves as before.
    * Remove imported version of typo-krn.lua. Xetex-style per-font
      letterspacing is now the canonical method.
    * Merge functionality from extralibs (fake Context layer) into
      luaotfload-letterspace.lua as it is only needed there anyways.

2013/07/10, luaotfload v2.3a
    * Detect LuaJIT interpreter (LuaJITTeX)
    * Self-test functionality for luaotfload-tool.lua (option  ``--diagnose``)

2013/07/03, luaotfload v2.3:
    * New experimental lookups: ``kpse`` (kpathsea), ``my`` (callback)
    * Precedence of texmf over system fonts can be requested
      using the ``--prefer-texmf`` option of luaotfload-tool
    * Resolve file names to full paths at later stage
    * Rewrite the output of ``\fontname`` via ``patch_font`` callback
    * Allow blacklisting directories
    * Drop compatibility layer
    * Remove dependency on luaotfload-lib-dir (references to dir.glob() and
      dir.mkdirs())
    * luaotfload-tool now displays extensive information about a font if given
      the argument --inspect

2013/05/20, luaotfload v2.2:
    * There is now a central, non-personal dev repo on github:
      https://github.com/lualatex/luaotfload
    * Synchronisation with ConTeXt from TeXLive 2013, inducing
      backward-incompatible changes in the font structure. A
      backward-compatibility layer has been added for the current
      versions of fontspec, unicode-math and microtype, but it should
      disappear in a future version.
    * Synchronisation with ConTeXt is now easier and can be done by just
      updating luaotfload-merged.lua (<= luatex-fonts-merged.lua from
      the LuaTeX-Plain format)
    * Improved and extended documentation
    * Font filenames are stored in the database (file: lookups more efficient)
    * Optional caching of name: lookups (uses separate cache file)
    * Rewriting and increased fidelity of XeTeX emulation
    * Renaming mkluatexfontdb into luaotfload-tool (the old behavior is kept if
      the script is symlinked or renamed mkluatexfontdb)
    * Added options to luaotfload-tool for simple database queries
    * Logging facilities have been rewritten and allow for more granularity
    * All files have been renamed, abandoning cryptic acronyms; also
      the new prefix is "luaotfload" (<= "otfl")
    * The Adobe Glyph List (font-age.lua) is now built via script (mkglyphlist)
    * Hans adapted the font loader to several of our requests (attribute
      allocation, custom merged package name etc.)
    * Auxiliary functions for package authors
    * Man page for luaotfload-tool
    * Unsupported v1.3 codebase is included in the luaotfload-*lua files. Crude,
      but effective way to support older Luatex binaries
    * implemented basic cache control/stats option for luaotfload-tool
    * Character list is generated from char-def.lua (mkcharacters)

2013/04/27, luaotfload v1.3:
    *  blacklisting lingoes.ttf (segfaults)
    *  unblacklisting ttc fonts (warning: may break LuaTeX < 0.65)
    *  fixing font cache file name with non-ascii characters

2013/04/25, luaotfload v1.29:
    * Reverting the unified resolver, as the database was rebuilt too often
      which made the compilation longer. This will come back improved
      in the next version, hopefully for TeXLive 2013.
    * Fix resolving of Libertine Mono
    * Fix a bug that made fontconfig files not parsed when OSFONTDIR is set

2013/04/11, luaotfload v1.28:
    * Adapting to LuaTeX 0.75
    * Fix small documentation issues in mkluatexfontdb
    * Fix possible infinite loop with fontconfig config files references
    * Adding semibold synonym for bold
    * file:xxx syntax now uses the same search function as name: which
      make more fonts recognized

2012/05/28, luaotfload v1.27:
    * Fix "endless loop in charlist" with some OpenType math fonts

2012/03/27, luaotfload v1.26:
    * Enable setting italic correction values by default
    * Fix finding demibold italic fonts

2011/04/21, luaotfload v1.25:
    * Fix bug loading *.dfont fonts
    * Misc. documentation fixes
    * Fix the need to manually delete font cache when feature file is changed
    * Hack to support Demi fonts

2011/02/16, luaotfload v1.24:
    * Fix infinite loop first time creating a name list

2011/02/04, luaotfload v1.23:
    * Fix a typo breaking fonts.names.scan()

2011/01/25, luaotfload v1.22:
    * Remove --database-dir and --sys options from mkluatexfontdb
    * Provide a "luaotfload.patch_font" callback for on the fly patching of fonts
    * Some documentation improvements

2010/11/11, luaotfload v1.21:
    * Adapt to luatexbase v3.0

2010/10/16, luaotfload v1.20:
    * Make cache directory creation more robust
    * Fix GPOS mark placement in left-to-right direction
    * Reject fonts missing 'names' table
    * Sanitize color value before attempting to use it

2010/09/12, luaotfload v1.19:
    * fix LaTeX's detection (made Tikz fail under a non-LaTeX format)

2010/07/15, luaotfload v1.18:
    * fix for \overwithdelims and brothers

2010/07/14, luaotfload v1.17:
    * allow stylistic sets features in base mode
    * don't scale percent math constants

2010/07/12, luaotfload v1.16:
    * support keys prefixed by "+", for compatibility with XeTeX
    * remove the progress bar from mkluatexfontdb, it is of little use now
    * minor code a documentation cleanups

2010/06/28, luaotfload v1.15:
    * anum feature did not work as advertised
    * add system shipped TTC fonts on Mac OS X to the blacklist, until the
      culprit ones are isolated

2010/06/25, luaotfload v1.14:
    * fix mkluatexfontdb which was broken in the last version
    * support general font blacklisting feature
    * temporally re-enable ttc fonts on Mac OS X
    * make sure mkluatexfontdb in verbose mode prints font filename before
      attempting to load it

2010/06/24, luaotfload v1.13:
    * fix typo in font cache path

2010/06/18, luaotfload v1.12:
    * populate MathConstants table for OpenType math fonts, now such fonts
      can be really used in math mode.
    * sync with ConTeXt beta 2010.06.18
    * change cache dir to $TEXMFCACHE/luatex-cache/generic

2010/06/09, luaotfload v1.11:
    * when asking for a font with style that doesn't exist, we would return
      nothing, now we fallback to the regular font

2010/06/07, luaotfload v1.10:
    * provide a fonts.names.scan(dir) function that temporally loads fonts
      from the specified dir into the names database
    * Log loaded font file before attempting to open it
    * fix XeTeX's square brackets syntax so that it doesn't trigger database
      update
    * fix loading fonts with absolute path
    * add \fontdimen8 support, for XeTeX compatibility
    * be more verbose when updating the font database
    * improve fonts.conf parsing
    * make sure when a TFM font is requested we don't end up loading a non-TFM
      font with a similar name instead
    * Remove --fc-cache option from mkluatexfontdb.lua, since we no longer use
      fontconfig tools
    * misc. bug fixes

2010/05/30, luaotfload v1.09:
    * the last release didn't even load
    * fix passing --destdir to mkluatexfontdb

2010/05/28, luaotfload v1.08a:
    * revert experimental code that was committed by mistake

2010/05/28, luaotfload v1.08:
    * fix misc. bugs with system fonts scanning
    * parse fontconfig configuration directly, no longer dependent on 'fc-list'
    * now if no font names database is found, luaotfload will generate it, also
      it will force an update of the database if the asked font can not be
      found
    * avoid loading non-tfm fonts when the user asks for tfm font
    * update the documentation
    * blacklist .ttc and LastResort font on mac.
    * sync with ConTeXt beta 2010.05.22
    * fix attribute handling
    * clarify license
    * misc. bug fixes

2010/05/10, luaotfload v1.07:
    * using the new luatexbase package
    * synchronizing with latest ConTeXt stable 2010.05.08
    * adding support for microtypography
    * adding support for color and transparency
    * adding a script to generate a font database with TeX and system fonts
    * more verbose log file

2010/02/07, luaotfload v1.06a:
    * more complete tlig and trep
    * defaults options changed to "+ccmp;+locl;+rlig;+liga;+clig;+kern;
         +mark;+mkmk;"
    * supporting windows absolute path

2009/12/01, luaotfload v1.06:
    * synchronizing with ConTeXt stable 2009.11.26
    * adding backward compatibility with LuaTeX 0.40.6

