Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package sile for openSUSE:Factory checked in 
at 2023-01-06 17:05:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sile (Old)
 and      /work/SRC/openSUSE:Factory/.sile.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "sile"

Fri Jan  6 17:05:56 2023 rev:5 rq:1056335 version:0.14.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/sile/sile.changes        2022-12-15 
19:26:05.032356261 +0100
+++ /work/SRC/openSUSE:Factory/.sile.new.1563/sile.changes      2023-01-06 
17:06:43.356574569 +0100
@@ -1,0 +2,15 @@
+Fri Jan  6 07:59:02 UTC 2023 - Gordon Leung <piratec...@protonmail.com>
+
+update: 0.14.6 -> 0.14.7
+- Features
+ * build: Allow easy skip of font checks with FCMATCH=true
+- Bug Fixes
+ * build: Only check tooling to bulid manual if really needed
+ * inputters: Rework SIL input to handle both junk outside of document tag and 
fragments
+ * outputters: Patch up error message when failing to load font
+ * shaper: Correct font-variants using opsz axis
+ * shaper: Respect variations when shaping
+ * tooling: Keep all Lua packages in same env for Nix
+ * utilities: Tweak breadcrumbs to work under LuaJIT limitations 
+
+-------------------------------------------------------------------

Old:
----
  sile-0.14.6.tar.xz

New:
----
  sile-0.14.7.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ sile.spec ++++++
--- /var/tmp/diff_new_pack.rMZU5n/_old  2023-01-06 17:06:43.812577130 +0100
+++ /var/tmp/diff_new_pack.rMZU5n/_new  2023-01-06 17:06:43.816577152 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package sile
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %bcond_without  tests
 Name:           sile
-Version:        0.14.6
+Version:        0.14.7
 Release:        0
 Summary:        Simon’s Improved Layout Engine
 Group:          Productivity/Publishing

++++++ _service ++++++
--- /var/tmp/diff_new_pack.rMZU5n/_old  2023-01-06 17:06:43.868577444 +0100
+++ /var/tmp/diff_new_pack.rMZU5n/_new  2023-01-06 17:06:43.868577444 +0100
@@ -2,7 +2,7 @@
   <service mode="manual" name="download_url">
     <param name="protocol">https</param>
     <param name="host">github.com</param>
-    <param 
name="path">/sile-typesetter/sile/releases/download/v0.14.6/sile-0.14.6.tar.xz</param>
+    <param 
name="path">/sile-typesetter/sile/releases/download/v0.14.7/sile-0.14.7.tar.xz</param>
   </service>
 </services>
 

++++++ sile-0.14.6.tar.xz -> sile-0.14.7.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/.tarball-version 
new/sile-0.14.7/.tarball-version
--- old/sile-0.14.6/.tarball-version    2022-12-14 16:33:27.128509256 +0100
+++ new/sile-0.14.7/.tarball-version    2022-12-30 21:16:05.911278246 +0100
@@ -1 +1 @@
-0.14.6
\ No newline at end of file
+0.14.7
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/CHANGELOG.md new/sile-0.14.7/CHANGELOG.md
--- old/sile-0.14.6/CHANGELOG.md        2022-12-14 16:30:46.925375231 +0100
+++ new/sile-0.14.7/CHANGELOG.md        2022-12-30 21:13:33.319370584 +0100
@@ -2,6 +2,24 @@
 
 All notable changes to this project will be documented in this file. See 
[standard-version](https://github.com/conventional-changelog/standard-version) 
for commit guidelines.
 
+## [0.14.7](https://github.com/sile-typesetter/sile/compare/v0.14.6...v0.14.7) 
(2022-12-30)
+
+
+### Features
+
+* **build:** Allow easy skip of font checks with FCMATCH=true 
([5c0cef6](https://github.com/sile-typesetter/sile/commit/5c0cef6bc11d0ac353e92557212aa16842f3de68))
+
+
+### Bug Fixes
+
+* **build:** Only check tooling to bulid manual if really needed 
([e166e00](https://github.com/sile-typesetter/sile/commit/e166e0063b0b6c49040cc5c3759cd0a68162ef15))
+* **inputters:** Rework SIL input to handle both junk outside of document tag 
and fragments 
([4c51c55](https://github.com/sile-typesetter/sile/commit/4c51c557034dd618ad1e68799f9de1db76c4f262))
+* **outputters:** Patch up error message when failing to load font 
([#1671](https://github.com/sile-typesetter/sile/issues/1671)) 
([771d87f](https://github.com/sile-typesetter/sile/commit/771d87f24fa0f4599655fba23bcade15a7a5e7cb))
+* **shaper:** Correct font-variants using opsz axis 
([#1666](https://github.com/sile-typesetter/sile/issues/1666)) 
([a929583](https://github.com/sile-typesetter/sile/commit/a9295838e2639dee9fde71d29717957deaf650d5))
+* **shaper:** Respect variations when shaping 
([#1265](https://github.com/sile-typesetter/sile/issues/1265)) 
([#1662](https://github.com/sile-typesetter/sile/issues/1662)) 
([f50ae77](https://github.com/sile-typesetter/sile/commit/f50ae77d37003349936b3236de95c410155f6209))
+* **tooling:** Keep all Lua packages in same env for Nix 
([8fc8670](https://github.com/sile-typesetter/sile/commit/8fc867013db91cfbe591ab6815cf4ee5768c8982))
+* **utilities:** Tweak breadcrumbs to work under LuaJIT limitations 
([32f744c](https://github.com/sile-typesetter/sile/commit/32f744c5c493fa258498458e46e54c549ac61da8))
+
 ## [0.14.6](https://github.com/sile-typesetter/sile/compare/v0.14.5...v0.14.6) 
(2022-12-14)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/Makefile-distfiles 
new/sile-0.14.7/Makefile-distfiles
--- old/sile-0.14.6/Makefile-distfiles  2022-12-14 16:33:27.128509256 +0100
+++ new/sile-0.14.7/Makefile-distfiles  2022-12-30 21:16:05.911278246 +0100
@@ -1,7 +1,7 @@
 SILEDATA = classes/base.lua classes/bible.lua classes/book.lua 
classes/diglot.lua classes/docbook.lua classes/jbook.lua classes/jplain.lua 
classes/letter.lua classes/markdown.lua classes/pecha.lua classes/plain.lua 
classes/tbook.lua classes/tplain.lua classes/triglot.lua core/break.lua 
core/cli.lua core/color.lua core/deprecations.lua core/font.lua 
core/fontmanager.lua core/frame.lua core/frameparser.lua 
core/hyphenator-liang.lua core/languages.lua core/length.lua core/makedeps.lua 
core/measurement.lua core/nodefactory.lua core/opentype-parser.lua 
core/packagemanager.lua core/pagebuilder.lua core/papersize.lua 
core/parserbits.lua core/repl.lua core/settings.lua core/sile.lua 
core/tracestack.lua core/typesetter.lua core/units.lua core/utilities.lua 
core/utilities-numbers.lua core/utilities-sorting.lua inputters/base.lua 
inputters/lua.lua inputters/sil.lua inputters/xml.lua languages/af.lua 
languages/am.lua languages/as.lua languages/bg.lua languages/bn.lua 
languages/ca.lua languages/
 cs.lua languages/cy.lua languages/da.lua languages/de.lua languages/el.lua 
languages/el-monoton.lua languages/el-polyton.lua languages/en.lua 
languages/eo.lua languages/es.lua languages/et.lua languages/eu.lua 
languages/fi.lua languages/fr.lua languages/ga.lua languages/gu.lua 
languages/hi.lua languages/hr.lua languages/hu.lua languages/hy.lua 
languages/id.lua languages/is.lua languages/it.lua languages/ja.lua 
languages/jv.lua languages/ka.lua languages/kn.lua languages/la.lua 
languages/lt.lua languages/lv.lua languages/ml.lua languages/mr.lua 
languages/my.lua languages/nb.lua languages/nl.lua languages/nn.lua 
languages/no.lua languages/or.lua languages/pa.lua languages/pl.lua 
languages/pt.lua languages/rm.lua languages/ro.lua languages/ru.lua 
languages/sa.lua languages/sk.lua languages/sl.lua languages/sr.lua 
languages/sv.lua languages/ta.lua languages/th.lua languages/tk.lua 
languages/tr.lua languages/ug.lua languages/uk.lua languages/und.lua 
languages/unicode.lua outputters/base.
 lua outputters/cairo.lua outputters/debug.lua outputters/dummy.lua 
outputters/libtexpdf.lua outputters/podofo.lua outputters/text.lua 
packages/autodoc/init.lua packages/background/init.lua 
packages/balanced-frames/init.lua packages/base.lua 
packages/bibtex/bibliography.lua packages/bibtex/init.lua 
packages/bibtex/styles/chicago.lua packages/bidi/init.lua 
packages/boustrophedon/init.lua packages/break-firstfit/init.lua 
packages/chapterverse/init.lua packages/chordmode/init.lua 
packages/color-fonts/init.lua packages/color/init.lua 
packages/complex-spaces/init.lua packages/converters/init.lua 
packages/counters/init.lua packages/cropmarks/init.lua packages/date/init.lua 
packages/debug/init.lua packages/dropcaps/init.lua packages/features/init.lua 
packages/folio/init.lua packages/font-fallback/init.lua 
packages/footnotes/init.lua packages/frametricks/init.lua 
packages/grid/init.lua packages/gutenberg/init.lua 
packages/hanmenkyoshi/init.lua packages/ifattop/init.lua packages/image/init.lu
 a packages/indexer/init.lua packages/infonode/init.lua 
packages/inputfilter/init.lua packages/insertions/init.lua 
packages/leaders/init.lua packages/linespacing/init.lua packages/lists/init.lua 
packages/lorem/init.lua packages/masters/init.lua 
packages/math/base-elements.lua packages/math/init.lua 
packages/math/texlike.lua packages/math/typesetter.lua 
packages/math/unicode-symbols.lua packages/pagebuilder-bestfit/init.lua 
packages/pandoc/init.lua packages/parallel/init.lua packages/pdf/init.lua 
packages/pdfstructure/init.lua packages/pullquote/init.lua 
packages/raiselower/init.lua packages/rebox/init.lua packages/rotate/init.lua 
packages/ruby/init.lua packages/rules/init.lua packages/simpletable/init.lua 
packages/specimen/init.lua packages/svg/init.lua 
packages/tableofcontents/init.lua packages/tate/init.lua 
packages/textcase/init.lua packages/twoside/init.lua packages/unichar/init.lua 
packages/url/init.lua packages/verbatim/init.lua packages/xmltricks/init.lua 
pagebuilders/base.lua
  pagebuilders/grid.lua shapers/base.lua shapers/fallback.lua 
shapers/harfbuzz.lua shapers/pango.lua typesetters/base.lua 
typesetters/firstfit.lua typesetters/grid.lua typesetters/tate.lua i18n/af.ftl 
i18n/am.ftl i18n/ar.ftl i18n/as.ftl i18n/bg.ftl i18n/bn.ftl i18n/bo.ftl 
i18n/ca.ftl i18n/cs.ftl i18n/cy.ftl i18n/da.ftl i18n/de.ftl i18n/el.ftl 
i18n/el-monoton.ftl i18n/el-polyton.ftl i18n/en.ftl i18n/eo.ftl i18n/es.ftl 
i18n/et.ftl i18n/eu.ftl i18n/fi.ftl i18n/fr.ftl i18n/ga.ftl i18n/gu.ftl 
i18n/hi.ftl i18n/hr.ftl i18n/hu.ftl i18n/hy.ftl i18n/id.ftl i18n/is.ftl 
i18n/it.ftl i18n/ja.ftl i18n/jv.ftl i18n/ka.ftl i18n/kn.ftl i18n/la.ftl 
i18n/lt.ftl i18n/lv.ftl i18n/ml.ftl i18n/mr.ftl i18n/my.ftl i18n/nb.ftl 
i18n/nl.ftl i18n/nn.ftl i18n/no.ftl i18n/or.ftl i18n/pa.ftl i18n/pl.ftl 
i18n/pt.ftl i18n/rm.ftl i18n/ro.ftl i18n/ru.ftl i18n/sa.ftl i18n/sk.ftl 
i18n/sl.ftl i18n/sr.ftl i18n/sv.ftl i18n/ta.ftl i18n/th.ftl i18n/tk.ftl 
i18n/tr.ftl i18n/ug.ftl i18n/uk.ftl i18n/und.ftl i18n/ur.ftl
 LUALIBRARIES = lua-libraries/bitshim.lua lua-libraries/char-def.lua 
lua-libraries/imagesize/format/bmp.lua lua-libraries/imagesize/format/gif.lua 
lua-libraries/imagesize/format/jpeg.lua lua-libraries/imagesize/format/mng.lua 
lua-libraries/imagesize/format/pcd.lua lua-libraries/imagesize/format/png.lua 
lua-libraries/imagesize/format/pnm.lua lua-libraries/imagesize/format/psd.lua 
lua-libraries/imagesize/format/swf.lua lua-libraries/imagesize/format/tiff.lua 
lua-libraries/imagesize/format/xbm.lua lua-libraries/imagesize/format/xcf.lua 
lua-libraries/imagesize/format/xpm.lua lua-libraries/imagesize.lua 
lua-libraries/imagesize/util.lua lua-libraries/lunamark/entities.lua 
lua-libraries/lunamark.lua lua-libraries/lunamark/reader.lua 
lua-libraries/lunamark/reader/markdown.lua lua-libraries/lunamark/util.lua 
lua-libraries/lunamark/writer/ast.lua lua-libraries/lunamark/writer/context.lua 
lua-libraries/lunamark/writer/docbook.lua 
lua-libraries/lunamark/writer/dzslides.lua lua-libraries/lunamark
 /writer/generic.lua lua-libraries/lunamark/writer/groff.lua 
lua-libraries/lunamark/writer/html5.lua lua-libraries/lunamark/writer/html.lua 
lua-libraries/lunamark/writer/latex.lua lua-libraries/lunamark/writer.lua 
lua-libraries/lunamark/writer/man.lua lua-libraries/lunamark/writer/tex.lua 
lua-libraries/lunamark/writer/xml.lua
 LUAMODULES =
-TESTSRCS ?= tests/alignment.sil tests/amharic.sil tests/arabic-scripts.sil 
tests/balanced.sil tests/bibtex.sil tests/bidi.sil tests/bug-1003.sil 
tests/bug-1005.sil tests/bug-1044.sil tests/bug-1101.sil tests/bug-1142.sil 
tests/bug-1171.sil tests/bug-117.sil tests/bug-1244-fallback-after-color.sil 
tests/bug-1259.sil tests/bug-1280.sil tests/bug-1297-hyph-fr-ca.sil 
tests/bug-1317.sil tests/bug-1320.sil tests/bug-1321.sil tests/bug-132.sil 
tests/bug-1343-dotfill-stretch.sil tests/bug-1359.sil tests/bug-1362.sil 
tests/bug-1430.sil tests/bug-1442-fallback-font-options.sil 
tests/bug-1495-inline-math-layout.sil tests/bug-1495-math-alone.sil 
tests/bug-1580.sil tests/bug-1611.sil tests/bug-162.sil tests/bug-182.sil 
tests/bug-192.sil tests/bug-200.sil tests/bug-210.sil tests/bug-214.sil 
tests/bug-226.sil tests/bug-241.sil tests/bug-243.sil tests/bug-244.sil 
tests/bug-248.sil tests/bug-252a.sil tests/bug-252.sil tests/bug-254.sil 
tests/bug-255b.sil tests/bug-255.sil tests/bug-262.sil tests/bug
 -264b.sil tests/bug-264.sil tests/bug-266.sil tests/bug-269.sil 
tests/bug-283.sil tests/bug-284.sil tests/bug-301.sil tests/bug-303b.sil 
tests/bug-303.sil tests/bug-307.sil tests/bug-308.sil tests/bug-309.sil 
tests/bug-317.sil tests/bug-337.sil tests/bug-342.sil tests/bug-344.sil 
tests/bug-353.sil tests/bug-355-tr-hyphenation.sil tests/bug-383.sil 
tests/bug-39.sil tests/bug-420.sil tests/bug-465-a.sil tests/bug-465-b.sil 
tests/bug-502.sil tests/bug-522.sil tests/bug-524.sil tests/bug-525.sil 
tests/bug-526.sil tests/bug-530.sil tests/bug-54.sil tests/bug-556b.sil 
tests/bug-556.sil tests/bug-61.sil tests/bug-621.sil tests/bug-62.sil 
tests/bug-702.sil tests/bug-704.sil tests/bug-723.sil tests/bug-76.sil 
tests/bug-79.sil tests/bug-80.sil tests/bug-859.sil tests/bug-865.sil 
tests/bug-892.sil tests/bug-915.sil tests/bug-926.sil tests/bug-979.sil 
tests/bug-990.sil tests/bug-991-unichar.sil tests/centering.sil 
tests/chapterverse.sil tests/color-fonts.sil tests/combining.sil 
tests/counters.s
 il tests/crash.sil tests/cursive-shaping.sil tests/disappearing-skip.sil 
tests/eject.sil tests/feat-1092-raw.sil tests/feat-1365-lists-alternate.sil 
tests/feat-1365-lists-compact.sil tests/feat-1365-lists-footnote.sil 
tests/feat-875-dotfill-alignment.sil tests/feat-875-leaders-alignment.sil 
tests/feat-875-leaders-fixed-alignment.sil tests/feat-fullrule-hfillrule.sil 
tests/fluent.sil tests/font-fallback-empty.sil tests/font-features-cvXX.sil 
tests/font-features.sil tests/footnote.sil tests/footnote-skip.sil 
tests/footnotes-twocols.sil tests/frametricks.sil tests/grid.sil 
tests/hangafter.sil tests/hyph-except.sil tests/ifattop.sil tests/image.sil 
tests/inline-lua.sil tests/inputter-args-from-declarative.sil 
tests/insertions-sidenotes.sil tests/italic.sil tests/jbook.sil 
tests/kannada.sil tests/letter.sil tests/letterspacing.sil 
tests/lig-hyphens.sil tests/linespacing2.sil tests/linespacing.sil 
tests/malayalam.sil tests/masters.sil tests/math-macros.sil tests/math-ops.sil 
tests/math-sp
 aces.sil tests/math-tables-tex.sil tests/mini-arabic.sil tests/mlcounter.sil 
tests/negative-spaces-in-line.sil tests/nondeterminism.sil tests/openpaths.sil 
tests/parallel.sil tests/parshaping-simple.sil tests/pdf.sil 
tests/percent-units.sil tests/process-commands.sil tests/rotate.sil 
tests/rskip.sil tests/settings.sil tests/simplesvg.sil 
tests/space-after-command.sil tests/split-footnote.sil tests/sura-2.sil 
tests/tracking.sil tests/twoside.sil tests/vertical.sil tests/049EPH.xml 
tests/absmin.xml tests/math-bigops.xml tests/math-fractions.xml 
tests/math-stretchy.xml tests/math-subsup.xml tests/math-tables-mathml.xml 
tests/math-variants.xml  tests/content-detection-lua.nil 
tests/content-detection-sil.nil tests/content-detection-xml.nil
-TESTPREVIEWS ?= tests/alignment.pdf tests/amharic.pdf tests/arabic-scripts.pdf 
tests/bibtex.pdf tests/bidi.pdf tests/bug-1003.pdf tests/bug-1005.pdf 
tests/bug-1044.pdf tests/bug-1101.pdf tests/bug-1142.pdf tests/bug-1171.pdf 
tests/bug-117.pdf tests/bug-1244-fallback-after-color.pdf tests/bug-1259.pdf 
tests/bug-1280.pdf tests/bug-1297-hyph-fr-ca.pdf tests/bug-1317.pdf 
tests/bug-1320.pdf tests/bug-1321.pdf tests/bug-132.pdf 
tests/bug-1343-dotfill-stretch.pdf tests/bug-1359.pdf tests/bug-1362.pdf 
tests/bug-1430.pdf tests/bug-1442-fallback-font-options.pdf 
tests/bug-1495-inline-math-layout.pdf tests/bug-1495-math-alone.pdf 
tests/bug-1580.pdf tests/bug-1611.pdf tests/bug-162.pdf tests/bug-182.pdf 
tests/bug-192.pdf tests/bug-200.pdf tests/bug-210.pdf tests/bug-226.pdf 
tests/bug-241.pdf tests/bug-243.pdf tests/bug-244.pdf tests/bug-252a.pdf 
tests/bug-252.pdf tests/bug-254.pdf tests/bug-255b.pdf tests/bug-255.pdf 
tests/bug-262.pdf tests/bug-264b.pdf tests/bug-264.pdf tests/bug-266.pdf tests
 /bug-269.pdf tests/bug-283.pdf tests/bug-284.pdf tests/bug-301.pdf 
tests/bug-303b.pdf tests/bug-303.pdf tests/bug-308.pdf tests/bug-309.pdf 
tests/bug-317.pdf tests/bug-337.pdf tests/bug-344.pdf tests/bug-353.pdf 
tests/bug-355-tr-hyphenation.pdf tests/bug-383.pdf tests/bug-39.pdf 
tests/bug-420.pdf tests/bug-465-a.pdf tests/bug-465-b.pdf tests/bug-502.pdf 
tests/bug-522.pdf tests/bug-524.pdf tests/bug-525.pdf tests/bug-526.pdf 
tests/bug-530.pdf tests/bug-54.pdf tests/bug-556b.pdf tests/bug-556.pdf 
tests/bug-61.pdf tests/bug-621.pdf tests/bug-62.pdf tests/bug-702.pdf 
tests/bug-704.pdf tests/bug-723.pdf tests/bug-76.pdf tests/bug-79.pdf 
tests/bug-80.pdf tests/bug-859.pdf tests/bug-865.pdf tests/bug-892.pdf 
tests/bug-915.pdf tests/bug-926.pdf tests/bug-979.pdf tests/bug-990.pdf 
tests/bug-991-unichar.pdf tests/centering.pdf tests/chapterverse.pdf 
tests/combining.pdf tests/counters.pdf tests/crash.pdf 
tests/cursive-shaping.pdf tests/disappearing-skip.pdf tests/eject.pdf 
tests/feat-1092-raw.
 pdf tests/feat-1365-lists-alternate.pdf tests/feat-1365-lists-compact.pdf 
tests/feat-1365-lists-footnote.pdf tests/feat-875-dotfill-alignment.pdf 
tests/feat-875-leaders-alignment.pdf tests/feat-875-leaders-fixed-alignment.pdf 
tests/feat-fullrule-hfillrule.pdf tests/fluent.pdf 
tests/font-fallback-empty.pdf tests/font-features-cvXX.pdf 
tests/font-features.pdf tests/footnote.pdf tests/footnote-skip.pdf 
tests/grid.pdf tests/hangafter.pdf tests/hyph-except.pdf tests/ifattop.pdf 
tests/image.pdf tests/inline-lua.pdf tests/inputter-args-from-declarative.pdf 
tests/insertions-sidenotes.pdf tests/italic.pdf tests/jbook.pdf 
tests/kannada.pdf tests/letter.pdf tests/letterspacing.pdf 
tests/lig-hyphens.pdf tests/linespacing2.pdf tests/linespacing.pdf 
tests/malayalam.pdf tests/masters.pdf tests/math-macros.pdf tests/math-ops.pdf 
tests/math-spaces.pdf tests/math-tables-tex.pdf tests/mini-arabic.pdf 
tests/mlcounter.pdf tests/negative-spaces-in-line.pdf tests/nondeterminism.pdf 
tests/openpaths.pdf tes
 ts/parallel.pdf tests/parshaping-simple.pdf tests/pdf.pdf 
tests/percent-units.pdf tests/rotate.pdf tests/rskip.pdf tests/settings.pdf 
tests/simplesvg.pdf tests/split-footnote.pdf tests/tracking.pdf 
tests/twoside.pdf tests/vertical.pdf tests/absmin.pdf tests/math-bigops.pdf 
tests/math-fractions.pdf tests/math-stretchy.pdf tests/math-subsup.pdf 
tests/math-tables-mathml.pdf tests/math-variants.pdf 
tests/content-detection-lua.pdf tests/content-detection-sil.pdf 
tests/content-detection-xml.pdf
+TESTSRCS ?= tests/alignment.sil tests/amharic.sil tests/arabic-scripts.sil 
tests/balanced.sil tests/bibtex.sil tests/bidi.sil tests/bug-1003.sil 
tests/bug-1005.sil tests/bug-1044.sil tests/bug-1069.sil tests/bug-1101.sil 
tests/bug-1142.sil tests/bug-1171.sil tests/bug-117.sil 
tests/bug-1244-fallback-after-color.sil tests/bug-1259.sil tests/bug-1280.sil 
tests/bug-1297-hyph-fr-ca.sil tests/bug-1317.sil tests/bug-1320.sil 
tests/bug-1321.sil tests/bug-132.sil tests/bug-1343-dotfill-stretch.sil 
tests/bug-1359.sil tests/bug-1362.sil tests/bug-1430.sil 
tests/bug-1442-fallback-font-options.sil tests/bug-1495-inline-math-layout.sil 
tests/bug-1495-math-alone.sil tests/bug-1580.sil tests/bug-1611.sil 
tests/bug-162.sil tests/bug-1674.sil tests/bug-182.sil tests/bug-192.sil 
tests/bug-200.sil tests/bug-210.sil tests/bug-214.sil tests/bug-226.sil 
tests/bug-241.sil tests/bug-243.sil tests/bug-244.sil tests/bug-248.sil 
tests/bug-252a.sil tests/bug-252.sil tests/bug-254.sil tests/bug-255b.sil 
tests/b
 ug-255.sil tests/bug-262.sil tests/bug-264b.sil tests/bug-264.sil 
tests/bug-266.sil tests/bug-269.sil tests/bug-283.sil tests/bug-284.sil 
tests/bug-301.sil tests/bug-303b.sil tests/bug-303.sil tests/bug-307.sil 
tests/bug-308.sil tests/bug-309.sil tests/bug-317.sil tests/bug-337.sil 
tests/bug-342.sil tests/bug-344.sil tests/bug-353.sil 
tests/bug-355-tr-hyphenation.sil tests/bug-383.sil tests/bug-39.sil 
tests/bug-420.sil tests/bug-465-a.sil tests/bug-465-b.sil tests/bug-502.sil 
tests/bug-522.sil tests/bug-524.sil tests/bug-525.sil tests/bug-526.sil 
tests/bug-530.sil tests/bug-54.sil tests/bug-556b.sil tests/bug-556.sil 
tests/bug-61.sil tests/bug-621.sil tests/bug-62.sil tests/bug-702.sil 
tests/bug-704.sil tests/bug-723.sil tests/bug-76.sil tests/bug-79.sil 
tests/bug-80.sil tests/bug-859.sil tests/bug-865.sil tests/bug-892.sil 
tests/bug-915.sil tests/bug-926.sil tests/bug-979.sil tests/bug-990.sil 
tests/bug-991-unichar.sil tests/centering.sil tests/chapterverse.sil 
tests/color-fonts.si
 l tests/combining.sil tests/counters.sil tests/crash.sil 
tests/cursive-shaping.sil tests/disappearing-skip.sil tests/eject.sil 
tests/feat-1092-raw.sil tests/feat-1365-lists-alternate.sil 
tests/feat-1365-lists-compact.sil tests/feat-1365-lists-footnote.sil 
tests/feat-875-dotfill-alignment.sil tests/feat-875-leaders-alignment.sil 
tests/feat-875-leaders-fixed-alignment.sil tests/feat-fullrule-hfillrule.sil 
tests/fluent.sil tests/font-fallback-empty.sil tests/font-features-cvXX.sil 
tests/font-features.sil tests/footnote.sil tests/footnote-skip.sil 
tests/footnotes-twocols.sil tests/frametricks.sil tests/grid.sil 
tests/hangafter.sil tests/hyph-except.sil tests/ifattop.sil tests/image.sil 
tests/inline-lua.sil tests/inputter-args-from-declarative.sil 
tests/insertions-sidenotes.sil tests/italic.sil tests/jbook.sil 
tests/kannada.sil tests/letter.sil tests/letterspacing.sil 
tests/lig-hyphens.sil tests/linespacing2.sil tests/linespacing.sil 
tests/malayalam.sil tests/masters.sil tests/math-macro
 s.sil tests/math-ops.sil tests/math-spaces.sil tests/math-tables-tex.sil 
tests/mini-arabic.sil tests/mlcounter.sil tests/negative-spaces-in-line.sil 
tests/nondeterminism.sil tests/openpaths.sil tests/parallel.sil 
tests/parshaping-simple.sil tests/pdf.sil tests/percent-units.sil 
tests/process-commands.sil tests/rotate.sil tests/rskip.sil tests/settings.sil 
tests/simplesvg.sil tests/space-after-command.sil tests/split-footnote.sil 
tests/sura-2.sil tests/tracking.sil tests/twoside.sil tests/vertical.sil 
tests/049EPH.xml tests/absmin.xml tests/math-bigops.xml 
tests/math-fractions.xml tests/math-stretchy.xml tests/math-subsup.xml 
tests/math-tables-mathml.xml tests/math-variants.xml  
tests/content-detection-lua.nil tests/content-detection-sil.nil 
tests/content-detection-xml.nil
+TESTPREVIEWS ?= tests/alignment.pdf tests/amharic.pdf tests/arabic-scripts.pdf 
tests/bibtex.pdf tests/bidi.pdf tests/bug-1003.pdf tests/bug-1005.pdf 
tests/bug-1044.pdf tests/bug-1069.pdf tests/bug-1101.pdf tests/bug-1142.pdf 
tests/bug-1171.pdf tests/bug-117.pdf tests/bug-1244-fallback-after-color.pdf 
tests/bug-1259.pdf tests/bug-1280.pdf tests/bug-1297-hyph-fr-ca.pdf 
tests/bug-1317.pdf tests/bug-1320.pdf tests/bug-1321.pdf tests/bug-132.pdf 
tests/bug-1343-dotfill-stretch.pdf tests/bug-1359.pdf tests/bug-1362.pdf 
tests/bug-1430.pdf tests/bug-1442-fallback-font-options.pdf 
tests/bug-1495-inline-math-layout.pdf tests/bug-1495-math-alone.pdf 
tests/bug-1580.pdf tests/bug-1611.pdf tests/bug-162.pdf tests/bug-1674.pdf 
tests/bug-182.pdf tests/bug-192.pdf tests/bug-200.pdf tests/bug-210.pdf 
tests/bug-226.pdf tests/bug-241.pdf tests/bug-243.pdf tests/bug-244.pdf 
tests/bug-252a.pdf tests/bug-252.pdf tests/bug-254.pdf tests/bug-255b.pdf 
tests/bug-255.pdf tests/bug-262.pdf tests/bug-264b.pdf tes
 ts/bug-264.pdf tests/bug-266.pdf tests/bug-269.pdf tests/bug-283.pdf 
tests/bug-284.pdf tests/bug-301.pdf tests/bug-303b.pdf tests/bug-303.pdf 
tests/bug-308.pdf tests/bug-309.pdf tests/bug-317.pdf tests/bug-337.pdf 
tests/bug-344.pdf tests/bug-353.pdf tests/bug-355-tr-hyphenation.pdf 
tests/bug-383.pdf tests/bug-39.pdf tests/bug-420.pdf tests/bug-465-a.pdf 
tests/bug-465-b.pdf tests/bug-502.pdf tests/bug-522.pdf tests/bug-524.pdf 
tests/bug-525.pdf tests/bug-526.pdf tests/bug-530.pdf tests/bug-54.pdf 
tests/bug-556b.pdf tests/bug-556.pdf tests/bug-61.pdf tests/bug-621.pdf 
tests/bug-62.pdf tests/bug-702.pdf tests/bug-704.pdf tests/bug-723.pdf 
tests/bug-76.pdf tests/bug-79.pdf tests/bug-80.pdf tests/bug-859.pdf 
tests/bug-865.pdf tests/bug-892.pdf tests/bug-915.pdf tests/bug-926.pdf 
tests/bug-979.pdf tests/bug-990.pdf tests/bug-991-unichar.pdf 
tests/centering.pdf tests/chapterverse.pdf tests/combining.pdf 
tests/counters.pdf tests/crash.pdf tests/cursive-shaping.pdf 
tests/disappearing-skip.pd
 f tests/eject.pdf tests/feat-1092-raw.pdf tests/feat-1365-lists-alternate.pdf 
tests/feat-1365-lists-compact.pdf tests/feat-1365-lists-footnote.pdf 
tests/feat-875-dotfill-alignment.pdf tests/feat-875-leaders-alignment.pdf 
tests/feat-875-leaders-fixed-alignment.pdf tests/feat-fullrule-hfillrule.pdf 
tests/fluent.pdf tests/font-fallback-empty.pdf tests/font-features-cvXX.pdf 
tests/font-features.pdf tests/footnote.pdf tests/footnote-skip.pdf 
tests/grid.pdf tests/hangafter.pdf tests/hyph-except.pdf tests/ifattop.pdf 
tests/image.pdf tests/inline-lua.pdf tests/inputter-args-from-declarative.pdf 
tests/insertions-sidenotes.pdf tests/italic.pdf tests/jbook.pdf 
tests/kannada.pdf tests/letter.pdf tests/letterspacing.pdf 
tests/lig-hyphens.pdf tests/linespacing2.pdf tests/linespacing.pdf 
tests/malayalam.pdf tests/masters.pdf tests/math-macros.pdf tests/math-ops.pdf 
tests/math-spaces.pdf tests/math-tables-tex.pdf tests/mini-arabic.pdf 
tests/mlcounter.pdf tests/negative-spaces-in-line.pdf tests/nond
 eterminism.pdf tests/openpaths.pdf tests/parallel.pdf 
tests/parshaping-simple.pdf tests/pdf.pdf tests/percent-units.pdf 
tests/rotate.pdf tests/rskip.pdf tests/settings.pdf tests/simplesvg.pdf 
tests/split-footnote.pdf tests/tracking.pdf tests/twoside.pdf 
tests/vertical.pdf tests/absmin.pdf tests/math-bigops.pdf 
tests/math-fractions.pdf tests/math-stretchy.pdf tests/math-subsup.pdf 
tests/math-tables-mathml.pdf tests/math-variants.pdf 
tests/content-detection-lua.pdf tests/content-detection-sil.pdf 
tests/content-detection-xml.pdf
 BUSTEDSPECS ?= 
-TESTEXPECTS ?= tests/049EPH.expected tests/absmin.expected 
tests/alignment.expected tests/amharic.expected tests/arabic-scripts.expected 
tests/balanced.expected tests/bibtex.expected tests/bidi.expected 
tests/bug-1003.expected tests/bug-1005.expected tests/bug-1044.expected 
tests/bug-1101.expected tests/bug-1142.expected tests/bug-1171.expected 
tests/bug-117.expected tests/bug-1244-fallback-after-color.expected 
tests/bug-1259.expected tests/bug-1280.expected 
tests/bug-1297-hyph-fr-ca.expected tests/bug-1317.expected 
tests/bug-1320.expected tests/bug-1321.expected tests/bug-132.expected 
tests/bug-1343-dotfill-stretch.expected tests/bug-1359.expected 
tests/bug-1362.expected tests/bug-1430.expected 
tests/bug-1442-fallback-font-options.expected 
tests/bug-1495-inline-math-layout.expected tests/bug-1495-math-alone.expected 
tests/bug-1580.expected tests/bug-1611.expected tests/bug-162.expected 
tests/bug-182.expected tests/bug-192.expected tests/bug-200.expected 
tests/bug-210.expected tests
 /bug-214.expected tests/bug-226.expected tests/bug-241.expected 
tests/bug-243.expected tests/bug-244.expected tests/bug-252a.expected 
tests/bug-252.expected tests/bug-254.expected tests/bug-255b.expected 
tests/bug-255.expected tests/bug-262.expected tests/bug-264b.expected 
tests/bug-264.expected tests/bug-266.expected tests/bug-269.expected 
tests/bug-283.expected tests/bug-284.expected tests/bug-301.expected 
tests/bug-307.expected tests/bug-308.expected tests/bug-309.expected 
tests/bug-317.expected tests/bug-337.expected tests/bug-344.expected 
tests/bug-353.expected tests/bug-355-tr-hyphenation.expected 
tests/bug-39.expected tests/bug-465-a.expected tests/bug-502.expected 
tests/bug-522.expected tests/bug-524.expected tests/bug-525.expected 
tests/bug-526.expected tests/bug-530.expected tests/bug-54.expected 
tests/bug-61.expected tests/bug-621.expected tests/bug-62.expected 
tests/bug-702.expected tests/bug-704.expected tests/bug-723.expected 
tests/bug-76.expected tests/bug-79.expected
  tests/bug-80.expected tests/bug-859.expected tests/bug-865.expected 
tests/bug-892.expected tests/bug-915.expected tests/bug-926.expected 
tests/bug-979.expected tests/bug-990.expected tests/bug-991-unichar.expected 
tests/centering.expected tests/chapterverse.expected tests/color-fonts.expected 
tests/combining.expected tests/content-detection-lua.expected 
tests/content-detection-sil.expected tests/content-detection-xml.expected 
tests/counters.expected tests/crash.expected tests/cursive-shaping.expected 
tests/disappearing-skip.expected tests/eject.expected 
tests/feat-1092-raw.expected tests/feat-1365-lists-alternate.expected 
tests/feat-1365-lists-compact.expected tests/feat-1365-lists-footnote.expected 
tests/feat-875-dotfill-alignment.expected 
tests/feat-875-leaders-alignment.expected 
tests/feat-875-leaders-fixed-alignment.expected 
tests/feat-fullrule-hfillrule.expected tests/fluent.expected 
tests/font-fallback-empty.expected tests/font-features-cvXX.expected 
tests/font-features.expec
 ted tests/footnote.expected tests/footnote-skip.expected 
tests/footnotes-twocols.expected tests/frametricks.expected tests/grid.expected 
tests/hangafter.expected tests/hyph-except.expected tests/image.expected 
tests/inline-lua.expected tests/italic.expected tests/jbook.expected 
tests/kannada.expected tests/letterspacing.expected tests/linespacing2.expected 
tests/linespacing.expected tests/masters.expected tests/math-bigops.expected 
tests/math-fractions.expected tests/math-macros.expected 
tests/math-ops.expected tests/math-spaces.expected tests/math-stretchy.expected 
tests/math-subsup.expected tests/math-tables-mathml.expected 
tests/math-tables-tex.expected tests/math-variants.expected 
tests/mini-arabic.expected tests/mlcounter.expected 
tests/negative-spaces-in-line.expected tests/nondeterminism.expected 
tests/openpaths.expected tests/parallel.expected 
tests/parshaping-simple.expected tests/percent-units.expected 
tests/process-commands.expected tests/rskip.expected tests/settings.exp
 ected tests/space-after-command.expected tests/split-footnote.expected 
tests/sura-2.expected tests/tracking.expected tests/twoside.expected 
tests/vertical.expected
\ No newline at end of file
+TESTEXPECTS ?= tests/049EPH.expected tests/absmin.expected 
tests/alignment.expected tests/amharic.expected tests/arabic-scripts.expected 
tests/balanced.expected tests/bibtex.expected tests/bidi.expected 
tests/bug-1003.expected tests/bug-1005.expected tests/bug-1044.expected 
tests/bug-1069.expected tests/bug-1101.expected tests/bug-1142.expected 
tests/bug-1171.expected tests/bug-117.expected 
tests/bug-1244-fallback-after-color.expected tests/bug-1259.expected 
tests/bug-1280.expected tests/bug-1297-hyph-fr-ca.expected 
tests/bug-1317.expected tests/bug-1320.expected tests/bug-1321.expected 
tests/bug-132.expected tests/bug-1343-dotfill-stretch.expected 
tests/bug-1359.expected tests/bug-1362.expected tests/bug-1430.expected 
tests/bug-1442-fallback-font-options.expected 
tests/bug-1495-inline-math-layout.expected tests/bug-1495-math-alone.expected 
tests/bug-1580.expected tests/bug-1611.expected tests/bug-162.expected 
tests/bug-1674.expected tests/bug-182.expected tests/bug-192.expected tes
 ts/bug-200.expected tests/bug-210.expected tests/bug-214.expected 
tests/bug-226.expected tests/bug-241.expected tests/bug-243.expected 
tests/bug-244.expected tests/bug-252a.expected tests/bug-252.expected 
tests/bug-254.expected tests/bug-255b.expected tests/bug-255.expected 
tests/bug-262.expected tests/bug-264b.expected tests/bug-264.expected 
tests/bug-266.expected tests/bug-269.expected tests/bug-283.expected 
tests/bug-284.expected tests/bug-301.expected tests/bug-307.expected 
tests/bug-308.expected tests/bug-309.expected tests/bug-317.expected 
tests/bug-337.expected tests/bug-344.expected tests/bug-353.expected 
tests/bug-355-tr-hyphenation.expected tests/bug-39.expected 
tests/bug-465-a.expected tests/bug-502.expected tests/bug-522.expected 
tests/bug-524.expected tests/bug-525.expected tests/bug-526.expected 
tests/bug-530.expected tests/bug-54.expected tests/bug-61.expected 
tests/bug-621.expected tests/bug-62.expected tests/bug-702.expected 
tests/bug-704.expected tests/bug-723.expe
 cted tests/bug-76.expected tests/bug-79.expected tests/bug-80.expected 
tests/bug-859.expected tests/bug-865.expected tests/bug-892.expected 
tests/bug-915.expected tests/bug-926.expected tests/bug-979.expected 
tests/bug-990.expected tests/bug-991-unichar.expected tests/centering.expected 
tests/chapterverse.expected tests/color-fonts.expected tests/combining.expected 
tests/content-detection-lua.expected tests/content-detection-sil.expected 
tests/content-detection-xml.expected tests/counters.expected 
tests/crash.expected tests/cursive-shaping.expected 
tests/disappearing-skip.expected tests/eject.expected 
tests/feat-1092-raw.expected tests/feat-1365-lists-alternate.expected 
tests/feat-1365-lists-compact.expected tests/feat-1365-lists-footnote.expected 
tests/feat-875-dotfill-alignment.expected 
tests/feat-875-leaders-alignment.expected 
tests/feat-875-leaders-fixed-alignment.expected 
tests/feat-fullrule-hfillrule.expected tests/fluent.expected 
tests/font-fallback-empty.expected tests/font-
 features-cvXX.expected tests/font-features.expected tests/footnote.expected 
tests/footnote-skip.expected tests/footnotes-twocols.expected 
tests/frametricks.expected tests/grid.expected tests/hangafter.expected 
tests/hyph-except.expected tests/image.expected tests/inline-lua.expected 
tests/italic.expected tests/jbook.expected tests/kannada.expected 
tests/letterspacing.expected tests/linespacing2.expected 
tests/linespacing.expected tests/masters.expected tests/math-bigops.expected 
tests/math-fractions.expected tests/math-macros.expected 
tests/math-ops.expected tests/math-spaces.expected tests/math-stretchy.expected 
tests/math-subsup.expected tests/math-tables-mathml.expected 
tests/math-tables-tex.expected tests/math-variants.expected 
tests/mini-arabic.expected tests/mlcounter.expected 
tests/negative-spaces-in-line.expected tests/nondeterminism.expected 
tests/openpaths.expected tests/parallel.expected 
tests/parshaping-simple.expected tests/percent-units.expected 
tests/process-commands.
 expected tests/rskip.expected tests/settings.expected 
tests/space-after-command.expected tests/split-footnote.expected 
tests/sura-2.expected tests/tracking.expected tests/twoside.expected 
tests/vertical.expected
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/Makefile-fonts 
new/sile-0.14.7/Makefile-fonts
--- old/sile-0.14.6/Makefile-fonts      2022-12-14 16:30:46.929375329 +0100
+++ new/sile-0.14.7/Makefile-fonts      2022-12-30 21:13:33.319370584 +0100
@@ -1,3 +1,5 @@
+if FONT_DOWNLOAD_TOOLS
+
 .fonts: fonttooling
        [ -h .fonts ] || mkdir -p $@
 
@@ -6,8 +8,8 @@
 
 .PHONY: fonttooling
 fonttooling:
-       $(if $(BSDTAR),,$(error Please set BSDTAR with path or ./configure 
--with-manual or --enable-developer))
-       $(if $(CURL),,$(error Please set CURL with path or ./configure 
--with-manual or --enable-developer))
+       $(if $(BSDTAR),,$(error Please set BSDTAR with path or `./configure 
--enable-developer`))
+       $(if $(CURL),,$(error Please set CURL with path or `./configure 
--enable-developer`))
 
 # Don't let make delete things we had to download
 .PRECIOUS: .fonts/% .sources/%
@@ -136,3 +138,5 @@
 .fonts/Symbola%: .sources/Symbola.zip | .fonts
        $(BSDTAR) -x -f $< -C $(dir $@) $(notdir $@) && \
        touch $@
+
+endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/Makefile.in new/sile-0.14.7/Makefile.in
--- old/sile-0.14.6/Makefile.in 2022-12-14 16:33:27.144509558 +0100
+++ new/sile-0.14.7/Makefile.in 2022-12-30 21:16:05.927278222 +0100
@@ -303,6 +303,7 @@
 FIND = @FIND@
 FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
 FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
+FONT_DOWNLOAD_TOOLS = @FONT_DOWNLOAD_TOOLS@
 FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
 FREETYPE_LIBS = @FREETYPE_LIBS@
 GIT = @GIT@
@@ -448,19 +449,28 @@
 @SYSTEM_LUAROCKS_FALSE@rocksmatch := ( T=$$(mktemp); trap 'rm -f "$$T"' EXIT 
HUP TERM; $(genrockslock) > "$$T"; $(CMP) -s $(LUAMODLOCK) "$$T" )
 
 # List of font files we _actually need_
-DEFSFONTFILES = GentiumPlus-R.ttf GentiumPlus-I.ttf
-DOCSFONTFILES = $(DEFSFONTFILES) CormorantInfant-Italic.ttf \
-       CormorantInfant-Regular.ttf GenBkBasR.ttf GenBkBasI.ttf \
-       GenBkBasB.ttf Hack-Regular.ttf LateefGR-Regular.ttf \
-       LibertinusMath-Regular.otf LibertinusSerif-Regular.otf \
-       NotoSansCJK-Regular.ttc NotoSansEthiopic-Regular.ttf \
-       RobotoCondensed-Bold.ttf Symbola.otf
-TESTFONTFILES = $(DOCSFONTFILES) Amiri-Regular.ttf AmiriQuran.ttf \
-       AwamiNastaliq-Regular.ttf LibertinusSans-Bold.otf \
-       NotoNaskhArabic-Regular.ttf NotoSansKannada-Regular.ttf \
-       NotoSansMalayalam-Regular.ttf NotoSerifCJK-Regular.ttc \
-       SBL_Hbrw.ttf TwemojiMozilla.ttf
-notobase = $(shell echo $(notdir $1) | sed -e 's/-.*//')
+@FONT_DOWNLOAD_TOOLS_TRUE@DEFSFONTFILES = GentiumPlus-R.ttf GentiumPlus-I.ttf
+@FONT_DOWNLOAD_TOOLS_TRUE@DOCSFONTFILES = $(DEFSFONTFILES) \
+@FONT_DOWNLOAD_TOOLS_TRUE@     CormorantInfant-Italic.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     CormorantInfant-Regular.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     GenBkBasR.ttf GenBkBasI.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     GenBkBasB.ttf Hack-Regular.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     LateefGR-Regular.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     LibertinusMath-Regular.otf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     LibertinusSerif-Regular.otf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     NotoSansCJK-Regular.ttc \
+@FONT_DOWNLOAD_TOOLS_TRUE@     NotoSansEthiopic-Regular.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     RobotoCondensed-Bold.ttf Symbola.otf
+@FONT_DOWNLOAD_TOOLS_TRUE@TESTFONTFILES = $(DOCSFONTFILES) \
+@FONT_DOWNLOAD_TOOLS_TRUE@     Amiri-Regular.ttf AmiriQuran.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     AwamiNastaliq-Regular.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     LibertinusSans-Bold.otf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     NotoNaskhArabic-Regular.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     NotoSansKannada-Regular.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     NotoSansMalayalam-Regular.ttf \
+@FONT_DOWNLOAD_TOOLS_TRUE@     NotoSerifCJK-Regular.ttc \
+@FONT_DOWNLOAD_TOOLS_TRUE@     SBL_Hbrw.ttf TwemojiMozilla.ttf
+@FONT_DOWNLOAD_TOOLS_TRUE@notobase = $(shell echo $(notdir $1) | sed -e 
's/-.*//')
 MANUAL := documentation/sile.pdf
 SILE := $(PACKAGE_NAME)
 @MANUAL_TRUE@_MANUAL = $(MANUAL)
@@ -1219,115 +1229,116 @@
 
 @SYSTEM_LUAROCKS_FALSE@$(LUAMODLOCK): lua_modules $(LUAMODSPEC)
 @SYSTEM_LUAROCKS_FALSE@        $(genrockslock) > $@
-.fonts: fonttooling
-       [ -h .fonts ] || mkdir -p $@
 
-.sources: fonttooling
-       [ -h .sources ] || mkdir -p $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts: fonttooling
+@FONT_DOWNLOAD_TOOLS_TRUE@     [ -h .fonts ] || mkdir -p $@
 
-.PHONY: fonttooling
-fonttooling:
-       $(if $(BSDTAR),,$(error Please set BSDTAR with path or ./configure 
--with-manual or --enable-developer))
-       $(if $(CURL),,$(error Please set CURL with path or ./configure 
--with-manual or --enable-developer))
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources: fonttooling
+@FONT_DOWNLOAD_TOOLS_TRUE@     [ -h .sources ] || mkdir -p $@
+
+@FONT_DOWNLOAD_TOOLS_TRUE@.PHONY: fonttooling
+@FONT_DOWNLOAD_TOOLS_TRUE@fonttooling:
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(if $(BSDTAR),,$(error Please set BSDTAR with 
path or `./configure --enable-developer`))
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(if $(CURL),,$(error Please set CURL with path 
or `./configure --enable-developer`))
 
 # Don't let make delete things we had to download
-.PRECIOUS: .fonts/% .sources/%
+@FONT_DOWNLOAD_TOOLS_TRUE@.PRECIOUS: .fonts/% .sources/%
 
 # Tell make how to download individual font files directly (when available)
 
-.fonts/Amiri%: | .fonts
-       $(CURL) -fsSL https://github.com/alif-type/amiri/raw/0.113/$(notdir $@) 
-o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/Amiri%: | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://github.com/alif-type/amiri/raw/0.113/$(notdir $@) -o $@
 
-.fonts/Noto%.ttf: | .fonts
-       $(CURL) -fsSL 
https://raw.githubusercontent.com/googlefonts/noto-fonts/v20201206-phase3/hinted/ttf/$(call
 notobase,$@)/$(notdir $@) -o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/Noto%.ttf: | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://raw.githubusercontent.com/googlefonts/noto-fonts/v20201206-phase3/hinted/ttf/$(call
 notobase,$@)/$(notdir $@) -o $@
 
-.fonts/Noto%.ttc: | .fonts
-       $(CURL) -fsSL 
https://raw.githubusercontent.com/googlefonts/noto-cjk/v20201206-cjk/$(notdir 
$@) -o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/Noto%.ttc: | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://raw.githubusercontent.com/googlefonts/noto-cjk/v20201206-cjk/$(notdir 
$@) -o $@
 
-.fonts/SBL_Hbrw.ttf: | .fonts
-       $(CURL) -fsSL https://www.sbl-site.org/Fonts/$(notdir $@) -o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/SBL_Hbrw.ttf: | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://www.sbl-site.org/Fonts/$(notdir $@) -o $@
 
-.fonts/Symbola.otf: | .fonts
-       $(CURL) -fsSL 
https://github.com/ChiefMikeK/ttf-symbola/raw/master/Symbola-13.otf -o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/Symbola.otf: | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://github.com/ChiefMikeK/ttf-symbola/raw/master/Symbola-13.otf -o $@
 
-.fonts/TwemojiMozilla.ttf: | .fonts
-       $(CURL) -fsSL 
https://github.com/mozilla/twemoji-colr/releases/download/v0.5.1/$(notdir $@) 
-o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/TwemojiMozilla.ttf: | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://github.com/mozilla/twemoji-colr/releases/download/v0.5.1/$(notdir $@) 
-o $@
 
 # Tell  make how to download font file bundles (when not downloadable 
individually)
 
-.sources/AwamiNastaliq-2.200.zip: | .sources
-       $(CURL) -fsSL https://software.sil.org/downloads/r/awami/$(notdir $@) 
-o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources/AwamiNastaliq-2.200.zip: | .sources
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://software.sil.org/downloads/r/awami/$(notdir $@) -o $@
 
-.sources/CrimsonPro.zip: | .sources
-       $(CURL) -fsSL https://fonts.google.com/download?family=Crimson+Pro -o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources/CrimsonPro.zip: | .sources
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://fonts.google.com/download?family=Crimson+Pro -o $@
 
-.sources/Cormorant_Install_v3.601.zip: | .sources
-       $(CURL) -fsSL 
https://github.com/CatharsisFonts/Cormorant/releases/download/v3.601/$(notdir 
$@) -o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources/Cormorant_Install_v3.601.zip: | .sources
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://github.com/CatharsisFonts/Cormorant/releases/download/v3.601/$(notdir 
$@) -o $@
 
-.sources/GentiumBasic_1102.zip: | .sources
-       $(CURL) -fsSL https://software.sil.org/downloads/r/gentium/$(notdir $@) 
-o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources/GentiumBasic_1102.zip: | .sources
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://software.sil.org/downloads/r/gentium/$(notdir $@) -o $@
 
-.sources/GentiumPlus-5.000.zip: | .sources
-       $(CURL) -fsSL https://software.sil.org/downloads/r/gentium/$(notdir $@) 
-o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources/GentiumPlus-5.000.zip: | .sources
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://software.sil.org/downloads/r/gentium/$(notdir $@) -o $@
 
-.sources/Hack-v3.003-ttf.tar.xz: | .sources
-       $(CURL) -fsSL 
https://github.com/source-foundry/Hack/releases/download/v3.003/$(notdir $@) -o 
$@
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources/Hack-v3.003-ttf.tar.xz: | .sources
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://github.com/source-foundry/Hack/releases/download/v3.003/$(notdir $@) -o 
$@
 
-.sources/LateefGR-1.200.zip: | .sources
-       $(CURL) -fsSL https://software.sil.org/downloads/r/lateef/$(notdir $@) 
-o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources/LateefGR-1.200.zip: | .sources
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://software.sil.org/downloads/r/lateef/$(notdir $@) -o $@
 
-.sources/Libertinus-%.tar.xz: | .sources
-       $(CURL) -fsSL 
https://github.com/alerque/libertinus/releases/download/v$*/$(notdir $@) -o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources/Libertinus-%.tar.xz: | .sources
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://github.com/alerque/libertinus/releases/download/v$*/$(notdir $@) -o $@
 
-.sources/roboto-unhinted.zip: | .sources
-       $(CURL) -fsSL 
https://github.com/google/roboto/releases/download/v2.138/$(notdir $@) -o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources/roboto-unhinted.zip: | .sources
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://github.com/google/roboto/releases/download/v2.138/$(notdir $@) -o $@
 
-.sources/Symbola.zip: | .sources
-       $(CURL) -fsSL 
https://web.archive.org/web/20200617144517/https://dn-works.com/wp-content/uploads/2020/UFAS-Fonts/$(notdir
 $@) -o $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.sources/Symbola.zip: | .sources
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(CURL) -fsSL 
https://web.archive.org/web/20200617144517/https://dn-works.com/wp-content/uploads/2020/UFAS-Fonts/$(notdir
 $@) -o $@
 #      Canonical upstream server limits downloads which sometimes kills our CI 
runners
 #      $(CURL) -fsSL 
https://dn-works.com/wp-content/uploads/2020/UFAS-Fonts/$(notdir $@) -o $@
 
 # Tell make how to extract individual files from bundles
 
-.fonts/AwamiNastaliq%: .sources/AwamiNastaliq-2.200.zip | .fonts
-       $(BSDTAR) -x -f $< -C $(dir $@) --strip-components 1 $(basename 
$(<F))/$(notdir $@) && \
-       touch $@
-
-.fonts/Cormorant%: .sources/Cormorant_Install_v3.601.zip | .fonts
-       $(BSDTAR) -x -f $< -C $(dir $@) --strip-components 2 "$(basename 
$(<F))/1. TrueType Font Files/$(notdir $@)" && \
-       touch $@
-
-.fonts/CrimsonPro%: .sources/CrimsonPro.zip | .fonts
-       $(BSDTAR) -x -f $< -C $(dir $@) --strip-components 1 static/$(notdir 
$@) && \
-       touch $@
-
-.fonts/GenB%: .sources/GentiumBasic_1102.zip | .fonts
-       $(BSDTAR) -x -f $< -C $(dir $@) --strip-components 1 $(basename 
$(<F))/$(notdir $@) && \
-       touch $@
-
-.fonts/GentiumPlus%: .sources/GentiumPlus-5.000.zip | .fonts
-       $(BSDTAR) -x -f $< -C $(dir $@) --strip-components 1 $(basename 
$(<F))/$(notdir $@) && \
-       touch $@
-
-.fonts/Hack%: .sources/Hack-v3.003-ttf.tar.xz | .fonts
-       $(BSDTAR) -x -f $< -C $(dir $@) $(notdir $@) && \
-       touch $@
-
-.fonts/Libertinus%: .sources/Libertinus-7.020.tar.xz | .fonts
-       $(BSDTAR) -x -f $< -C $(dir $@) --strip-components 3 $(basename 
$(basename $(<F)))/static/OTF/$(notdir $@) && \
-       touch $@
-
-.fonts/LateefGR%: .sources/LateefGR-1.200.zip | .fonts
-       $(BSDTAR) -x -f $< -C $(dir $@) --strip-components 1 $(basename 
$(<F))/$(notdir $@) && \
-       touch $@
-
-.fonts/Roboto%: .sources/roboto-unhinted.zip | .fonts
-       $(BSDTAR) -x -f $< -C $(dir $@) $(notdir $@) && \
-       touch $@
-
-.fonts/Symbola%: .sources/Symbola.zip | .fonts
-       $(BSDTAR) -x -f $< -C $(dir $@) $(notdir $@) && \
-       touch $@
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/AwamiNastaliq%: 
.sources/AwamiNastaliq-2.200.zip | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(BSDTAR) -x -f $< -C $(dir $@) 
--strip-components 1 $(basename $(<F))/$(notdir $@) && \
+@FONT_DOWNLOAD_TOOLS_TRUE@     touch $@
+
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/Cormorant%: 
.sources/Cormorant_Install_v3.601.zip | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(BSDTAR) -x -f $< -C $(dir $@) 
--strip-components 2 "$(basename $(<F))/1. TrueType Font Files/$(notdir $@)" && 
\
+@FONT_DOWNLOAD_TOOLS_TRUE@     touch $@
+
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/CrimsonPro%: .sources/CrimsonPro.zip | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(BSDTAR) -x -f $< -C $(dir $@) 
--strip-components 1 static/$(notdir $@) && \
+@FONT_DOWNLOAD_TOOLS_TRUE@     touch $@
+
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/GenB%: .sources/GentiumBasic_1102.zip | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(BSDTAR) -x -f $< -C $(dir $@) 
--strip-components 1 $(basename $(<F))/$(notdir $@) && \
+@FONT_DOWNLOAD_TOOLS_TRUE@     touch $@
+
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/GentiumPlus%: .sources/GentiumPlus-5.000.zip 
| .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(BSDTAR) -x -f $< -C $(dir $@) 
--strip-components 1 $(basename $(<F))/$(notdir $@) && \
+@FONT_DOWNLOAD_TOOLS_TRUE@     touch $@
+
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/Hack%: .sources/Hack-v3.003-ttf.tar.xz | 
.fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(BSDTAR) -x -f $< -C $(dir $@) $(notdir $@) && 
\
+@FONT_DOWNLOAD_TOOLS_TRUE@     touch $@
+
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/Libertinus%: .sources/Libertinus-7.020.tar.xz 
| .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(BSDTAR) -x -f $< -C $(dir $@) 
--strip-components 3 $(basename $(basename $(<F)))/static/OTF/$(notdir $@) && \
+@FONT_DOWNLOAD_TOOLS_TRUE@     touch $@
+
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/LateefGR%: .sources/LateefGR-1.200.zip | 
.fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(BSDTAR) -x -f $< -C $(dir $@) 
--strip-components 1 $(basename $(<F))/$(notdir $@) && \
+@FONT_DOWNLOAD_TOOLS_TRUE@     touch $@
+
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/Roboto%: .sources/roboto-unhinted.zip | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(BSDTAR) -x -f $< -C $(dir $@) $(notdir $@) && 
\
+@FONT_DOWNLOAD_TOOLS_TRUE@     touch $@
+
+@FONT_DOWNLOAD_TOOLS_TRUE@.fonts/Symbola%: .sources/Symbola.zip | .fonts
+@FONT_DOWNLOAD_TOOLS_TRUE@     $(BSDTAR) -x -f $< -C $(dir $@) $(notdir $@) && 
\
+@FONT_DOWNLOAD_TOOLS_TRUE@     touch $@
 
 # Rules for installing LuaRocks locally as pkgdata_DATA
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/README.md new/sile-0.14.7/README.md
--- old/sile-0.14.6/README.md   2022-12-14 16:30:46.929375329 +0100
+++ new/sile-0.14.7/README.md   2022-12-30 21:13:33.319370584 +0100
@@ -1,8 +1,8 @@
-[![Actions Build 
Status](https://img.shields.io/github/workflow/status/sile-typesetter/sile/Build?label=Linux%20Build&logo=Github)](https://github.com/sile-typesetter/sile/actions?workflow=Build)
+[![Actions Build 
Status](https://img.shields.io/github/actions/workflow/status/sile-typesetter/sile/build.yml?branch=master&label=Linux%20Build&logo=Github)](https://github.com/sile-typesetter/sile/actions?workflow=Build)
 [![Cirrus Build 
Status](https://img.shields.io/cirrus/github/sile-typesetter/sile?label=FreeBSD%20Build&logo=freebsd)](https://cirrus-ci.com/github/sile-typesetter/sile/master)
-[![Docker Build 
Status](https://img.shields.io/github/workflow/status/sile-typesetter/sile/Deploy?label=Docker%20Build&logo=Docker)](https://github.com/sile-typesetter/sile/pkgs/container/sile)
+[![Docker Build 
Status](https://img.shields.io/github/actions/workflow/status/sile-typesetter/sile/deploy.yml?branch=master&label=Docker%20Build&logo=Docker)](https://github.com/sile-typesetter/sile/pkgs/container/sile)
 [![Azure Build 
Status](https://img.shields.io/azure-devops/build/sile-typesetter/069c3e31-ee59-4bd6-b395-1f1059acd8db/1?label=Windows%20Build&logo=Azuredevops)](https://dev.azure.com/sile-typesetter/sile/_build/latest?definitionId=1&branchName=master)<br
 />
-[![Luacheck Lint 
Status](https://img.shields.io/github/workflow/status/sile-typesetter/sile/Luacheck?label=Luacheck&logo=Lua)](https://github.com/sile-typesetter/sile/actions?workflow=Luacheck)
+[![Luacheck Lint 
Status](https://img.shields.io/github/actions/workflow/status/sile-typesetter/sile/luacheck.yml?branch=master&label=Luacheck&logo=Lua)](https://github.com/sile-typesetter/sile/actions?workflow=Luacheck)
 [![Coveralls Coverage 
Status](https://img.shields.io/coveralls/github/sile-typesetter/sile?label=Coverage&logo=Coveralls)](https://coveralls.io/github/sile-typesetter/sile?branch=master)<br
 />
 [![Chat on 
Gitter](https://img.shields.io/gitter/room/simoncozens/sile?color=blue&label=Chat&logo=Gitter)](https://gitter.im/simoncozens/sile?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
 [![Conventional 
Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-blue.svg)](https://conventionalcommits.org)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/build-aux/ax_font.m4 
new/sile-0.14.7/build-aux/ax_font.m4
--- old/sile-0.14.6/build-aux/ax_font.m4        2022-12-14 16:30:46.929375329 
+0100
+++ new/sile-0.14.7/build-aux/ax_font.m4        2022-12-30 21:13:33.319370584 
+0100
@@ -8,10 +8,14 @@
     fi
     pushdef([FONT],$1)
     AC_MSG_CHECKING(whether font family FONT is available)
-    AS_IF([$FCMATCH "FONT" family | $GREP -qx "FONT"],[
-        AC_MSG_RESULT(yes)
+    AS_IF([test "$FCMATCH" = "true"],[
+            AC_MSG_RESULT(skip)
     ],[
-        AC_MSG_FAILURE([font family FONT not found])
+        AS_IF([$FCMATCH "FONT" family | $GREP -qx "FONT"],[
+            AC_MSG_RESULT(yes)
+        ],[
+            AC_MSG_FAILURE([font family FONT not found])
+        ])
     ])
     popdef([FONT])
 ])dnl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/configure new/sile-0.14.7/configure
--- old/sile-0.14.6/configure   2022-12-14 16:31:13.353991511 +0100
+++ new/sile-0.14.7/configure   2022-12-30 21:13:57.583492703 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for sile 0.14.6.
+# Generated by GNU Autoconf 2.71 for sile 0.14.7.
 #
 # Report bugs to <si...@simon-cozens.org>.
 #
@@ -621,8 +621,8 @@
 # Identity of this package.
 PACKAGE_NAME='sile'
 PACKAGE_TARNAME='sile'
-PACKAGE_VERSION='0.14.6'
-PACKAGE_STRING='sile 0.14.6'
+PACKAGE_VERSION='0.14.7'
+PACKAGE_STRING='sile 0.14.7'
 PACKAGE_BUGREPORT='si...@simon-cozens.org'
 PACKAGE_URL=''
 
@@ -712,6 +712,9 @@
 PKG_CONFIG
 PDFINFO
 FCMATCH
+FONT_DOWNLOAD_TOOLS
+FONT_DOWNLOAD_TOOLS_FALSE
+FONT_DOWNLOAD_TOOLS_TRUE
 subdirs
 MANUAL_FALSE
 MANUAL_TRUE
@@ -1447,7 +1450,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures sile 0.14.6 to adapt to many kinds of systems.
+\`configure' configures sile 0.14.7 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1518,7 +1521,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of sile 0.14.6:";;
+     short | recursive ) echo "Configuration of sile 0.14.7:";;
    esac
   cat <<\_ACEOF
 
@@ -1664,7 +1667,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-sile configure 0.14.6
+sile configure 0.14.7
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2011,7 +2014,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by sile $as_me 0.14.6, which was
+It was created by sile $as_me 0.14.7, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3282,7 +3285,7 @@
 
 # Define the identity of the package.
  PACKAGE='sile'
- VERSION='0.14.6'
+ VERSION='0.14.7'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -13643,6 +13646,16 @@
 
 fi
 
+ if test -z ${DEVELOPER_TRUE} || (test -z ${MANUAL_TRUE} && test -z 
${IS_SDIST_FALSE}); then
+  FONT_DOWNLOAD_TOOLS_TRUE=
+  FONT_DOWNLOAD_TOOLS_FALSE='#'
+else
+  FONT_DOWNLOAD_TOOLS_TRUE='#'
+  FONT_DOWNLOAD_TOOLS_FALSE=
+fi
+
+
+
 
 
 
@@ -13900,21 +13913,31 @@
 
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether font family 
Gentium Plus is available" >&5
 printf %s "checking whether font family Gentium Plus is available... " >&6; }
-    if $FCMATCH "Gentium Plus" family | $GREP -qx "Gentium Plus"
+    if test "$FCMATCH" = "true"
 then :
 
-        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip" >&5
+printf "%s\n" "skip" >&6; }
+
+else $as_nop
+
+        if $FCMATCH "Gentium Plus" family | $GREP -qx "Gentium Plus"
+then :
+
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
 
 else $as_nop
 
-        { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" 
>&5
+            { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in 
\`$ac_pwd':" >&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "font family Gentium Plus not found
 See \`config.log' for more details" "$LINENO" 5; }
 
 fi
 
+fi
+
 
 
     # Extract the first word of "pdfinfo", so it can be a program name with 
args.
@@ -15850,7 +15873,8 @@
 fi
 
     # Required for downloading fonts for the manual and for tests
-    if test -z "$MANUAL_TRUE"; then :
+    # Since the source tarball includes a prebuilt manual we only need this 
for Git source builds
+    if test -z "$FONT_DOWNLOAD_TOOLS_TRUE"; then :
 
 
           test -n "$CURL" || { # Extract the first word of "curl", so it can 
be a program name with args.
@@ -15954,102 +15978,6 @@
     if test -z "$DEVELOPER_TRUE"; then :
 
 
-          test -n "$CURL" || { # Extract the first word of "curl", so it can 
be a program name with args.
-set dummy curl; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-printf %s "checking for $ac_word... " >&6; }
-if test ${ac_cv_path_CURL+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  case $CURL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_CURL="$CURL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  case $as_dir in #(((
-    '') as_dir=./ ;;
-    */) ;;
-    *) as_dir=$as_dir/ ;;
-  esac
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
-    ac_cv_path_CURL="$as_dir$ac_word$ac_exec_ext"
-    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found 
$as_dir$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-CURL=$ac_cv_path_CURL
-if test -n "$CURL"; then
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5
-printf "%s\n" "$CURL" >&6; }
-else
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-fi
-
- }
-          test -n "$CURL" || as_fn_error $? "curl is required" "$LINENO" 5
-
-
-          test -n "$BSDTAR" || { # Extract the first word of "bsdtar", so it 
can be a program name with args.
-set dummy bsdtar; ac_word=$2
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-printf %s "checking for $ac_word... " >&6; }
-if test ${ac_cv_path_BSDTAR+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  case $BSDTAR in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_BSDTAR="$BSDTAR" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  case $as_dir in #(((
-    '') as_dir=./ ;;
-    */) ;;
-    *) as_dir=$as_dir/ ;;
-  esac
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
-    ac_cv_path_BSDTAR="$as_dir$ac_word$ac_exec_ext"
-    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found 
$as_dir$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-BSDTAR=$ac_cv_path_BSDTAR
-if test -n "$BSDTAR"; then
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BSDTAR" >&5
-printf "%s\n" "$BSDTAR" >&6; }
-else
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
-printf "%s\n" "no" >&6; }
-fi
-
- }
-          test -n "$BSDTAR" || as_fn_error $? "bsdtar is required" "$LINENO" 5
-
-
           test -n "$BUSTED" || { # Extract the first word of "busted", so it 
can be a program name with args.
 set dummy busted; ac_word=$2
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -16750,6 +16678,10 @@
   as_fn_error $? "conditional \"MANUAL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${FONT_DOWNLOAD_TOOLS_TRUE}" && test -z 
"${FONT_DOWNLOAD_TOOLS_FALSE}"; then
+  as_fn_error $? "conditional \"FONT_DOWNLOAD_TOOLS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${APPKIT_TRUE}" && test -z "${APPKIT_FALSE}"; then
   as_fn_error $? "conditional \"APPKIT\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -17152,7 +17084,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by sile $as_me 0.14.6, which was
+This file was extended by sile $as_me 0.14.7, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17211,7 +17143,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-sile config.status 0.14.6
+sile config.status 0.14.7
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/configure.ac new/sile-0.14.7/configure.ac
--- old/sile-0.14.6/configure.ac        2022-12-14 16:30:46.929375329 +0100
+++ new/sile-0.14.7/configure.ac        2022-12-30 21:13:33.323370639 +0100
@@ -55,6 +55,9 @@
                          [AC_MSG_FAILURE([--with-system-libtexpdf was given, 
but test for libtexpdf failed])]) ],
            [AC_CONFIG_SUBDIRS([libtexpdf])])
 
+AM_CONDITIONAL([FONT_DOWNLOAD_TOOLS], [test -z ${DEVELOPER_TRUE} || (test -z 
${MANUAL_TRUE} && test -z ${IS_SDIST_FALSE})])
+AC_SUBST([FONT_DOWNLOAD_TOOLS])
+
 AM_COND_IF([DEPENDENCY_CHECKS], [
 
     AX_FONT(Gentium Plus)
@@ -158,14 +161,13 @@
     ])
 
     # Required for downloading fonts for the manual and for tests
-    AM_COND_IF([MANUAL], [
+    # Since the source tarball includes a prebuilt manual we only need this 
for Git source builds
+    AM_COND_IF([FONT_DOWNLOAD_TOOLS], [
         AX_PROGVAR([curl])
         AX_PROGVAR([bsdtar])
     ])
 
     AM_COND_IF([DEVELOPER], [
-        AX_PROGVAR([curl])
-        AX_PROGVAR([bsdtar])
         AX_PROGVAR([busted])
         AX_PROGVAR([luacheck])
         AX_PROGVAR([luarocks])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/core/deprecations.lua 
new/sile-0.14.7/core/deprecations.lua
--- old/sile-0.14.6/core/deprecations.lua       2022-12-14 16:30:46.933375427 
+0100
+++ new/sile-0.14.7/core/deprecations.lua       2022-12-30 21:13:33.323370639 
+0100
@@ -49,6 +49,11 @@
     __index = nobaseclass
   })
 
+SILE.defaultTypesetter = function (frame)
+  SU.deprecated("SILE.defaultTypesetter", "SILE.typesetters.base", "0.14.6", 
"0.15.0")
+  return SILE.typesetters.base(frame)
+end
+
 SILE.toPoints = function (_, _)
   SU.deprecated("SILE.toPoints", "SILE.measurement():tonumber", "0.10.0", 
"0.13.1")
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/core/utilities.lua 
new/sile-0.14.7/core/utilities.lua
--- old/sile-0.14.6/core/utilities.lua  2022-12-14 16:30:46.933375427 +0100
+++ new/sile-0.14.7/core/utilities.lua  2022-12-30 21:13:33.327370694 +0100
@@ -562,7 +562,8 @@
   end
 
   function breadcrumbs:parent (count)
-    return self[#self-(count or 1)]
+    -- Note LuaJIT does not support __len, so this has to work even when that 
metamethod doesn't fire...
+    return self[#SILE.traceStack-(count or 1)]
   end
 
   function breadcrumbs:contains (needle)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/documentation/c12-tricks.sil 
new/sile-0.14.7/documentation/c12-tricks.sil
--- old/sile-0.14.6/documentation/c12-tricks.sil        2022-12-14 
16:30:46.933375427 +0100
+++ new/sile-0.14.7/documentation/c12-tricks.sil        2022-12-30 
21:13:33.327370694 +0100
@@ -44,10 +44,13 @@
 Now we create two new typesetters, one for each column, and we tell each one 
how to find the other:
 
 \begin{verbatim}
-diglot.leftTypesetter = SILE.defaultTypesetter \{\}
-diglot.rightTypesetter = SILE.defaultTypesetter \{\}
-diglot.rightTypesetter.other = diglot.leftTypesetter
-diglot.leftTypesetter.other = diglot.rightTypesetter
+function diglot:_init (options)
+  self.leftTypesetter = SILE.typesetters.base()
+  self.rightTypesetter = SILE.typesetters.base()
+  self.rightTypesetter.other = self.leftTypesetter
+  self.leftTypesetter.other = self.rightTypesetter
+  return plain._init(self)
+end
 \end{verbatim}
 
 Each column needs its own font, so we provide commands to store this 
information.
@@ -56,13 +59,16 @@
 (Because the fonts are controlled by global settings rather than being 
typesetter-specific.)
 
 \begin{verbatim}
-SILE.registerCommand("leftfont", function(options, content)
-  SILE.scratch.diglot.leftfont = options
-end, "Set the font for the left side")
-
-SILE.registerCommand("rightfont", function(options, content)
-  SILE.scratch.diglot.rightfont = options
-end, "Set the font for the right side")
+
+function diglot:registerCommands()
+  SILE.registerCommand("leftfont", function(options, content)
+    SILE.scratch.diglot.leftfont = options
+  end, "Set the font for the left side")
+
+  SILE.registerCommand("rightfont", function(options, content)
+    SILE.scratch.diglot.rightfont = options
+  end, "Set the font for the right side")
+end
 \end{verbatim}
 
 Next come the commands for sending text to the appropriate typesetter.
@@ -123,14 +129,6 @@
 we need to ensure, at the start of each document and the start of each page,
 that each typesetter is linked to the appropriate frame:
 
-\begin{verbatim}
-function diglot:_init (options)
-  self.leftTypesetter:init(SILE.getFrame("a"))
-  self.rightTypesetter:init(SILE.getFrame("b"))
-  return plain.init(self)
-end
-\end{verbatim}
-
 \noindent{}(\code{SILE.getFrame} retrieves a frame that we have declared.)
 
 The default \code{newPage} routine will do this for one typesetter every
@@ -140,7 +138,7 @@
 event, the other typesetter also gets correctly initialised:
 
 \begin{verbatim}
-diglot.newPage = function(self)
+function diglot:newPage (self)
   plain.newPage(self)
   if SILE.typesetter == diglot.leftTypesetter then
     SILE.typesetter.other:initFrame(SILE.getFrame("b"))
@@ -157,7 +155,7 @@
 page as well:
 
 \begin{verbatim}
-diglot.endPage = function(self)
+function diglot:endPage = ()
   SILE.typesetter.other:leaveHmode(1)
   plain.endPage(self)
 end
@@ -170,7 +168,7 @@
 tall glue to the other typesetter’s queue to help the process along:
 
 \begin{verbatim}
-diglot.finish = function(self)
+function diglot:finish ()
   table.insert(SILE.typesetter.other.state.outputQueue, 
SILE.nodefactory.vfillglue())
   SILE.typesetter.other:chuck()
   plain.finish(self)
@@ -214,8 +212,8 @@
 
 \begin{verbatim}
 \line
-discovery.typesetProphecy = function(symbol)
-  local margin = discovery:oddPage() and
+function discovery:typesetProphecy (symbol)
+  local margin = self:oddPage() and
                   SILE.getFrame("rMargin") or SILE.getFrame("lMargin")
   local target = margin:left()
 \end{verbatim}
@@ -283,24 +281,28 @@
 
 \begin{verbatim}
 \line
-discovery.innerTypesetter = SILE.defaultTypesetter \{\}
+local base = require("classes.base")
+
+local discovery = pl.class(base)
+discovery._name = "discovery"
 
-discovery.init = function()
-  local gutter = discovery:oddPage() and
+function discovery:_init ()
+  base._init(self)
+  local gutter = self:oddPage() and
                  SILE.getFrame("rGutter") or SILE.getFrame("lGutter")
-  discovery.innerTypesetter:init(gutter)
+  self.innerTypesetter = Self.typesetters.base(gutter)
   ...
-  return SILE.classes.base:init()
+  return self
 end
 
-discovery.newPage = function ()
+function discovery:newPage ()
   ...
-  discovery.innerTypesetter:leaveHmode(1)
-  local gutter = discovery:oddPage() and
+  self.innerTypesetter:leaveHmode(1)
+  local gutter = self:oddPage() and
                  SILE.getFrame("rGutter") or SILE.getFrame("lGutter")
-  discovery.innerTypesetter:init(gutter)
+  self.innerTypesetter = SILE.typesetters.base(gutter)
   ...
-  return SILE.classes.base.newPage(discovery);
+  return base.newPage(self);
 end
 \line
 \end{verbatim}
@@ -311,9 +313,9 @@
 
 \begin{verbatim}
 \line
-discovery.typesetCrossReference = function(xref)
-  discovery.innerTypesetter:leaveHmode(1)
-  local innerVbox = 
SILE.pagebuilder:collateVboxes(discovery.innerTypesetter.state.outputQueue)
+function discovery:typesetCrossReference (xref)
+  self.innerTypesetter:leaveHmode(1)
+  local innerVbox = 
SILE.pagebuilder:collateVboxes(self.innerTypesetter.state.outputQueue)
   local mainVbox = 
SILE.pagebuilder:collateVboxes(SILE.typesetter.state.outputQueue)
 \end{verbatim}
 
@@ -357,7 +359,7 @@
 
 \begin{verbatim}
   if (innerVbox.height < mainVbox.height) then
-    discovery.innerTypesetter:pushVglue(\{ height = mainVbox.height - 
innerVbox.height \})
+    self.innerTypesetter:pushVglue(\{ height = mainVbox.height - 
innerVbox.height \})
   end
 \end{verbatim}
 
@@ -369,11 +371,11 @@
   SILE.settings:temporarily(function()
     SILE.settings:set("document.baselineskip", SILE.nodefactory.vglue("7pt"))
     SILE.call("font", \{size = "6pt", family="Helvetica", weight="800"\}, \{\})
-    
discovery.innerTypesetter:typeset(SILE.scratch.chapter..":"..SILE.scratch.verse.."
 ")
+    
self.innerTypesetter:typeset(SILE.scratch.chapter..":"..SILE.scratch.verse.." ")
     SILE.call("font", \{size = "6pt", family="Helvetica", weight="200"\}, \{\})
-    discovery.innerTypesetter:typeset(xref)
-    discovery.innerTypesetter:leaveHmode()
-    discovery.innerTypesetter:pushVglue(\{ height = SILE.length(\{length = 
4\}) \})
+    self.innerTypesetter:typeset(xref)
+    self.innerTypesetter:leaveHmode()
+    self.innerTypesetter:pushVglue(\{ height = SILE.length(\{length = 4\}) \})
   end)
 end
 \line
@@ -530,7 +532,7 @@
 62.3622054
 \end{verbatim}
 
-At any point during the evaluation of Lua commands, you can call 
\code{SILE.repl()} to enter the REPL and poke around;
+At any point during the evaluation of Lua commands, you can call 
\code{SILE.repl:enter()} to enter the REPL and poke around;
 hitting Ctrl-D will end the REPL and return to processing the document.
 
 Two alternative backends are also useful for debugging.
Binary files old/sile-0.14.6/documentation/sile.pdf and 
new/sile-0.14.7/documentation/sile.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/flake.nix new/sile-0.14.7/flake.nix
--- old/sile-0.14.6/flake.nix   2022-12-14 16:30:46.937375525 +0100
+++ new/sile-0.14.7/flake.nix   2022-12-30 21:13:33.331370749 +0100
@@ -38,7 +38,7 @@
       version_rev = if (self ? rev) then (builtins.substring 0 7 self.rev) 
else "dirty";
       # Prepare a different luaEnv to be used in the overridden expression,
       # this is also the place to choose a different lua interpreter, such as
-      # lua5_3 or luajit
+      # lua5_4 or luajit
       luaEnv = pkgs.lua5_3.withPackages(ps: with ps; [
         cassowary
         cldr
@@ -117,11 +117,13 @@
           inherit (sile) checkInputs nativeBuildInputs;
           buildInputs = sile.buildInputs ++ [
             pkgs.libarchive
+            pkgs.perl
+          ];
+          luaEnv = luaEnv + pkgs.lua5_3.withPackages(ps: with ps; [
             pkgs.lua53Packages.busted
             pkgs.lua53Packages.luacheck
             pkgs.lua53Packages.luarocks
-            pkgs.perl
-          ];
+          ]);
         };
       };
       packages.sile = sile;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/inputters/sil.lua 
new/sile-0.14.7/inputters/sil.lua
--- old/sile-0.14.6/inputters/sil.lua   2022-12-14 16:30:46.937375525 +0100
+++ new/sile-0.14.7/inputters/sil.lua   2022-12-30 21:13:33.331370749 +0100
@@ -203,22 +203,20 @@
   resetCache()
   local top = massage_ast(parsed, doc)
   local tree
+  -- Content not part of a tagged command could either be part of a document
+  -- fragment or junk (e.g. comments, whitespace) outside of a document tag. We
+  -- need to either capture the document tag only or decide this is a fragment
+  -- and wrap it in a document tag.
   for _, leaf in ipairs(top) do
-    -- Content without position tracking is likely comments or whitespace 
outside of a tag.
-    -- We're just fishing for one tag here.
-    if leaf.lno and leaf.command then
-      if tree then
-        SU.error("Document has more than one parent node that looks like a 
master document!")
-      end
-      tree = leaf
+    if leaf.command and (leaf.command == "document" or leaf.command == "sile") 
then
+        tree = leaf
+        break
     end
   end
+  -- In the event we didn't isolate a top level document tag above, assume this
+  -- is a fragment and wrap it in one.
   if not tree then
-    SU.error("This isn't a SILE document!")
-  end
-  local rootelement = tree.command
-  if rootelement ~= "sile" and rootelement ~= "document" then
-    tree = { tree, command = "document" }
+    tree = { top, command = "document" }
   end
   return { tree }
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/outputters/libtexpdf.lua 
new/sile-0.14.7/outputters/libtexpdf.lua
--- old/sile-0.14.6/outputters/libtexpdf.lua    2022-12-14 16:30:46.965376210 
+0100
+++ new/sile-0.14.7/outputters/libtexpdf.lua    2022-12-30 21:13:33.359371135 
+0100
@@ -145,7 +145,7 @@
     pdf.setdirmode(0)
   end
   _font = pdf.loadfont(font)
-  if _font < 0 then SU.error("Font loading error for "..options) end
+  if _font < 0 then SU.error("Font loading error for " .. 
pl.pretty.write(options, "")) end
   lastkey = key
   return _font
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/package.json new/sile-0.14.7/package.json
--- old/sile-0.14.6/package.json        2022-12-14 16:30:46.965376210 +0100
+++ new/sile-0.14.7/package.json        2022-12-30 21:13:33.359371135 +0100
@@ -1,6 +1,6 @@
 {
   "name": "sile",
-  "version": "0.14.6",
+  "version": "0.14.7",
   "description": "The SILE Typesetter",
   "main": "sile",
   "scripts": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/sile.1 new/sile-0.14.7/sile.1
--- old/sile-0.14.6/sile.1      2022-12-14 16:31:17.594043039 +0100
+++ new/sile-0.14.7/sile.1      2022-12-30 21:14:01.759492835 +0100
@@ -1,4 +1,4 @@
-.TH sile 1 "28 July 2022" "version v0.14.6"
+.TH sile 1 "28 July 2022" "version v0.14.7"
 .SH NAME
 sile \- Simon's Improved Layout Engine
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/src/Makefile.in 
new/sile-0.14.7/src/Makefile.in
--- old/sile-0.14.6/src/Makefile.in     2022-12-14 16:31:14.165997417 +0100
+++ new/sile-0.14.7/src/Makefile.in     2022-12-30 21:13:58.355492728 +0100
@@ -339,6 +339,7 @@
 FIND = @FIND@
 FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
 FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
+FONT_DOWNLOAD_TOOLS = @FONT_DOWNLOAD_TOOLS@
 FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
 FREETYPE_LIBS = @FREETYPE_LIBS@
 GIT = @GIT@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/src/justenoughharfbuzz.c 
new/sile-0.14.7/src/justenoughharfbuzz.c
--- old/sile-0.14.6/src/justenoughharfbuzz.c    2022-12-14 16:30:46.973376406 
+0100
+++ new/sile-0.14.7/src/justenoughharfbuzz.c    2022-12-30 21:13:33.367371245 
+0100
@@ -152,8 +152,6 @@
     if (strlen(shaper_list_string) > 0) {
       shaper_list = scan_shaper_list(shaper_list_string);
     }
-    hb_segment_properties_t segment_props;
-    hb_shape_plan_t *shape_plan;
 
     hb_direction_t direction;
     hb_feature_t* features;
@@ -180,6 +178,9 @@
     unsigned int upem = hb_face_get_upem(hbFace);
     hb_font_set_scale(hbFont, upem, upem);
 
+    hb_variation_t opsz = { HB_TAG('o', 'p', 's', 'z'), point_size };
+    hb_font_set_variations(hbFont, &opsz, 1);
+
     if (can_use_ot_funcs(hbFace)) {
       hb_ot_font_set_funcs(hbFont);
     } else {
@@ -198,9 +199,7 @@
     hb_buffer_set_language(buf, hb_language_from_string(lang,strlen(lang)));
 
     hb_buffer_guess_segment_properties(buf);
-    hb_buffer_get_segment_properties(buf, &segment_props);
-    shape_plan = hb_shape_plan_create_cached(hbFace, &segment_props, features, 
nFeatures, shaper_list);
-    int res = hb_shape_plan_execute(shape_plan, hbFont, buf, features, 
nFeatures);
+    int res = hb_shape_full (hbFont, buf, features, nFeatures, shaper_list);
 
     if (direction == HB_DIRECTION_RTL) {
       hb_buffer_reverse(buf); /* URGH */
@@ -282,7 +281,6 @@
     hb_font_destroy(hbFont);
     hb_face_destroy(hbFace);
     hb_blob_destroy(blob);
-    hb_shape_plan_destroy(shape_plan);
 
     free(features);
     return glyph_count;
@@ -302,6 +300,9 @@
   unsigned int upem = hb_face_get_upem(hbFace);
   hb_font_set_scale(hbFont, upem, upem);
 
+  hb_variation_t opsz = { HB_TAG('o', 'p', 's', 'z'), point_size };
+  hb_font_set_variations(hbFont, &opsz, 1);
+
   if (can_use_ot_funcs(hbFace)) {
     hb_ot_font_set_funcs(hbFont);
   } else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/tests/bug-1069.expected 
new/sile-0.14.7/tests/bug-1069.expected
--- old/sile-0.14.6/tests/bug-1069.expected     1970-01-01 01:00:00.000000000 
+0100
+++ new/sile-0.14.7/tests/bug-1069.expected     2022-12-30 21:13:33.375371355 
+0100
@@ -0,0 +1,8 @@
+Set paper size         297.6377985     419.5275636
+Begin page
+Mx     14.8819
+My     28.5447
+Set font       Gentium Plus;10;800;;normal;;LTR
+T      73 82 82 w=13.1689      (foo)
+End page
+Finish
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/tests/bug-1069.sil 
new/sile-0.14.7/tests/bug-1069.sil
--- old/sile-0.14.6/tests/bug-1069.sil  1970-01-01 01:00:00.000000000 +0100
+++ new/sile-0.14.7/tests/bug-1069.sil  2022-12-30 21:13:33.375371355 +0100
@@ -0,0 +1,14 @@
+\begin[papersize=a6]{document}
+\neverindent
+\nofolios
+\begin{lua}
+SILE.registerCommand("a", function (_, content)
+    local weight = SILE.typesetter.breadcrumbs:parent(1) == "b" and 800 or 800
+       SILE.call("font", { weight = weight }, content)
+end)
+SILE.registerCommand("b", function (_, content)
+       SILE.process(content)
+end)
+\end{lua}
+\b{\a{foo}}
+\end{document}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/tests/bug-1674.expected 
new/sile-0.14.7/tests/bug-1674.expected
--- old/sile-0.14.6/tests/bug-1674.expected     1970-01-01 01:00:00.000000000 
+0100
+++ new/sile-0.14.7/tests/bug-1674.expected     2022-12-30 21:13:33.375371355 
+0100
@@ -0,0 +1,13 @@
+Set paper size         297.6377985     419.5275636
+Begin page
+Mx     14.8819
+My     28.3983
+Set font       Gentium Plus;10;400;;normal;;LTR
+T      41 82 82 w=14.8389      (Foo)
+Mx     32.3878
+Set font       Gentium Plus;10;400;Italic;normal;;LTR
+T      69 68 85 w=12.7197      (bar)
+Mx     47.7745
+T      69 68 93 w=12.9590      (baz)
+End page
+Finish
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.6/tests/bug-1674.sil 
new/sile-0.14.7/tests/bug-1674.sil
--- old/sile-0.14.6/tests/bug-1674.sil  1970-01-01 01:00:00.000000000 +0100
+++ new/sile-0.14.7/tests/bug-1674.sil  2022-12-30 21:13:33.375371355 +0100
@@ -0,0 +1,5 @@
+\begin[papersize=a6]{document}
+\neverindent
+\nofolios
+\script{SILE.processString("Foo \\em{bar} \\em{baz}", "sil")}
+\end{document}

Reply via email to