summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2019-06-01 22:12:48 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2019-06-01 22:12:48 +0200
commit822d6299d6c28fe3780ff40831ec5c00c60133f5 (patch)
tree365fa79c20cb515efe97785cdf59430ab17a1e8f
parente2658addf306f729945c184e46f98df39dd7026c (diff)
downloadcontext-822d6299d6c28fe3780ff40831ec5c00c60133f5.tar.gz
2019-06-01 19:20:00
-rw-r--r--doc/context/documents/general/manuals/workflows-mkiv.pdfbin121251 -> 82860 bytes
-rw-r--r--doc/context/documents/general/manuals/xml-mkiv.pdfbin1008282 -> 899449 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-cs.pdfbin858594 -> 858533 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-de.pdfbin858447 -> 858499 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-en.pdfbin865449 -> 865472 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-fr.pdfbin857078 -> 857265 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-it.pdfbin862487 -> 862590 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-cs.pdfbin348788 -> 348749 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-de.pdfbin433312 -> 433242 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-en.pdfbin346043 -> 346069 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-fr.pdfbin348964 -> 349143 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-it.pdfbin347392 -> 347484 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-nl.pdfbin346723 -> 346901 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-mapping-ro.pdfbin510448 -> 510541 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-nl.pdfbin852039 -> 852227 bytes
-rw-r--r--doc/context/documents/general/qrcs/setup-ro.pdfbin856073 -> 856176 bytes
-rw-r--r--doc/context/scripts/mkii/texmfstart.html2
-rw-r--r--doc/context/scripts/mkii/texmfstart.man2
-rw-r--r--doc/context/scripts/mkii/texmfstart.xml2
-rw-r--r--doc/context/scripts/mkiv/mtxrun.html2
-rw-r--r--doc/context/scripts/mkiv/mtxrun.man2
-rw-r--r--doc/context/scripts/mkiv/mtxrun.xml2
-rw-r--r--doc/context/sources/general/manuals/workflows/workflows-graphics.tex51
-rw-r--r--doc/context/sources/general/manuals/workflows/workflows-mkiv.tex2
-rw-r--r--metapost/context/base/mpiv/mp-tool.mpiv4
-rw-r--r--scripts/context/lua/mtx-unicode.lua25
-rw-r--r--scripts/context/lua/mtxrun.lua21
-rw-r--r--scripts/context/stubs/mswin/mtxrun.lua21
-rw-r--r--scripts/context/stubs/unix/mtxrun21
-rw-r--r--scripts/context/stubs/win64/mtxrun.lua21
-rw-r--r--tex/context/base/mkii/cont-new.mkii2
-rw-r--r--tex/context/base/mkii/context.mkii2
-rw-r--r--tex/context/base/mkii/mult-ro.mkii1
-rw-r--r--tex/context/base/mkiv/back-pdp.lua14
-rw-r--r--tex/context/base/mkiv/char-def.lua3969
-rw-r--r--tex/context/base/mkiv/char-ini.lua30
-rw-r--r--tex/context/base/mkiv/cont-new.mkiv2
-rw-r--r--tex/context/base/mkiv/context.mkiv3
-rw-r--r--tex/context/base/mkiv/font-ctx.lua248
-rw-r--r--tex/context/base/mkiv/font-imp-dimensions.lua2
-rw-r--r--tex/context/base/mkiv/lpdf-img.lua42
-rw-r--r--tex/context/base/mkiv/lxml-ini.mkiv4
-rw-r--r--tex/context/base/mkiv/mtx-context-markdown.tex92
-rw-r--r--tex/context/base/mkiv/node-tra.lua4
-rw-r--r--tex/context/base/mkiv/page-mix.lua128
-rw-r--r--tex/context/base/mkiv/page-mix.mkiv17
-rw-r--r--tex/context/base/mkiv/spac-ver.mkiv215
-rw-r--r--tex/context/base/mkiv/status-files.pdfbin26639 -> 26505 bytes
-rw-r--r--tex/context/base/mkiv/status-lua.pdfbin266566 -> 265692 bytes
-rw-r--r--tex/context/base/mkiv/strc-con.mkvi3
-rw-r--r--tex/context/base/mkiv/strc-sec.mkiv69
-rw-r--r--tex/context/base/mkiv/strc-tnt.mkiv120
-rw-r--r--tex/context/fonts/mkiv/type-imp-opendyslexic.mkiv53
-rw-r--r--tex/context/interface/mkii/keys-ro.xml1
-rw-r--r--tex/context/interface/mkiv/i-context.pdfbin865449 -> 865472 bytes
-rw-r--r--tex/context/interface/mkiv/i-readme.pdfbin61165 -> 61165 bytes
-rw-r--r--tex/context/modules/mkiv/m-markdown.lua824
-rw-r--r--tex/context/modules/mkiv/m-markdown.mkiv88
-rw-r--r--tex/context/modules/mkiv/m-punk.mkiv4
-rw-r--r--tex/context/modules/mkiv/s-maps.mkiv822
-rw-r--r--tex/context/modules/mkiv/x-pandoc.mkiv152
-rw-r--r--tex/context/sample/common/gray.tex3
-rw-r--r--tex/context/sample/common/samples.tex1
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
64 files changed, 5338 insertions, 1757 deletions
diff --git a/doc/context/documents/general/manuals/workflows-mkiv.pdf b/doc/context/documents/general/manuals/workflows-mkiv.pdf
index 1d34669e2..b63ecd054 100644
--- a/doc/context/documents/general/manuals/workflows-mkiv.pdf
+++ b/doc/context/documents/general/manuals/workflows-mkiv.pdf
Binary files differ
diff --git a/doc/context/documents/general/manuals/xml-mkiv.pdf b/doc/context/documents/general/manuals/xml-mkiv.pdf
index 6508f2ecc..bd538c215 100644
--- a/doc/context/documents/general/manuals/xml-mkiv.pdf
+++ b/doc/context/documents/general/manuals/xml-mkiv.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf
index 7679fdb76..2b1a2622c 100644
--- a/doc/context/documents/general/qrcs/setup-cs.pdf
+++ b/doc/context/documents/general/qrcs/setup-cs.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf
index 1cd01bed1..357501e49 100644
--- a/doc/context/documents/general/qrcs/setup-de.pdf
+++ b/doc/context/documents/general/qrcs/setup-de.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf
index 479e16737..fd58e5805 100644
--- a/doc/context/documents/general/qrcs/setup-en.pdf
+++ b/doc/context/documents/general/qrcs/setup-en.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf
index 86f70bc73..8dce1fdc1 100644
--- a/doc/context/documents/general/qrcs/setup-fr.pdf
+++ b/doc/context/documents/general/qrcs/setup-fr.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf
index 7b863fabf..6f10683f4 100644
--- a/doc/context/documents/general/qrcs/setup-it.pdf
+++ b/doc/context/documents/general/qrcs/setup-it.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
index 6c13ca4af..0499538f3 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/doc/context/documents/general/qrcs/setup-mapping-de.pdf
index 1675610f4..63e8b8585 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-de.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-de.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/doc/context/documents/general/qrcs/setup-mapping-en.pdf
index 561220390..1f5124d5e 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-en.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-en.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
index a99ea5ac6..526271805 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/doc/context/documents/general/qrcs/setup-mapping-it.pdf
index db48c25d7..6663131d2 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-it.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-it.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
index 8fed3b6f3..b1b4151cd 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
index 7d213c131..9769c32c6 100644
--- a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
+++ b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf
index d78433474..a6051bbb1 100644
--- a/doc/context/documents/general/qrcs/setup-nl.pdf
+++ b/doc/context/documents/general/qrcs/setup-nl.pdf
Binary files differ
diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf
index 251dbb387..c6c7bee9d 100644
--- a/doc/context/documents/general/qrcs/setup-ro.pdf
+++ b/doc/context/documents/general/qrcs/setup-ro.pdf
Binary files differ
diff --git a/doc/context/scripts/mkii/texmfstart.html b/doc/context/scripts/mkii/texmfstart.html
index e7656a159..deb6a2cd1 100644
--- a/doc/context/scripts/mkii/texmfstart.html
+++ b/doc/context/scripts/mkii/texmfstart.html
@@ -40,7 +40,7 @@
<tr><th style="width: 10em">flag</th><th style="width: 8em">value</th><th>description</th></tr>
<tr><th/><td/><td/></tr>
<tr><th>--script</th><td></td><td>run an mtx script (lua prefered method) (--noquotes), no script gives list</td></tr>
- <tr><th>--evaluate</th><td></td><td>run code passed on the commandline (between quotes)</td></tr>
+ <tr><th>--evaluate</th><td></td><td>run code passed on the commandline (between quotes) (=loop) (exit|quit aborts)</td></tr>
<tr><th>--execute</th><td></td><td>run a script or program (texmfstart method) (--noquotes)</td></tr>
<tr><th>--resolve</th><td></td><td>resolve prefixed arguments</td></tr>
<tr><th>--ctxlua</th><td></td><td>run internally (using preloaded libs)</td></tr>
diff --git a/doc/context/scripts/mkii/texmfstart.man b/doc/context/scripts/mkii/texmfstart.man
index 80aba7580..4bd27c02b 100644
--- a/doc/context/scripts/mkii/texmfstart.man
+++ b/doc/context/scripts/mkii/texmfstart.man
@@ -15,7 +15,7 @@
run an mtx script (lua prefered method) (--noquotes), no script gives list
.TP
.B --evaluate
-run code passed on the commandline (between quotes)
+run code passed on the commandline (between quotes) (=loop) (exit|quit aborts)
.TP
.B --execute
run a script or program (texmfstart method) (--noquotes)
diff --git a/doc/context/scripts/mkii/texmfstart.xml b/doc/context/scripts/mkii/texmfstart.xml
index 8f501ff66..2b54833d0 100644
--- a/doc/context/scripts/mkii/texmfstart.xml
+++ b/doc/context/scripts/mkii/texmfstart.xml
@@ -8,7 +8,7 @@
<category name="basic">
<subcategory>
<flag name="script"><short>run an mtx script (lua prefered method) (<ref name="noquotes"/>), no script gives list</short></flag>
- <flag name="evaluate"><short>run code passed on the commandline (between quotes)</short></flag>
+ <flag name="evaluate"><short>run code passed on the commandline (between quotes) (=loop) (exit|quit aborts)</short></flag>
<flag name="execute"><short>run a script or program (texmfstart method) (<ref name="noquotes"/>)</short></flag>
<flag name="resolve"><short>resolve prefixed arguments</short></flag>
<flag name="ctxlua"><short>run internally (using preloaded libs)</short></flag>
diff --git a/doc/context/scripts/mkiv/mtxrun.html b/doc/context/scripts/mkiv/mtxrun.html
index f0eef2ae7..01d08f8cd 100644
--- a/doc/context/scripts/mkiv/mtxrun.html
+++ b/doc/context/scripts/mkiv/mtxrun.html
@@ -40,7 +40,7 @@
<tr><th style="width: 10em">flag</th><th style="width: 8em">value</th><th>description</th></tr>
<tr><th/><td/><td/></tr>
<tr><th>--script</th><td></td><td>run an mtx script (lua prefered method) (--noquotes), no script gives list</td></tr>
- <tr><th>--evaluate</th><td></td><td>run code passed on the commandline (between quotes)</td></tr>
+ <tr><th>--evaluate</th><td></td><td>run code passed on the commandline (between quotes) (=loop) (exit|quit aborts)</td></tr>
<tr><th>--execute</th><td></td><td>run a script or program (texmfstart method) (--noquotes)</td></tr>
<tr><th>--resolve</th><td></td><td>resolve prefixed arguments</td></tr>
<tr><th>--ctxlua</th><td></td><td>run internally (using preloaded libs)</td></tr>
diff --git a/doc/context/scripts/mkiv/mtxrun.man b/doc/context/scripts/mkiv/mtxrun.man
index 80aba7580..4bd27c02b 100644
--- a/doc/context/scripts/mkiv/mtxrun.man
+++ b/doc/context/scripts/mkiv/mtxrun.man
@@ -15,7 +15,7 @@
run an mtx script (lua prefered method) (--noquotes), no script gives list
.TP
.B --evaluate
-run code passed on the commandline (between quotes)
+run code passed on the commandline (between quotes) (=loop) (exit|quit aborts)
.TP
.B --execute
run a script or program (texmfstart method) (--noquotes)
diff --git a/doc/context/scripts/mkiv/mtxrun.xml b/doc/context/scripts/mkiv/mtxrun.xml
index 5e2c81c9f..a3fcb0c17 100644
--- a/doc/context/scripts/mkiv/mtxrun.xml
+++ b/doc/context/scripts/mkiv/mtxrun.xml
@@ -9,7 +9,7 @@
<category name="basic">
<subcategory>
<flag name="script"><short>run an mtx script (lua prefered method) (<ref name="noquotes"/>), no script gives list</short></flag>
- <flag name="evaluate"><short>run code passed on the commandline (between quotes)</short></flag>
+ <flag name="evaluate"><short>run code passed on the commandline (between quotes) (=loop) (exit|quit aborts)</short></flag>
<flag name="execute"><short>run a script or program (texmfstart method) (<ref name="noquotes"/>)</short></flag>
<flag name="resolve"><short>resolve prefixed arguments</short></flag>
<flag name="ctxlua"><short>run internally (using preloaded libs)</short></flag>
diff --git a/doc/context/sources/general/manuals/workflows/workflows-graphics.tex b/doc/context/sources/general/manuals/workflows/workflows-graphics.tex
index 55a8ad701..2cff143f4 100644
--- a/doc/context/sources/general/manuals/workflows/workflows-graphics.tex
+++ b/doc/context/sources/general/manuals/workflows/workflows-graphics.tex
@@ -145,9 +145,54 @@ of special and only makes sense when you use the graphic database options. The
and how conversion of images takes place.
The \type {graphics.lognames} will make sure that some extra information about
-used graphics is saved in the log file, while \type {graphics.usage} will produce
-a file \typ {<jobname>-figures-usage.lua} that contains information about found
-(or not found) images and the way they are used.
+used graphics is saved in the log file, The \type {graphics.usage} tracker will
+produce a file \typ {<jobname>-figures-usage.lua} that contains information about
+found (or not found) images and the way they are used.
+
+\stopsection
+
+\startsection[title=Compression]
+
+A \PNG\ image uses several methods for compression. The image data itself can be
+compacted by taking pixels around each individual pixel into account. Storing
+deltas instead of absolute values can for instance result in strips of zeros.
+These in turn compress well using zlib compression. Each scanline starts with a
+filterbyte that indicates how to look at the surrounding pixels. While in \PDF\ a
+\JPEG\ image is included as|-|is, a \PNG\ often take a bit more work. A
+(optional) mask has to be split off, as does an (optional) index. In the worst
+case we need to deinterlace. The \PNG\ inclusion mechanism in \CONTEXT\ \LMTX\
+takes care of this in an as efficient as possible way. Nevertheless there are
+some knobs you can turn:
+
+\starttyping
+\enabledirectives[graphics.png.recompress]
+\enabledirectives[graphics.png.compresslevel=9]
+\stoptyping
+
+A higher compress level makes the run somewhat smaller but also fives smaller
+files. The default compress level is~3. When an image doesn't need to be
+transformed (due to mask, index or interlace), you have to force recompression
+with the \type {recompress} directive. The sample image \type {mill.png} has a
+size of \type {154,869} bytes.
+
+\starttyping
+\startTEXpage
+ \externalfigure[mill.png]
+\stopTEXpage
+\stoptyping
+
+The next table shows the consequences of setting the directives. The runtime is
+of course dependent of the machine you run the sample on. If you have lots of
+images it might make sense to have a final run with a higher compress level. The
+\PDF\ file has some extra overhead (like metadata and page related information).
+
+\starttabulate[|l|c|c|c|]
+\BC \BC compression \BC filesize \BC runtime \NC \NR
+\BC default \NC \NC 156,964 \NC 0.516 \NC \NR
+\BC recompress \NC 3 \NC 144,418 \NC 0.531 \NC \NR
+\BC compresslevel \NC 0 \NC 281,071 \NC 0.516 \NC \NR
+\BC compresslevel \NC 9 \NC 137,375 \NC 0.547 \NC \NR
+\stoptabulate
\stopsection
diff --git a/doc/context/sources/general/manuals/workflows/workflows-mkiv.tex b/doc/context/sources/general/manuals/workflows/workflows-mkiv.tex
index 52070c49e..a6d29ac42 100644
--- a/doc/context/sources/general/manuals/workflows/workflows-mkiv.tex
+++ b/doc/context/sources/general/manuals/workflows/workflows-mkiv.tex
@@ -15,7 +15,7 @@
% Group journal or otherwise. Thanks to the editors for corrections. Also thanks
% to users for testing, feedback and corrections.
-\setupbackend[export=yes]
+% \setupbackend[export=yes]
\environment workflows-style
diff --git a/metapost/context/base/mpiv/mp-tool.mpiv b/metapost/context/base/mpiv/mp-tool.mpiv
index 2cdb5fb39..cabdf9ab2 100644
--- a/metapost/context/base/mpiv/mp-tool.mpiv
+++ b/metapost/context/base/mpiv/mp-tool.mpiv
@@ -1392,7 +1392,7 @@ def drawcontrollines expr c = path _c_ ; _c_ := c ; mfun_draw_controllines end
def drawpointlabels expr c = path _c_ ; _c_ := c ; mfun_draw_pointlabels enddef ;
def mfun_draw_points text t =
- for _i_=0 upto length(_c_) :
+ for _i_=0 upto length(_c_) if cycle _c_ : -1 fi :
normaldraw point _i_ of _c_ _pnt_opt_ t ;
endfor ;
enddef;
@@ -1416,7 +1416,7 @@ numeric pointlabelscale ; pointlabelscale := 0 ;
string pointlabelfont ; pointlabelfont := "" ;
def mfun_draw_pointlabels text t =
- for _i_=0 upto length(_c_) :
+ for _i_=0 upto length(_c_) if cycle _c_ : -1 fi :
pair _u_ ; _u_ := unitvector(direction _i_ of _c_) rotated if swappointlabels : - fi 90 ;
pair _p_ ; _p_ := (point _i_ of _c_) ;
begingroup ;
diff --git a/scripts/context/lua/mtx-unicode.lua b/scripts/context/lua/mtx-unicode.lua
index fd6576646..85860ddfd 100644
--- a/scripts/context/lua/mtx-unicode.lua
+++ b/scripts/context/lua/mtx-unicode.lua
@@ -57,11 +57,11 @@ if not modules then modules = { } end modules ['mtx-unicode'] = {
-- curl -o unicodedata.txt http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
-- curl -o unihan.zip http://www.unicode.org/Public/UNIDATA/Unihan.zip
--
--- curl -o emoji-data.txt http://unicode.org/Public/emoji/11.0/emoji-data.txt
--- curl -o emoji-sequences.txt http://unicode.org/Public/emoji/11.0/emoji-sequences.txt
--- curl -o emoji-variation-sequences.txt http://unicode.org/Public/emoji/11.0/emoji-variation-sequences.txt
--- curl -o emoji-zwj-sequences.txt http://unicode.org/Public/emoji/11.0/emoji-zwj-sequences.txt
--- curl -o emoji-test.txt http://unicode.org/Public/emoji/11.0/emoji-test.txt
+-- curl -o emoji-data.txt http://unicode.org/Public/emoji/12.0/emoji-data.txt
+-- curl -o emoji-sequences.txt http://unicode.org/Public/emoji/12.0/emoji-sequences.txt
+-- curl -o emoji-variation-sequences.txt http://unicode.org/Public/emoji/12.0/emoji-variation-sequences.txt
+-- curl -o emoji-zwj-sequences.txt http://unicode.org/Public/emoji/12.0/emoji-zwj-sequences.txt
+-- curl -o emoji-test.txt http://unicode.org/Public/emoji/12.0/emoji-test.txt
--
-- todo:
--
@@ -526,10 +526,21 @@ function scripts.unicode.load()
end
end
+-- local variants_emoji={
+-- [0xFE0E]="text style",
+-- [0xFE0F]="emoji style",
+-- }
+--
+-- local variants_forms={
+-- [0xFE00]="corner-justified form",
+-- [0xFE01]="centered form",
+-- }
+
function scripts.unicode.save(filename)
if preamble then
local data = table.serialize(characters.data,"characters.data", { hexify = true, noquotes = true })
data = gsub(data,"%{%s+%[0xFE0E%]=\"text style\",%s+%[0xFE0F%]=\"emoji style\",%s+%}","variants_emoji")
+ data = gsub(data,"%{%s+%[0xFE00%]=\"corner%-justified form\",%s+%[0xFE01%]=\"centered form\",%s+%}","variants_forms")
io.savedata(filename,preamble .. data)
end
end
@@ -722,8 +733,10 @@ else
scripts.unicode.extras()
scripts.unicode.save("char-def-new.lua")
scripts.unicode.emoji("char-emj-new.lua")
+ report("saved file %a","char-def-new.lua")
+ report("saved file %a (current 12.0, check for updates, see above!)","char-emj-new.lua")
else
report("nothing to do")
end
- report("stop working on %a, output char-def-new.lua\n",lfs.currentdir())
+ report("stop working on %a\n",lfs.currentdir())
end
diff --git a/scripts/context/lua/mtxrun.lua b/scripts/context/lua/mtxrun.lua
index 89e23d8ae..f7e67d91e 100644
--- a/scripts/context/lua/mtxrun.lua
+++ b/scripts/context/lua/mtxrun.lua
@@ -25910,7 +25910,7 @@ local helpinfo = [[
<category name="basic">
<subcategory>
<flag name="script"><short>run an mtx script (lua prefered method) (<ref name="noquotes"/>), no script gives list</short></flag>
- <flag name="evaluate"><short>run code passed on the commandline (between quotes)</short></flag>
+ <flag name="evaluate"><short>run code passed on the commandline (between quotes) (=loop) (exit|quit aborts)</short></flag>
<flag name="execute"><short>run a script or program (texmfstart method) (<ref name="noquotes"/>)</short></flag>
<flag name="resolve"><short>resolve prefixed arguments</short></flag>
<flag name="ctxlua"><short>run internally (using preloaded libs)</short></flag>
@@ -26581,16 +26581,22 @@ function runners.associate(filename)
end
function runners.evaluate(code,filename) -- for Luigi
+ local environment = table.setmetatableindex(_G)
if code == "loop" then
while true do
- io.write("> ")
+ io.write("lua > ")
local code = io.read()
- if code ~= "" then
+ if code == "quit" or code == "exit" then
+ break
+ elseif code ~= "" then
local temp = string.match(code,"^= (.*)$")
if temp then
- code = "print("..temp..")"
+ code = "inspect("..temp..")"
+ end
+ local compiled, message = load(code,"console","t",environment)
+ if type(compiled) ~= "function" then
+ compiled = load("inspect("..code..")","console","t",environment)
end
- local compiled, message = loadstring(code)
if type(compiled) ~= "function" then
io.write("! " .. (message or code).."\n")
else
@@ -26603,7 +26609,10 @@ function runners.evaluate(code,filename) -- for Luigi
code = filename
end
if code ~= "" then
- local compiled, message = loadstring(code)
+ local compiled, message = load(code,"console","t",environment)
+ if type(compiled) ~= "function" then
+ compiled = load("inspect("..code..")","console","t",environment)
+ end
if type(compiled) ~= "function" then
io.write("invalid lua code: " .. (message or code))
return
diff --git a/scripts/context/stubs/mswin/mtxrun.lua b/scripts/context/stubs/mswin/mtxrun.lua
index 89e23d8ae..f7e67d91e 100644
--- a/scripts/context/stubs/mswin/mtxrun.lua
+++ b/scripts/context/stubs/mswin/mtxrun.lua
@@ -25910,7 +25910,7 @@ local helpinfo = [[
<category name="basic">
<subcategory>
<flag name="script"><short>run an mtx script (lua prefered method) (<ref name="noquotes"/>), no script gives list</short></flag>
- <flag name="evaluate"><short>run code passed on the commandline (between quotes)</short></flag>
+ <flag name="evaluate"><short>run code passed on the commandline (between quotes) (=loop) (exit|quit aborts)</short></flag>
<flag name="execute"><short>run a script or program (texmfstart method) (<ref name="noquotes"/>)</short></flag>
<flag name="resolve"><short>resolve prefixed arguments</short></flag>
<flag name="ctxlua"><short>run internally (using preloaded libs)</short></flag>
@@ -26581,16 +26581,22 @@ function runners.associate(filename)
end
function runners.evaluate(code,filename) -- for Luigi
+ local environment = table.setmetatableindex(_G)
if code == "loop" then
while true do
- io.write("> ")
+ io.write("lua > ")
local code = io.read()
- if code ~= "" then
+ if code == "quit" or code == "exit" then
+ break
+ elseif code ~= "" then
local temp = string.match(code,"^= (.*)$")
if temp then
- code = "print("..temp..")"
+ code = "inspect("..temp..")"
+ end
+ local compiled, message = load(code,"console","t",environment)
+ if type(compiled) ~= "function" then
+ compiled = load("inspect("..code..")","console","t",environment)
end
- local compiled, message = loadstring(code)
if type(compiled) ~= "function" then
io.write("! " .. (message or code).."\n")
else
@@ -26603,7 +26609,10 @@ function runners.evaluate(code,filename) -- for Luigi
code = filename
end
if code ~= "" then
- local compiled, message = loadstring(code)
+ local compiled, message = load(code,"console","t",environment)
+ if type(compiled) ~= "function" then
+ compiled = load("inspect("..code..")","console","t",environment)
+ end
if type(compiled) ~= "function" then
io.write("invalid lua code: " .. (message or code))
return
diff --git a/scripts/context/stubs/unix/mtxrun b/scripts/context/stubs/unix/mtxrun
index 89e23d8ae..f7e67d91e 100644
--- a/scripts/context/stubs/unix/mtxrun
+++ b/scripts/context/stubs/unix/mtxrun
@@ -25910,7 +25910,7 @@ local helpinfo = [[
<category name="basic">
<subcategory>
<flag name="script"><short>run an mtx script (lua prefered method) (<ref name="noquotes"/>), no script gives list</short></flag>
- <flag name="evaluate"><short>run code passed on the commandline (between quotes)</short></flag>
+ <flag name="evaluate"><short>run code passed on the commandline (between quotes) (=loop) (exit|quit aborts)</short></flag>
<flag name="execute"><short>run a script or program (texmfstart method) (<ref name="noquotes"/>)</short></flag>
<flag name="resolve"><short>resolve prefixed arguments</short></flag>
<flag name="ctxlua"><short>run internally (using preloaded libs)</short></flag>
@@ -26581,16 +26581,22 @@ function runners.associate(filename)
end
function runners.evaluate(code,filename) -- for Luigi
+ local environment = table.setmetatableindex(_G)
if code == "loop" then
while true do
- io.write("> ")
+ io.write("lua > ")
local code = io.read()
- if code ~= "" then
+ if code == "quit" or code == "exit" then
+ break
+ elseif code ~= "" then
local temp = string.match(code,"^= (.*)$")
if temp then
- code = "print("..temp..")"
+ code = "inspect("..temp..")"
+ end
+ local compiled, message = load(code,"console","t",environment)
+ if type(compiled) ~= "function" then
+ compiled = load("inspect("..code..")","console","t",environment)
end
- local compiled, message = loadstring(code)
if type(compiled) ~= "function" then
io.write("! " .. (message or code).."\n")
else
@@ -26603,7 +26609,10 @@ function runners.evaluate(code,filename) -- for Luigi
code = filename
end
if code ~= "" then
- local compiled, message = loadstring(code)
+ local compiled, message = load(code,"console","t",environment)
+ if type(compiled) ~= "function" then
+ compiled = load("inspect("..code..")","console","t",environment)
+ end
if type(compiled) ~= "function" then
io.write("invalid lua code: " .. (message or code))
return
diff --git a/scripts/context/stubs/win64/mtxrun.lua b/scripts/context/stubs/win64/mtxrun.lua
index 89e23d8ae..f7e67d91e 100644
--- a/scripts/context/stubs/win64/mtxrun.lua
+++ b/scripts/context/stubs/win64/mtxrun.lua
@@ -25910,7 +25910,7 @@ local helpinfo = [[
<category name="basic">
<subcategory>
<flag name="script"><short>run an mtx script (lua prefered method) (<ref name="noquotes"/>), no script gives list</short></flag>
- <flag name="evaluate"><short>run code passed on the commandline (between quotes)</short></flag>
+ <flag name="evaluate"><short>run code passed on the commandline (between quotes) (=loop) (exit|quit aborts)</short></flag>
<flag name="execute"><short>run a script or program (texmfstart method) (<ref name="noquotes"/>)</short></flag>
<flag name="resolve"><short>resolve prefixed arguments</short></flag>
<flag name="ctxlua"><short>run internally (using preloaded libs)</short></flag>
@@ -26581,16 +26581,22 @@ function runners.associate(filename)
end
function runners.evaluate(code,filename) -- for Luigi
+ local environment = table.setmetatableindex(_G)
if code == "loop" then
while true do
- io.write("> ")
+ io.write("lua > ")
local code = io.read()
- if code ~= "" then
+ if code == "quit" or code == "exit" then
+ break
+ elseif code ~= "" then
local temp = string.match(code,"^= (.*)$")
if temp then
- code = "print("..temp..")"
+ code = "inspect("..temp..")"
+ end
+ local compiled, message = load(code,"console","t",environment)
+ if type(compiled) ~= "function" then
+ compiled = load("inspect("..code..")","console","t",environment)
end
- local compiled, message = loadstring(code)
if type(compiled) ~= "function" then
io.write("! " .. (message or code).."\n")
else
@@ -26603,7 +26609,10 @@ function runners.evaluate(code,filename) -- for Luigi
code = filename
end
if code ~= "" then
- local compiled, message = loadstring(code)
+ local compiled, message = load(code,"console","t",environment)
+ if type(compiled) ~= "function" then
+ compiled = load("inspect("..code..")","console","t",environment)
+ end
if type(compiled) ~= "function" then
io.write("invalid lua code: " .. (message or code))
return
diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii
index 704b2df88..ce041e206 100644
--- a/tex/context/base/mkii/cont-new.mkii
+++ b/tex/context/base/mkii/cont-new.mkii
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2019.05.29 19:11}
+\newcontextversion{2019.06.01 19:11}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
diff --git a/tex/context/base/mkii/context.mkii b/tex/context/base/mkii/context.mkii
index 814359e65..eac363a55 100644
--- a/tex/context/base/mkii/context.mkii
+++ b/tex/context/base/mkii/context.mkii
@@ -20,7 +20,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2019.05.29 19:11}
+\edef\contextversion{2019.06.01 19:11}
%D For those who want to use this:
diff --git a/tex/context/base/mkii/mult-ro.mkii b/tex/context/base/mkii/mult-ro.mkii
index 0f70d88c0..ba43a7cb2 100644
--- a/tex/context/base/mkii/mult-ro.mkii
+++ b/tex/context/base/mkii/mult-ro.mkii
@@ -570,6 +570,7 @@
\setinterfacevariable{temporary}{temporar}
\setinterfacevariable{test}{test}
\setinterfacevariable{text}{text}
+\setinterfacevariable{textnote}{textnote}
\setinterfacevariable{three}{trei}
\setinterfacevariable{thursday}{joi}
\setinterfacevariable{tight}{tight}
diff --git a/tex/context/base/mkiv/back-pdp.lua b/tex/context/base/mkiv/back-pdp.lua
index 6360dea47..6111cf469 100644
--- a/tex/context/base/mkiv/back-pdp.lua
+++ b/tex/context/base/mkiv/back-pdp.lua
@@ -58,16 +58,20 @@ local function pdfobj()
local immediate = true
local objnum = scankeyword("useobjnum") and scaninteger() or lpdfreserveobject()
local uncompress = scankeyword("uncompressed") or lpdfcompresslevel() == 0
- local streamobject = scankeyword("stream") and true or false
- local attributes = scankeyword("attr") and scanstring()
+ local streamobject = scankeyword("stream")
+ local attributes = scankeyword("attr") and scanstring() or nil
local fileobject = scankeyword("file")
local content = scanstring()
- local object = {
+ local object = streamobject and {
+ type = "stream",
+ objnum = objnum,
immediate = immediate,
attr = attributes,
- objnum = objnum,
- type = streamobject and "stream" or nil,
compresslevel = uncompress and 0 or nil,
+ } or {
+ type = "raw",
+ objnum = objnum,
+ immediate = immediate,
}
if fileobject then
object.filename = content
diff --git a/tex/context/base/mkiv/char-def.lua b/tex/context/base/mkiv/char-def.lua
index c17400a79..b51250ce5 100644
--- a/tex/context/base/mkiv/char-def.lua
+++ b/tex/context/base/mkiv/char-def.lua
@@ -26,6 +26,11 @@ local variants_emoji={
[0xFE0F]="emoji style",
}
+local variants_forms={
+ [0xFE00]="corner-justified form",
+ [0xFE01]="centered form",
+}
+
characters = characters or { }
characters.data={
@@ -26593,6 +26598,13 @@ characters.data={
linebreak="nu",
unicodeslot=0xC6F,
},
+ [0xC77]={
+ category="po",
+ description="TELUGU SIGN SIDDHAM",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0xC77,
+ },
[0xC78]={
category="no",
description="TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR",
@@ -29741,6 +29753,13 @@ characters.data={
linebreak="sa",
unicodeslot=0xE84,
},
+ [0xE86]={
+ category="lo",
+ description="LAO LETTER PALI GHA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xE86,
+ },
[0xE87]={
category="lo",
description="LAO LETTER NGO",
@@ -29755,6 +29774,13 @@ characters.data={
linebreak="sa",
unicodeslot=0xE88,
},
+ [0xE89]={
+ category="lo",
+ description="LAO LETTER PALI CHA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xE89,
+ },
[0xE8A]={
category="lo",
description="LAO LETTER SO TAM",
@@ -29762,6 +29788,13 @@ characters.data={
linebreak="sa",
unicodeslot=0xE8A,
},
+ [0xE8C]={
+ category="lo",
+ description="LAO LETTER PALI JHA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xE8C,
+ },
[0xE8D]={
category="lo",
description="LAO LETTER NYO",
@@ -29769,6 +29802,48 @@ characters.data={
linebreak="sa",
unicodeslot=0xE8D,
},
+ [0xE8E]={
+ category="lo",
+ description="LAO LETTER PALI NYA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xE8E,
+ },
+ [0xE8F]={
+ category="lo",
+ description="LAO LETTER PALI TTA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xE8F,
+ },
+ [0xE90]={
+ category="lo",
+ description="LAO LETTER PALI TTHA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xE90,
+ },
+ [0xE91]={
+ category="lo",
+ description="LAO LETTER PALI DDA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xE91,
+ },
+ [0xE92]={
+ category="lo",
+ description="LAO LETTER PALI DDHA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xE92,
+ },
+ [0xE93]={
+ category="lo",
+ description="LAO LETTER PALI NNA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xE93,
+ },
[0xE94]={
category="lo",
description="LAO LETTER DO",
@@ -29797,6 +29872,13 @@ characters.data={
linebreak="sa",
unicodeslot=0xE97,
},
+ [0xE98]={
+ category="lo",
+ description="LAO LETTER PALI DHA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xE98,
+ },
[0xE99]={
category="lo",
description="LAO LETTER NO",
@@ -29846,6 +29928,13 @@ characters.data={
linebreak="sa",
unicodeslot=0xE9F,
},
+ [0xEA0]={
+ category="lo",
+ description="LAO LETTER PALI BHA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xEA0,
+ },
[0xEA1]={
category="lo",
description="LAO LETTER MO",
@@ -29881,6 +29970,20 @@ characters.data={
linebreak="sa",
unicodeslot=0xEA7,
},
+ [0xEA8]={
+ category="lo",
+ description="LAO LETTER SANSKRIT SHA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xEA8,
+ },
+ [0xEA9]={
+ category="lo",
+ description="LAO LETTER SANSKRIT SSA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xEA9,
+ },
[0xEAA]={
category="lo",
description="LAO LETTER SO SUNG",
@@ -29895,6 +29998,13 @@ characters.data={
linebreak="sa",
unicodeslot=0xEAB,
},
+ [0xEAC]={
+ category="lo",
+ description="LAO LETTER PALI LLA",
+ direction="l",
+ linebreak="sa",
+ unicodeslot=0xEAC,
+ },
[0xEAD]={
category="lo",
description="LAO LETTER O",
@@ -29989,6 +30099,14 @@ characters.data={
linebreak="sa",
unicodeslot=0xEB9,
},
+ [0xEBA]={
+ category="mn",
+ combining=0x9,
+ description="LAO SIGN PALI VIRAMA",
+ direction="nsm",
+ linebreak="sa",
+ unicodeslot=0xEBA,
+ },
[0xEBB]={
category="mn",
description="LAO VOWEL SIGN MAI KON",
@@ -53570,14 +53688,14 @@ characters.data={
category="mc",
description="VEDIC SIGN ARDHAVISARGA",
direction="l",
- linebreak="cm",
+ linebreak="al",
unicodeslot=0x1CF2,
},
[0x1CF3]={
category="mc",
description="VEDIC SIGN ROTATED ARDHAVISARGA",
direction="l",
- linebreak="cm",
+ linebreak="al",
unicodeslot=0x1CF3,
},
[0x1CF4]={
@@ -53625,6 +53743,13 @@ characters.data={
linebreak="cm",
unicodeslot=0x1CF9,
},
+ [0x1CFA]={
+ category="lo",
+ description="VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1CFA,
+ },
[0x1D00]={
category="ll",
description="LATIN LETTER SMALL CAPITAL A",
@@ -85787,6 +85912,13 @@ characters.data={
linebreak="al",
unicodeslot=0x2BC8,
},
+ [0x2BC9]={
+ category="so",
+ description="NEPTUNE FORM TWO",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x2BC9,
+ },
[0x2BCA]={
category="so",
description="TOP HALF BLACK CIRCLE",
@@ -86159,6 +86291,13 @@ characters.data={
mirror=0x221F,
unicodeslot=0x2BFE,
},
+ [0x2BFF]={
+ category="so",
+ description="HELLSCHREIBER PAUSE SYMBOL",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x2BFF,
+ },
[0x2C00]={
category="lu",
description="GLAGOLITIC CAPITAL LETTER AZU",
@@ -90247,6 +90386,13 @@ characters.data={
linebreak="ba",
unicodeslot=0x2E4E,
},
+ [0x2E4F]={
+ category="po",
+ description="CORNISH VERSE DIVIDER",
+ direction="on",
+ linebreak="ba",
+ unicodeslot=0x2E4F,
+ },
[0x2E80]={
category="so",
cjkwd="w",
@@ -93210,6 +93356,7 @@ characters.data={
direction="on",
linebreak="cl",
unicodeslot=0x3001,
+ variants=variants_forms,
},
[0x3002]={
adobename="ideographicperiod",
@@ -93219,6 +93366,7 @@ characters.data={
direction="on",
linebreak="cl",
unicodeslot=0x3002,
+ variants=variants_forms,
},
[0x3003]={
adobename="dittomark",
@@ -100600,6 +100748,15 @@ characters.data={
specials={ "circle", 0x30F2 },
unicodeslot=0x32FE,
},
+ [0x32FF]={
+ category="so",
+ cjkwd="w",
+ description="SQUARE ERA NAME REIWA",
+ direction="l",
+ linebreak="id",
+ specials={ "square", 0x4EE4, 0x548C },
+ unicodeslot=0x32FF,
+ },
[0x3300]={
adobename="apaatosquare",
category="so",
@@ -118280,6 +118437,83 @@ characters.data={
linebreak="al",
unicodeslot=0xA7B9,
},
+ [0xA7BA]={
+ category="lu",
+ description="LATIN CAPITAL LETTER GLOTTAL A",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7BA,
+ },
+ [0xA7BB]={
+ category="ll",
+ description="LATIN SMALL LETTER GLOTTAL A",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7BB,
+ },
+ [0xA7BC]={
+ category="lu",
+ description="LATIN CAPITAL LETTER GLOTTAL I",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7BC,
+ },
+ [0xA7BD]={
+ category="ll",
+ description="LATIN SMALL LETTER GLOTTAL I",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7BD,
+ },
+ [0xA7BE]={
+ category="lu",
+ description="LATIN CAPITAL LETTER GLOTTAL U",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7BE,
+ },
+ [0xA7BF]={
+ category="ll",
+ description="LATIN SMALL LETTER GLOTTAL U",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7BF,
+ },
+ [0xA7C2]={
+ category="lu",
+ description="LATIN CAPITAL LETTER ANGLICANA W",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7C2,
+ },
+ [0xA7C3]={
+ category="ll",
+ description="LATIN SMALL LETTER ANGLICANA W",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7C3,
+ },
+ [0xA7C4]={
+ category="lu",
+ description="LATIN CAPITAL LETTER C WITH PALATAL HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7C4,
+ },
+ [0xA7C5]={
+ category="lu",
+ description="LATIN CAPITAL LETTER S WITH HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7C5,
+ },
+ [0xA7C6]={
+ category="lu",
+ description="LATIN CAPITAL LETTER Z WITH PALATAL HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xA7C6,
+ },
[0xA7F7]={
category="lo",
description="LATIN EPIGRAPHIC LETTER SIDEWAYS I",
@@ -121301,7 +121535,7 @@ characters.data={
[0xA9BD]={
category="mc",
description="JAVANESE CONSONANT SIGN KERET",
- direction="l",
+ direction="nsm",
linebreak="cm",
unicodeslot=0xA9BD,
},
@@ -123911,6 +124145,20 @@ characters.data={
linebreak="al",
unicodeslot=0xAB65,
},
+ [0xAB66]={
+ category="ll",
+ description="LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xAB66,
+ },
+ [0xAB67]={
+ category="ll",
+ description="LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0xAB67,
+ },
[0xAB70]={
category="ll",
description="CHEROKEE SMALL LETTER A",
@@ -137206,6 +137454,7 @@ characters.data={
linebreak="ex",
specials={ "wide", 0x21 },
unicodeslot=0xFF01,
+ variants=variants_forms,
},
[0xFF02]={
adobename="quotedblmonospace",
@@ -137320,6 +137569,7 @@ characters.data={
linebreak="cl",
specials={ "wide", 0x2C },
unicodeslot=0xFF0C,
+ variants=variants_forms,
},
[0xFF0D]={
adobename="hyphenmonospace",
@@ -137340,6 +137590,7 @@ characters.data={
linebreak="cl",
specials={ "wide", 0x2E },
unicodeslot=0xFF0E,
+ variants=variants_forms,
},
[0xFF0F]={
adobename="slashmonospace",
@@ -137463,6 +137714,7 @@ characters.data={
linebreak="ns",
specials={ "wide", 0x3A },
unicodeslot=0xFF1A,
+ variants=variants_forms,
},
[0xFF1B]={
adobename="semicolonmonospace",
@@ -137473,6 +137725,7 @@ characters.data={
linebreak="ns",
specials={ "wide", 0x3B },
unicodeslot=0xFF1B,
+ variants=variants_forms,
},
[0xFF1C]={
adobename="lessmonospace",
@@ -137517,6 +137770,7 @@ characters.data={
linebreak="ex",
specials={ "wide", 0x3F },
unicodeslot=0xFF1F,
+ variants=variants_forms,
},
[0xFF20]={
adobename="atmonospace",
@@ -156690,6 +156944,167 @@ characters.data={
linebreak="al",
unicodeslot=0x10F59,
},
+ [0x10FE0]={
+ category="lo",
+ description="ELYMAIC LETTER ALEPH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FE0,
+ },
+ [0x10FE1]={
+ category="lo",
+ description="ELYMAIC LETTER BETH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FE1,
+ },
+ [0x10FE2]={
+ category="lo",
+ description="ELYMAIC LETTER GIMEL",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FE2,
+ },
+ [0x10FE3]={
+ category="lo",
+ description="ELYMAIC LETTER DALETH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FE3,
+ },
+ [0x10FE4]={
+ category="lo",
+ description="ELYMAIC LETTER HE",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FE4,
+ },
+ [0x10FE5]={
+ category="lo",
+ description="ELYMAIC LETTER WAW",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FE5,
+ },
+ [0x10FE6]={
+ category="lo",
+ description="ELYMAIC LETTER ZAYIN",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FE6,
+ },
+ [0x10FE7]={
+ category="lo",
+ description="ELYMAIC LETTER HETH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FE7,
+ },
+ [0x10FE8]={
+ category="lo",
+ description="ELYMAIC LETTER TETH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FE8,
+ },
+ [0x10FE9]={
+ category="lo",
+ description="ELYMAIC LETTER YODH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FE9,
+ },
+ [0x10FEA]={
+ category="lo",
+ description="ELYMAIC LETTER KAPH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FEA,
+ },
+ [0x10FEB]={
+ category="lo",
+ description="ELYMAIC LETTER LAMEDH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FEB,
+ },
+ [0x10FEC]={
+ category="lo",
+ description="ELYMAIC LETTER MEM",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FEC,
+ },
+ [0x10FED]={
+ category="lo",
+ description="ELYMAIC LETTER NUN",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FED,
+ },
+ [0x10FEE]={
+ category="lo",
+ description="ELYMAIC LETTER SAMEKH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FEE,
+ },
+ [0x10FEF]={
+ category="lo",
+ description="ELYMAIC LETTER AYIN",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FEF,
+ },
+ [0x10FF0]={
+ category="lo",
+ description="ELYMAIC LETTER PE",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FF0,
+ },
+ [0x10FF1]={
+ category="lo",
+ description="ELYMAIC LETTER SADHE",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FF1,
+ },
+ [0x10FF2]={
+ category="lo",
+ description="ELYMAIC LETTER QOPH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FF2,
+ },
+ [0x10FF3]={
+ category="lo",
+ description="ELYMAIC LETTER RESH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FF3,
+ },
+ [0x10FF4]={
+ category="lo",
+ description="ELYMAIC LETTER SHIN",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FF4,
+ },
+ [0x10FF5]={
+ category="lo",
+ description="ELYMAIC LETTER TAW",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FF5,
+ },
+ [0x10FF6]={
+ category="lo",
+ description="ELYMAIC LIGATURE ZAYIN-YODH",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x10FF6,
+ },
[0x11000]={
category="mc",
description="BRAHMI SIGN CANDRABINDU",
@@ -162207,6 +162622,13 @@ characters.data={
linebreak="cm",
unicodeslot=0x1145E,
},
+ [0x1145F]={
+ category="lo",
+ description="NEWA LETTER VEDIC ANUSVARA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1145F,
+ },
[0x11480]={
category="lo",
description="TIRHUTA ANJI",
@@ -164473,6 +164895,13 @@ characters.data={
linebreak="cm",
unicodeslot=0x116B7,
},
+ [0x116B8]={
+ category="lo",
+ description="TAKRI LETTER ARCHAIC KHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x116B8,
+ },
[0x116C0]={
category="nd",
description="TAKRI DIGIT ZERO",
@@ -165960,6 +166389,462 @@ characters.data={
linebreak="al",
unicodeslot=0x118FF,
},
+ [0x119A0]={
+ category="lo",
+ description="NANDINAGARI LETTER A",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119A0,
+ },
+ [0x119A1]={
+ category="lo",
+ description="NANDINAGARI LETTER AA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119A1,
+ },
+ [0x119A2]={
+ category="lo",
+ description="NANDINAGARI LETTER I",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119A2,
+ },
+ [0x119A3]={
+ category="lo",
+ description="NANDINAGARI LETTER II",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119A3,
+ },
+ [0x119A4]={
+ category="lo",
+ description="NANDINAGARI LETTER U",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119A4,
+ },
+ [0x119A5]={
+ category="lo",
+ description="NANDINAGARI LETTER UU",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119A5,
+ },
+ [0x119A6]={
+ category="lo",
+ description="NANDINAGARI LETTER VOCALIC R",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119A6,
+ },
+ [0x119A7]={
+ category="lo",
+ description="NANDINAGARI LETTER VOCALIC RR",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119A7,
+ },
+ [0x119AA]={
+ category="lo",
+ description="NANDINAGARI LETTER E",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119AA,
+ },
+ [0x119AB]={
+ category="lo",
+ description="NANDINAGARI LETTER AI",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119AB,
+ },
+ [0x119AC]={
+ category="lo",
+ description="NANDINAGARI LETTER O",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119AC,
+ },
+ [0x119AD]={
+ category="lo",
+ description="NANDINAGARI LETTER AU",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119AD,
+ },
+ [0x119AE]={
+ category="lo",
+ description="NANDINAGARI LETTER KA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119AE,
+ },
+ [0x119AF]={
+ category="lo",
+ description="NANDINAGARI LETTER KHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119AF,
+ },
+ [0x119B0]={
+ category="lo",
+ description="NANDINAGARI LETTER GA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119B0,
+ },
+ [0x119B1]={
+ category="lo",
+ description="NANDINAGARI LETTER GHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119B1,
+ },
+ [0x119B2]={
+ category="lo",
+ description="NANDINAGARI LETTER NGA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119B2,
+ },
+ [0x119B3]={
+ category="lo",
+ description="NANDINAGARI LETTER CA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119B3,
+ },
+ [0x119B4]={
+ category="lo",
+ description="NANDINAGARI LETTER CHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119B4,
+ },
+ [0x119B5]={
+ category="lo",
+ description="NANDINAGARI LETTER JA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119B5,
+ },
+ [0x119B6]={
+ category="lo",
+ description="NANDINAGARI LETTER JHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119B6,
+ },
+ [0x119B7]={
+ category="lo",
+ description="NANDINAGARI LETTER NYA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119B7,
+ },
+ [0x119B8]={
+ category="lo",
+ description="NANDINAGARI LETTER TTA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119B8,
+ },
+ [0x119B9]={
+ category="lo",
+ description="NANDINAGARI LETTER TTHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119B9,
+ },
+ [0x119BA]={
+ category="lo",
+ description="NANDINAGARI LETTER DDA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119BA,
+ },
+ [0x119BB]={
+ category="lo",
+ description="NANDINAGARI LETTER DDHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119BB,
+ },
+ [0x119BC]={
+ category="lo",
+ description="NANDINAGARI LETTER NNA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119BC,
+ },
+ [0x119BD]={
+ category="lo",
+ description="NANDINAGARI LETTER TA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119BD,
+ },
+ [0x119BE]={
+ category="lo",
+ description="NANDINAGARI LETTER THA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119BE,
+ },
+ [0x119BF]={
+ category="lo",
+ description="NANDINAGARI LETTER DA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119BF,
+ },
+ [0x119C0]={
+ category="lo",
+ description="NANDINAGARI LETTER DHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119C0,
+ },
+ [0x119C1]={
+ category="lo",
+ description="NANDINAGARI LETTER NA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119C1,
+ },
+ [0x119C2]={
+ category="lo",
+ description="NANDINAGARI LETTER PA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119C2,
+ },
+ [0x119C3]={
+ category="lo",
+ description="NANDINAGARI LETTER PHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119C3,
+ },
+ [0x119C4]={
+ category="lo",
+ description="NANDINAGARI LETTER BA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119C4,
+ },
+ [0x119C5]={
+ category="lo",
+ description="NANDINAGARI LETTER BHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119C5,
+ },
+ [0x119C6]={
+ category="lo",
+ description="NANDINAGARI LETTER MA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119C6,
+ },
+ [0x119C7]={
+ category="lo",
+ description="NANDINAGARI LETTER YA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119C7,
+ },
+ [0x119C8]={
+ category="lo",
+ description="NANDINAGARI LETTER RA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119C8,
+ },
+ [0x119C9]={
+ category="lo",
+ description="NANDINAGARI LETTER LA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119C9,
+ },
+ [0x119CA]={
+ category="lo",
+ description="NANDINAGARI LETTER VA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119CA,
+ },
+ [0x119CB]={
+ category="lo",
+ description="NANDINAGARI LETTER SHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119CB,
+ },
+ [0x119CC]={
+ category="lo",
+ description="NANDINAGARI LETTER SSA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119CC,
+ },
+ [0x119CD]={
+ category="lo",
+ description="NANDINAGARI LETTER SA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119CD,
+ },
+ [0x119CE]={
+ category="lo",
+ description="NANDINAGARI LETTER HA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119CE,
+ },
+ [0x119CF]={
+ category="lo",
+ description="NANDINAGARI LETTER LLA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119CF,
+ },
+ [0x119D0]={
+ category="lo",
+ description="NANDINAGARI LETTER RRA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119D0,
+ },
+ [0x119D1]={
+ category="mc",
+ description="NANDINAGARI VOWEL SIGN AA",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x119D1,
+ },
+ [0x119D2]={
+ category="mc",
+ description="NANDINAGARI VOWEL SIGN I",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x119D2,
+ },
+ [0x119D3]={
+ category="mc",
+ description="NANDINAGARI VOWEL SIGN II",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x119D3,
+ },
+ [0x119D4]={
+ category="mn",
+ description="NANDINAGARI VOWEL SIGN U",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x119D4,
+ },
+ [0x119D5]={
+ category="mn",
+ description="NANDINAGARI VOWEL SIGN UU",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x119D5,
+ },
+ [0x119D6]={
+ category="mn",
+ description="NANDINAGARI VOWEL SIGN VOCALIC R",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x119D6,
+ },
+ [0x119D7]={
+ category="mn",
+ description="NANDINAGARI VOWEL SIGN VOCALIC RR",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x119D7,
+ },
+ [0x119DA]={
+ category="mn",
+ description="NANDINAGARI VOWEL SIGN E",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x119DA,
+ },
+ [0x119DB]={
+ category="mn",
+ description="NANDINAGARI VOWEL SIGN AI",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x119DB,
+ },
+ [0x119DC]={
+ category="mc",
+ description="NANDINAGARI VOWEL SIGN O",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x119DC,
+ },
+ [0x119DD]={
+ category="mc",
+ description="NANDINAGARI VOWEL SIGN AU",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x119DD,
+ },
+ [0x119DE]={
+ category="mc",
+ description="NANDINAGARI SIGN ANUSVARA",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x119DE,
+ },
+ [0x119DF]={
+ category="mc",
+ description="NANDINAGARI SIGN VISARGA",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x119DF,
+ },
+ [0x119E0]={
+ category="mn",
+ combining=0x9,
+ description="NANDINAGARI SIGN VIRAMA",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x119E0,
+ },
+ [0x119E1]={
+ category="lo",
+ description="NANDINAGARI SIGN AVAGRAHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119E1,
+ },
+ [0x119E2]={
+ category="po",
+ description="NANDINAGARI SIGN SIDDHAM",
+ direction="l",
+ linebreak="bb",
+ unicodeslot=0x119E2,
+ },
+ [0x119E3]={
+ category="lo",
+ description="NANDINAGARI HEADSTROKE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x119E3,
+ },
+ [0x119E4]={
+ category="mc",
+ description="NANDINAGARI VOWEL SIGN PRISHTHAMATRA E",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x119E4,
+ },
[0x11A00]={
category="lo",
description="ZANABAZAR SQUARE LETTER A",
@@ -166830,6 +167715,20 @@ characters.data={
linebreak="al",
unicodeslot=0x11A83,
},
+ [0x11A84]={
+ category="lo",
+ description="SOYOMBO SIGN JIHVAMULIYA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11A84,
+ },
+ [0x11A85]={
+ category="lo",
+ description="SOYOMBO SIGN UPADHMANIYA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11A85,
+ },
[0x11A86]={
category="lo",
description="SOYOMBO CLUSTER-INITIAL LETTER RA",
@@ -169734,6 +170633,363 @@ characters.data={
linebreak="al",
unicodeslot=0x11EF8,
},
+ [0x11FC0]={
+ category="no",
+ description="TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FC0,
+ },
+ [0x11FC1]={
+ category="no",
+ description="TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FC1,
+ },
+ [0x11FC2]={
+ category="no",
+ description="TAMIL FRACTION ONE EIGHTIETH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FC2,
+ },
+ [0x11FC3]={
+ category="no",
+ description="TAMIL FRACTION ONE SIXTY-FOURTH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FC3,
+ },
+ [0x11FC4]={
+ category="no",
+ description="TAMIL FRACTION ONE FORTIETH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FC4,
+ },
+ [0x11FC5]={
+ category="no",
+ description="TAMIL FRACTION ONE THIRTY-SECOND",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FC5,
+ },
+ [0x11FC6]={
+ category="no",
+ description="TAMIL FRACTION THREE EIGHTIETHS",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FC6,
+ },
+ [0x11FC7]={
+ category="no",
+ description="TAMIL FRACTION THREE SIXTY-FOURTHS",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FC7,
+ },
+ [0x11FC8]={
+ category="no",
+ description="TAMIL FRACTION ONE TWENTIETH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FC8,
+ },
+ [0x11FC9]={
+ category="no",
+ description="TAMIL FRACTION ONE SIXTEENTH-1",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FC9,
+ },
+ [0x11FCA]={
+ category="no",
+ description="TAMIL FRACTION ONE SIXTEENTH-2",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FCA,
+ },
+ [0x11FCB]={
+ category="no",
+ description="TAMIL FRACTION ONE TENTH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FCB,
+ },
+ [0x11FCC]={
+ category="no",
+ description="TAMIL FRACTION ONE EIGHTH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FCC,
+ },
+ [0x11FCD]={
+ category="no",
+ description="TAMIL FRACTION THREE TWENTIETHS",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FCD,
+ },
+ [0x11FCE]={
+ category="no",
+ description="TAMIL FRACTION THREE SIXTEENTHS",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FCE,
+ },
+ [0x11FCF]={
+ category="no",
+ description="TAMIL FRACTION ONE FIFTH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FCF,
+ },
+ [0x11FD0]={
+ category="no",
+ description="TAMIL FRACTION ONE QUARTER",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FD0,
+ },
+ [0x11FD1]={
+ category="no",
+ description="TAMIL FRACTION ONE HALF-1",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FD1,
+ },
+ [0x11FD2]={
+ category="no",
+ description="TAMIL FRACTION ONE HALF-2",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FD2,
+ },
+ [0x11FD3]={
+ category="no",
+ description="TAMIL FRACTION THREE QUARTERS",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FD3,
+ },
+ [0x11FD4]={
+ category="no",
+ description="TAMIL FRACTION DOWNSCALING FACTOR KIIZH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x11FD4,
+ },
+ [0x11FD5]={
+ category="so",
+ description="TAMIL SIGN NEL",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FD5,
+ },
+ [0x11FD6]={
+ category="so",
+ description="TAMIL SIGN CEVITU",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FD6,
+ },
+ [0x11FD7]={
+ category="so",
+ description="TAMIL SIGN AAZHAAKKU",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FD7,
+ },
+ [0x11FD8]={
+ category="so",
+ description="TAMIL SIGN UZHAKKU",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FD8,
+ },
+ [0x11FD9]={
+ category="so",
+ description="TAMIL SIGN MUUVUZHAKKU",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FD9,
+ },
+ [0x11FDA]={
+ category="so",
+ description="TAMIL SIGN KURUNI",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FDA,
+ },
+ [0x11FDB]={
+ category="so",
+ description="TAMIL SIGN PATHAKKU",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FDB,
+ },
+ [0x11FDC]={
+ category="so",
+ description="TAMIL SIGN MUKKURUNI",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FDC,
+ },
+ [0x11FDD]={
+ category="sc",
+ description="TAMIL SIGN KAACU",
+ direction="et",
+ linebreak="po",
+ unicodeslot=0x11FDD,
+ },
+ [0x11FDE]={
+ category="sc",
+ description="TAMIL SIGN PANAM",
+ direction="et",
+ linebreak="po",
+ unicodeslot=0x11FDE,
+ },
+ [0x11FDF]={
+ category="sc",
+ description="TAMIL SIGN PON",
+ direction="et",
+ linebreak="po",
+ unicodeslot=0x11FDF,
+ },
+ [0x11FE0]={
+ category="sc",
+ description="TAMIL SIGN VARAAKAN",
+ direction="et",
+ linebreak="po",
+ unicodeslot=0x11FE0,
+ },
+ [0x11FE1]={
+ category="so",
+ description="TAMIL SIGN PAARAM",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FE1,
+ },
+ [0x11FE2]={
+ category="so",
+ description="TAMIL SIGN KUZHI",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FE2,
+ },
+ [0x11FE3]={
+ category="so",
+ description="TAMIL SIGN VELI",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FE3,
+ },
+ [0x11FE4]={
+ category="so",
+ description="TAMIL WET CULTIVATION SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FE4,
+ },
+ [0x11FE5]={
+ category="so",
+ description="TAMIL DRY CULTIVATION SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FE5,
+ },
+ [0x11FE6]={
+ category="so",
+ description="TAMIL LAND SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FE6,
+ },
+ [0x11FE7]={
+ category="so",
+ description="TAMIL SALT PAN SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FE7,
+ },
+ [0x11FE8]={
+ category="so",
+ description="TAMIL TRADITIONAL CREDIT SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FE8,
+ },
+ [0x11FE9]={
+ category="so",
+ description="TAMIL TRADITIONAL NUMBER SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FE9,
+ },
+ [0x11FEA]={
+ category="so",
+ description="TAMIL CURRENT SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FEA,
+ },
+ [0x11FEB]={
+ category="so",
+ description="TAMIL AND ODD SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FEB,
+ },
+ [0x11FEC]={
+ category="so",
+ description="TAMIL SPENT SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FEC,
+ },
+ [0x11FED]={
+ category="so",
+ description="TAMIL TOTAL SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FED,
+ },
+ [0x11FEE]={
+ category="so",
+ description="TAMIL IN POSSESSION SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FEE,
+ },
+ [0x11FEF]={
+ category="so",
+ description="TAMIL STARTING FROM SIGN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FEF,
+ },
+ [0x11FF0]={
+ category="so",
+ description="TAMIL SIGN MUTHALIYA",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FF0,
+ },
+ [0x11FF1]={
+ category="so",
+ description="TAMIL SIGN VAKAIYARAA",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x11FF1,
+ },
+ [0x11FFF]={
+ category="po",
+ description="TAMIL PUNCTUATION END OF TEXT",
+ direction="l",
+ linebreak="ba",
+ unicodeslot=0x11FFF,
+ },
[0x12000]={
category="lo",
description="CUNEIFORM SIGN A",
@@ -185871,6 +187127,69 @@ characters.data={
linebreak="al",
unicodeslot=0x1342E,
},
+ [0x13430]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH VERTICAL JOINER",
+ direction="l",
+ linebreak="gl",
+ unicodeslot=0x13430,
+ },
+ [0x13431]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH HORIZONTAL JOINER",
+ direction="l",
+ linebreak="gl",
+ unicodeslot=0x13431,
+ },
+ [0x13432]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH INSERT AT TOP START",
+ direction="l",
+ linebreak="gl",
+ unicodeslot=0x13432,
+ },
+ [0x13433]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH INSERT AT BOTTOM START",
+ direction="l",
+ linebreak="gl",
+ unicodeslot=0x13433,
+ },
+ [0x13434]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH INSERT AT TOP END",
+ direction="l",
+ linebreak="gl",
+ unicodeslot=0x13434,
+ },
+ [0x13435]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH INSERT AT BOTTOM END",
+ direction="l",
+ linebreak="gl",
+ unicodeslot=0x13435,
+ },
+ [0x13436]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH OVERLAY MIDDLE",
+ direction="l",
+ linebreak="gl",
+ unicodeslot=0x13436,
+ },
+ [0x13437]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH BEGIN SEGMENT",
+ direction="l",
+ linebreak="op",
+ unicodeslot=0x13437,
+ },
+ [0x13438]={
+ category="cf",
+ description="EGYPTIAN HIEROGLYPH END SEGMENT",
+ direction="l",
+ linebreak="cl",
+ unicodeslot=0x13438,
+ },
[0x14400]={
category="lo",
description="ANATOLIAN HIEROGLYPH A001",
@@ -196509,6 +197828,55 @@ characters.data={
linebreak="al",
unicodeslot=0x16F44,
},
+ [0x16F45]={
+ category="lo",
+ description="MIAO LETTER BRI",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x16F45,
+ },
+ [0x16F46]={
+ category="lo",
+ description="MIAO LETTER SYI",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x16F46,
+ },
+ [0x16F47]={
+ category="lo",
+ description="MIAO LETTER DZYI",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x16F47,
+ },
+ [0x16F48]={
+ category="lo",
+ description="MIAO LETTER TE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x16F48,
+ },
+ [0x16F49]={
+ category="lo",
+ description="MIAO LETTER TSE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x16F49,
+ },
+ [0x16F4A]={
+ category="lo",
+ description="MIAO LETTER RTE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x16F4A,
+ },
+ [0x16F4F]={
+ category="mn",
+ description="MIAO SIGN CONSONANT MODIFIER BAR",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x16F4F,
+ },
[0x16F50]={
category="lo",
description="MIAO LETTER NASALIZATION",
@@ -196838,6 +198206,69 @@ characters.data={
linebreak="cm",
unicodeslot=0x16F7E,
},
+ [0x16F7F]={
+ category="mc",
+ description="MIAO VOWEL SIGN UOG",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x16F7F,
+ },
+ [0x16F80]={
+ category="mc",
+ description="MIAO VOWEL SIGN YUI",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x16F80,
+ },
+ [0x16F81]={
+ category="mc",
+ description="MIAO VOWEL SIGN OG",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x16F81,
+ },
+ [0x16F82]={
+ category="mc",
+ description="MIAO VOWEL SIGN OER",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x16F82,
+ },
+ [0x16F83]={
+ category="mc",
+ description="MIAO VOWEL SIGN VW",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x16F83,
+ },
+ [0x16F84]={
+ category="mc",
+ description="MIAO VOWEL SIGN IG",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x16F84,
+ },
+ [0x16F85]={
+ category="mc",
+ description="MIAO VOWEL SIGN EA",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x16F85,
+ },
+ [0x16F86]={
+ category="mc",
+ description="MIAO VOWEL SIGN IONG",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x16F86,
+ },
+ [0x16F87]={
+ category="mc",
+ description="MIAO VOWEL SIGN UI",
+ direction="l",
+ linebreak="cm",
+ unicodeslot=0x16F87,
+ },
[0x16F8F]={
category="mn",
description="MIAO TONE RIGHT",
@@ -196973,6 +198404,22 @@ characters.data={
linebreak="ns",
unicodeslot=0x16FE1,
},
+ [0x16FE2]={
+ category="po",
+ cjkwd="w",
+ description="OLD CHINESE HOOK MARK",
+ direction="on",
+ linebreak="ns",
+ unicodeslot=0x16FE2,
+ },
+ [0x16FE3]={
+ category="lm",
+ cjkwd="w",
+ description="OLD CHINESE ITERATION MARK",
+ direction="l",
+ linebreak="ns",
+ unicodeslot=0x16FE3,
+ },
[0x18800]={
category="lo",
cjkwd="w",
@@ -205309,6 +206756,62 @@ characters.data={
linebreak="id",
unicodeslot=0x1B11E,
},
+ [0x1B150]={
+ category="lo",
+ cjkwd="w",
+ description="HIRAGANA LETTER SMALL WI",
+ direction="l",
+ linebreak="cj",
+ unicodeslot=0x1B150,
+ },
+ [0x1B151]={
+ category="lo",
+ cjkwd="w",
+ description="HIRAGANA LETTER SMALL WE",
+ direction="l",
+ linebreak="cj",
+ unicodeslot=0x1B151,
+ },
+ [0x1B152]={
+ category="lo",
+ cjkwd="w",
+ description="HIRAGANA LETTER SMALL WO",
+ direction="l",
+ linebreak="cj",
+ unicodeslot=0x1B152,
+ },
+ [0x1B164]={
+ category="lo",
+ cjkwd="w",
+ description="KATAKANA LETTER SMALL WI",
+ direction="l",
+ linebreak="cj",
+ unicodeslot=0x1B164,
+ },
+ [0x1B165]={
+ category="lo",
+ cjkwd="w",
+ description="KATAKANA LETTER SMALL WE",
+ direction="l",
+ linebreak="cj",
+ unicodeslot=0x1B165,
+ },
+ [0x1B166]={
+ category="lo",
+ cjkwd="w",
+ description="KATAKANA LETTER SMALL WO",
+ direction="l",
+ linebreak="cj",
+ unicodeslot=0x1B166,
+ },
+ [0x1B167]={
+ category="lo",
+ cjkwd="w",
+ description="KATAKANA LETTER SMALL N",
+ direction="l",
+ linebreak="cj",
+ unicodeslot=0x1B167,
+ },
[0x1B170]={
category="lo",
cjkwd="w",
@@ -228068,6 +229571,927 @@ characters.data={
linebreak="cm",
unicodeslot=0x1E02A,
},
+ [0x1E100]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER MA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E100,
+ },
+ [0x1E101]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER TSA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E101,
+ },
+ [0x1E102]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NTA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E102,
+ },
+ [0x1E103]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER TA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E103,
+ },
+ [0x1E104]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER HA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E104,
+ },
+ [0x1E105]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E105,
+ },
+ [0x1E106]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER XA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E106,
+ },
+ [0x1E107]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NKA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E107,
+ },
+ [0x1E108]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER CA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E108,
+ },
+ [0x1E109]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER LA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E109,
+ },
+ [0x1E10A]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER SA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E10A,
+ },
+ [0x1E10B]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER ZA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E10B,
+ },
+ [0x1E10C]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NCA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E10C,
+ },
+ [0x1E10D]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NTSA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E10D,
+ },
+ [0x1E10E]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER KA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E10E,
+ },
+ [0x1E10F]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER DA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E10F,
+ },
+ [0x1E110]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NYA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E110,
+ },
+ [0x1E111]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NRA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E111,
+ },
+ [0x1E112]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER VA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E112,
+ },
+ [0x1E113]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NTXA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E113,
+ },
+ [0x1E114]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER TXA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E114,
+ },
+ [0x1E115]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER FA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E115,
+ },
+ [0x1E116]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER RA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E116,
+ },
+ [0x1E117]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER QA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E117,
+ },
+ [0x1E118]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER YA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E118,
+ },
+ [0x1E119]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NQA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E119,
+ },
+ [0x1E11A]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER PA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E11A,
+ },
+ [0x1E11B]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER XYA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E11B,
+ },
+ [0x1E11C]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NPA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E11C,
+ },
+ [0x1E11D]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER DLA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E11D,
+ },
+ [0x1E11E]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER NPLA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E11E,
+ },
+ [0x1E11F]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER HAH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E11F,
+ },
+ [0x1E120]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER MLA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E120,
+ },
+ [0x1E121]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER PLA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E121,
+ },
+ [0x1E122]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER GA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E122,
+ },
+ [0x1E123]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER RRA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E123,
+ },
+ [0x1E124]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER A",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E124,
+ },
+ [0x1E125]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER AA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E125,
+ },
+ [0x1E126]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER I",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E126,
+ },
+ [0x1E127]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER U",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E127,
+ },
+ [0x1E128]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER O",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E128,
+ },
+ [0x1E129]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER OO",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E129,
+ },
+ [0x1E12A]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER E",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E12A,
+ },
+ [0x1E12B]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER EE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E12B,
+ },
+ [0x1E12C]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LETTER W",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E12C,
+ },
+ [0x1E130]={
+ category="mn",
+ combining=0xE6,
+ description="NYIAKENG PUACHUE HMONG TONE-B",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E130,
+ },
+ [0x1E131]={
+ category="mn",
+ combining=0xE6,
+ description="NYIAKENG PUACHUE HMONG TONE-M",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E131,
+ },
+ [0x1E132]={
+ category="mn",
+ combining=0xE6,
+ description="NYIAKENG PUACHUE HMONG TONE-J",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E132,
+ },
+ [0x1E133]={
+ category="mn",
+ combining=0xE6,
+ description="NYIAKENG PUACHUE HMONG TONE-V",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E133,
+ },
+ [0x1E134]={
+ category="mn",
+ combining=0xE6,
+ description="NYIAKENG PUACHUE HMONG TONE-S",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E134,
+ },
+ [0x1E135]={
+ category="mn",
+ combining=0xE6,
+ description="NYIAKENG PUACHUE HMONG TONE-G",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E135,
+ },
+ [0x1E136]={
+ category="mn",
+ combining=0xE6,
+ description="NYIAKENG PUACHUE HMONG TONE-D",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E136,
+ },
+ [0x1E137]={
+ category="lm",
+ description="NYIAKENG PUACHUE HMONG SIGN FOR PERSON",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E137,
+ },
+ [0x1E138]={
+ category="lm",
+ description="NYIAKENG PUACHUE HMONG SIGN FOR THING",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E138,
+ },
+ [0x1E139]={
+ category="lm",
+ description="NYIAKENG PUACHUE HMONG SIGN FOR LOCATION",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E139,
+ },
+ [0x1E13A]={
+ category="lm",
+ description="NYIAKENG PUACHUE HMONG SIGN FOR ANIMAL",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E13A,
+ },
+ [0x1E13B]={
+ category="lm",
+ description="NYIAKENG PUACHUE HMONG SIGN FOR INVERTEBRATE",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E13B,
+ },
+ [0x1E13C]={
+ category="lm",
+ description="NYIAKENG PUACHUE HMONG SIGN XW XW",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E13C,
+ },
+ [0x1E13D]={
+ category="lm",
+ description="NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E13D,
+ },
+ [0x1E140]={
+ category="nd",
+ description="NYIAKENG PUACHUE HMONG DIGIT ZERO",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E140,
+ },
+ [0x1E141]={
+ category="nd",
+ description="NYIAKENG PUACHUE HMONG DIGIT ONE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E141,
+ },
+ [0x1E142]={
+ category="nd",
+ description="NYIAKENG PUACHUE HMONG DIGIT TWO",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E142,
+ },
+ [0x1E143]={
+ category="nd",
+ description="NYIAKENG PUACHUE HMONG DIGIT THREE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E143,
+ },
+ [0x1E144]={
+ category="nd",
+ description="NYIAKENG PUACHUE HMONG DIGIT FOUR",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E144,
+ },
+ [0x1E145]={
+ category="nd",
+ description="NYIAKENG PUACHUE HMONG DIGIT FIVE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E145,
+ },
+ [0x1E146]={
+ category="nd",
+ description="NYIAKENG PUACHUE HMONG DIGIT SIX",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E146,
+ },
+ [0x1E147]={
+ category="nd",
+ description="NYIAKENG PUACHUE HMONG DIGIT SEVEN",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E147,
+ },
+ [0x1E148]={
+ category="nd",
+ description="NYIAKENG PUACHUE HMONG DIGIT EIGHT",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E148,
+ },
+ [0x1E149]={
+ category="nd",
+ description="NYIAKENG PUACHUE HMONG DIGIT NINE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E149,
+ },
+ [0x1E14E]={
+ category="lo",
+ description="NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E14E,
+ },
+ [0x1E14F]={
+ category="so",
+ description="NYIAKENG PUACHUE HMONG CIRCLED CA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E14F,
+ },
+ [0x1E2C0]={
+ category="lo",
+ description="WANCHO LETTER AA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2C0,
+ },
+ [0x1E2C1]={
+ category="lo",
+ description="WANCHO LETTER A",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2C1,
+ },
+ [0x1E2C2]={
+ category="lo",
+ description="WANCHO LETTER BA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2C2,
+ },
+ [0x1E2C3]={
+ category="lo",
+ description="WANCHO LETTER CA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2C3,
+ },
+ [0x1E2C4]={
+ category="lo",
+ description="WANCHO LETTER DA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2C4,
+ },
+ [0x1E2C5]={
+ category="lo",
+ description="WANCHO LETTER GA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2C5,
+ },
+ [0x1E2C6]={
+ category="lo",
+ description="WANCHO LETTER YA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2C6,
+ },
+ [0x1E2C7]={
+ category="lo",
+ description="WANCHO LETTER PHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2C7,
+ },
+ [0x1E2C8]={
+ category="lo",
+ description="WANCHO LETTER LA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2C8,
+ },
+ [0x1E2C9]={
+ category="lo",
+ description="WANCHO LETTER NA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2C9,
+ },
+ [0x1E2CA]={
+ category="lo",
+ description="WANCHO LETTER PA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2CA,
+ },
+ [0x1E2CB]={
+ category="lo",
+ description="WANCHO LETTER TA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2CB,
+ },
+ [0x1E2CC]={
+ category="lo",
+ description="WANCHO LETTER THA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2CC,
+ },
+ [0x1E2CD]={
+ category="lo",
+ description="WANCHO LETTER FA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2CD,
+ },
+ [0x1E2CE]={
+ category="lo",
+ description="WANCHO LETTER SA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2CE,
+ },
+ [0x1E2CF]={
+ category="lo",
+ description="WANCHO LETTER SHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2CF,
+ },
+ [0x1E2D0]={
+ category="lo",
+ description="WANCHO LETTER JA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2D0,
+ },
+ [0x1E2D1]={
+ category="lo",
+ description="WANCHO LETTER ZA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2D1,
+ },
+ [0x1E2D2]={
+ category="lo",
+ description="WANCHO LETTER WA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2D2,
+ },
+ [0x1E2D3]={
+ category="lo",
+ description="WANCHO LETTER VA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2D3,
+ },
+ [0x1E2D4]={
+ category="lo",
+ description="WANCHO LETTER KA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2D4,
+ },
+ [0x1E2D5]={
+ category="lo",
+ description="WANCHO LETTER O",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2D5,
+ },
+ [0x1E2D6]={
+ category="lo",
+ description="WANCHO LETTER AU",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2D6,
+ },
+ [0x1E2D7]={
+ category="lo",
+ description="WANCHO LETTER RA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2D7,
+ },
+ [0x1E2D8]={
+ category="lo",
+ description="WANCHO LETTER MA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2D8,
+ },
+ [0x1E2D9]={
+ category="lo",
+ description="WANCHO LETTER KHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2D9,
+ },
+ [0x1E2DA]={
+ category="lo",
+ description="WANCHO LETTER HA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2DA,
+ },
+ [0x1E2DB]={
+ category="lo",
+ description="WANCHO LETTER E",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2DB,
+ },
+ [0x1E2DC]={
+ category="lo",
+ description="WANCHO LETTER I",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2DC,
+ },
+ [0x1E2DD]={
+ category="lo",
+ description="WANCHO LETTER NGA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2DD,
+ },
+ [0x1E2DE]={
+ category="lo",
+ description="WANCHO LETTER U",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2DE,
+ },
+ [0x1E2DF]={
+ category="lo",
+ description="WANCHO LETTER LLHA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2DF,
+ },
+ [0x1E2E0]={
+ category="lo",
+ description="WANCHO LETTER TSA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2E0,
+ },
+ [0x1E2E1]={
+ category="lo",
+ description="WANCHO LETTER TRA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2E1,
+ },
+ [0x1E2E2]={
+ category="lo",
+ description="WANCHO LETTER ONG",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2E2,
+ },
+ [0x1E2E3]={
+ category="lo",
+ description="WANCHO LETTER AANG",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2E3,
+ },
+ [0x1E2E4]={
+ category="lo",
+ description="WANCHO LETTER ANG",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2E4,
+ },
+ [0x1E2E5]={
+ category="lo",
+ description="WANCHO LETTER ING",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2E5,
+ },
+ [0x1E2E6]={
+ category="lo",
+ description="WANCHO LETTER ON",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2E6,
+ },
+ [0x1E2E7]={
+ category="lo",
+ description="WANCHO LETTER EN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2E7,
+ },
+ [0x1E2E8]={
+ category="lo",
+ description="WANCHO LETTER AAN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2E8,
+ },
+ [0x1E2E9]={
+ category="lo",
+ description="WANCHO LETTER NYA",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2E9,
+ },
+ [0x1E2EA]={
+ category="lo",
+ description="WANCHO LETTER UEN",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2EA,
+ },
+ [0x1E2EB]={
+ category="lo",
+ description="WANCHO LETTER YIH",
+ direction="l",
+ linebreak="al",
+ unicodeslot=0x1E2EB,
+ },
+ [0x1E2EC]={
+ category="mn",
+ combining=0xE6,
+ description="WANCHO TONE TUP",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E2EC,
+ },
+ [0x1E2ED]={
+ category="mn",
+ combining=0xE6,
+ description="WANCHO TONE TUPNI",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E2ED,
+ },
+ [0x1E2EE]={
+ category="mn",
+ combining=0xE6,
+ description="WANCHO TONE KOI",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E2EE,
+ },
+ [0x1E2EF]={
+ category="mn",
+ combining=0xE6,
+ description="WANCHO TONE KOINI",
+ direction="nsm",
+ linebreak="cm",
+ unicodeslot=0x1E2EF,
+ },
+ [0x1E2F0]={
+ category="nd",
+ description="WANCHO DIGIT ZERO",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E2F0,
+ },
+ [0x1E2F1]={
+ category="nd",
+ description="WANCHO DIGIT ONE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E2F1,
+ },
+ [0x1E2F2]={
+ category="nd",
+ description="WANCHO DIGIT TWO",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E2F2,
+ },
+ [0x1E2F3]={
+ category="nd",
+ description="WANCHO DIGIT THREE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E2F3,
+ },
+ [0x1E2F4]={
+ category="nd",
+ description="WANCHO DIGIT FOUR",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E2F4,
+ },
+ [0x1E2F5]={
+ category="nd",
+ description="WANCHO DIGIT FIVE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E2F5,
+ },
+ [0x1E2F6]={
+ category="nd",
+ description="WANCHO DIGIT SIX",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E2F6,
+ },
+ [0x1E2F7]={
+ category="nd",
+ description="WANCHO DIGIT SEVEN",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E2F7,
+ },
+ [0x1E2F8]={
+ category="nd",
+ description="WANCHO DIGIT EIGHT",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E2F8,
+ },
+ [0x1E2F9]={
+ category="nd",
+ description="WANCHO DIGIT NINE",
+ direction="l",
+ linebreak="nu",
+ unicodeslot=0x1E2F9,
+ },
+ [0x1E2FF]={
+ category="sc",
+ description="WANCHO NGUN SIGN",
+ direction="et",
+ linebreak="pr",
+ unicodeslot=0x1E2FF,
+ },
[0x1E800]={
category="lo",
description="MENDE KIKAKUI SYLLABLE M001 KI",
@@ -230166,6 +232590,14 @@ characters.data={
linebreak="cm",
unicodeslot=0x1E94A,
},
+ [0x1E94B]={
+ arabic="t",
+ category="lm",
+ description="ADLAM NASALIZATION MARK",
+ direction="r",
+ linebreak="al",
+ unicodeslot=0x1E94B,
+ },
[0x1E950]={
category="nd",
description="ADLAM DIGIT ZERO",
@@ -230726,6 +233158,433 @@ characters.data={
linebreak="al",
unicodeslot=0x1ECB4,
},
+ [0x1ED01]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER ONE",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED01,
+ },
+ [0x1ED02]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER TWO",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED02,
+ },
+ [0x1ED03]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER THREE",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED03,
+ },
+ [0x1ED04]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER FOUR",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED04,
+ },
+ [0x1ED05]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER FIVE",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED05,
+ },
+ [0x1ED06]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER SIX",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED06,
+ },
+ [0x1ED07]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER SEVEN",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED07,
+ },
+ [0x1ED08]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER EIGHT",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED08,
+ },
+ [0x1ED09]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER NINE",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED09,
+ },
+ [0x1ED0A]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER TEN",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED0A,
+ },
+ [0x1ED0B]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER TWENTY",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED0B,
+ },
+ [0x1ED0C]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER THIRTY",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED0C,
+ },
+ [0x1ED0D]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER FORTY",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED0D,
+ },
+ [0x1ED0E]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER FIFTY",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED0E,
+ },
+ [0x1ED0F]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER SIXTY",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED0F,
+ },
+ [0x1ED10]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER SEVENTY",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED10,
+ },
+ [0x1ED11]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER EIGHTY",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED11,
+ },
+ [0x1ED12]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER NINETY",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED12,
+ },
+ [0x1ED13]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER ONE HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED13,
+ },
+ [0x1ED14]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER TWO HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED14,
+ },
+ [0x1ED15]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER THREE HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED15,
+ },
+ [0x1ED16]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER FOUR HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED16,
+ },
+ [0x1ED17]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER FIVE HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED17,
+ },
+ [0x1ED18]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER SIX HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED18,
+ },
+ [0x1ED19]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER SEVEN HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED19,
+ },
+ [0x1ED1A]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER EIGHT HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED1A,
+ },
+ [0x1ED1B]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER NINE HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED1B,
+ },
+ [0x1ED1C]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER ONE THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED1C,
+ },
+ [0x1ED1D]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER TWO THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED1D,
+ },
+ [0x1ED1E]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER THREE THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED1E,
+ },
+ [0x1ED1F]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER FOUR THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED1F,
+ },
+ [0x1ED20]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER FIVE THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED20,
+ },
+ [0x1ED21]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER SIX THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED21,
+ },
+ [0x1ED22]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER SEVEN THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED22,
+ },
+ [0x1ED23]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER EIGHT THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED23,
+ },
+ [0x1ED24]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER NINE THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED24,
+ },
+ [0x1ED25]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER TEN THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED25,
+ },
+ [0x1ED26]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER TWENTY THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED26,
+ },
+ [0x1ED27]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER THIRTY THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED27,
+ },
+ [0x1ED28]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER FORTY THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED28,
+ },
+ [0x1ED29]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER FIFTY THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED29,
+ },
+ [0x1ED2A]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER SIXTY THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED2A,
+ },
+ [0x1ED2B]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER SEVENTY THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED2B,
+ },
+ [0x1ED2C]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER EIGHTY THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED2C,
+ },
+ [0x1ED2D]={
+ category="no",
+ description="OTTOMAN SIYAQ NUMBER NINETY THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED2D,
+ },
+ [0x1ED2E]={
+ category="so",
+ description="OTTOMAN SIYAQ MARRATAN",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED2E,
+ },
+ [0x1ED2F]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER TWO",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED2F,
+ },
+ [0x1ED30]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER THREE",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED30,
+ },
+ [0x1ED31]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER FOUR",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED31,
+ },
+ [0x1ED32]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER FIVE",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED32,
+ },
+ [0x1ED33]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER SIX",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED33,
+ },
+ [0x1ED34]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER SEVEN",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED34,
+ },
+ [0x1ED35]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER EIGHT",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED35,
+ },
+ [0x1ED36]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER NINE",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED36,
+ },
+ [0x1ED37]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER TEN",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED37,
+ },
+ [0x1ED38]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER FOUR HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED38,
+ },
+ [0x1ED39]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER SIX HUNDRED",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED39,
+ },
+ [0x1ED3A]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER TWO THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED3A,
+ },
+ [0x1ED3B]={
+ category="no",
+ description="OTTOMAN SIYAQ ALTERNATE NUMBER TEN THOUSAND",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED3B,
+ },
+ [0x1ED3C]={
+ category="no",
+ description="OTTOMAN SIYAQ FRACTION ONE HALF",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED3C,
+ },
+ [0x1ED3D]={
+ category="no",
+ description="OTTOMAN SIYAQ FRACTION ONE SIXTH",
+ direction="al",
+ linebreak="al",
+ unicodeslot=0x1ED3D,
+ },
[0x1EE00]={
category="lo",
comment="check math properties",
@@ -234508,6 +237367,14 @@ characters.data={
synonyms={ "marque deposee" },
unicodeslot=0x1F16B,
},
+ [0x1F16C]={
+ category="so",
+ description="RAISED MR SIGN",
+ direction="on",
+ linebreak="al",
+ specials={ "super", 0x4D, 0x52 },
+ unicodeslot=0x1F16C,
+ },
[0x1F170]={
category="so",
cjkwd="a",
@@ -238661,7 +241528,7 @@ characters.data={
cjkwd="w",
description="FAMILY",
direction="on",
- linebreak="id",
+ linebreak="eb",
unicodeslot=0x1F46A,
},
[0x1F46B]={
@@ -238669,7 +241536,7 @@ characters.data={
cjkwd="w",
description="MAN AND WOMAN HOLDING HANDS",
direction="on",
- linebreak="id",
+ linebreak="eb",
unicodeslot=0x1F46B,
},
[0x1F46C]={
@@ -238677,7 +241544,7 @@ characters.data={
cjkwd="w",
description="TWO MEN HOLDING HANDS",
direction="on",
- linebreak="id",
+ linebreak="eb",
unicodeslot=0x1F46C,
},
[0x1F46D]={
@@ -238685,7 +241552,7 @@ characters.data={
cjkwd="w",
description="TWO WOMEN HOLDING HANDS",
direction="on",
- linebreak="id",
+ linebreak="eb",
unicodeslot=0x1F46D,
},
[0x1F46E]={
@@ -238701,7 +241568,7 @@ characters.data={
cjkwd="w",
description="WOMAN WITH BUNNY EARS",
direction="on",
- linebreak="id",
+ linebreak="eb",
unicodeslot=0x1F46F,
},
[0x1F470]={
@@ -238958,7 +241825,7 @@ characters.data={
cjkwd="w",
description="KISS",
direction="on",
- linebreak="id",
+ linebreak="eb",
unicodeslot=0x1F48F,
},
[0x1F490]={
@@ -238974,7 +241841,7 @@ characters.data={
cjkwd="w",
description="COUPLE WITH HEART",
direction="on",
- linebreak="id",
+ linebreak="eb",
unicodeslot=0x1F491,
},
[0x1F492]={
@@ -243446,6 +246313,14 @@ characters.data={
linebreak="id",
unicodeslot=0x1F6D4,
},
+ [0x1F6D5]={
+ category="so",
+ cjkwd="w",
+ description="HINDU TEMPLE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F6D5,
+ },
[0x1F6E0]={
category="so",
description="HAMMER AND WRENCH",
@@ -243624,6 +246499,14 @@ characters.data={
linebreak="id",
unicodeslot=0x1F6F9,
},
+ [0x1F6FA]={
+ category="so",
+ cjkwd="w",
+ description="AUTO RICKSHAW",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F6FA,
+ },
[0x1F700]={
category="so",
description="ALCHEMICAL SYMBOL FOR QUINTESSENCE",
@@ -245060,6 +247943,102 @@ characters.data={
linebreak="id",
unicodeslot=0x1F7D8,
},
+ [0x1F7E0]={
+ category="so",
+ cjkwd="w",
+ description="LARGE ORANGE CIRCLE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7E0,
+ },
+ [0x1F7E1]={
+ category="so",
+ cjkwd="w",
+ description="LARGE YELLOW CIRCLE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7E1,
+ },
+ [0x1F7E2]={
+ category="so",
+ cjkwd="w",
+ description="LARGE GREEN CIRCLE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7E2,
+ },
+ [0x1F7E3]={
+ category="so",
+ cjkwd="w",
+ description="LARGE PURPLE CIRCLE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7E3,
+ },
+ [0x1F7E4]={
+ category="so",
+ cjkwd="w",
+ description="LARGE BROWN CIRCLE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7E4,
+ },
+ [0x1F7E5]={
+ category="so",
+ cjkwd="w",
+ description="LARGE RED SQUARE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7E5,
+ },
+ [0x1F7E6]={
+ category="so",
+ cjkwd="w",
+ description="LARGE BLUE SQUARE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7E6,
+ },
+ [0x1F7E7]={
+ category="so",
+ cjkwd="w",
+ description="LARGE ORANGE SQUARE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7E7,
+ },
+ [0x1F7E8]={
+ category="so",
+ cjkwd="w",
+ description="LARGE YELLOW SQUARE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7E8,
+ },
+ [0x1F7E9]={
+ category="so",
+ cjkwd="w",
+ description="LARGE GREEN SQUARE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7E9,
+ },
+ [0x1F7EA]={
+ category="so",
+ cjkwd="w",
+ description="LARGE PURPLE SQUARE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7EA,
+ },
+ [0x1F7EB]={
+ category="so",
+ cjkwd="w",
+ description="LARGE BROWN SQUARE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F7EB,
+ },
[0x1F800]={
category="so",
description="LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD",
@@ -246180,6 +249159,30 @@ characters.data={
linebreak="al",
unicodeslot=0x1F90B,
},
+ [0x1F90D]={
+ category="so",
+ cjkwd="w",
+ description="WHITE HEART",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F90D,
+ },
+ [0x1F90E]={
+ category="so",
+ cjkwd="w",
+ description="BROWN HEART",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F90E,
+ },
+ [0x1F90F]={
+ category="so",
+ cjkwd="w",
+ description="PINCHING HAND",
+ direction="on",
+ linebreak="eb",
+ unicodeslot=0x1F90F,
+ },
[0x1F910]={
category="so",
cjkwd="w",
@@ -246289,7 +249292,7 @@ characters.data={
cjkwd="w",
description="HANDSHAKE",
direction="on",
- linebreak="id",
+ linebreak="eb",
unicodeslot=0x1F91D,
},
[0x1F91E]={
@@ -246540,7 +249543,7 @@ characters.data={
cjkwd="w",
description="WRESTLERS",
direction="on",
- linebreak="id",
+ linebreak="eb",
unicodeslot=0x1F93C,
},
[0x1F93D]={
@@ -246559,6 +249562,14 @@ characters.data={
linebreak="eb",
unicodeslot=0x1F93E,
},
+ [0x1F93F]={
+ category="so",
+ cjkwd="w",
+ description="DIVING MASK",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F93F,
+ },
[0x1F940]={
category="so",
cjkwd="w",
@@ -246955,6 +249966,14 @@ characters.data={
linebreak="id",
unicodeslot=0x1F970,
},
+ [0x1F971]={
+ category="so",
+ cjkwd="w",
+ description="YAWNING FACE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F971,
+ },
[0x1F973]={
category="so",
cjkwd="w",
@@ -246995,6 +250014,14 @@ characters.data={
linebreak="id",
unicodeslot=0x1F97A,
},
+ [0x1F97B]={
+ category="so",
+ cjkwd="w",
+ description="SARI",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F97B,
+ },
[0x1F97C]={
category="so",
cjkwd="w",
@@ -247308,6 +250335,70 @@ characters.data={
linebreak="id",
unicodeslot=0x1F9A2,
},
+ [0x1F9A5]={
+ category="so",
+ cjkwd="w",
+ description="SLOTH",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9A5,
+ },
+ [0x1F9A6]={
+ category="so",
+ cjkwd="w",
+ description="OTTER",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9A6,
+ },
+ [0x1F9A7]={
+ category="so",
+ cjkwd="w",
+ description="ORANGUTAN",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9A7,
+ },
+ [0x1F9A8]={
+ category="so",
+ cjkwd="w",
+ description="SKUNK",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9A8,
+ },
+ [0x1F9A9]={
+ category="so",
+ cjkwd="w",
+ description="FLAMINGO",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9A9,
+ },
+ [0x1F9AA]={
+ category="so",
+ cjkwd="w",
+ description="OYSTER",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9AA,
+ },
+ [0x1F9AE]={
+ category="so",
+ cjkwd="w",
+ description="GUIDE DOG",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9AE,
+ },
+ [0x1F9AF]={
+ category="so",
+ cjkwd="w",
+ description="PROBING CANE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9AF,
+ },
[0x1F9B0]={
category="so",
cjkwd="w",
@@ -247388,6 +250479,54 @@ characters.data={
linebreak="eb",
unicodeslot=0x1F9B9,
},
+ [0x1F9BA]={
+ category="so",
+ cjkwd="w",
+ description="SAFETY VEST",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9BA,
+ },
+ [0x1F9BB]={
+ category="so",
+ cjkwd="w",
+ description="EAR WITH HEARING AID",
+ direction="on",
+ linebreak="eb",
+ unicodeslot=0x1F9BB,
+ },
+ [0x1F9BC]={
+ category="so",
+ cjkwd="w",
+ description="MOTORIZED WHEELCHAIR",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9BC,
+ },
+ [0x1F9BD]={
+ category="so",
+ cjkwd="w",
+ description="MANUAL WHEELCHAIR",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9BD,
+ },
+ [0x1F9BE]={
+ category="so",
+ cjkwd="w",
+ description="MECHANICAL ARM",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9BE,
+ },
+ [0x1F9BF]={
+ category="so",
+ cjkwd="w",
+ description="MECHANICAL LEG",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9BF,
+ },
[0x1F9C0]={
category="so",
cjkwd="w",
@@ -247412,6 +250551,94 @@ characters.data={
linebreak="id",
unicodeslot=0x1F9C2,
},
+ [0x1F9C3]={
+ category="so",
+ cjkwd="w",
+ description="BEVERAGE BOX",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9C3,
+ },
+ [0x1F9C4]={
+ category="so",
+ cjkwd="w",
+ description="GARLIC",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9C4,
+ },
+ [0x1F9C5]={
+ category="so",
+ cjkwd="w",
+ description="ONION",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9C5,
+ },
+ [0x1F9C6]={
+ category="so",
+ cjkwd="w",
+ description="FALAFEL",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9C6,
+ },
+ [0x1F9C7]={
+ category="so",
+ cjkwd="w",
+ description="WAFFLE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9C7,
+ },
+ [0x1F9C8]={
+ category="so",
+ cjkwd="w",
+ description="BUTTER",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9C8,
+ },
+ [0x1F9C9]={
+ category="so",
+ cjkwd="w",
+ description="MATE DRINK",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9C9,
+ },
+ [0x1F9CA]={
+ category="so",
+ cjkwd="w",
+ description="ICE CUBE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1F9CA,
+ },
+ [0x1F9CD]={
+ category="so",
+ cjkwd="w",
+ description="STANDING PERSON",
+ direction="on",
+ linebreak="eb",
+ unicodeslot=0x1F9CD,
+ },
+ [0x1F9CE]={
+ category="so",
+ cjkwd="w",
+ description="KNEELING PERSON",
+ direction="on",
+ linebreak="eb",
+ unicodeslot=0x1F9CE,
+ },
+ [0x1F9CF]={
+ category="so",
+ cjkwd="w",
+ description="DEAF PERSON",
+ direction="on",
+ linebreak="eb",
+ unicodeslot=0x1F9CF,
+ },
[0x1F9D0]={
category="so",
cjkwd="w",
@@ -247796,6 +251023,594 @@ characters.data={
linebreak="id",
unicodeslot=0x1F9FF,
},
+ [0x1FA00]={
+ category="so",
+ description="NEUTRAL CHESS KING",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA00,
+ },
+ [0x1FA01]={
+ category="so",
+ description="NEUTRAL CHESS QUEEN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA01,
+ },
+ [0x1FA02]={
+ category="so",
+ description="NEUTRAL CHESS ROOK",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA02,
+ },
+ [0x1FA03]={
+ category="so",
+ description="NEUTRAL CHESS BISHOP",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA03,
+ },
+ [0x1FA04]={
+ category="so",
+ description="NEUTRAL CHESS KNIGHT",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA04,
+ },
+ [0x1FA05]={
+ category="so",
+ description="NEUTRAL CHESS PAWN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA05,
+ },
+ [0x1FA06]={
+ category="so",
+ description="WHITE CHESS KNIGHT ROTATED FORTY-FIVE DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA06,
+ },
+ [0x1FA07]={
+ category="so",
+ description="BLACK CHESS KNIGHT ROTATED FORTY-FIVE DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA07,
+ },
+ [0x1FA08]={
+ category="so",
+ description="NEUTRAL CHESS KNIGHT ROTATED FORTY-FIVE DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA08,
+ },
+ [0x1FA09]={
+ category="so",
+ description="WHITE CHESS KING ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA09,
+ },
+ [0x1FA0A]={
+ category="so",
+ description="WHITE CHESS QUEEN ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA0A,
+ },
+ [0x1FA0B]={
+ category="so",
+ description="WHITE CHESS ROOK ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA0B,
+ },
+ [0x1FA0C]={
+ category="so",
+ description="WHITE CHESS BISHOP ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA0C,
+ },
+ [0x1FA0D]={
+ category="so",
+ description="WHITE CHESS KNIGHT ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA0D,
+ },
+ [0x1FA0E]={
+ category="so",
+ description="WHITE CHESS PAWN ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA0E,
+ },
+ [0x1FA0F]={
+ category="so",
+ description="BLACK CHESS KING ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA0F,
+ },
+ [0x1FA10]={
+ category="so",
+ description="BLACK CHESS QUEEN ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA10,
+ },
+ [0x1FA11]={
+ category="so",
+ description="BLACK CHESS ROOK ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA11,
+ },
+ [0x1FA12]={
+ category="so",
+ description="BLACK CHESS BISHOP ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA12,
+ },
+ [0x1FA13]={
+ category="so",
+ description="BLACK CHESS KNIGHT ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA13,
+ },
+ [0x1FA14]={
+ category="so",
+ description="BLACK CHESS PAWN ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA14,
+ },
+ [0x1FA15]={
+ category="so",
+ description="NEUTRAL CHESS KING ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA15,
+ },
+ [0x1FA16]={
+ category="so",
+ description="NEUTRAL CHESS QUEEN ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA16,
+ },
+ [0x1FA17]={
+ category="so",
+ description="NEUTRAL CHESS ROOK ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA17,
+ },
+ [0x1FA18]={
+ category="so",
+ description="NEUTRAL CHESS BISHOP ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA18,
+ },
+ [0x1FA19]={
+ category="so",
+ description="NEUTRAL CHESS KNIGHT ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA19,
+ },
+ [0x1FA1A]={
+ category="so",
+ description="NEUTRAL CHESS PAWN ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA1A,
+ },
+ [0x1FA1B]={
+ category="so",
+ description="WHITE CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA1B,
+ },
+ [0x1FA1C]={
+ category="so",
+ description="BLACK CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA1C,
+ },
+ [0x1FA1D]={
+ category="so",
+ description="NEUTRAL CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA1D,
+ },
+ [0x1FA1E]={
+ category="so",
+ description="WHITE CHESS TURNED KING",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA1E,
+ },
+ [0x1FA1F]={
+ category="so",
+ description="WHITE CHESS TURNED QUEEN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA1F,
+ },
+ [0x1FA20]={
+ category="so",
+ description="WHITE CHESS TURNED ROOK",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA20,
+ },
+ [0x1FA21]={
+ category="so",
+ description="WHITE CHESS TURNED BISHOP",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA21,
+ },
+ [0x1FA22]={
+ category="so",
+ description="WHITE CHESS TURNED KNIGHT",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA22,
+ },
+ [0x1FA23]={
+ category="so",
+ description="WHITE CHESS TURNED PAWN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA23,
+ },
+ [0x1FA24]={
+ category="so",
+ description="BLACK CHESS TURNED KING",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA24,
+ },
+ [0x1FA25]={
+ category="so",
+ description="BLACK CHESS TURNED QUEEN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA25,
+ },
+ [0x1FA26]={
+ category="so",
+ description="BLACK CHESS TURNED ROOK",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA26,
+ },
+ [0x1FA27]={
+ category="so",
+ description="BLACK CHESS TURNED BISHOP",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA27,
+ },
+ [0x1FA28]={
+ category="so",
+ description="BLACK CHESS TURNED KNIGHT",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA28,
+ },
+ [0x1FA29]={
+ category="so",
+ description="BLACK CHESS TURNED PAWN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA29,
+ },
+ [0x1FA2A]={
+ category="so",
+ description="NEUTRAL CHESS TURNED KING",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA2A,
+ },
+ [0x1FA2B]={
+ category="so",
+ description="NEUTRAL CHESS TURNED QUEEN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA2B,
+ },
+ [0x1FA2C]={
+ category="so",
+ description="NEUTRAL CHESS TURNED ROOK",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA2C,
+ },
+ [0x1FA2D]={
+ category="so",
+ description="NEUTRAL CHESS TURNED BISHOP",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA2D,
+ },
+ [0x1FA2E]={
+ category="so",
+ description="NEUTRAL CHESS TURNED KNIGHT",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA2E,
+ },
+ [0x1FA2F]={
+ category="so",
+ description="NEUTRAL CHESS TURNED PAWN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA2F,
+ },
+ [0x1FA30]={
+ category="so",
+ description="WHITE CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA30,
+ },
+ [0x1FA31]={
+ category="so",
+ description="BLACK CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA31,
+ },
+ [0x1FA32]={
+ category="so",
+ description="NEUTRAL CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA32,
+ },
+ [0x1FA33]={
+ category="so",
+ description="WHITE CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA33,
+ },
+ [0x1FA34]={
+ category="so",
+ description="WHITE CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA34,
+ },
+ [0x1FA35]={
+ category="so",
+ description="WHITE CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA35,
+ },
+ [0x1FA36]={
+ category="so",
+ description="WHITE CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA36,
+ },
+ [0x1FA37]={
+ category="so",
+ description="WHITE CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA37,
+ },
+ [0x1FA38]={
+ category="so",
+ description="WHITE CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA38,
+ },
+ [0x1FA39]={
+ category="so",
+ description="BLACK CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA39,
+ },
+ [0x1FA3A]={
+ category="so",
+ description="BLACK CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA3A,
+ },
+ [0x1FA3B]={
+ category="so",
+ description="BLACK CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA3B,
+ },
+ [0x1FA3C]={
+ category="so",
+ description="BLACK CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA3C,
+ },
+ [0x1FA3D]={
+ category="so",
+ description="BLACK CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA3D,
+ },
+ [0x1FA3E]={
+ category="so",
+ description="BLACK CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA3E,
+ },
+ [0x1FA3F]={
+ category="so",
+ description="NEUTRAL CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA3F,
+ },
+ [0x1FA40]={
+ category="so",
+ description="NEUTRAL CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA40,
+ },
+ [0x1FA41]={
+ category="so",
+ description="NEUTRAL CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA41,
+ },
+ [0x1FA42]={
+ category="so",
+ description="NEUTRAL CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA42,
+ },
+ [0x1FA43]={
+ category="so",
+ description="NEUTRAL CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA43,
+ },
+ [0x1FA44]={
+ category="so",
+ description="NEUTRAL CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA44,
+ },
+ [0x1FA45]={
+ category="so",
+ description="WHITE CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA45,
+ },
+ [0x1FA46]={
+ category="so",
+ description="BLACK CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA46,
+ },
+ [0x1FA47]={
+ category="so",
+ description="NEUTRAL CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA47,
+ },
+ [0x1FA48]={
+ category="so",
+ description="WHITE CHESS EQUIHOPPER",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA48,
+ },
+ [0x1FA49]={
+ category="so",
+ description="BLACK CHESS EQUIHOPPER",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA49,
+ },
+ [0x1FA4A]={
+ category="so",
+ description="NEUTRAL CHESS EQUIHOPPER",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA4A,
+ },
+ [0x1FA4B]={
+ category="so",
+ description="WHITE CHESS EQUIHOPPER ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA4B,
+ },
+ [0x1FA4C]={
+ category="so",
+ description="BLACK CHESS EQUIHOPPER ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA4C,
+ },
+ [0x1FA4D]={
+ category="so",
+ description="NEUTRAL CHESS EQUIHOPPER ROTATED NINETY DEGREES",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA4D,
+ },
+ [0x1FA4E]={
+ category="so",
+ description="WHITE CHESS KNIGHT-QUEEN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA4E,
+ },
+ [0x1FA4F]={
+ category="so",
+ description="WHITE CHESS KNIGHT-ROOK",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA4F,
+ },
+ [0x1FA50]={
+ category="so",
+ description="WHITE CHESS KNIGHT-BISHOP",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA50,
+ },
+ [0x1FA51]={
+ category="so",
+ description="BLACK CHESS KNIGHT-QUEEN",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA51,
+ },
+ [0x1FA52]={
+ category="so",
+ description="BLACK CHESS KNIGHT-ROOK",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA52,
+ },
+ [0x1FA53]={
+ category="so",
+ description="BLACK CHESS KNIGHT-BISHOP",
+ direction="on",
+ linebreak="al",
+ unicodeslot=0x1FA53,
+ },
[0x1FA60]={
category="so",
description="XIANGQI RED GENERAL",
@@ -247894,6 +251709,134 @@ characters.data={
linebreak="id",
unicodeslot=0x1FA6D,
},
+ [0x1FA70]={
+ category="so",
+ cjkwd="w",
+ description="BALLET SHOES",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA70,
+ },
+ [0x1FA71]={
+ category="so",
+ cjkwd="w",
+ description="ONE-PIECE SWIMSUIT",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA71,
+ },
+ [0x1FA72]={
+ category="so",
+ cjkwd="w",
+ description="BRIEFS",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA72,
+ },
+ [0x1FA73]={
+ category="so",
+ cjkwd="w",
+ description="SHORTS",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA73,
+ },
+ [0x1FA78]={
+ category="so",
+ cjkwd="w",
+ description="DROP OF BLOOD",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA78,
+ },
+ [0x1FA79]={
+ category="so",
+ cjkwd="w",
+ description="ADHESIVE BANDAGE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA79,
+ },
+ [0x1FA7A]={
+ category="so",
+ cjkwd="w",
+ description="STETHOSCOPE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA7A,
+ },
+ [0x1FA80]={
+ category="so",
+ cjkwd="w",
+ description="YO-YO",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA80,
+ },
+ [0x1FA81]={
+ category="so",
+ cjkwd="w",
+ description="KITE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA81,
+ },
+ [0x1FA82]={
+ category="so",
+ cjkwd="w",
+ description="PARACHUTE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA82,
+ },
+ [0x1FA90]={
+ category="so",
+ cjkwd="w",
+ description="RINGED PLANET",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA90,
+ },
+ [0x1FA91]={
+ category="so",
+ cjkwd="w",
+ description="CHAIR",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA91,
+ },
+ [0x1FA92]={
+ category="so",
+ cjkwd="w",
+ description="RAZOR",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA92,
+ },
+ [0x1FA93]={
+ category="so",
+ cjkwd="w",
+ description="AXE",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA93,
+ },
+ [0x1FA94]={
+ category="so",
+ cjkwd="w",
+ description="DIYA LAMP",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA94,
+ },
+ [0x1FA95]={
+ category="so",
+ cjkwd="w",
+ description="BANJO",
+ direction="on",
+ linebreak="id",
+ unicodeslot=0x1FA95,
+ },
[0x2F800]={
category="lo",
cjkwd="w",
@@ -253456,4 +257399,4 @@ characters.data={
synonyms={ "vs17" },
unicodeslot=0xE0100,
},
-}
+} \ No newline at end of file
diff --git a/tex/context/base/mkiv/char-ini.lua b/tex/context/base/mkiv/char-ini.lua
index fb9d9f126..e0cbf6bdd 100644
--- a/tex/context/base/mkiv/char-ini.lua
+++ b/tex/context/base/mkiv/char-ini.lua
@@ -192,6 +192,7 @@ insert(characters.ranges,{
end,
})
+
local blocks = allocate {
["adlam"] = { first = 0x1E900, last = 0x1E95F, description = "Adlam" },
["aegeannumbers"] = { first = 0x10100, last = 0x1013F, description = "Aegean Numbers" },
@@ -297,12 +298,14 @@ local blocks = allocate {
-- ["digitsthai"] = { first = 0x00E50, last = 0x00E59, math = true },
-- ["digitstibetan"] = { first = 0x00F20, last = 0x00F29, math = true },
["dingbats"] = { first = 0x02700, last = 0x027BF, description = "Dingbats" },
- ["dogra"] = { first = 0x11800, last = 0x1184F, description = "Dogra" },
+ ["dogra"] = { first = 0x11800, last = 0x1184F, description = "Dogra" },
["dominotiles"] = { first = 0x1F030, last = 0x1F09F, description = "Domino Tiles" },
["duployan"] = { first = 0x1BC00, last = 0x1BC9F, description = "Duployan" },
["earlydynasticcuneiform"] = { first = 0x12480, last = 0x1254F, description = "Early Dynastic Cuneiform" },
+ ["egyptianhieroglyphformatcontrols"] = { first = 0x13430, last = 0x1343F, description = "Egyptian Hieroglyph Format Controls" },
["egyptianhieroglyphs"] = { first = 0x13000, last = 0x1342F, description = "Egyptian Hieroglyphs" },
["elbasan"] = { first = 0x10500, last = 0x1052F, description = "Elbasan" },
+ ["elymaic"] = { first = 0x10FE0, last = 0x10FFF, description = "Elymaic" },
["emoticons"] = { first = 0x1F600, last = 0x1F64F, description = "Emoticons" },
["enclosedalphanumerics"] = { first = 0x02460, last = 0x024FF, description = "Enclosed Alphanumerics" },
["enclosedalphanumericsupplement"] = { first = 0x1F100, last = 0x1F1FF, description = "Enclosed Alphanumeric Supplement" },
@@ -316,7 +319,7 @@ local blocks = allocate {
["geometricshapes"] = { first = 0x025A0, last = 0x025FF, math = true, description = "Geometric Shapes" },
["geometricshapesextended"] = { first = 0x1F780, last = 0x1F7FF, description = "Geometric Shapes Extended" },
["georgian"] = { first = 0x010A0, last = 0x010FF, otf="geor", description = "Georgian" },
- ["georgianextended"] = { first = 0x01C90, last = 0x01CBF, description = "Georgian Extended" },
+ ["georgianextended"] = { first = 0x01C90, last = 0x01CBF, description = "Georgian Extended" },
["georgiansupplement"] = { first = 0x02D00, last = 0x02D2F, otf="geor", description = "Georgian Supplement" },
["glagolitic"] = { first = 0x02C00, last = 0x02C5F, otf="glag", description = "Glagolitic" },
["glagoliticsupplement"] = { first = 0x1E000, last = 0x1E02F, description = "Glagolitic Supplement" },
@@ -325,7 +328,7 @@ local blocks = allocate {
["greekandcoptic"] = { first = 0x00370, last = 0x003FF, otf="grek", description = "Greek and Coptic" },
["greekextended"] = { first = 0x01F00, last = 0x01FFF, otf="grek", description = "Greek Extended" },
["gujarati"] = { first = 0x00A80, last = 0x00AFF, otf="gujr", description = "Gujarati" },
- ["gunjalagondi"] = { first = 0x11D60, last = 0x11DAF, description = "Gunjala Gondi" },
+ ["gunjalagondi"] = { first = 0x11D60, last = 0x11DAF, description = "Gunjala Gondi" },
["gurmukhi"] = { first = 0x00A00, last = 0x00A7F, otf="guru", description = "Gurmukhi" },
["halfwidthandfullwidthforms"] = { first = 0x0FF00, last = 0x0FFEF, description = "Halfwidth and Fullwidth Forms" },
["hangulcompatibilityjamo"] = { first = 0x03130, last = 0x0318F, otf="jamo", description = "Hangul Compatibility Jamo" },
@@ -333,7 +336,7 @@ local blocks = allocate {
["hanguljamoextendeda"] = { first = 0x0A960, last = 0x0A97F, description = "Hangul Jamo Extended-A" },
["hanguljamoextendedb"] = { first = 0x0D7B0, last = 0x0D7FF, description = "Hangul Jamo Extended-B" },
["hangulsyllables"] = { first = 0x0AC00, last = 0x0D7AF, otf="hang", description = "Hangul Syllables" },
- ["hanifirohingya"] = { first = 0x10D00, last = 0x10D3F, description = "Hanifi Rohingya" },
+ ["hanifirohingya"] = { first = 0x10D00, last = 0x10D3F, description = "Hanifi Rohingya" },
["hanunoo"] = { first = 0x01720, last = 0x0173F, otf="hano", description = "Hanunoo" },
["hatran"] = { first = 0x108E0, last = 0x108FF, description = "Hatran" },
["hebrew"] = { first = 0x00590, last = 0x005FF, otf="hebr", description = "Hebrew" },
@@ -343,7 +346,7 @@ local blocks = allocate {
["ideographicdescriptioncharacters"] = { first = 0x02FF0, last = 0x02FFF, description = "Ideographic Description Characters" },
["ideographicsymbolsandpunctuation"] = { first = 0x16FE0, last = 0x16FFF, description = "Ideographic Symbols and Punctuation" },
["imperialaramaic"] = { first = 0x10840, last = 0x1085F, description = "Imperial Aramaic" },
- ["indicsiyaqnumbers"] = { first = 0x1EC70, last = 0x1ECBF, description = "Indic Siyaq Numbers" },
+ ["indicsiyaqnumbers"] = { first = 0x1EC70, last = 0x1ECBF, description = "Indic Siyaq Numbers" },
["inscriptionalpahlavi"] = { first = 0x10B60, last = 0x10B7F, description = "Inscriptional Pahlavi" },
["inscriptionalparthian"] = { first = 0x10B40, last = 0x10B5F, description = "Inscriptional Parthian" },
["ipaextensions"] = { first = 0x00250, last = 0x002AF, description = "IPA Extensions" },
@@ -402,7 +405,7 @@ local blocks = allocate {
["lydian"] = { first = 0x10920, last = 0x1093F, description = "Lydian" },
["mahajani"] = { first = 0x11150, last = 0x1117F, description = "Mahajani" },
["mahjongtiles"] = { first = 0x1F000, last = 0x1F02F, description = "Mahjong Tiles" },
- ["makasar"] = { first = 0x11EE0, last = 0x11EFF, description = "Makasar" },
+ ["makasar"] = { first = 0x11EE0, last = 0x11EFF, description = "Makasar" },
["malayalam"] = { first = 0x00D00, last = 0x00D7F, otf="mlym", description = "Malayalam" },
["mandaic"] = { first = 0x00840, last = 0x0085F, otf="mand", description = "Mandaic" },
["manichaean"] = { first = 0x10AC0, last = 0x10AFF, description = "Manichaean" },
@@ -410,8 +413,8 @@ local blocks = allocate {
["masaramgondi"] = { first = 0x11D00, last = 0x11D5F, description = "Masaram Gondi" },
["mathematicalalphanumericsymbols"] = { first = 0x1D400, last = 0x1D7FF, math = true, description = "Mathematical Alphanumeric Symbols" },
["mathematicaloperators"] = { first = 0x02200, last = 0x022FF, math = true, description = "Mathematical Operators" },
- ["mayannumerals"] = { first = 0x1D2E0, last = 0x1D2FF, description = "Mayan Numerals" },
- ["medefaidrin"] = { first = 0x16E40, last = 0x16E9F, description = "Medefaidrin" },
+ ["mayannumerals"] = { first = 0x1D2E0, last = 0x1D2FF, description = "Mayan Numerals" },
+ ["medefaidrin"] = { first = 0x16E40, last = 0x16E9F, description = "Medefaidrin" },
["meeteimayek"] = { first = 0x0ABC0, last = 0x0ABFF, description = "Meetei Mayek" },
["meeteimayekextensions"] = { first = 0x0AAE0, last = 0x0AAFF, description = "Meetei Mayek Extensions" },
["mendekikakui"] = { first = 0x1E800, last = 0x1E8DF, description = "Mende Kikakui" },
@@ -435,11 +438,13 @@ local blocks = allocate {
["myanmarextendeda"] = { first = 0x0AA60, last = 0x0AA7F, description = "Myanmar Extended-A" },
["myanmarextendedb"] = { first = 0x0A9E0, last = 0x0A9FF, description = "Myanmar Extended-B" },
["nabataean"] = { first = 0x10880, last = 0x108AF, description = "Nabataean" },
+ ["nandinagari"] = { first = 0x119A0, last = 0x119FF, description = "Nandinagari" },
["newa"] = { first = 0x11400, last = 0x1147F, description = "Newa" },
["newtailue"] = { first = 0x01980, last = 0x019DF, description = "New Tai Lue" },
["nko"] = { first = 0x007C0, last = 0x007FF, otf="nko", description = "NKo" },
["numberforms"] = { first = 0x02150, last = 0x0218F, description = "Number Forms" },
["nushu"] = { first = 0x1B170, last = 0x1B2FF, description = "Nushu" },
+ ["nyiakengpuachuehmong"] = { first = 0x1E100, last = 0x1E14F, description = "Nyiakeng Puachue Hmong" },
["ogham"] = { first = 0x01680, last = 0x0169F, otf="ogam", description = "Ogham" },
["olchiki"] = { first = 0x01C50, last = 0x01C7F, description = "Ol Chiki" },
["oldhungarian"] = { first = 0x10C80, last = 0x10CFF, description = "Old Hungarian" },
@@ -447,7 +452,7 @@ local blocks = allocate {
["oldnortharabian"] = { first = 0x10A80, last = 0x10A9F, description = "Old North Arabian" },
["oldpermic"] = { first = 0x10350, last = 0x1037F, description = "Old Permic" },
["oldpersian"] = { first = 0x103A0, last = 0x103DF, otf="xpeo", description = "Old Persian" },
- ["oldsogdian"] = { first = 0x10F00, last = 0x10F2F, description = "Old Sogdian" },
+ ["oldsogdian"] = { first = 0x10F00, last = 0x10F2F, description = "Old Sogdian" },
["oldsoutharabian"] = { first = 0x10A60, last = 0x10A7F, description = "Old South Arabian" },
["oldturkic"] = { first = 0x10C00, last = 0x10C4F, description = "Old Turkic" },
["opticalcharacterrecognition"] = { first = 0x02440, last = 0x0245F, description = "Optical Character Recognition" },
@@ -455,6 +460,7 @@ local blocks = allocate {
["ornamentaldingbats"] = { first = 0x1F650, last = 0x1F67F, description = "Ornamental Dingbats" },
["osage"] = { first = 0x104B0, last = 0x104FF, description = "Osage" },
["osmanya"] = { first = 0x10480, last = 0x104AF, otf="osma", description = "Osmanya" },
+ ["ottomansiyaqnumbers"] = { first = 0x1ED00, last = 0x1ED4F, description = "Ottoman Siyaq Numbers" },
["pahawhhmong"] = { first = 0x16B00, last = 0x16B8F, description = "Pahawh Hmong" },
["palmyrene"] = { first = 0x10860, last = 0x1087F, description = "Palmyrene" },
["paucinhau"] = { first = 0x11AC0, last = 0x11AFF, description = "Pau Cin Hau" },
@@ -478,7 +484,8 @@ local blocks = allocate {
["sinhala"] = { first = 0x00D80, last = 0x00DFF, otf="sinh", description = "Sinhala" },
["sinhalaarchaicnumbers"] = { first = 0x111E0, last = 0x111FF, description = "Sinhala Archaic Numbers" },
["smallformvariants"] = { first = 0x0FE50, last = 0x0FE6F, description = "Small Form Variants" },
- ["sogdian"] = { first = 0x10F30, last = 0x10F6F, description = "Sogdian" },
+ ["smallkanaextension"] = { first = 0x1B130, last = 0x1B16F, description = "Small Kana Extension" },
+ ["sogdian"] = { first = 0x10F30, last = 0x10F6F, description = "Sogdian" },
["sorasompeng"] = { first = 0x110D0, last = 0x110FF, description = "Sora Sompeng" },
["soyombo"] = { first = 0x11A50, last = 0x11AAF, description = "Soyombo" },
["spacingmodifierletters"] = { first = 0x002B0, last = 0x002FF, description = "Spacing Modifier Letters" },
@@ -496,6 +503,7 @@ local blocks = allocate {
["supplementaryprivateuseareab"] = { first = 0x100000,last = 0x10FFFF, description = "Supplementary Private Use Area-B" },
["suttonsignwriting"] = { first = 0x1D800, last = 0x1DAAF, description = "Sutton SignWriting" },
["sylotinagri"] = { first = 0x0A800, last = 0x0A82F, otf="sylo", description = "Syloti Nagri" },
+ ["symbolsandpictographsextendeda"] = { first = 0x1FA70, last = 0x1FAFF, description = "Symbols and Pictographs Extended-A" },
["syriac"] = { first = 0x00700, last = 0x0074F, otf="syrc", description = "Syriac" },
["syriacsupplement"] = { first = 0x00860, last = 0x0086F, description = "Syriac Supplement" },
["tagalog"] = { first = 0x01700, last = 0x0171F, otf="tglg", description = "Tagalog" },
@@ -507,6 +515,7 @@ local blocks = allocate {
["taixuanjingsymbols"] = { first = 0x1D300, last = 0x1D35F, description = "Tai Xuan Jing Symbols" },
["takri"] = { first = 0x11680, last = 0x116CF, description = "Takri" },
["tamil"] = { first = 0x00B80, last = 0x00BFF, otf="taml", description = "Tamil" },
+ ["tamilsupplement"] = { first = 0x11FC0, last = 0x11FFF, description = "Tamil Supplement" },
["tangut"] = { first = 0x17000, last = 0x187FF, description = "Tangut" },
["tangutcomponents"] = { first = 0x18800, last = 0x18AFF, description = "Tangut Components" },
["telugu"] = { first = 0x00C00, last = 0x00C7F, otf="telu", description = "Telugu" },
@@ -544,6 +553,7 @@ local blocks = allocate {
["variationselectorssupplement"] = { first = 0xE0100, last = 0xE01EF, description = "Variation Selectors Supplement" },
["vedicextensions"] = { first = 0x01CD0, last = 0x01CFF, description = "Vedic Extensions" },
["verticalforms"] = { first = 0x0FE10, last = 0x0FE1F, description = "Vertical Forms" },
+ ["wancho"] = { first = 0x1E2C0, last = 0x1E2FF, description = "Wancho" },
["warangciti"] = { first = 0x118A0, last = 0x118FF, description = "Warang Citi" },
["yijinghexagramsymbols"] = { first = 0x04DC0, last = 0x04DFF, otf="yi", description = "Yijing Hexagram Symbols" },
["yiradicals"] = { first = 0x0A490, last = 0x0A4CF, otf="yi", description = "Yi Radicals" },
diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv
index e3d427c21..590dbdf6b 100644
--- a/tex/context/base/mkiv/cont-new.mkiv
+++ b/tex/context/base/mkiv/cont-new.mkiv
@@ -13,7 +13,7 @@
% \normalend % uncomment this to get the real base runtime
-\newcontextversion{2019.05.29 19:11}
+\newcontextversion{2019.06.01 19:11}
%D This file is loaded at runtime, thereby providing an excellent place for
%D hacks, patches, extensions and new features.
diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv
index daa21816a..d0cf6ec89 100644
--- a/tex/context/base/mkiv/context.mkiv
+++ b/tex/context/base/mkiv/context.mkiv
@@ -45,7 +45,7 @@
%D {YYYY.MM.DD HH:MM} format.
\edef\contextformat {\jobname}
-\edef\contextversion{2019.05.29 19:11}
+\edef\contextversion{2019.06.01 19:11}
\edef\contextkind {beta}
%D Kind of special:
@@ -527,6 +527,7 @@
\loadmkvifile{strc-not}
\loadmkvifile{strc-lnt}
+\loadmkivfile{strc-tnt}
\loadmkivfile{strc-usr}
\loadmarkfile{pack-com}
diff --git a/tex/context/base/mkiv/font-ctx.lua b/tex/context/base/mkiv/font-ctx.lua
index 61c5f3929..2d528728a 100644
--- a/tex/context/base/mkiv/font-ctx.lua
+++ b/tex/context/base/mkiv/font-ctx.lua
@@ -1127,199 +1127,17 @@ do -- else too many locals
end
end
- local n = 0
-
- -- we can also move rscale to here (more consistent)
- -- the argument list will become a table
-
local function nice_cs(cs)
return (gsub(cs,".->", ""))
end
- -- function commands.definefont_two(global,cs,str,size,inheritancemode,classfeatures,fontfeatures,classfallbacks,fontfallbacks,
- -- mathsize,textsize,relativeid,classgoodies,goodies,classdesignsize,fontdesignsize,scaledfontmode)
-
--- scanners.definefont_two = function()
-
--- local global = scanboolean() -- \ifx\fontclass\empty\s!false\else\s!true\fi
--- local cs = scanstring () -- {#csname}%
--- local str = scanstring () -- \somefontfile
--- local size = scaninteger() -- \d_font_scaled_font_size
--- local inheritancemode = scaninteger() -- \c_font_feature_inheritance_mode
--- local classfeatures = scanstring () -- \m_font_class_features
--- local fontfeatures = scanstring () -- \m_font_features
--- local classfallbacks = scanstring () -- \m_font_class_fallbacks
--- local fontfallbacks = scanstring () -- \m_font_fallbacks
--- local mathsize = scaninteger() -- \fontface
--- local textsize = scaninteger() -- \d_font_scaled_text_face
--- local relativeid = scaninteger() -- \relativefontid
--- local classgoodies = scanstring () -- \m_font_class_goodies
--- local goodies = scanstring () -- \m_font_goodies
--- local classdesignsize = scanstring () -- \m_font_class_designsize
--- local fontdesignsize = scanstring () -- \m_font_designsize
--- local scaledfontmode = scaninteger() -- \scaledfontmode
-
--- if trace_defining then
--- report_defining("start stage two: %s, size %s, features %a & %a",str,size,classfeatures,fontfeatures)
--- end
--- -- name is now resolved and size is scaled cf sa/mo
--- local lookup, name, sub, method, detail = getspecification(str or "")
--- -- new (todo: inheritancemode)
--- local designsize = fontdesignsize ~= "" and fontdesignsize or classdesignsize or ""
--- local designname = designsizefilename(name,designsize,size)
--- if designname and designname ~= "" then
--- if trace_defining or trace_designsize then
--- report_defining("remapping name %a, specification %a, size %a, designsize %a",name,designsize,size,designname)
--- end
--- -- we don't catch detail here
--- local o_lookup, o_name, o_sub, o_method, o_detail = getspecification(designname)
--- if o_lookup and o_lookup ~= "" then lookup = o_lookup end
--- if o_method and o_method ~= "" then method = o_method end
--- if o_detail and o_detail ~= "" then detail = o_detail end
--- name = o_name
--- sub = o_sub
--- end
--- -- so far
--- -- some settings can have been overloaded
--- if lookup and lookup ~= "" then
--- specification.lookup = lookup
--- end
--- if relativeid and relativeid ~= "" then -- experimental hook
--- local id = tonumber(relativeid) or 0
--- specification.relativeid = id > 0 and id
--- end
--- --
--- specification.name = name
--- specification.size = size
--- specification.sub = (sub and sub ~= "" and sub) or specification.sub
--- specification.mathsize = mathsize
--- specification.textsize = textsize
--- specification.goodies = goodies
--- specification.cs = cs
--- specification.global = global
--- specification.scalemode = scaledfontmode -- context specific
--- if detail and detail ~= "" then
--- specification.method = method or "*"
--- specification.detail = detail
--- elseif specification.detail and specification.detail ~= "" then
--- -- already set
--- elseif inheritancemode == 0 then
--- -- nothing
--- elseif inheritancemode == 1 then
--- -- fontonly
--- if fontfeatures and fontfeatures ~= "" then
--- specification.method = "*"
--- specification.detail = fontfeatures
--- end
--- if fontfallbacks and fontfallbacks ~= "" then
--- specification.fallbacks = fontfallbacks
--- end
--- elseif inheritancemode == 2 then
--- -- classonly
--- if classfeatures and classfeatures ~= "" then
--- specification.method = "*"
--- specification.detail = classfeatures
--- end
--- if classfallbacks and classfallbacks ~= "" then
--- specification.fallbacks = classfallbacks
--- end
--- elseif inheritancemode == 3 then
--- -- fontfirst
--- if fontfeatures and fontfeatures ~= "" then
--- specification.method = "*"
--- specification.detail = fontfeatures
--- elseif classfeatures and classfeatures ~= "" then
--- specification.method = "*"
--- specification.detail = classfeatures
--- end
--- if fontfallbacks and fontfallbacks ~= "" then
--- specification.fallbacks = fontfallbacks
--- elseif classfallbacks and classfallbacks ~= "" then
--- specification.fallbacks = classfallbacks
--- end
--- elseif inheritancemode == 4 then
--- -- classfirst
--- if classfeatures and classfeatures ~= "" then
--- specification.method = "*"
--- specification.detail = classfeatures
--- elseif fontfeatures and fontfeatures ~= "" then
--- specification.method = "*"
--- specification.detail = fontfeatures
--- end
--- if classfallbacks and classfallbacks ~= "" then
--- specification.fallbacks = classfallbacks
--- elseif fontfallbacks and fontfallbacks ~= "" then
--- specification.fallbacks = fontfallbacks
--- end
--- end
--- local tfmdata = definers.read(specification,size) -- id not yet known (size in spec?)
--- --
--- local lastfontid = 0
--- if not tfmdata then
--- report_defining("unable to define %a as %a",name,nice_cs(cs))
--- lastfontid = -1
--- texsetcount("scaledfontsize",0)
--- -- ctx_letvaluerelax(cs) -- otherwise the current definition takes the previous one
--- elseif type(tfmdata) == "number" then
--- if trace_defining then
--- report_defining("reusing %s, id %a, target %a, features %a / %a, fallbacks %a / %a, goodies %a / %a, designsize %a / %a",
--- name,tfmdata,nice_cs(cs),classfeatures,fontfeatures,classfallbacks,fontfallbacks,classgoodies,goodies,classdesignsize,fontdesignsize)
--- end
--- csnames[tfmdata] = specification.cs
--- texdefinefont(global,cs,tfmdata)
--- -- resolved (when designsize is used):
--- local size = fontdata[tfmdata].parameters.size or 0
--- -- ctx_setsomefontsize(size .. "sp")
--- setmacro("somefontsize",size.."sp")
--- texsetcount("scaledfontsize",size)
--- lastfontid = tfmdata
--- else
--- -- setting the extra characters will move elsewhere
--- local characters = tfmdata.characters
--- local parameters = tfmdata.parameters
--- -- we use char0 as signal; cf the spec pdf can handle this (no char in slot)
--- characters[0] = nil
--- -- characters[0x00A0] = { width = parameters.space }
--- -- characters[0x2007] = { width = characters[0x0030] and characters[0x0030].width or parameters.space } -- figure
--- -- characters[0x2008] = { width = characters[0x002E] and characters[0x002E].width or parameters.space } -- period
--- --
--- local id = definefont(tfmdata)
--- csnames[id] = specification.cs
--- tfmdata.properties.id = id
--- definers.register(tfmdata,id) -- to be sure, normally already done
--- texdefinefont(global,cs,id)
--- constructors.cleanuptable(tfmdata)
--- constructors.finalize(tfmdata)
--- if trace_defining then
--- report_defining("defining %a, id %a, target %a, features %a / %a, fallbacks %a / %a",
--- name,id,nice_cs(cs),classfeatures,fontfeatures,classfallbacks,fontfallbacks)
--- end
--- -- resolved (when designsize is used):
--- local size = tfmdata.parameters.size or 655360
--- setmacro("somefontsize",size.."sp")
--- -- ctx_setsomefontsize(size .. "sp")
--- texsetcount("scaledfontsize",size)
--- lastfontid = id
--- end
--- if trace_defining then
--- report_defining("memory usage after: %s",statistics.memused())
--- report_defining("stop stage two")
--- end
--- --
--- texsetcount("global","lastfontid",lastfontid)
--- specifiers[lastfontid] = { str, size }
--- if not mathsize then
--- -- forget about it
--- elseif mathsize == 0 then
--- lastmathids[1] = lastfontid
--- else
--- lastmathids[mathsize] = lastfontid
--- end
--- --
--- stoptiming(fonts)
--- end
+ local n = 0
+ local busy = false
+ local combinefeatures = false
- local busy = false
+ directives.register("fonts.features.combine",function(v)
+ combinefeatures = v
+ end)
scanners.definefont_two = function()
local global = scanboolean() -- \ifx\fontclass\empty\s!false\else\s!true\fi
@@ -1341,7 +1159,7 @@ do -- else too many locals
local scaledfontmode = scaninteger() -- \scaledfontmode
if trace_defining then
- report_defining("start stage two: %s, size %s, features %a & %a",str,size,classfeatures,fontfeatures)
+ report_defining("start stage two: %s, size %s, features %a & %a, mode %a",str,size,classfeatures,fontfeatures,inheritancemode)
end
-- name is now resolved and size is scaled cf sa/mo
local lookup, name, sub, method, detail = getspecification(str or "")
@@ -1406,12 +1224,26 @@ do -- else too many locals
end
elseif inheritancemode == 3 then
-- fontfirst
- if fontfeatures and fontfeatures ~= "" then
- specification.method = "*"
- specification.detail = fontfeatures
- elseif classfeatures and classfeatures ~= "" then
- specification.method = "*"
- specification.detail = classfeatures
+ if combinefeatures then
+ if classfeatures and classfeatures ~= "" then
+ specification.method = "*"
+ if fontfeatures and fontfeatures ~= "" and fontfeatures ~= classfeatures then
+ specification.detail = classfeatures .. "," .. fontfeatures
+ else
+ specification.detail = classfeatures
+ end
+ elseif fontfeatures and fontfeatures ~= "" then
+ specification.method = "*"
+ specification.detail = fontfeatures
+ end
+ else
+ if fontfeatures and fontfeatures ~= "" then
+ specification.method = "*"
+ specification.detail = fontfeatures
+ elseif classfeatures and classfeatures ~= "" then
+ specification.method = "*"
+ specification.detail = classfeatures
+ end
end
if fontfallbacks and fontfallbacks ~= "" then
specification.fallbacks = fontfallbacks
@@ -1420,12 +1252,26 @@ do -- else too many locals
end
elseif inheritancemode == 4 then
-- classfirst
- if classfeatures and classfeatures ~= "" then
- specification.method = "*"
- specification.detail = classfeatures
- elseif fontfeatures and fontfeatures ~= "" then
- specification.method = "*"
- specification.detail = fontfeatures
+ if combinefeatures then
+ if fontfeatures and fontfeatures ~= "" then
+ specification.method = "*"
+ if classfeatures and classfeatures ~= "" and classfeatures ~= fontfeatures then
+ specification.detail = fontfeatures .. "," .. classfeatures
+ else
+ specification.detail = fontfeatures
+ end
+ elseif classfeatures and classfeatures ~= "" then
+ specification.method = "*"
+ specification.detail = classfeatures
+ end
+ else
+ if classfeatures and classfeatures ~= "" then
+ specification.method = "*"
+ specification.detail = classfeatures
+ elseif fontfeatures and fontfeatures ~= "" then
+ specification.method = "*"
+ specification.detail = fontfeatures
+ end
end
if classfallbacks and classfallbacks ~= "" then
specification.fallbacks = classfallbacks
diff --git a/tex/context/base/mkiv/font-imp-dimensions.lua b/tex/context/base/mkiv/font-imp-dimensions.lua
index a7125625d..518d56345 100644
--- a/tex/context/base/mkiv/font-imp-dimensions.lua
+++ b/tex/context/base/mkiv/font-imp-dimensions.lua
@@ -107,7 +107,7 @@ end
registerotffeature {
name = "realdimensions",
- description = "accept negative dimenions",
+ description = "accept negative dimensions",
initializers = {
base = initialize,
node = initialize,
diff --git a/tex/context/base/mkiv/lpdf-img.lua b/tex/context/base/mkiv/lpdf-img.lua
index 8f9c87ddd..a299a023d 100644
--- a/tex/context/base/mkiv/lpdf-img.lua
+++ b/tex/context/base/mkiv/lpdf-img.lua
@@ -855,11 +855,19 @@ do
switch(true)
end
- local alwaysdecode = false
+ local alwaysdecode = false
+ local compresslevel = 3
- -- directives.register("graphics.png.decode", function(v)
- -- alwaysdecode = v
- -- end)
+ directives.register("graphics.png.recompress", function(v)
+ alwaysdecode = v
+ end)
+
+ directives.register("graphics.png.compresslevel", function(v)
+ v = tonumber(v)
+ if compresslevel >= 0 or compresslevel <= 9 then
+ compresslevel = v
+ end
+ end)
function injectors.png(specification)
-- inspect(specification)
@@ -946,6 +954,7 @@ do
end
--
local decode = alwaysdecode
+ local filter = pdfconstant("FlateDecode")
local major = pdfmajorversion()
local minor = pdfminorversion()
if major > 1 then
@@ -994,8 +1003,12 @@ do
else
content = convert(r) -- can be in deinterlace if needed
end
- content = zlibcompress(content,3)
- decode = true
+ if compresslevel > 0 then
+ content = zlibcompress(content,compresslevel)
+ else
+ filter = nil
+ end
+ decode = true
elseif mask then
if not (colordepth == 8 or colordepth == 16) then
report_png("mask can't be split from the image")
@@ -1003,10 +1016,15 @@ do
end
content = zlibdecompress(content)
content, mask = decodemask(content,xsize,ysize,colordepth,colorspace)
- content = zlibcompress(content,3)
+ if compresslevel > 0 then
+ content = zlibcompress(content,compresslevel)
+ else
+ filter = nil
+ end
decode = true -- we don't copy the filter byte
elseif transparent then
-- in test suite
+ -- how about decode/recompress here
if palette then
mask = createmask(content,palette,transparent,xsize,ysize,colordepth,colorspace)
else
@@ -1017,8 +1035,12 @@ do
local bytes = analyze(colordepth,colorspace)
if bytes then
content = zlibdecompress(content)
- content = applyfilter(content,xsize,ysize,bytes)
- content = zlibcompress(content,3)
+ content = decodestrip(openstring(content),xsize,ysize,bytes)
+ if compresslevel > 0 then
+ content = zlibcompress(content,compresslevel)
+ else
+ filter = nil
+ end
else
return
end
@@ -1041,7 +1063,7 @@ do
Width = xsize,
Height = ysize,
BitsPerComponent = colordepth,
- Filter = pdfconstant("FlateDecode"),
+ Filter = filter,
ColorSpace = palette or pdfconstant(colorspace),
Length = #content,
} + specification.attr
diff --git a/tex/context/base/mkiv/lxml-ini.mkiv b/tex/context/base/mkiv/lxml-ini.mkiv
index 773772e61..09358e11c 100644
--- a/tex/context/base/mkiv/lxml-ini.mkiv
+++ b/tex/context/base/mkiv/lxml-ini.mkiv
@@ -322,6 +322,8 @@
\unexpanded\def\startxmldisplayverbatim
{\dosingleempty\lxml_start_display_verbatim}
+\let\stopxmldisplayverbatim\relax
+
\def\lxml_start_display_verbatim[#1]%
{\startpacked
\edef\currenttyping{#1}%
@@ -339,6 +341,8 @@
\unexpanded\def\startxmlinlineverbatim
{\dosingleempty\lxml_start_inline_verbatim}
+\let\stopxmlinlineverbatim\relax
+
\unexpanded\def\lxml_start_inline_verbatim[#1]%
{\begingroup
\edef\currenttype{#1}%
diff --git a/tex/context/base/mkiv/mtx-context-markdown.tex b/tex/context/base/mkiv/mtx-context-markdown.tex
deleted file mode 100644
index 1bd57945f..000000000
--- a/tex/context/base/mkiv/mtx-context-markdown.tex
+++ /dev/null
@@ -1,92 +0,0 @@
-%D \module
-%D [ file=mtx-context-markdown,
-%D version=2011.07.24,
-%D title=\CONTEXT\ Extra Trickry,
-%D subtitle=Rendering Markdown Files,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-% begin help
-%
-% usage: context --extra=markdown [options] list-of-files
-%
-% --sort : sort filenames first
-% --paperoffset=dimension : left-top-offset
-% --duplex : doublesided (singlesided is default)
-% --backspace=dimension : extra left offset
-% --topspace=dimension : extra top offset
-% --bodyfont=specification : additional bodyfont specification
-% --contents : add table of contents
-%
-% end help
-
-\usemodule[markdown]
-
-\doifdocumentargument {paperoffset} {
- \definepapersize
- [offset=\getdocumentargument{paperoffset}]
-}
-
-\doifdocumentargument{duplex} {
- \setuppagenumbering
- [alternative=doublesided]
-} {
- \setuppagenumbering
- [alternative=singlesided]
-}
-
-\setdocumentargumentdefault {textwidth} {middle}
-\setdocumentargumentdefault {backspace} {2cm}
-\setdocumentargumentdefault {topspace} {2cm}
-\setdocumentargumentdefault {bodyfont} {}
-
-\setuptolerance
- [verytolerant,stretch]
-
-\setuplayout
- [width=middle,
- height=middle,
- backspace=\getdocumentargument{backspace},
- topspace=\getdocumentargument{topspace},
- footer=0pt]
-
-\setupbodyfont
- [dejavu,10pt,\getdocumentargument{bodyfont}]
-
-\setupwhitespace
- [big]
-
-% \enabletrackers[context.trace]
-
-\setuplist
- [chapter,section,subsection]
- [aligntitle=yes,
- width=4em]
-
-\starttext
-
-\doifdocumentargument{contents} {
- \starttitle[title={Table of contents}]
- \placelist[chapter,section,subsection] % todo: levels
- \stoptitle
-}
-
-
-\startluacode
- if #document.files > 0 then
- if document.arguments.sort then
- table.sort(document.files)
- end
- for i=1,#document.files do
- context.processmarkdownfile(document.files[i])
- context.page()
- end
- end
-\stopluacode
-
-\stoptext
diff --git a/tex/context/base/mkiv/node-tra.lua b/tex/context/base/mkiv/node-tra.lua
index e1b6927fb..e2aaf8bbe 100644
--- a/tex/context/base/mkiv/node-tra.lua
+++ b/tex/context/base/mkiv/node-tra.lua
@@ -355,7 +355,9 @@ local function listtoutf(h,joiner,textonly,last,nodisc)
n = n + 1 ; w[n] = " "
end
elseif id == hlist_code or id == vlist_code then
- n = n + 1 ; w[n] = "[]"
+ n = n + 1 ; w[n] = "["
+ n = n + 1 ; w[n] = listtoutf(getlist(h),joiner,textonly,last,nodisc)
+ n = n + 1 ; w[n] = "]"
end
else
n = n + 1 ; w[n] = "[-]"
diff --git a/tex/context/base/mkiv/page-mix.lua b/tex/context/base/mkiv/page-mix.lua
index 192b8a30a..701b2e4ca 100644
--- a/tex/context/base/mkiv/page-mix.lua
+++ b/tex/context/base/mkiv/page-mix.lua
@@ -326,70 +326,73 @@ local function preparesplit(specification) -- a rather large function
report_state("setting collector to column %s",column)
end
- local function unlock(penalty)
+ local function unlock(case,penalty)
if lastlocked then
if trace_state then
- report_state("penalty %s, unlocking in column %s",penalty or "-",column)
+ report_state("penalty %s, unlocking in column %s, case %i",penalty or "-",column,case)
end
lastlocked = nil
+ else
+ if trace_state then
+ report_state("penalty %s, ignoring in column %s, case %i",penalty or "-",column,case)
+ end
end
lastcurrent = nil
lastcontent = nil
end
- local function lock(penalty,current)
+ local function lock(case,penalty,current)
if trace_state then
- report_state("penalty %s, locking in column %s",penalty,column)
+ report_state("penalty %s, locking in column %s, case %i",penalty,column,case)
end
lastlocked = penalty
lastcurrent = current or lastcurrent
lastcontent = nil
end
- local function backtrack(start)
- local current = start
- -- first skip over glue and penalty
- while current do
- local id = getid(current)
- if id == glue_code then
- if trace_state then
- report_state("backtracking over %s in column %s","glue",column)
- end
- current = getprev(current)
- elseif id == penalty_code then
- if trace_state then
- report_state("backtracking over %s in column %s","penalty",column)
- end
- current = getprev(current)
- else
- break
- end
- end
- -- then skip over content
- while current do
- local id = getid(current)
- if id == glue_code then
- if trace_state then
- report_state("quitting at %s in column %s","glue",column)
- end
- break
- elseif id == penalty_code then
- if trace_state then
- report_state("quitting at %s in column %s","penalty",column)
- end
- break
- else
- current = getprev(current)
- end
- end
- if not current then
- if trace_state then
- report_state("no effective backtracking in column %s",column)
- end
- current = start
- end
- return current
- end
+ -- local function backtrack(start)
+ -- local current = start
+ -- -- first skip over glue and penalty
+ -- while current do
+ -- local id = getid(current)
+ -- if id == glue_code then
+ -- if trace_state then
+ -- report_state("backtracking over %s in column %s, value %p","glue",column,getwidth(current))
+ -- end
+ -- current = getprev(current)
+ -- elseif id == penalty_code then
+ -- if trace_state then
+ -- report_state("backtracking over %s in column %s, value %i","penalty",column,getpenalty(current))
+ -- end
+ -- else
+ -- break
+ -- end
+ -- end
+ -- -- then skip over content
+ -- while current do
+ -- local id = getid(current)
+ -- if id == glue_code then
+ -- if trace_state then
+ -- report_state("quitting at %s in column %s, value %p","glue",column,getwidth(current))
+ -- end
+ -- break
+ -- elseif id == penalty_code then
+ -- if trace_state then
+ -- report_state("quitting at %s in column %s, value %i","penalty",column,getpenalty(current))
+ -- end
+ -- break
+ -- else
+ -- current = getprev(current)
+ -- end
+ -- end
+ -- if not current then
+ -- if trace_state then
+ -- report_state("no effective backtracking in column %s",column)
+ -- end
+ -- current = start
+ -- end
+ -- return current
+ -- end
local function gotonext()
if lastcurrent then
@@ -398,7 +401,8 @@ local function preparesplit(specification) -- a rather large function
report_state("backtracking to preferred break in column %s",column)
end
-- todo: also remember height/depth
- current = backtrack(lastcurrent)
+ -- current = backtrack(lastcurrent) -- not ok, we go to far back so why was this needed
+ current = lastcurrent
backtracked = true
end
lastcurrent = nil
@@ -483,6 +487,8 @@ local function preparesplit(specification) -- a rather large function
--
-- ok, we could use vsplit but we don't have that one opened up yet .. maybe i should look into the c-code
-- .. something that i try to avoid so let's experiment more before we entry dirty trick mode
+ --
+ -- what if we can do a preroll in lua, get head and tail and then slice of a bit and push that ahead
head = current
@@ -517,7 +523,7 @@ local function preparesplit(specification) -- a rather large function
-- what else? ignore? treat as valid as usual?
end
if lastcontent then
- unlock()
+ unlock(1)
end
end
@@ -578,7 +584,7 @@ local function preparesplit(specification) -- a rather large function
local function process_penalty(current,nxt)
local penalty = getpenalty(current)
if penalty == 0 then
- unlock(penalty)
+ unlock(2,penalty)
elseif penalty == forcedbreak then
local needed = getattribute(current,a_checkedbreak)
local proceed = not needed or needed == 0
@@ -590,7 +596,7 @@ local function preparesplit(specification) -- a rather large function
end
end
if proceed then
- unlock(penalty)
+ unlock(3,penalty)
local okay, skipped = gotonext()
if okay then
if trace_state then
@@ -611,15 +617,17 @@ local function preparesplit(specification) -- a rather large function
end
elseif penalty < 0 then
-- we don't care too much
- unlock(penalty)
+ unlock(4,penalty)
elseif penalty >= 10000 then
if not lastcurrent then
- lock(penalty,current)
+ lock(1,penalty,current)
elseif penalty > lastlocked then
- lock(penalty)
+ lock(2,penalty)
+ elseif trace_state then
+ report_state("penalty %s, ignoring in column %s, case %i",penalty,column,3)
end
else
- unlock(penalty)
+ unlock(5,penalty)
end
end
@@ -687,6 +695,10 @@ local function preparesplit(specification) -- a rather large function
local id = getid(current)
local nxt = getnext(current)
+ if trace_state then
+ report_state("%-8s > column %s, height %p, depth %p, id %s","node",column,height,depth,nodecodes[id])
+ end
+
backtracked = false
if id == hlist_code or id == vlist_code then
@@ -971,8 +983,8 @@ local function getsplit(result,n)
setdepth(list[i],0)
end
local b = vpack(l) -- multiple arguments, todo: fastvpack
- -- setbox("global",c,b)
- setbox(c,b)
+setbox("global",c,b) -- when we wrap in a box
+ -- setbox(c,b)
r.inserts[c] = nil
end
diff --git a/tex/context/base/mkiv/page-mix.mkiv b/tex/context/base/mkiv/page-mix.mkiv
index 436c4a1dc..993edb89a 100644
--- a/tex/context/base/mkiv/page-mix.mkiv
+++ b/tex/context/base/mkiv/page-mix.mkiv
@@ -773,6 +773,23 @@
\hss
\egroup}
+% \unexpanded\def\page_mix_command_package_column
+% {\page_mix_hbox to \d_page_mix_column_width \bgroup
+% % maybe intercept empty
+% \ruledhpack\bgroup
+% \clf_mixgetsplit\recurselevel\relax
+% \egroup
+% \hskip-\d_page_mix_column_width
+% \ruledhpack \bgroup
+% \hsize\d_page_mix_column_width
+% \ifconditional\c_page_mix_process_notes
+% \placenoteinserts
+% \fi
+% \egroup
+% \hss
+% \egroup}
+
+
\unexpanded\def\page_mix_routine_continue
{\bgroup
\forgetall
diff --git a/tex/context/base/mkiv/spac-ver.mkiv b/tex/context/base/mkiv/spac-ver.mkiv
index 6c21542dc..27f9ffb70 100644
--- a/tex/context/base/mkiv/spac-ver.mkiv
+++ b/tex/context/base/mkiv/spac-ver.mkiv
@@ -27,8 +27,8 @@
%
% There might be more namespace protection.
-%D There are two ways to influence the interline spacing. The
-%D most general and often most consistent way is using
+%D There are two ways to influence the interline spacing. The most general and often
+%D most consistent way is using
%D
%D \showsetup{setupinterlinespace}
%D
@@ -38,23 +38,21 @@
%D \setupinterlinespace[line=2.8ex]
%D \stoptyping
%D
-%D This setting adapts itself to the bodyfontsize, while for
-%D instance saying
+%D This setting adapts itself to the bodyfontsize, while for instance saying
%D
%D \starttyping
%D \setupinterlinespace[line=12pt]
%D \stoptyping
%D
-%D sets things fixed for all sizes, which is definitely not
-%D what we want. Therefore one can also say:
+%D sets things fixed for all sizes, which is definitely not what we want. Therefore
+%D one can also say:
%D
%D \starttyping
%D \definebodyfontenvironment[9pt][interlinespace=11pt]
%D \stoptyping
%D
-%D One can still use \type{\setupinterlinespace} (without
-%D arguments) to set the interline space according to the
-%D current font, e.g. a \type{\bfa}.
+%D One can still use \type {\setupinterlinespace} (without arguments) to set the
+%D interline space according to the current font, e.g. a \type {\bfa}.
% will be cleaned up but it will stay messy because we accept so
% many variants
@@ -629,46 +627,35 @@
\unexpanded\def\verticalstrut {\vpack{\hsize\zeropoint\forgetall\strut}}
\unexpanded\def\horizontalstrut{\hpack {\strut}}
-% Hieronder volgen enkele instellingen en macro's ten behoeve
-% van de interlinie en \strut. De waarden 2.8, 0.07, 0.72 en
-% 0.28 zijn ooit eens ontleend aan INRS-TEX en moeten wellicht
-% nog eens instelbaar worden.
-%
-% \lineheight : de hoogte van een regel
-% \spacing{getal} : instellen interlinie
-% \normalbaselines : instellen regelafstend
-%
-% \setstrut : instellen \strut
-% \setnostrut : resetten \strut, \endstrut, \begstrut
-% \setnonestrut : resetten \strut (fast one)
-%
-% \setteststrut : instellen zichtbare struts
-% \resetteststrut : instellen onzichtbare struts
-%
-% \setfontparameters : instellen na fontset
-%
-% De hoogte van een regel (\lineheight) is gelijk aan de
-% som van de hoogte (\ht) en diepte (\dp) van \strutbox.
-%
-% \strut : denkbeeldig blokje met hoogte en diepte
-%
-% Een \hbox kan als deze aan het begin van een regel staat
-% een breedte \hsize krijgen. Dit is soms te voorkomen met het
-% commando \leavevmode. Binnen een \vbox geeft dit echter
-% niet altijd het gewenste resultaat, vandaar het commando
-%
-% \dontleavehmode
-
-% Pas op: niet zomaar \topskip en \baselineskip aanpassen
-% en zeker niet \widowpenalty. Dit kan ernstige gevolgen
-% hebben voor kolommen.
-%
-% Enige glue kan op zich geen kwaad, echter als blanko=vast,
-% dan moet ook de rek 0 zijn. Binnen kolommen is rek ook
-% niet bepaald mooi. Een hele kleine waarde (0.025) voldoet,
-% omdat een positieve glue eindeloos rekbaar is.
-
-% more of the next will become private:
+%D Here follow some presets related to interline spacing and therefore also struts.
+%D The values 2.8, 0.07, 0.72 and 0.28 originate in \INRSTEX, a package that we used
+%D a while after we decided that \LATEX\ was not flexible enough. After that
+%D \CONTEXT\ evolved, from some wrapper code around (old) \LATEX\ (on a floppy
+%D disk), to using modules from \INRSTEX\ (which also fit on a floppy) and finally
+%D all written from scratch. I simply didn't understand all that \TEX\ code at that
+%D time, and it was easier to figure it out myself. But \unknown\ some settings
+%D stayed, as the height|/|depth ratios, and they never proved to be bad ones! The
+%D same is true for the font size relations.
+
+%D \starttabulate
+%D \NC \type {\lineheight} \NC the height of a line \NC \NR
+%D \NC \type {\spacing{number}} \NC adapting the interline space \NC \NR
+%D \NC \type {\normalbaselines} \NC initialize the interline spacing \NC \NR
+%D \NC \type {\setstrut} \NC initialize \type {\strut} \NC \NR
+%D \NC \type {\setnostrut} \NC disable the \type {\strut}, \type {\endstrut}, \type {\begstrut} \NC \NR
+%D \NC \type {\setteststrut} \NC initialize the visual \type {\strut} \NC \NR
+%D \NC \type {\resetteststrut} \NC disable the visual \type {\strut} \NC \NR
+%D \NC \type {\setfontparameters} \NC synchronize parameters with foints \NC \NR
+%D \stoptabulate
+%D
+%D \unknown\ and many more (this is a decades old list).
+%D
+%D The lineheight is the sum of the height and depth of \type {strut}, which is
+%D an invisible blob that can be used to enforce the proper dimensions.
+%D
+%D Such a blob, when placed at the beginning of a paragraph can have side effects
+%D that can be prevented with \type {\dontleavehmode}. Never use \type
+%D {\leavevmode}!
\newdimen\strutdimen
\newdimen\lineheight
@@ -837,13 +824,19 @@
\noexpand\def\noexpand\normallineheight{\the\dimexpr\normallineheight}%
\noexpand\normalbaselines}}
-% plain definition:
-%
-% \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
-%
-% could be:
-%
-% \def\strut{\relax\ifmmode\copy\else\unhcopy\fi\strutbox}
+%D This is the plain definition:
+%D
+%D \starttyping
+%D \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
+%D \stoptyping
+%D
+%D which could be:
+%D
+%D \starttyping
+%D \def\strut{\relax\ifmmode\copy\else\unhcopy\fi\strutbox}
+%D \stoptyping
+%D
+%D But we do things differently.
\newbox\strutbox
@@ -857,8 +850,7 @@
\let\normalstrut\strut
-% The double \hbox construction enables us to \backtrack
-% boxes.
+%D The double \type {\hbox} construction enables us to backtrack boxes.
\let\strutht\undefined \newdimen\strutht
\let\strutdp\undefined \newdimen\strutdp
@@ -929,10 +921,10 @@
\vrule\s!width\zeropoint\s!depth\strutdp\s!height\zeropoint
\endgroup}
-% because of all the callbacks in mkiv, we avoid unnecessary boxes ...
-% maybe use an attribute so that we can tag boxes that don't need a
-% treatment; tests with using an attribute so far have shown that
-% it's slower because testing the attribute takes time too
+%D Because of all the callbacks in mkiv, we avoid unnecessary boxes ... maybe use an
+%D attribute so that we can tag boxes that don't need a treatment; tests with using
+%D an attribute so far have shown that it's slower because testing the attribute
+%D takes time too.
\unexpanded\def\dosetstrut
{\let\strut\normalstrut
@@ -1005,11 +997,9 @@
\let\spac_struts_vide_hbox\hbox % overloaded in trac-vis.mkiv
-%D The dimen \type {\struttotal} holds the exact size of the
-%D strut; occasionally a one scaled point difference can show
-%D up with the lineheight.
-
-% This is more efficient (less callbacks):
+%D The dimen \type {\struttotal} holds the exact size of the strut; occasionally a
+%D one scaled point difference can show up with the lineheight. This is more
+%D efficient (less callbacks):
\newbox\b_spac_struts_empty \setbox\b_spac_struts_empty\emptyhbox
@@ -1085,7 +1075,7 @@
%D \NC A B \unknown \NC a character strut (e.g. A) \NC {\showstruts\setupstrut[A]\strut} \NC \NR
%D \NC \NC a normal strut \NC {\showstruts\setupstrut\strut} \NC \NR
%D \stoptabulate
-
+%D
%D Beware: using an unknown value results in char struts.
\installcorenamespace{struts}
@@ -1166,10 +1156,8 @@
\let\begstrut\empty
\to \everysetnostrut
-% when enabled, sigstruts will remove themselves if nothing
-% goes inbetween
-
-%D For practical reasons we define some boundary characters here.
+%D When enabled, sigstruts will remove themselves if nothing goes inbetween. For
+%D practical reasons we define some boundary characters here.
\unexpanded\def\leftboundary {\protrusionboundary\plusone}
\unexpanded\def\rightboundary {\protrusionboundary\plustwo}
@@ -1198,11 +1186,6 @@
\hskip-\strutsignal
\hskip\strutsignal}
-% \def\spac_struts_beg_normal
-% {\strut
-% \penalty\plustenthousand
-% \hskip\zeropoint}
-
\def\spac_struts_beg_normal
{\boundary\plusone
\strut
@@ -1239,12 +1222,6 @@
\strut
\fi}
-% \def\spac_struts_end_normal
-% {\removeunwantedspaces
-% \penalty\plustenthousand
-% \hskip\zeropoint
-% \strut}
-
\def\spac_struts_end_normal
{\removeunwantedspaces
\penalty\plustenthousand
@@ -1299,10 +1276,9 @@
\def\baselinedistance{\the\lineheight}
-%D We need \type{\normaloffinterlineskip} because the new
-%D definition contains an assignment, and |<|don't ask me
-%D why|>| this assignment gives troubles in for instance the
-%D visual debugger.
+%D We need \type {\normaloffinterlineskip} because the new definition contains an
+%D assignment, and |<|don't ask me why|>| this assignment gives troubles in for
+%D instance the visual debugger.
\unexpanded\def\offinterlineskip
{\baselineskip-\thousandpoint
@@ -1323,8 +1299,8 @@
%D So, here we kick in a checker but it has to happen after the output group and it
%D only has to be done once (output can trigger itself!).
%D
-%D However, prevgraf is somehow bound to hangindent so we can get very
-%D nasty side effects. So, in tne end we use our own variable!
+%D However, prevgraf is somehow bound to hangindent so we can get very nasty side
+%D effects. So, in tne end we use our own variable!
\ifdefined\getnofpreviouslines
% defined public at the lua end
@@ -1446,7 +1422,7 @@
\resetpenalties\interlinepenalties
\stopsetups
-% we use \directsetup because it's faster and we know there is no csl
+%D We use \directsetup because it's faster and we know there is no csl:
\startsetups [\systemsetupsprefix\s!default]
@@ -1476,7 +1452,7 @@
\stopsetups
-% as an illustration:
+%D As an illustration:
\startsetups [\systemsetupsprefix\v!strict]
@@ -2223,7 +2199,7 @@
\directvspacing\m_spac_blank_asked
\fi}
-% handy (and faster):
+%D Handy (and faster):
\unexpanded\def\directvpenalty#1%
{\begingroup
@@ -2241,7 +2217,7 @@
\vskip#1\relax
\endgroup}
-% these depend on bigskipamount cum suis so we'd better sync them
+%D These depend on bigskipamount cum suis so we'd better sync them:
\unexpanded\def\setupvspacing
{\doifelsenextoptionalcs\setupvspacing_yes\setupvspacing_nop}
@@ -2264,9 +2240,7 @@
\let\synchronizevspacing\setupvspacing_nop
-% category:4 is default
-
-% this interface might change (into an \install, but we will then keep this one hidden)
+%D The \type {category:4} is default.
\definevspacingamount[\v!none] [\zeropoint] [\zeropoint]
\definevspacingamount[\v!big] [\bigskipamount] [\bodyfontlineheight]
@@ -2293,7 +2267,7 @@
\fi\fi
\relax}
-% used in itemize ... always test this
+%D used in itemize \unknown\ always test this:
\newdimen\d_spac_overlay
@@ -2342,21 +2316,33 @@
\newcount\c_spac_vspacing_special_base \c_spac_vspacing_special_base = 32250 % 4000
\newcount\c_spac_vspacing_special_step \c_spac_vspacing_special_step = 10 % 250
+\newcount\c_spac_vspacing_special_done
+
+% 2019-05-31 : upgraded a bit to more distinctive samepage-[level]-[0|1|2] names
+
+\unexpanded\def\spac_vspacing_define_same_step#1#2% alternatively we could have samepage-n-m
+ {\begingroup
+ \scratchcounterone\numexpr\plusthree*#1+#2\relax
+ \scratchcountertwo\numexpr\c_spac_vspacing_special_base+\c_spac_vspacing_special_step*\scratchcounterone\relax
+ %\writestatus{defined}{\v!samepage-\number#1-\number#2\space=>\space penalty:\the\scratchcountertwo}%
+ \normalexpanded{\definevspacing[\v!samepage-\number#1-\number#2][penalty:\the\scratchcountertwo]}%
+ \endgroup}
\unexpanded\def\spac_vspacing_define_same_page#1%
- {\normalexpanded{\definevspacing
- [\v!samepage-#1]%
- [penalty:\the\numexpr\c_spac_vspacing_special_base+\c_spac_vspacing_special_step*#1\relax]}}
+ {\dostepwiserecurse\c_spac_vspacing_special_done{#1}\plusone
+ {\spac_vspacing_define_same_step\recurselevel\zerocount % before
+ \spac_vspacing_define_same_step\recurselevel\plusone % after
+ \spac_vspacing_define_same_step\recurselevel\plustwo}% % whatever
+ \global\c_spac_vspacing_special_done#1\relax}
-\dorecurse{20}{\spac_vspacing_define_same_page{#1}}
+\spac_vspacing_define_same_page{10} % 10 levels should be more than enough as a start
-\ifdefined\everydefinesection
- \appendtoks
- \spac_vspacing_define_same_page\maxstructuredepth
- \to \everydefinesection
-\else
- % the order has changed so this code has to move to strf-def.mkiv then
-\fi
+\def\spac_vspacing_same_page#1#2% level offset (starts at 0)
+ {\ifnum#1>\c_spac_vspacing_special_done
+ \spac_vspacing_define_same_page{#1}%
+ \fi
+ %\writestatus{used}{\v!samepage-\number#1-\number#2}%
+ \vspacing[\v!samepage-\number#1-\number#2]}
\definevspacing[\v!default] [\v!big] % todo: needs to adapt to \setupblank
\definevspacing[\v!before] [\v!default] % but we need to avoid circular references
@@ -2366,9 +2352,8 @@
\setupvspacing
[\v!big] % alternatively [\v!standard]
-%D Maybe at some point we will differ between \type {\vspacing} and
-%D \type {\blank} (we needed the first one while playing with the
-%D new code).
+%D Maybe at some point we will differ between \type {\vspacing} and \type {\blank}
+%D (we needed the first one while playing with the new code).
% We keep this one as reference
%
@@ -2393,9 +2378,8 @@
\let\synchronizeblank \synchronizevspacing
\let\defineblankmethod\definevspacingamount
-%D The following command is for Wolfgang. It has to be used with
-%D care as it does {\em not} work in tandem with the other spacing
-%D commands.
+%D The following command is for Wolfgang. It has to be used with care as it does
+%D {\em not} work in tandem with the other spacing commands.
\installcorenamespace{vspace}
@@ -2477,8 +2461,7 @@
\relax
\fi}
-%D Some preliminary code: a simple and fast hanger, for usage in
-%D macros (moved from cont-new).
+%D Some preliminary code: a simple and fast hanger, for usage in macros.
\installcorenamespace {hanging}
diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf
index ee13ad39a..16d4d5c9d 100644
--- a/tex/context/base/mkiv/status-files.pdf
+++ b/tex/context/base/mkiv/status-files.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf
index e3b70eaa0..41badc3d8 100644
--- a/tex/context/base/mkiv/status-lua.pdf
+++ b/tex/context/base/mkiv/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/mkiv/strc-con.mkvi b/tex/context/base/mkiv/strc-con.mkvi
index d67307ba7..8c75eb6df 100644
--- a/tex/context/base/mkiv/strc-con.mkvi
+++ b/tex/context/base/mkiv/strc-con.mkvi
@@ -737,7 +737,7 @@
\stopsetups
\startsetups[\??constructionrenderings:\v!top]
- \strc_sectioning_prevent_page_break\plusone
+ % \strc_sectioning_prevent_page_break % commented per 31/5/2019
\let\\=\space
\noindent
\copy\constructionheadbox % why copy ?
@@ -746,6 +746,7 @@
\edef\p_strc_constructions_inbetween{\constructionparameter\c!inbetween}%
\ifx\p_strc_constructions_inbetween\empty \else
\p_strc_constructions_inbetween
+ % shouldn't this move to after the fi?
\directcheckedvspacing\v!samepage
\fi
\useconstructionstyleandcolor\c!style\c!color
diff --git a/tex/context/base/mkiv/strc-sec.mkiv b/tex/context/base/mkiv/strc-sec.mkiv
index f367013fb..21e6adfe3 100644
--- a/tex/context/base/mkiv/strc-sec.mkiv
+++ b/tex/context/base/mkiv/strc-sec.mkiv
@@ -1153,16 +1153,6 @@
\prevdepth\strutdepth
\fi}
-\def\strc_sectioning_after_yes
- {\ifconditional\headisdisplay
- \ifconditional\c_strc_sectioning_auto_break
- % \vspacing[\v!samepage-\currentheadlevel]%
- \vspacing[\v!samepage]%
- \fi
- \strc_sectioning_empty_correction
- \headparameter\c!after
- \fi}
-
\def\strc_sectioning_after_nop
{}
@@ -1225,6 +1215,47 @@
\fi
\glet\previoushead\currenthead}
+% \def\strc_sectioning_handle_page_yes
+% {\ifconditional\c_strc_sectioning_ignore_page
+% \setfalse\c_strc_sectioning_ignore_page
+% \else
+% % beware, these numbers are not yet know here
+% \strc_sectioning_handle_page_nop
+% \edef\p_aligntitle{\headparameter\c!aligntitle}%
+% \ifx\p_aligntitle\v!float
+% \ifconditional\c_strc_sectioning_auto_break
+% \vspacing[\v!samepage-\currentheadlevel]%
+% \fi
+% \headparameter\c!before\relax
+% \indent
+% \else
+% \page_otr_command_flush_side_floats
+% \ifconditional\c_strc_sectioning_auto_break
+% \vspacing[\v!samepage-\currentheadlevel]%
+% \fi
+% \headparameter\c!before\relax
+% \fi
+% \global\c_strc_sectioning_preceding_level\currentheadlevel
+% \fi
+% \glet\previoushead\currenthead}
+%
+% \unexpanded\def\strc_sectioning_prevent_page_break% see strc-con
+% {\ifconditional\c_strc_sectioning_auto_break
+% \vspacing[\v!samepage-\the\numexpr\currentheadlevel+\plusone\relax]%
+% \fi}
+%
+% \def\strc_sectioning_after_yes
+% {\ifconditional\headisdisplay
+% \ifconditional\c_strc_sectioning_auto_break
+% % \vspacing[\v!samepage-\currentheadlevel]%
+% \vspacing[\v!samepage]%
+% \fi
+% \strc_sectioning_empty_correction
+% \headparameter\c!after
+% \fi}
+
+% This works better in columns ... but also elsewhere?
+
\def\strc_sectioning_handle_page_yes
{\ifconditional\c_strc_sectioning_ignore_page
\setfalse\c_strc_sectioning_ignore_page
@@ -1234,14 +1265,14 @@
\edef\p_aligntitle{\headparameter\c!aligntitle}%
\ifx\p_aligntitle\v!float
\ifconditional\c_strc_sectioning_auto_break
- \vspacing[\v!samepage-\currentheadlevel]%
+ \spac_vspacing_same_page\currentheadlevel\zerocount
\fi
\headparameter\c!before\relax
\indent
\else
\page_otr_command_flush_side_floats
\ifconditional\c_strc_sectioning_auto_break
- \vspacing[\v!samepage-\currentheadlevel]%
+ \spac_vspacing_same_page\currentheadlevel\zerocount
\fi
\headparameter\c!before\relax
\fi
@@ -1249,11 +1280,21 @@
\fi
\glet\previoushead\currenthead}
-\unexpanded\def\strc_sectioning_prevent_page_break#1% see strc-con
+\def\strc_sectioning_after_yes
+ {\ifconditional\headisdisplay
+ \ifconditional\c_strc_sectioning_auto_break
+ \spac_vspacing_same_page\currentheadlevel\plusone
+ \fi
+ \strc_sectioning_empty_correction
+ \headparameter\c!after
+ \fi}
+
+\unexpanded\def\strc_sectioning_prevent_page_break % see strc-con
{\ifconditional\c_strc_sectioning_auto_break
- \vspacing[\v!samepage-\the\numexpr\currentheadlevel+\ifx#1\empty\plusone\else#1\fi\relax]%
+ \spac_vspacing_same_page\currentheadlevel\plustwo
\fi}
+
% We do support negative numbers but it can have side effects that we won't catch:
%
% \chapter{some} \setupheadnumber[chapter][3] \chapter{more}
diff --git a/tex/context/base/mkiv/strc-tnt.mkiv b/tex/context/base/mkiv/strc-tnt.mkiv
new file mode 100644
index 000000000..0b092b35f
--- /dev/null
+++ b/tex/context/base/mkiv/strc-tnt.mkiv
@@ -0,0 +1,120 @@
+%D \module
+%D [ file=strc-tnt,
+%D version=2019.05.30, % based on older code
+%D title=\CONTEXT\ Structure Macros,
+%D subtitle=Text Notes,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D \macros
+%D {definetextnote,setuptextnote}
+%D
+%D \startbuffer
+%D \definetextnote
+%D [textnote]
+%D
+%D \startbuffer
+%D Test test test \textnote [n=5] {alpha}. test test test test tets test test
+%D \textnote [n=10] {beta}. Test test test test tets test test \textnote [n=12]
+%D {gamma}. Test test test test tets test test \textnote [n=24] {delta}. Test test
+%D test test test test \textnote {epsilon} test test \textnote [n=*] {zeta}.
+%D \stopbuffer
+%D
+%D \blank {\setuptextnote[empty=yes] \getbuffer\par} \blank
+%D \blank {\setuptextnote[empty=number] \getbuffer\par} \blank
+%D \blank {\setuptextnote[empty=none] \getbuffer\par} \blank
+%D \blank { \getbuffer\par} \blank
+%D
+%D \blank[2*big]
+%D
+%D \placenotes[textnote:note][criterium=text]
+%D \stopbuffer
+%D
+%D \typebuffer \getbuffer
+
+\installcorenamespace{textnote}
+
+\installcommandhandler \??textnote {textnote} \??textnote
+
+\definebar
+ [\v!textnote:\v!underbar]
+ [\v!underbar]
+
+\definenote
+ [\v!textnote:\v!note]
+
+\setuptextnote
+ [\c!rule=\v!textnote:\v!underbar,
+ \c!note=\v!textnote:\v!note,
+ \c!n=10] % * will use the real space
+
+\appendtoks
+ \setuevalue{\currenttextnote}{\educ_textnote{\currenttextnote}}%
+\to \everydefinetextnote
+
+\unexpanded\def\educ_textnote#1%
+ {\dontleavehmode
+ \begingroup
+ \def\currenttextnote{#1}%
+ \dosingleempty\educ_textnote_indeed}
+
+\def\educ_textnote_indeed[#1]#2% we could use setups but it's overkill
+ {\iffirstargument\setupcurrenttextnote[#1]\fi
+ \edef\p_n{\textnoteparameter\c!n}%
+ \edef\p_empty{\textnoteparameter\c!empty}%
+ \edef\currentbar{\textnoteparameter\c!rule}%
+ \edef\currentnote{\textnoteparameter\c!note}%
+ \ifx\p_n\wildcardsymbol
+ \donefalse
+ \ifx\p_empty\v!yes
+ \donetrue
+ \else\ifx\p_empty\v!number
+ \donetrue
+ \else\ifx\p_empty\v!none
+ \donetrue
+ \fi\fi\fi
+ \ifdone
+ \setupbar[\currentbar][\c!empty=\v!yes]%
+ \fi
+ \inlinebar[\currentbar]\bgroup
+ \wordboundary#2%
+ \ifx\p_empty\v!yes
+ \setnotetext[\currentnote]{#2}%
+ \else\ifx\p_empty\v!number
+ \runninghbox{\resetbar\setnote[\currentnote]{#2}}%
+ \else\ifx\p_empty\v!none
+ \setupnote[\currentnote][\c!location=\v!none]%
+ \runninghbox{\resetbar\setnote[\currentnote]{#2}}%
+ \fi\fi\fi
+ \egroup
+ \else
+ \inlinebar[\currentbar]\bgroup
+ \scratchcounter\numexpr\p_n/\plustwo\relax
+ \ifx\p_empty\v!yes
+ \interwordspacesbefore\scratchcounter
+ \setnotetext[\currentnote]{#2}%
+ \interwordspacesafter\scratchcounter
+ \else\ifx\p_empty\v!number
+ \interwordspacesbefore\scratchcounter
+ \zwnj\runninghbox{\resetbar\setnote[\currentnote]{#2}}\zwnj
+ \interwordspacesafter\scratchcounter
+ \else\ifx\p_empty\v!none
+ \setupnote[\currentnote][\c!location=\v!none]%
+ \interwordspacesbefore\scratchcounter
+ \zwnj\runninghbox{\resetbar\setnote[\currentnote]{#2}}\zwnj
+ \interwordspacesafter\scratchcounter
+ \else
+ #2%
+ \fi\fi\fi
+ \egroup
+ \fi
+ \endgroup}
+
+\protect \endinput
diff --git a/tex/context/fonts/mkiv/type-imp-opendyslexic.mkiv b/tex/context/fonts/mkiv/type-imp-opendyslexic.mkiv
index c3b8a3ef2..1f366b8eb 100644
--- a/tex/context/fonts/mkiv/type-imp-opendyslexic.mkiv
+++ b/tex/context/fonts/mkiv/type-imp-opendyslexic.mkiv
@@ -11,8 +11,36 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
+%D It's kind of funny that the term \quote {dyslexic} itself is hard to read and I
+%D (not being dyslexic) need to double check it.
+%D
+%D As often a sans is adviced: I personally think that Optima Nova is a quite good
+%D choice but it doesn't come for free.
+
+% \enabledirectives[fonts.features.combine]
+%
+% \usetypescriptfile[opendyslexic]
+%
+% \starttypescript[opendyslexic-new]
+% \definetypeface [\typescriptone] [rm] [serif] [\typescriptone] [default] [features=opendyslexic-new]
+% \definetypeface [\typescriptone] [ss] [serif] [\typescriptone] [default] [features=opendyslexic-new]
+% \definetypeface [\typescriptone] [tt] [mono] [\typescriptone] [default]
+% \definetypeface [\typescriptone] [mm] [math] [xits] [default]
+% \stoptypescript
+%
+% \setupbodyfont
+% [opendyslexic-new,10pt]
+%
+% \starttext
+% \input tufte
+% \stoptext
+
\starttypescriptcollection[opendyslexic]
+ \definefontfeature
+ [opendyslexic-new]
+ [spacing={0.4+0.2-0.1}]
+
\starttypescript [\s!serif] [opendyslexic] [\s!name]
\setups[\s!font:\s!fallback:\s!serif]
\definefontsynonym [\s!Serif] [\s!file:opendyslexic-regular.otf] [\s!features=\s!default]
@@ -21,7 +49,13 @@
\definefontsynonym [\s!SerifBoldItalic] [\s!file:opendyslexic-bolditalic.otf] [\s!features=\s!default]
\stoptypescript
- \starttypescript [\s!sans] [opendyslexic] [\s!name]
+ \starttypescript [\s!serif] [opendyslexic-new] [\s!name]
+ \setups[\s!font:\s!fallback:\s!serif]
+ \definefontsynonym [\s!Serif] [\s!file:opendyslexic3-regular.ttf] [\s!features={opendyslexic-new,\s!default}]
+ \definefontsynonym [\s!SerifBold] [\s!file:opendyslexic3-bold.ttf] [\s!features={opendyslexic-new,\s!default}]
+ \stoptypescript
+
+ \starttypescript [\s!sans] [opendyslexic,opendyslexic-new] [\s!name]
\setups[\s!font:\s!fallback:\s!sans]
\definefontsynonym [\s!Sans] [\s!file:opendyslexicalta-regular.otf] [\s!features=\s!default]
\definefontsynonym [\s!SansBold] [\s!file:opendyslexicalta-bold.otf] [\s!features=\s!default]
@@ -29,16 +63,19 @@
\definefontsynonym [\s!SansBoldItalic] [\s!file:opendyslexicalta-bolditalic.otf] [\s!features=\s!default]
\stoptypescript
- \starttypescript [\s!mono] [opendyslexic] [\s!name]
+ \starttypescript [\s!mono] [opendyslexic,opendyslexic-new] [\s!name]
\setups[\s!font:\s!fallback:\s!mono]
- \definefontsynonym [\s!Mono] [\s!file:opendyslexicmono-regular.otf] [\s!features=\s!none]
+ \definefontsynonym [\s!Mono] [\s!file:opendyslexicmono-regular.otf] [\s!features=\s!none]
\stoptypescript
- \starttypescript[opendyslexic]
- \definetypeface [opendyslexic] [\s!rm] [\s!serif] [opendyslexic] [\s!default]
- \definetypeface [opendyslexic] [\s!ss] [\s!sans] [opendyslexic] [\s!default]
- \definetypeface [opendyslexic] [\s!tt] [\s!mono] [opendyslexic] [\s!default]% [rscale=1.065]
- \definetypeface [opendyslexic] [\s!mm] [\s!math] [xits] [\s!default]% [rscale=1.020]
+ % We now have more gyre fonts so maybe we should test with a less times look
+ % alike instead.
+
+ \starttypescript[opendyslexic,opendyslexic-new]
+ \definetypeface [\typescriptone] [\s!rm] [\s!serif] [\typescriptone] [\s!default]
+ \definetypeface [\typescriptone] [\s!ss] [\s!sans] [\typescriptone] [\s!default]
+ \definetypeface [\typescriptone] [\s!tt] [\s!mono] [\typescriptone] [\s!default]% [rscale=1.065]
+ \definetypeface [\typescriptone] [\s!mm] [\s!math] [xits] [\s!default]% [rscale=1.020]
\stoptypescript
\stoptypescriptcollection
diff --git a/tex/context/interface/mkii/keys-ro.xml b/tex/context/interface/mkii/keys-ro.xml
index 5ee43cc05..04291fb20 100644
--- a/tex/context/interface/mkii/keys-ro.xml
+++ b/tex/context/interface/mkii/keys-ro.xml
@@ -573,6 +573,7 @@
<cd:variable name='temporary' value='temporar'/>
<cd:variable name='test' value='test'/>
<cd:variable name='text' value='text'/>
+ <cd:variable name='textnote' value='textnote'/>
<cd:variable name='three' value='trei'/>
<cd:variable name='thursday' value='joi'/>
<cd:variable name='tight' value='tight'/>
diff --git a/tex/context/interface/mkiv/i-context.pdf b/tex/context/interface/mkiv/i-context.pdf
index 479e16737..fd58e5805 100644
--- a/tex/context/interface/mkiv/i-context.pdf
+++ b/tex/context/interface/mkiv/i-context.pdf
Binary files differ
diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf
index e428d7f39..c13794faa 100644
--- a/tex/context/interface/mkiv/i-readme.pdf
+++ b/tex/context/interface/mkiv/i-readme.pdf
Binary files differ
diff --git a/tex/context/modules/mkiv/m-markdown.lua b/tex/context/modules/mkiv/m-markdown.lua
deleted file mode 100644
index 1f9402f60..000000000
--- a/tex/context/modules/mkiv/m-markdown.lua
+++ /dev/null
@@ -1,824 +0,0 @@
-if not modules then modules = { } end modules ['m-markdown'] = {
- version = 1.002,
- comment = "companion to m-markdown.mkiv",
- author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
- copyright = "see below",
- license = "see context related readme files"
-}
-
---[[
-Copyright (C) 2009 John MacFarlane / Khaled Hosny / Hans Hagen
-
-The main parser is derived from the lunamark parser written by John MacFarlane. You
-can download lunamark from:
-
- http://github.com/jgm/lunamark.git
-
-Khaled Hosny provided the context writer for lunamark and that was used as starting
-point for the mapping. The original code can be fetched from the above location.
-
-While playing with the original code I got the feeling that lpeg could perform better.
-The slowdown was due to the fact that the parser's lpeg was reconstructed each time a
-nested parse was needed. After changing that code a bit I could bring down parsing of
-some test code from 2 seconds to less than 0.1 second so I decided to stick to this
-parser instead of writing my own. After all, the peg code looks pretty impressive and
-visiting Johns pandoc pages is worth the effort:
-
- http://johnmacfarlane.net/pandoc/
-
-The code here is mostly meant for processing snippets embedded in a context
-documents and is no replacement for pandoc at all. Therefore an alternative is to use
-pandoc in combination with Aditya's filter module.
-
-As I changed (and optimized) the original code, it will be clear that all errors
-are mine. Eventually I might also adapt the parser code a bit more. When I ran into of
-closure stack limitations I decided to flatten the code. The following implementation
-seems to be a couple of hundred times faster than what I started with which is not that
-bad.
-
-This is a second rewrite. The mentioned speed gain largely depended on the kind of
-content: blocks, references and items can be rather demanding. Also, There were
-some limitations with respect to the captures. So, table storage has been removed in
-favor of strings, and nesting has been simplified. The first example at the end of this
-file now takes .33 seconds for 567KB code (resulting in over 1MB) so we're getting there.
-
-There will be a third rewrite eventually.
-]]--
-
--- todo: we have better quote and tag scanners in ctx
--- todo: provide an xhtml mapping
--- todo: add a couple of extensions
--- todo: check patches to the real peg
-
-local type, next, tonumber = type, next, tonumber
-local lower, upper, gsub, rep, gmatch, format, length = string.lower, string.upper, string.gsub, string.rep, string.gmatch, string.format, string.len
-local concat = table.concat
-local P, R, S, V, C, Ct, Cg, Cb, Cmt, Cc, Cf, Cs = lpeg.P, lpeg.R, lpeg.S, lpeg.V, lpeg.C, lpeg.Ct, lpeg.Cg, lpeg.Cb, lpeg.Cmt, lpeg.Cc, lpeg.Cf, lpeg.Cs
-local lpegmatch = lpeg.match
-local utfbyte, utfchar = utf.byte, utf.char
-
-moduledata = moduledata or { }
-moduledata.markdown = moduledata.markdown or { }
-local markdown = moduledata.markdown
-
-local nofruns, nofbytes, nofhtmlblobs = 0, 0, 0
-
----------------------------------------------------------------------------------------------
-
-local nestedparser
-local syntax
-
-nestedparser = function(str) return lpegmatch(syntax,str) end
-
----------------------------------------------------------------------------------------------
-
-local asterisk = P("*")
-local dash = P("-")
-local plus = P("+")
-local underscore = P("_")
-local period = P(".")
-local hash = P("#")
-local ampersand = P("&")
-local backtick = P("`")
-local less = P("<")
-local more = P(">")
-local space = P(" ")
-local squote = P("'")
-local dquote = P('"')
-local lparent = P("(")
-local rparent = P(")")
-local lbracket = P("[")
-local rbracket = P("]")
-local slash = P("/")
-local equal = P("=")
-local colon = P(":")
-local semicolon = P(";")
-local exclamation = P("!")
-
-local digit = R("09")
-local hexdigit = R("09","af","AF")
-local alphanumeric = R("AZ","az","09")
-
-local doubleasterisks = P("**")
-local doubleunderscores = P("__")
-local fourspaces = P(" ")
-
-local any = P(1)
-local always = P("")
-
-local tab = P("\t")
-local spacechar = S("\t ")
-local spacing = S(" \n\r\t")
-local newline = P("\r")^-1 * P("\n")
-local spaceornewline = spacechar + newline
-local nonspacechar = any - spaceornewline
-local optionalspace = spacechar^0
-local spaces = spacechar^1
-local eof = - any
-local nonindentspace = space^-3
-local blankline = optionalspace * C(newline)
-local blanklines = blankline^0
-local skipblanklines = (optionalspace * newline)^0
-local linechar = P(1 - newline)
-local indent = fourspaces + (nonindentspace * tab) / ""
-local indentedline = indent /"" * C(linechar^1 * (newline + eof))
-local optionallyindentedline = indent^-1 /"" * C(linechar^1 * (newline + eof))
-local spnl = optionalspace * (newline * optionalspace)^-1
-local specialchar = S("*_`*&[]<!\\")
-local normalchar = any - (specialchar + spaceornewline)
-local line = C((any - newline)^0 * newline)
- + C(any^1 * eof)
-local nonemptyline = (any - newline)^1 * newline
-
----------------------------------------------------------------------------------------------
-
-local function lineof(c)
- return (nonindentspace * (P(c) * optionalspace)^3 * newline * blankline^1)
-end
-
-local lineof_asterisks = lineof(asterisk)
-local lineof_dashes = lineof(dash)
-local lineof_underscores = lineof(underscore)
-
-local bullet = nonindentspace * (plus + (asterisk - lineof_asterisks) + (dash - lineof_dashes)) * spaces
-local enumerator = nonindentspace * digit^1 * period * spaces
-
----------------------------------------------------------------------------------------------
-
-local openticks = Cg(backtick^1, "ticks")
-local closeticks = space^-1 * Cmt(C(backtick^1) * Cb("ticks"), function(s,i,a,b) return #a == #b and i end)
-local intickschar = (any - S(" \n\r`"))
- + (newline * -blankline)
- + (space - closeticks)
- + (backtick^1 - closeticks)
-local inticks = openticks * space^-1 * C(intickschar^1) * closeticks
-
----------------------------------------------------------------------------------------------
-
-local leader = space^-3
-local nestedbrackets = P { lbracket * ((1 - lbracket - rbracket) + V(1))^0 * rbracket }
-local tag = lbracket * C((nestedbrackets + 1 - rbracket)^0) * rbracket
-local url = less * C((1-more)^0) * more
- + C((1-spacing- rparent)^1) -- sneaky: ) for resolver
-local title_s = squote * lpeg.C((1-squote )^0) * squote
-local title_d = dquote * lpeg.C((1-dquote )^0) * dquote
-local title_p = lparent * lpeg.C((1-rparent)^0) * rparent
-local title = title_s + title_d + title_p
-local optionaltitle = ((spacing^0 * title * spacechar^0) + lpeg.Cc(""))
-
-local references = { }
-
-local function register_link(tag,url,title)
- tag = lower(gsub(tag, "[ \n\r\t]+", " "))
- references[tag] = { url, title }
-end
-
-local function direct_link(label,url,title) -- title is typical html thing
- return label, url, title
-end
-
-local function indirect_link(label,tag)
- if tag == "" then
- tag = label
- end
- tag = lower(gsub(tag, "[ \n\r\t]+", " "))
- local r = references[tag]
- if r then
- return label, r[1], r[2]
- else
- return label, tag, ""
- end
-end
-
-local define_reference_parser = (leader * tag * colon * spacechar^0 * url * optionaltitle) / register_link
-local direct_link_parser = tag * spacechar^0 * lparent * (url + Cc("")) * optionaltitle * rparent / direct_link
-local indirect_link_parser = tag * spacechar^0 * tag / indirect_link
-
-local rparser = (define_reference_parser+1)^0
-
-local function referenceparser(str)
- references = { }
- lpegmatch(rparser,str)
-end
-
--- local reftest = [[
--- [1]: <http://example.com/>
--- [3]:http://example.com/ (Optional Title Here)
--- [2]: http://example.com/ 'Optional Title Here'
--- [a]: http://example.com/ "Optional *oeps* Title Here"
--- ]]
---
--- local linktest = [[
--- [This link] (http://example.net/)
--- [an example] (http://example.com/ "Title")
--- [an example][1]
--- [an example] [2]
--- ]]
---
--- lpeg.match((define_reference_parser+1)^0,reftest)
---
--- inspect(references)
---
--- lpeg.match((direct_link_parser/print + indirect_link_parser/print + 1)^0,linktest)
-
----------------------------------------------------------------------------------------------
-
-local blocktags = table.tohash {
- "address", "blockquote" , "center", "dir", "div", "p", "pre",
- "li", "ol", "ul", "dl", "dd",
- "form", "fieldset", "isindex", "menu", "noframes", "frameset",
- "h1", "h2", "h3", "h4", "h5", "h6",
- "hr", "ht", "script", "noscript",
- "table", "tbody", "tfoot", "thead", "th", "td", "tr",
-}
-
------ htmlattributevalue = squote * C((any - (blankline + squote))^0) * squote
------ + dquote * C((any - (blankline + dquote))^0) * dquote
------ + (any - S("\t >"))^1 -- any - tab - space - more
------ htmlattribute = (alphanumeric + S("_-"))^1 * spnl * (equal * spnl * htmlattributevalue)^-1 * spnl
------ htmlcomment = P("<!--") * (any - P("-->"))^0 * P("-->")
-
------ htmltag = less * spnl * slash^-1 * alphanumeric^1 * spnl * htmlattribute^0 * slash^-1 * spnl * more
------
------ blocktag = Cmt(C(alphanumeric^1), function(s,i,a) return blocktags[lower(a)] and i, a end)
------
------ openblocktag = less * Cg(blocktag, "opentag") * spnl * htmlattribute^0 * more
------ closeblocktag = less * slash * Cmt(C(alphanumeric^1) * Cb("opentag"), function(s,i,a,b) return lower(a) == lower(b) and i end) * spnl * more
------ selfclosingblocktag = less * blocktag * spnl * htmlattribute^0 * slash * more
------
------ displayhtml = Cs { "HtmlBlock",
------ InBlockTags = openblocktag * (V("HtmlBlock") + (any - closeblocktag))^0 * closeblocktag,
------ HtmlBlock = C(V("InBlockTags") + selfclosingblocktag + htmlcomment),
------ }
------
------ inlinehtml = Cs(htmlcomment + htmltag)
-
--- There is no reason to support crappy html, so we expect proper attributes.
-
-local htmlattributevalue = squote * C((any - (blankline + squote))^0) * squote
- + dquote * C((any - (blankline + dquote))^0) * dquote
-local htmlattribute = (alphanumeric + S("_-"))^1 * spnl * equal * spnl * htmlattributevalue * spnl
-
-local htmlcomment = P("<!--") * (any - P("-->"))^0 * P("-->")
-local htmlinstruction = P("<?") * (any - P("?>" ))^0 * P("?>" )
-
--- We don't care too much about matching elements and there is no reason why display elements could not
--- have inline elements so the above should be patched then. Well, markdown mixed with html is not meant
--- for anything else than webpages anyway.
-
-local blocktag = Cmt(C(alphanumeric^1), function(s,i,a) return blocktags[lower(a)] and i, a end)
-
-local openelement = less * alphanumeric^1 * spnl * htmlattribute^0 * more
-local closeelement = less * slash * alphanumeric^1 * spnl * more
-local emptyelement = less * alphanumeric^1 * spnl * htmlattribute^0 * slash * more
-
-local displaytext = (any - less)^1
-local inlinetext = displaytext / nestedparser
-
-local displayhtml = #(less * blocktag * spnl * htmlattribute^0 * more)
- * Cs { "HtmlBlock",
- InBlockTags = openelement * (V("HtmlBlock") + displaytext)^0 * closeelement,
- HtmlBlock = (V("InBlockTags") + emptyelement + htmlcomment + htmlinstruction),
- }
-
-local inlinehtml = Cs { "HtmlBlock",
- InBlockTags = openelement * (V("HtmlBlock") + inlinetext)^0 * closeelement,
- HtmlBlock = (V("InBlockTags") + emptyelement + htmlcomment + htmlinstruction),
- }
-
----------------------------------------------------------------------------------------------
-
-local hexentity = ampersand * hash * S("Xx") * C(hexdigit ^1) * semicolon
-local decentity = ampersand * hash * C(digit ^1) * semicolon
-local tagentity = ampersand * C(alphanumeric^1) * semicolon
-
----------------------------------------------------------------------------------------------
-
--- --[[
-
-local escaped = {
- ["{" ] = "",
- ["}" ] = "",
- ["$" ] = "",
- ["&" ] = "",
- ["#" ] = "",
- ["~" ] = "",
- ["|" ] = "",
- ["%%"] = "",
- ["\\"] = "",
-}
-
-for k, v in next, escaped do
- escaped[k] = "\\char" .. utfbyte(k) .. "{}"
-end
-
-local function c_string(s) -- has to be done more often
- return (gsub(s,".",escaped))
-end
-
-local c_linebreak = "\\crlf\n" -- is this ok?
-local c_space = " "
-
-local function c_paragraph(c)
- return c .. "\n\n" -- { "\\startparagraph ", c, " \\stopparagraph\n" }
-end
-
-local function listitem(c)
- return format("\n\\startitem\n%s\n\\stopitem\n",nestedparser(c))
-end
-
-local function c_tightbulletlist(c)
- return format("\n\\startmarkdownitemize[packed]\n%s\\stopmarkdownitemize\n",c)
-end
-
-local function c_loosebulletlist(c)
- return format("\n\\startmarkdownitemize\n\\stopmarkdownitemize\n",c)
-end
-
-local function c_tightorderedlist(c)
- return format("\n\\startmarkdownitemize[n,packed]\n%s\\stopmarkdownitemize\n",c)
-end
-
-local function c_looseorderedlist(c)
- return format("\n\\startmarkdownitemize[n]\n%s\\stopmarkdownitemize\n",c)
-end
-
-local function c_inline_html(content)
- nofhtmlblobs = nofhtmlblobs + 1
- return format("\\markdowninlinehtml{%s}",content)
-end
-
-local function c_display_html(content)
- nofhtmlblobs = nofhtmlblobs + 1
- return format("\\startmarkdowndisplayhtml\n%s\n\\stopmarkdowndisplayhtml",content)
-end
-
-local function c_emphasis(c)
- return format("\\markdownemphasis{%s}",c)
-end
-
-local function c_strong(c)
- return format("\\markdownstrong{%s}",c)
-end
-
-local function c_blockquote(c)
- return format("\\startmarkdownblockquote\n%s\\stopmarkdownblockquote\n",nestedparser(c))
-end
-
-local function c_verbatim(c)
- return format("\\startmarkdowntyping\n%s\\stopmarkdowntyping\n",c)
-end
-
-local function c_code(c)
- return format("\\markdowntype{%s}",c)
-end
-
-local levels = { "", "", "", "", "", "" }
-
-local function c_start_document()
- levels = { "", "", "", "", "", "" }
- return ""
-end
-
-local function c_stop_document()
- return concat(levels,"\n") or ""
-end
-
-local function c_heading(level,c)
- if level > #levels then
- level = #levels
- end
- local finish = concat(levels,"\n",level) or ""
- for i=level+1,#levels do
- levels[i] = ""
- end
- levels[level] = "\\stopstructurelevel"
- return format("%s\\startstructurelevel[markdown][title={%s}]\n",finish,c)
-end
-
-local function c_hrule()
- return "\\markdownrule\n"
-end
-
-local function c_link(lab,src,tit)
- return format("\\goto{%s}[url(%s)]",nestedparser(lab),src)
-end
-
-local function c_image(lab,src,tit)
- return format("\\externalfigure[%s]",src)
-end
-
-local function c_email_link(address)
- return format("\\goto{%s}[url(mailto:%s)]",c_string(address),address)
-end
-
-local function c_url_link(url)
- return format("\\goto{%s}[url(%s)]",c_string(url),url)
-end
-
-local function f_heading(c,n)
- return c_heading(n,c)
-end
-
-local function c_hex_entity(s)
- return utfchar(tonumber(s,16))
-end
-
-local function c_dec_entity(s)
- return utfchar(tonumber(s))
-end
-
-local function c_tag_entity(s)
- return s -- we can use the default resolver
-end
-
---]]
-
----------------------------------------------------------------------------------------------
-
---[[
-
-local escaped = {
- ["<"] = "&lt;",
- [">"] = "&gt;",
- ["&"] = "&amp;",
- ['"'] = "&quot;",
-}
-
-local function c_string(s) -- has to be done more often
- return (gsub(s,".",escaped))
-end
-
-local c_linebreak = "<br/>"
-local c_space = " "
-
-local function c_paragraph(c)
- return format("<p>%s</p>\n", c)
-end
-
-local function listitem(c)
- return format("<li>%s</li>",nestedparser(c))
-end
-
-local function c_tightbulletlist(c)
- return format("<ul>\n%s\n</ul>\n",c)
-end
-
-local function c_loosebulletlist(c)
- return format("<ul>\n%s\n</ul>\n",c)
-end
-
-local function c_tightorderedlist(c)
- return format("<ol>\n%s\n</ol>\n",c)
-end
-
-local function c_looseorderedlist(c)
- return format("<ol>\n%s\n</ol>\n",c)
-end
-
-local function c_inline_html(content)
- nofhtmlblobs = nofhtmlblobs + 1
- return content
-end
-
-local function c_display_html(content)
- nofhtmlblobs = nofhtmlblobs + 1
- return format("\n%s\n",content)
-end
-
-local function c_emphasis(c)
- return format("<em>%s</em>",c)
-end
-
-local function c_strong(c)
- return format("<strong>%s</strong>",c)
-end
-
-local function c_blockquote(c)
- return format("<blockquote>\n%s\n</blockquote>",nestedparser(c))
-end
-
-local function c_verbatim(c)
- return format("<pre><code>%s</code></pre>",c)
-end
-
-local function c_code(c)
- return format("<code>%s</code>",c)
-end
-
-local c_start_document = ""
-local c_stop_document = ""
-
-local function c_heading(level,c)
- return format("<h%d>%s</h%d>\n",level,c,level)
-end
-
-local function c_hrule()
- return "<hr/>\n"
-end
-
-local function c_link(lab,src,tit)
- local titattr = #tit > 0 and format(" title=%q",tit) or ""
- return format("<a href=%q%s>%s</a>",src,titattr,nestedparser(lab))
-end
-
-local function c_image(lab,src,tit)
- return format("<img href=%q title=%q>%s</a>",src,tit,nestedparser(lab))
-end
-
-local function c_email_link(address)
- return format("<a href=%q>%s</a>","mailto:",address,c_escape(address))
-end
-
-local function c_url_link(url)
- return format("<a href=%q>%s</a>",url,c_string(url))
-end
-
-local function f_heading(c,n)
- return c_heading(n,c)
-end
-
-local function c_hex_entity(s)
- return utfchar(tonumber(s,16))
-end
-
-local function c_dec_entity(s)
- return utfchar(tonumber(s))
-end
-
-local function c_tag_entity(s)
- return format("&%s;",s)
-end
-
---]]
-
----------------------------------------------------------------------------------------------
-
-local Str = normalchar^1 / c_string
-local Space = spacechar^1 / c_space
-local Symbol = specialchar / c_string
-local Code = inticks / c_code
-
-local HeadingStart = C(hash * hash^-5) / length
-local HeadingStop = optionalspace * hash^0 * optionalspace * newline * blanklines
-local HeadingLevel = equal^3 * Cc(1)
- + dash ^3 * Cc(2)
-
-local NormalEndline = optionalspace * newline * -(
- blankline
- + more
- + HeadingStart
- + ( line * (P("===")^3 + P("---")^3) * newline )
- ) / c_space
-
-local LineBreak = P(" ") * NormalEndline / c_linebreak
-
-local TerminalEndline = optionalspace * newline * eof / ""
-
-local Endline = LineBreak
- + TerminalEndline
- + NormalEndline
-
-local AutoLinkUrl = less * C(alphanumeric^1 * P("://") * (any - (newline + more))^1) * more / c_url_link
-local AutoLinkEmail = less * C((alphanumeric + S("-_+"))^1 * P("@") * (any - (newline + more))^1) * more / c_email_link
-
-local DirectLink = direct_link_parser / c_link
-local IndirectLink = indirect_link_parser / c_link
-
-local ImageLink = exclamation * (direct_link_parser + indirect_link_parser) / c_image -- we can combine this with image ... smaller lpeg
-
-local UlOrStarLine = asterisk^4
- + underscore^4
- + (spaces * S("*_")^1 * #spaces) / c_string
-
-local EscapedChar = P("\\") * C(P(1 - newline)) / c_string
-
-local InlineHtml = inlinehtml / c_inline_html
-local DisplayHtml = displayhtml / c_display_html
-local HtmlEntity = hexentity / c_hex_entity
- + decentity / c_dec_entity
- + tagentity / c_tag_entity
-
-local NestedList = Cs(optionallyindentedline - (bullet + enumerator))^1 / nestedparser
-
-local ListBlockLine = -blankline * -(indent^-1 * (bullet + enumerator)) * optionallyindentedline
-
-local Verbatim = Cs(blanklines * (indentedline - blankline)^1) / c_verbatim
- * (blankline^1 + eof) -- not really needed, probably capture trailing? we can do that beforehand
-
-local Blockquote = Cs((
- ((nonindentspace * more * space^-1)/"" * linechar^0 * newline)^1
- * ((linechar - blankline)^1 * newline)^0
- * blankline^0
- )^1) / c_blockquote
-
-local HorizontalRule = (lineof_asterisks + lineof_dashes + lineof_underscores) / c_hrule
-
-local Reference = define_reference_parser / ""
-
--- could be a mini grammar
-
-local ListBlock = line * ListBlockLine^0
-local ListContinuationBlock = blanklines * indent * ListBlock
-local ListItem = Cs(ListBlock * (NestedList + ListContinuationBlock^0)) / listitem
-
----- LeadingLines = blankline^0 / ""
----- TrailingLines = blankline^1 * #(any) / "\n"
-
-syntax = Cs { "Document",
-
- Document = V("Display")^0,
-
- Display = blankline -- ^1/"\n"
- + Blockquote
- + Verbatim
- + Reference
- + HorizontalRule
- + HeadingStart * optionalspace * Cs((V("Inline") - HeadingStop)^1) * HeadingStop / c_heading
- + Cs((V("Inline") - Endline)^1) * newline * HeadingLevel * newline * blanklines / f_heading
- + Cs((bullet /"" * ListItem)^1) * blanklines * -bullet / c_tightbulletlist
- + Cs((bullet /"" * ListItem * C(blanklines))^1) / c_loosebulletlist
- + Cs((enumerator /"" * ListItem)^1) * blanklines * -enumerator / c_tightorderedlist
- + Cs((enumerator /"" * ListItem * C(blanklines))^1) / c_looseorderedlist
- + DisplayHtml
- + nonindentspace * Cs(V("Inline")^1)* newline * blankline^1 / c_paragraph
- + V("Inline")^1,
-
- Inline = Str
- + Space
- + Endline
- + UlOrStarLine -- still needed ?
- + doubleasterisks * -spaceornewline * Cs((V("Inline") - doubleasterisks )^1) * doubleasterisks / c_strong
- + doubleunderscores * -spaceornewline * Cs((V("Inline") - doubleunderscores)^1) * doubleunderscores / c_strong
- + asterisk * -spaceornewline * Cs((V("Inline") - asterisk )^1) * asterisk / c_emphasis
- + underscore * -spaceornewline * Cs((V("Inline") - underscore )^1) * underscore / c_emphasis
- + ImageLink
- + DirectLink
- + IndirectLink
- + AutoLinkUrl
- + AutoLinkEmail
- + Code
- + InlineHtml
- + HtmlEntity
- + EscapedChar
- + Symbol,
-
-}
-
----------------------------------------------------------------------------------------------
-
-local function convert(str)
- nofruns = nofruns + 1
- nofbytes = nofbytes + #str
- statistics.starttiming(markdown)
- referenceparser(str)
- local result = c_start_document() .. nestedparser(str) .. c_stop_document()
- statistics.stoptiming(markdown)
- return result
-end
-
-markdown.convert = convert
-
-function markdown.typesetstring(data)
- if data and data ~= "" then
- local result = convert(data)
- context.viafile(result)
- end
-end
-
-function markdown.typesetbuffer(name)
- markdown.typesetstring(buffers.getcontent(name))
-end
-
-function markdown.typesetfile(name)
- local fullname = resolvers.findctxfile(name)
- if fullname and fullname ~= "" then
- markdown.typesetstring(io.loaddata(fullname))
- end
-end
-
-statistics.register("markdown",function()
- if nofruns > 0 then
- return format("%s bytes converted, %s runs, %s html blobs, %s seconds used",
- nofbytes, nofruns, nofhtmlblobs, statistics.elapsedtime(markdown))
- end
-end)
-
----------------------------------------------------------------------------------------------
-
---~ context.starttext()
---~ moduledata.markdown.convert(str)
---~ context.stoptext()
-
-if not tex.jobname then
-
- local one = [[
-Test *123*
-==========
-
-<b>BOLD *BOLD* BOLD</b>
-
-<pre>PRE <b>PRE</b> PRE</pre>
-
-
-* Test
-** Test
-* Test1
- * Test2
-* Test
-
-Test
-====
-
-> test
-> test **123** *123*
-> test `code`
-
-test
-
-Test
-====
-
-> test
-> test
-> test
-
-test
-oeps
-
-more
-
- code
- code
-
-oeps
-
-[an example][a]
-
-[an example] [2]
-
-[a]: http://example.com/ "Optional *oeps* Title Here"
-[2]: http://example.com/ 'Optional Title Here'
-[3]: http://example.com/ (Optional Title Here)
-
-[an example][a]
-
-[an example] [2]
-
-[an [tricky] example](http://example.com/ "Title")
-
-[This **xx** link](http://example.net/)
- ]]
-
--- This snippet takes some 4 seconds in the original parser (the one that is
--- a bit clearer from the perspective of grammars but somewhat messy with
--- respect to the captures. In the above parser it takes .1 second. Also,
--- in the later case only memory is the limit.
-
- local two = [[
-Test
-====
-* Test
-** Test
-* Test
-** Test
-* Test
-
-Test
-====
-
-> test
-> test
-> test
-
-test
-
-Test
-====
-
-> test
-> test
-> test
-
-test
- ]]
-
- local function test(str)
- local n = 1 -- 000
- local t = os.clock()
- local one = convert(str)
- -- print("runtime",1,#str,#one,os.clock()-t)
- str = string.rep(str,n)
- local t = os.clock()
- local two = convert(str)
- print(two)
- -- print("runtime",n,#str,#two,os.clock()-t)
- -- print(format("==============\n%s\n==============",one))
- end
-
- -- test(one)
- -- test(two)
- -- test(io.read("*all"))
-
-
-end
diff --git a/tex/context/modules/mkiv/m-markdown.mkiv b/tex/context/modules/mkiv/m-markdown.mkiv
deleted file mode 100644
index 29d41341e..000000000
--- a/tex/context/modules/mkiv/m-markdown.mkiv
+++ /dev/null
@@ -1,88 +0,0 @@
-%D \module
-%D [ file=x-markdown,
-%D version=2011.07.19,
-%D title=\CONTEXT\ Modules,
-%D subtitle=Processing MarkDown,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-\writestatus{loading}{ConTeXt Modules / MarkDown Renderer}
-
-%D This module deals with markdown which is a document encoding that
-%D some \CONTEXT\ like much. It reminds me of the kind of minimal coding
-%D we used before we ran into \TEX\ and were using a somewhat simple
-%D rendering (pagination, etc) of documents. As I'm no user myself, it
-%D is up to others to provide documentation and examples.
-
-\registerctxluafile{m-markdown}{}
-
-\unprotect
-
-% basic interface
-
-\definebuffer[markdown]
-
-\unexpanded\def\stopmarkdown
- {\ctxlua{moduledata.markdown.typesetbuffer("\thedefinedbuffer{markdown}")}}
-
-\unexpanded\def\processmarkdownfile#1% maybe [] or both
- {\ctxlua{moduledata.markdown.typesetfile("#1")}}
-
-\unexpanded\def\markdown#1% maybe [] or both
- {\ctxlua{moduledata.markdown.typesetstring(\!!bs#1\!!es)}}
-
-% commands
-
-\defineitemgroup
- [markdownitemize]
-
-\definetyping
- [markdowntyping]
-
-\definetype
- [markdowntype]
-
-\definetype
- [markdowninlinehtml]
-
-\definetyping
- [markdowndisplayhtml]
-
-\definedelimitedtext
- [markdownblockquote]
- [quotation]
-
-\definehighlight
- [markdownemphasis]
- [style=\em]
-
-\definehighlight
- [markdownstrong]
- [style=\bf]
-
-\definestructurelevels
- [markdown]
- [\v!chapter,
- \v!section,
- \v!subsection,
- \v!subsubsection,
- \v!subsubsubsection,
- \v!subsubsubsubsection]
-
-\unexpanded\def\markdownrule
- {\hairline\par}
-
-\protect
-
-\continueifinputfile{m-markdown.mkiv}
-
-\starttext
- \startmarkdown
- % some examples needed
- \stopmarkdown
-\stoptext
diff --git a/tex/context/modules/mkiv/m-punk.mkiv b/tex/context/modules/mkiv/m-punk.mkiv
index 29a6d8cca..47f1a0177 100644
--- a/tex/context/modules/mkiv/m-punk.mkiv
+++ b/tex/context/modules/mkiv/m-punk.mkiv
@@ -63,8 +63,8 @@ local flusher = {
boundingbox = { 0, -d, w, h },
}
characters[n] = {
- commands = { -- todo: xforms, should happen in backend
- { "special", "pdf: " .. concat(l," ") },
+ commands = { -- todo: type 3 in lmtx
+ { "pdf", concat(l," ") },
}
}
else
diff --git a/tex/context/modules/mkiv/s-maps.mkiv b/tex/context/modules/mkiv/s-maps.mkiv
index 28e88af98..bc0bcbaa0 100644
--- a/tex/context/modules/mkiv/s-maps.mkiv
+++ b/tex/context/modules/mkiv/s-maps.mkiv
@@ -7,30 +7,38 @@
%D date=\currentdate,
%D copyright=NTG/MAPS]
-% This module implements the MAPS style for use with the Context
-% macro package. The original MAPS layout was designed and
-% implemented in LaTeX by Taco Hoekwater and Siep Kroonenberg.
-
-% - three layouts:
-% 1. two columns
-% 2. one column, with wide outer margins (option onecolumn)
-% 3. one column, with wide left margin (option asym)
-% - font sizes deviate from TeX's usual geometric progression
-% - use of sans-serif for headers and various details
-% - option realfonts uses Linux Libertine, Euler Math and Inconsolata.
-% This is used for final typesetting.
-% The default font setup, intended for authors, uses Computer
-% Modern Math instead of Euler Math (which is still in beta),
-% and LM Mono instead of Inconsolata.
-
-% A mode nosubsub defines only two levels of sectioning. If you
-% don't need more and use the two-column layout, then this option
-% will probably improve the looks of your paper.
+%D This module implements the MAPS style for use with the Context macro package. The
+%D original MAPS layout was designed and implemented in LaTeX by Taco Hoekwater and
+%D Siep Kroonenberg.
+%D
+%D \startitemize
+%D \startitem
+%D four layouts:
+%D \startitemize
+%D \startitem two columns \stopitem
+%D \startitem one column, with wide outer margins (option onecolumn) \stopitem
+%D \startitem one column, with wide left margin (option asym) \stopitem
+%D \startitem one column, with wide right margin (option single) \stopitem
+%D \stopitemize
+%D \stopitem
+%D \startitem
+%D font sizes deviate from TeX's usual geometric progression
+%D \stopitem
+%D \startitem
+%D use of sans-serif for headers and various details
+%D \stopitem
+%D \stopitemize
+%D
+%D A mode nosubsub defines only two levels of sectioning. If you don't need more and
+%D use the two-column layout, then this option will probably improve the looks of
+%D your paper.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\ifMapsInColumns
-\doifmode{asym}{\enablemode[onecolumn]} % implies onecolumn
+
+\doifmode {asym} {\enablemode[onecolumn]} % implies onecolumn
+\doifmode {single} {\enablemode[asym,onecolumn]} % implies onecolumn
\doifnotmode{onecolumn}{\MapsInColumnstrue}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -98,31 +106,31 @@
%%% font families
-\starttypescript [maps]
-\definetypeface [maps] [rm] [serif] [modern] [default] [rscale=0.95]
-\definetypeface [maps] [mm] [math] [modern] [latin-modern]
-\definetypeface [maps] [tt] [mono] [modern] [default] [rscale=0.90]
-\definetypeface [maps] [ss] [sans] [modern] [default] [rscale=0.95]
+\definefontfeature[mapsdef][default][mode=node,onum=yes,lnum=no]
+
+\starttypescript [serif] [libertine] [name]
+ \setups[font:fallback:serif]
+ \definefontsynonym [Serif] [file:LinLibertine_R.otf] [features=mapsdef]
+ \definefontsynonym [SerifItalic] [file:LinLibertine_RI.otf] [features=mapsdef]
+ \definefontsynonym [SerifSlanted] [file:LinLibertine_RI.otf] [features=mapsdef]
+ \definefontsynonym [SerifBold] [file:LinLibertine_RB.otf] [features=mapsdef]
+ \definefontsynonym [SerifBoldItalic] [file:LinLibertine_RBI.otf] [features=mapsdef]
+ \definefontsynonym [SerifBoldSlanted] [file:LinLibertine_RBI.otf] [features=mapsdef]
+ \definefontsynonym [SerifCaps] [file:LinLibertine_R.otf] [features=smallcaps]
\stoptypescript
-\startmode[realfonts]
-\usetypescriptfile[type-libertine]
-
-\usetypescriptfile[type-inconsolata]
-
\starttypescript [maps]
-\definetypeface [maps] [rm] [serif] [libertine] [default]
-\definetypeface [maps] [mm] [math] [euler] [default] [rscale=0.9]
-\definetypeface [maps] [tt] [mono] [inconsolata] [default] [rscale=0.92]
-\definetypeface [maps] [ss] [sans] [modern] [default] [rscale=0.95]
+ \definetypeface [maps] [rm] [serif] [libertine] [default]
+ \definetypeface [maps] [mm] [math] [euler] [default] [rscale=0.9]
+ \definetypeface [maps] [tt] [mono] [modern] [default]
+ \definetypeface [maps] [ss] [sans] [modern] [default] [rscale=0.95]
\stoptypescript
-\stopmode
\setupbodyfont[maps,10pt,rm]
-% activate protruding
\setupinterlinespace[line=11pt]
+% activate protruding
\setupfontsynonym[handling=pure]
\setupalign[hanging]
@@ -142,7 +150,7 @@
\setuppapersize
[maps][maps]
-\setuplayout[
+\setuplayout
[topspace=40pt,
height=688pt,
header=33pt,
@@ -166,154 +174,137 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% sectioning
-\setupheads[sectionnumber=no, align=right]
-
-\def\hfonti{\ssbfa}
-\def\hfontii{\ssbf}
-\def\hfontiii{\rm\it}
+\setupheads
+ [number=no,
+ align=flushleft]
+
+\unexpanded\def\hfonti {\ssbfa}
+\unexpanded\def\hfontii {\ssbf}
+\unexpanded\def\hfontiii {\rm\bi}
+\unexpanded\def\runin #1{#1}
+
+\setuphead [section,subject]
+ [style=\hfonti,
+ before={\blank[line]},
+ after={\blank[halfline]}]
+\setuphead [subsection,subsubject]
+ [style=\hfontii,
+ before={\blank[halfline]},
+ after={}]
+\setuphead [subsubsection,subsubsubject]
+ [style=\hfontiii,
+ deeptextcommand=\runin,
+ distance=6pt,
+ alternative=text,
+ before={\blank[halfline]}]
+
+\startmode[nosubsub]
+\setuphead [section,subject]
+ [style=\hfontii,
+ before={\blank[line]},
+ after={}]
+\setuphead [subsection,subsubject]
+ [style=\hfontiii,
+ deeptextcommand=\runin,
+ alternative=text,
+ distance=6pt,
+ before={\blank[halfline]}]
+\stopmode
-\doifelsemode{nosubsub}{%
-\setuphead [section][%
- style=\hfontii,
- before={\blank[line]},
- after={}%
-]
-\setuphead [subsection][%
- style=\hfontiii,
- alternative=text,
- distance=6pt,
- before={\blank[halfline]}%
-]}{%
-\setuphead [section][%
- style=\hfonti,
- before={\blank[line]},
- after={\blank[halfline]}%
-]
-\setuphead [subsection][%
- style=\hfontii,
- before={\blank[halfline]},
- after={}%
-]
-\setuphead [subsubsection][%
- style=\hfontiii,
- distance=6pt,
- alternative=text,
- before={\blank[halfline]}%
-]}
-
-\doifelsemode{nosubsub}{%
-\setuphead [subject][%
- style=\hfontii,
- before={\blank[halfline]},
- after={}%
-]
-\setuphead [subsubject][%
- style=\hfontiii,
- alternative=text,
- before={\blank[halfline]}%
-]}{%
-\setuphead [subject][%
- style=\hfonti,
- before={\blank},
- after={\blank[halfline]}%
-]
-\setuphead [subsubject][%
- style=\hfontii,
- before={\blank[halfline]},
- after={}%
-]
-\setuphead [subsubsubject][%
- style=\hfontiii,
- alternative=text,
- before={\blank[halfline]}%
-]}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% floats
-\setupfloats [location=center, before={\ss}]
-\setupcaptions [headstyle={\ssbf},style={\ssx},
- suffix=.,distance=6pt,
+\setupfloats
+ [location=left,
+ before={\ss}]
+
+\setupcaptions
+ [align=flushleft,
+ headstyle={\ssbf},
+ style={\ssx},
+ suffix=.,
+ distance=6pt,
inbetween={\blank[halfline]}]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% various document elements
-\definesymbol [1][\getnamedglyphdirect{file:stmary10}{boxempty}]
+\setupitemize
+ [1]
+ [symbol=8]
-\setupitemize[1][packed]
-
-\setupitemize [each][%
- indentnext=no,
- align=right,
- width=1em,
- distance=0pt%
-]
+\setupitemize
+ [each]
+ [before={\blank[line]},
+ after={\blank[line]},
+ inbetween=,
+ indentnext=no,
+ width=12pt,
+ distance=0pt]
% an outer form of itemize that does not indent
% the paragraph.
\definecomplexorsimpleempty\startouteritemize
-\def\complexstartouteritemize[#1]{\begingroup
- \startitemize[width=1sp,#1]
- \let\doitem\item
- \def\item{\doitem[]\hbox{}\kern12pt\rightskip=0pt}%
-}
-
-\def\stopouteritemize{\stopitemize\endgroup}
-
-\setupenumerations [indentnext=no]
+\def\complexstartouteritemize[#1]%
+ {\begingroup
+ \setupitemize[width=0pt,inbetween={\blank},before={\blank},after={\blank}]
+ \startitemize[#1]
+ \let\doitem\item
+ \def\item{\doitem[]\hbox{}\kern12pt\rightskip=0pt}}
-\setupdescriptions [indentnext=no]
+\def\stopouteritemize
+ {\stopitemize\endgroup}
-\unexpanded\def\smalltyping{%
- \switchtobodyfont[tt]%
- \parindent=0pt
-}
+\definedescription
+ [description]
+ [alternative=hanging,width=fit]
% typing:
% - prettyverbatim is NOT the default
-% - smaller size
-\unexpanded\def
- \XeTeX{X\lower.5ex\hbox{\kern-.1em\mirror{E}}\kern-.1667em\TeX}
+\setuptyping
+ [style={\switchtobodyfont[small,tt]},
+ option=none,
+ indentnext=no]
-\setuptyping [%
- style={\smalltyping},
- option=none,
- indentnext=no%
-]
-
-\def\footnum#1{#1.}
+% normally we have endnotes, but in the title there
+% could be a \thanks command. Since the new column mode
+% does not deal with footnotes all that well, we more
+% or less have to roll our own.
\setupnotation
- [footnote]
- [alternative=serried,
- before=,
- after=,
- location=none,
- width=\textwidth,
- before={\blank},
- numbercommand=,
- command=\footnum,
- distance=0.5em]
+ [footnote]
+ [margin=0cm,
+ before={},
+ after={},
+ way=bypage,
+ number=no]
+
+\setupnote
+ [footnote]
+ [location=page,
+ spacebefore=,
+ before=,
+ after=]
+
+\unexpanded\def\thanks#1{\xdef\MapsThanks{#1}*}
\setuptabulate
- [before=\blank,
- inner=\ss,
- after=\blank]
+ [before=\blank,
+ inner=\ss,
+ after=\blank]
\def\startIntroEntry#1%
- {\startlinecorrection
- \bgroup
+ {\bgroup
\setupalign[right]
\setuptolerance[verytolerant]
\setupindenting[no]
\noindent
\switchtobodyfont[9pt]%
\setuplocalinterlinespace[line=10pt]%
- %\hyphenpenalty10000
\parfillskip 0pt plus 1fill
\rightskip6pt plus 1fill
\ss
@@ -321,15 +312,15 @@
\ignorespaces }
\def\stopIntroEntry
- {\par\egroup \stoplinecorrection
+ {\par\egroup
\blank[line] }
-\def\defineIntroEntry[#1][#2][#3]%
+\def\defineIntroEntry[#1][#2]
{\setvalue{start#1}{\startIntroEntry{#2}}%
- \setvalue {stop#1}{\stopIntroEntry#3}}
+ \setvalue {stop#1}{\stopIntroEntry}}
-\defineIntroEntry[Keywords][Keywords][]
-\defineIntroEntry[Abstract][Abstract][]
+\defineIntroEntry[Keywords][Keywords]
+\defineIntroEntry[Abstract][Abstract]
% article parameters (other fields and defaults)
\def\MapsBibData[#1]%
@@ -345,82 +336,141 @@
Period=,
Number=,
Year=,
+ SkipHeader=,
+ SkipFooter=,
+ Abstract=,
+ Keywords=,
+ Thanks=,
#1]%
- \doifnothing{\MapsPeriod}{%
- \ifnum \normalmonth<6 \gdef\MapsPeriod{VOORJAAR}\else \gdef\MapsPeriod{NAJAAR}\fi}
- \doifelseinstring{oorjaar}{\MapsPeriod}{\gdef\MapsPeriod{VOORJAAR}}{}%
- \doifelseinstring{pring}{\MapsPeriod}{\gdef\MapsPeriod{VOORJAAR}}{}%
- \doifelseinstring{ajaar}{\MapsPeriod}{\gdef\MapsPeriod{NAJAAR}}{}%
- \doifelseinstring{utumn}{\MapsPeriod}{\gdef\MapsPeriod{NAJAAR}}{}%
+ \doifnothing{\MapsPeriod}%
+ {\ifnum \normalmonth<6 \gdef\MapsPeriod{VOORJAAR}\else \gdef\MapsPeriod{NAJAAR}\fi}
+ \doifinstringelse{oorjaar}{\MapsPeriod}{\gdef\MapsPeriod{VOORJAAR}}{}%
+ \doifinstringelse{pring}{\MapsPeriod}{\gdef\MapsPeriod{VOORJAAR}}{}%
+ \doifinstringelse{ajaar}{\MapsPeriod}{\gdef\MapsPeriod{NAJAAR}}{}%
+ \doifinstringelse{utumn}{\MapsPeriod}{\gdef\MapsPeriod{NAJAAR}}{}%
\doifnothing{\MapsYear}{\gdef\MapsYear{\the\year}}%
- \doifnothing{\MapsNumber}{%
- \ifnum \normalmonth<6
+ \doifnothing{\MapsNumber}%
+ {\ifnum \normalmonth<6
\xdef\MapsNumber{\the\numexpr (\the\year-1990)*2\relax}%
- \else
+ \else
\xdef\MapsNumber{\the\numexpr (\the\year-1990)*2+1\relax}%
- \fi }%
+ \fi }%
\doifnothing\MapsRunningAuthor
- {\glet\MapsRunningAuthor\MapsAuthor}%
+ {\global\let\MapsRunningAuthor\MapsAuthor}%
\doifnothing\MapsRunningTitle
- {\glet\MapsRunningTitle\MapsTitle}}%
-
-\def\dostartArticle[#1]{%
- \MapsBibData[#1]
- \pageno=\MapsPage
- \setupuserpagenumber[start=\MapsPage]
- \startbaselinecorrection
- \bgroup
- \hsize = 457pt
- \let\\\crlf
- \blank[35pt,force]
- \switchtobodyfont[24pt]
- \setupalign[right]
- {\noindent\bf\MapsTitle\par}
- \ifx\MapsSubTitle\empty
- \blank[30pt]
- \else
- \bgroup
- \blank[12pt]
- \switchtobodyfont[18pt]\noindent \it
- \advance \rightskip 0pt plus 2em
- \MapsSubTitle\par
- \egroup
- \blank[30pt]
- \fi
- \egroup
- \setupalign[width]
- \switchtobodyfont[rm,10pt]
- \stopbaselinecorrection
- \ifMapsInColumns
- \startcolumns\hyphenpenalty1000
- \else
- \clubpenalty10000
- \widowpenalty10000
- \fi
-}
-
-\def\startArticle{\dosingleempty\dostartArticle}
-
-\def\signArticle{%
- \blank\let\\\crlf
- \noindent\switchtobodyfont[ss,9pt]%
- \MapsAuthor
- \doifsomething{\MapsAddress}{\\\MapsAddress}%
- \doifsomething{\MapsEmail}{\\\MapsEmail}%
- \switchtobodyfont[10pt]%
- \def\signArticle{}%
-}
-
-\def\stopArticle{%
- \par\signArticle
- \ifMapsInColumns \stopcolumns \fi
- \page
-}
+ {\global\let\MapsRunningTitle\MapsTitle}}%
+
+\def\doarticleheader
+ {\startbaselinecorrection
+ \bgroup
+ \hsize = 457pt
+ \let\\\crlf
+ \blank[35pt,force]
+ \switchtobodyfont[24pt]
+ \startalign[flushleft,verytolerant,extremestretch]
+ {\noindent\bf\language=-1\MapsTitle\par}
+ \ifx\MapsSubTitle\empty
+ \blank[line]
+ \else
+ \bgroup
+ \blank[12pt]
+ \switchtobodyfont[14pt]\noindent \it
+ \advance \rightskip 0pt plus 2em
+ \MapsSubTitle\par
+ \egroup
+ \blank[line]
+ \fi
+ \stopalign
+ \egroup
+ \setupalign[width]
+ \switchtobodyfont[rm,10pt]
+ \stopbaselinecorrection }
+
+\newif\ifintroentries
+
+\def\dostartArticle[#1]%
+ {\MapsBibData[#1]
+ \pageno=\MapsPage
+ \setnumber[realpage][\MapsPage]
+ \setnumber[userpage][\MapsPage]
+ \doifnothing{\MapsSkipHeader}{\doarticleheader}%
+ \ifMapsInColumns
+ \startcolumns\hyphenpenalty1000
+ \else
+ \clubpenalty10000
+ \widowpenalty10000
+ \fi
+ \introentriesfalse
+ \startbaselinecorrection
+ \doifsomething{\MapsAbstract}{\startAbstract \MapsAbstract \stopAbstract \introentriestrue }
+ \doifsomething{\MapsKeywords}{\startKeywords \MapsKeywords \stopKeywords \introentriestrue }
+ \stopbaselinecorrection
+ \ifintroentries
+ \blank[2*line]
+ \fi
+ \doifsomething\MapsThanks
+ {\expanded{\footnote[thanks]{*\quad\strut\MapsThanks}}%
+ \kern -22pt }% need to unskip because of the silent \footnote
+ \let\footnote\endnote }
+
+\def\startArticle
+ {\dosingleempty\dostartArticle}
+
+\def\signArticle
+ {\doifnothing
+ {\MapsSkipFooter}
+ {\blank[line]\let\\\crlf
+ \noindent\switchtobodyfont[ss,9pt]%
+ \MapsAuthor
+ \doifsomething{\MapsAddress}{\\\MapsAddress}%
+ \doifsomething{\MapsEmail}{\\\MapsEmail}}%
+ \switchtobodyfont[10pt]%
+ \def\signArticle{}}
+
+% endnotes aka footnotes
+
+\def\footnum#1{#1.}
+
+\setupnotation
+ [endnote]
+ [alternative=serried,
+ style={\switchtobodyfont[9pt]},
+ margin=0cm,
+ width=12pt,
+ before=,
+ after=,
+ margin=0cm,
+ numbercommand=\footnum]
+
+\setupnote
+ [endnote]
+ [location=none]
+
+\def\endnotessubjectname{Footnotes}
+\def\endnotesubjectname{Footnote}
+
+\def\stopArticle
+ {\ifcase\rawcountervalue[endnote]\relax
+ \or
+ \startsubject[title=\endnotesubjectname] % single
+ \placenotes[endnote]
+ \stopsubject
+ \else
+ \startsubject[title=\endnotessubjectname]
+ \placenotes[endnote]
+ \stopsubject
+ \fi
+ \par\signArticle
+ \ifMapsInColumns \stopcolumns \fi
+ \page }
\installpagebreakmethod{last}{}
%%% `logos' %%%%%%%%%%%%%%%%%%%%%%%%%%
+\unexpanded\def\XeTeX
+ {X\lower.5ex\hbox{\kern-.1em\mirror{E}}\kern-.1667em\TeX}
+
\unexpanded\def\LaTeX % requested by erik frambach
{{\setbox\scratchbox\hbox{L}%
\scratchdimen\ht\scratchbox
@@ -429,66 +479,306 @@
\raise\scratchdimen\hbox{\lower\ht\scratchbox\copy\scratchbox}%
\kern-.2\wd\scratchbox\TeX}}
+\unexpanded\def\CONTEXT {Con{\TeX}t}
+\unexpanded\def\ConTeXt {Con{\TeX}t}
+\unexpanded\def\METAFONT {Metafont}
+\unexpanded\def\METAPOST {MetaPost}
+\unexpanded\def\POSTSCRIPT{PostScript}
-\def\CONTEXT{Con{\TeX}t}
-\def\ConTeXt{Con{\TeX}t}
-\def\METAFONT{Metafont}
-\def\METAPOST{MetaPost}
-\def\POSTSCRIPT{PostScript}
+\unexpanded\def\acro#1{{\switchtobodyfont[9pt]#1}}
-\def\acro#1{{\switchtobodyfont[9pt]#1}}
+\definefontfeature[smallcapitals] [smcp=yes]
+\def\sc{\addff{smallcapitals}}
+\def\NTG{{\sc ntg}}
+\def\TUG{{\sc tug}}
%%%%%%%%%%%
+% headers and footers and other mode-related things
+\setuplayout
+ [width=457pt]
-\doifelsemode{onecolumn}{%
- \setuplayout[width=340pt]
- \doifelsemode{asym}{% one col, asymmetric
- \setuplayout[backspace=187.3pt]%
- \setuptyping [widetyping][oddmargin=-117pt]
- \setuppagenumbering [alternative={singlesided,doublesided}]
- \setupheadertexts
- [{\hbox{}\hskip-117pt\TiHead}]
- [{\cap{\MapsPeriod\ \MapsYear}\quad\bf \pagenumber\hskip-30pt\hbox{}}]
- [{\hbox{}\hskip-147pt{\bf \pagenumber}\quad \cap {maps\ \MapsNumber}}]
- [\AuHead]
- \setupfootertexts
- }{% one col, symmetric
- \setuplayout[backspace=70.3pt]
- \setuppagenumbering [alternative=doublesided]
- \setuptyping[blank=halfline]
- \setupheadertexts
+\setupcolumns
+ [n=2,tolerance=verytolerant,distance=11pt]
+
+\setuplayout
+ [backspace=70.3pt,grid=yes]
+
+\setuppagenumbering
+ [alternative=doublesided]
+
+\setuptyping
+ [blank=halfline]
+
+\setupheadertexts
+ [\TiHead]
+ [{\cap{\MapsPeriod\ \MapsYear}\quad\bf \pagenumber\hskip-30pt\hbox{}}]
+ [{\hbox{}\hskip-30pt{\bf \pagenumber}\quad \cap {maps\ \MapsNumber}}]
+ [\AuHead]
+
+\setupfootertexts % empty
+
+\startmode[onecolumn]
+
+\setuplayout[width=340pt]
+
+\startmode[asym]% one col, asymmetric
+ \setuppagenumbering
+ [alternative={singlesided,doublesided}]
+ \doifmodeelse
+ {single}
+ {\setupheadertexts
[\TiHead]
[{\cap{\MapsPeriod\ \MapsYear}\quad\bf \pagenumber\hskip-147pt\hbox{}}]
+ [{\hbox{}\hskip-30pt{\bf \pagenumber}\quad \cap {maps\ \MapsNumber}}]
+ [\AuHead\hskip-110pt]}
+ {\setuptyping
+ [widetyping]
+ [oddmargin=-117pt]
+ \setuplayout[backspace=187.3pt]
+ \setupheadertexts
+ [{\hbox{}\hskip-117pt\TiHead}]
+ [{\cap{\MapsPeriod\ \MapsYear}\quad\bf \pagenumber\hskip-30pt\hbox{}}]
[{\hbox{}\hskip-147pt{\bf \pagenumber}\quad \cap {maps\ \MapsNumber}}]
- [\AuHead]
- \setupfootertexts
-}}{% two col
- \setuplayout[width=457pt]
- \setupcolumns[n=2,tolerance=verytolerant,distance=11pt]
- \setuplayout[backspace=70.3pt,grid=yes]
- \setuppagenumbering [alternative=doublesided]
- \setuptyping[blank=halfline]
- \setupheadertexts
+ [\AuHead]}
+\stopmode
+
+\startnotmode[asym]
+ \setupheadertexts
[\TiHead]
- [{\cap{\MapsPeriod\ \MapsYear}\quad\bf \pagenumber\hskip-30pt\hbox{}}]
- [{\hbox{}\hskip-30pt{\bf \pagenumber}\quad \cap {maps\ \MapsNumber}}]
+ [{\cap{\MapsPeriod\ \MapsYear}\quad\bf \pagenumber\hskip-147pt\hbox{}}]
+ [{\hbox{}\hskip-147pt{\bf \pagenumber}\quad \cap {maps\ \MapsNumber}}]
[\AuHead]
- \setupfootertexts
-}
+\stopnotmode
+
+\stopmode % onecolumn
+
\def\fulltextwidth{457pt}
-\def\startdescription
- {\blank
- \bgroup
- \def\sym##1{\par\noindent\hbox{\bf\kern -16pt ##1}\hskip 12pt}
- \startnarrower[left]
- }
-\def\stopdescription
- {\par \stopnarrower \egroup \blank \noindentation }
+\def\startfullwidth
+ {\par\begingroup
+ \doifmode
+ {onecolumn}
+ {\hsize=\fulltextwidth
+ \doifmodeelse
+ {asym}
+ {\doifmodeelse{single}{\textwidth=\fulltextwidth }{\leftskip-117pt }}
+ {\ifodd\pageno \else \leftskip-117pt \hsize=340pt \fi }}}
+
+\def\stopfullwidth
+ {\par\endgroup}
+
+% Taco: \setupalign[tolerant,fixed} where fixed is french spacing
+
+\setupalign
+ [tolerant,fixed]
+
+\continueifinputfile{s-maps.mkiv}
+
+% \enabletrackers[mixedcolumns.*]
+
+% \enablemode[nosubsub] % if you need at most two levels of sectioning
+% \enablemode[onecolumn] % for symmetric single-column layout
+% \enablemode[asym] % for asymmetric single-column layout, left aligned
+% \enablemode[single] % for asymmetric single-column layout, right aligned
+
+% \usemodule[map-20]
+
+\usebtxdataset[samplmaps.bib]
+\usebtxdefinitions[apa]
+
+\starttext
+\startArticle[% Use {} if argument contains comma's!
+% titel
+ Title={An example document for the Maps module, demonstrating its
+ various features\thanks{Thanks should be short}
+ },
+ RunningTitle=An example document,
+ SubTitle=with an optional subtitle,
+% auteur
+ Author=Anton Ulrich Thor,
+ Email=a.u.thor@uu.am.dw,
+ Address=Institute of Indefinite Studies\\
+ Unseen University\\
+ Ankh Morpork,
+% tijdstip
+ Period=voorjaar,
+ Number=36,
+ Year=2008,
+ Page=1,
+% Taal
+ Language=english,
+% Intro
+ Abstract={%
+This is a sample input file for the Maps module version 2.0,
+which mimics the associated \LaTeX\ class file.
+It demonstrates various standard and non-standard features.
+\crlf
+Use of the abstract- and keywords environments is highly appreciated.},
+ Keywords={Maps, \ConTeXt\ module, sample}]
+
+\startsection[title=Ordinary Text]
+
+The ends of words and sentences are marked
+ by spaces. It doesn't matter how many
+spaces you type; one is as good as 100. The
+end of a line counts as a space.
+
+One or more blank lines denote the end
+of a paragraph.
+
+Footnotes\footnote{This is an example of an endnote.} are converted to
+endnotes\endnote{This is another one, with more text to it, to see how
+it will wrap to the next line.}. These will automatically be typeset at
+the end of the article. The title of the notes section is defined by the
+command \type{\endnotessubjectname} (for multiple notes) or
+\type{\endnotesubjectname} (in case of a single note).
+
+\stopsection
+
+\startsection[title=Fonts]
+The Maps uses Linux Libertine for main text,
+with Latin Modern Sans and Mono, and Euler for math. The Linux Libertine
+OpenType fonts are part of \TeX\ Live. If they are not found,
+Latin Modern Serif fallbacks will be used.
+
+\stopsection
+
+\startsection[title=Sectioning]
+
+The maps module defaults to unnumbered sections. If you really must,
+you can restore section numbering with \emph{e.g.}
+\type{\setupheads[number=yes]}
+
+\startsubsection[title=Subsection]
+This is a second-level section header. You can go down one more
+level:
+
+% \penalty0
+
+\startsubsubsection[title=A subsubsection]
+This is supposed to be a run-in header, so make sure you start the
+text right after \type{\startsubsubsection}.
+
+\stopsubsubsection
+
+\startsubsubsection[title=Tip]
+If you only need one or two levels of header, then you can get a
+better layout with the \type{nosubsub} document option.
+The Maps editors may decide to turn on this option for you.
+\stopsubsubsection
+
+\stopsubsection
+
+\stopsection
+
+\startsection[title=Lists]
+
+Another frequently-displayed structure is a list.
+The following is an example of an \emph{itemized}
+list.
+\startitemize
+ \item This is the first item of an itemized list.
+ Each item in the list is marked with a \quote{tick}.
+ \item This is the second item of the list. It
+ contains another list nested inside it. The inner
+ list is an \emph{enumerated} list.
+
+ \startitemize[n]
+ \startitem This is the first item of an enumerated
+ list that is nested within the itemized list.
+ \stopitem
+ \item This is the second item of the inner list.
+ \ConTeXt\ allows you to nest lists deeper than
+ you really should.
+ \stopitem
+ \stopitemize
+
+ \noindent
+ This is the rest of the second item of the outer
+ list. It is no more interesting than any other
+ part of the item.
+ \startitem This is the third item of the list. \stopitem
+\stopitemize
+
+In a two-column layout, protracted indenting doesn't look very
+good. Therefore, the Maps module provides an \type{outeritemize}
+environment:
+
+\startouteritemize
+\item This is the first item of a non-indented itemized list,
+ produced with the \mono{outeritemize} environment.
+\item This is the second item.
+\stopouteritemize
+
+Now an enumerated version:
+
+\startouteritemize[n]
+\item This is the first item of a non-indented enumerated list,
+ produced with the \mono{outeritemize} environment.
+\item This is the second item.
+\stopouteritemize
+
+There is also a definition for description lists:
+
+\startdescription{cow}
+A milk-producing animal that grazes grass and has multiple stomachs
+\stopdescription
+\startdescription{kangoroo}
+An Australian hopping animal
+\stopdescription
+
+\stopsection
+
+\startsection[title=Wide typesetting in single-column layout]
+
+For both single-column layouts, there are environments \type{fullwidth} and
+\type{widetyping} which typeset their content across the full page,
+including most of the wide margin.
+
+\startfullwidth
+x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x
+x x x x x x x x x x x x x x x x x x x x x
+\stopfullwidth
-\frenchspacing
-\setuptolerance[tolerant]
+\startwidetyping
+{}\/$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+\stopwidetyping
+The implementation of \type{fullwidth} is rather simplistic and
+may easily break, in which case more sophisticated hackery will be
+needed.
+
+\stopsection
+
+\startsection[title=Assembling your submission]
+
+Please check whether all non-standard modules and all
+non-standard fonts are included. We do have a current \TeX{} Live but,
+although we do have access to CTAN, finding the right stuff by
+name can occasionally be a challenge.
+
+Avoid jpeg compression for screenshots. Conversion to pdf may
+sometimes result in jpeg compression as well. Use \emph{e.g.} png
+format instead.
+
+Finally, a pdf of your article is appreciated. This way, we can
+check more reliably whether your article compiles
+correctly on our own systems.
+
+\stopsection
+\startsection[title=References]
+
+If you have references, use whatever suits you. A few sample references:
+see \cite[knuth], or \cite[lamport].
+
+\stopsection
+
+\startsection[title=References]
+ \placelistofpublications
+\stopsection
+\stopArticle
+\stoptext
-\endinput
diff --git a/tex/context/modules/mkiv/x-pandoc.mkiv b/tex/context/modules/mkiv/x-pandoc.mkiv
new file mode 100644
index 000000000..18bea9e7c
--- /dev/null
+++ b/tex/context/modules/mkiv/x-pandoc.mkiv
@@ -0,0 +1,152 @@
+%D \module
+%D [ file=m-pandoc,
+%D version=2019.05.30,
+%D title=\CONTEXT\ Extra Modules,
+%D subtitle=Pandoc Docbook Rendering,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+% just a test
+
+\startxmlsetups xml:docbook:article
+ \xmlflush{#1}
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:section
+ \startsectionlevel[title={\xmltext{#1}{/title}},reference={\xmlatt{#1}{xml:id}}]
+ \xmlall{#1}{./!title}
+ \stopsectionlevel
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:para
+ \dontleavehmode\ignorespaces
+ \xmlflush{#1}
+ \removeunwantedspaces\par
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:emphasis
+ \dontleavehmode\begingroup
+ \em \xmlflush{#1}
+ \endgroup
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:literal
+ \doifelse {\xmlatt{#1}{class}} {math} {
+ % what kind of math? inline or display?
+ \starttexcode
+ \startimath
+ \xmlflush{#1}
+ \stopimath
+ \stoptexcode
+ } {
+ \dontleavehmode\begingroup
+ \tttf \xmlflush{#1}
+ % \xmlinlineverbatim{#1}
+ \endgroup
+ }
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:programlisting
+ \xmldisplayverbatim{#1}
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:link
+ \doifsomethingelse {\xmlatt{#1}{xlink:href}} {
+ \goto{\xmlflush{#1}}[url(\xmllastatt)]
+ } {
+ \doifsomethingelse {\xmlatt{#1}{linkend}} {
+ \in{\xmlflush{#1}}[\xmllastatt]
+ } {
+ \xmlflush{#1}
+ }
+ }
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:anchor
+ \pagereference[\xmlatt{id}]
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:itemizedlist
+ \doifelse {\xmlatt{#1}{spacing}} {compact} {
+ \startitemize[packed]
+ \xmlflush{#1}
+ \stopitemize
+ } {
+ \startitemize
+ \xmlflush{#1}
+ \stopitemize
+ }
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:orderedlist
+ \doifelse {\xmlatt{#1}{spacing}} {compact} {
+ \startitemize[n,packed]
+ \xmlflush{#1}
+ \stopitemize
+ } {
+ \startitemize[n]
+ \xmlflush{#1}
+ \stopitemize
+ }
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:listitem
+ \startitem
+ \xmlflush{#1}
+ \stopitem
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:variablelist
+ \startitemize
+ \xmlflush{#1}
+ \stopitemize
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:varlistentry
+ \xmlflush{#1}
+\stopxmlsetups
+
+\startxmlsetups xml:docbook:term
+ \xmlflush{#1}
+\stopxmlsetups
+
+\usemodule[cals]
+
+\startxmlsetups cals:table:before
+ \startlinecorrection
+\stopxmlsetups
+
+\startxmlsetups cals:table:after
+ \stoplinecorrection
+\stopxmlsetups
+
+\startxmlsetups xml:docbook
+ \xmlsetsetup {#1} {*} {xml:docbook:*}
+ \xmlsetfunction {#1} {informaltable} {moduledata.cals.table}
+\stopxmlsetups
+
+\continueifinputfile{x-pandoc.mkiv}
+
+\usemodule[article-basic]
+
+\setupinteraction
+ [state=start]
+
+\setupalign
+ [flushleft,tolerant]
+
+\starttext
+
+ % running:
+ %
+ % pandoc -s -t docbook5 pandoc.txt
+
+ \xmlregisterdocumentsetup{main}{xml:docbook}
+ \xmlprocessfile{main}{d:/pandoc/pandoc.xml}{}
+
+\stoptext
diff --git a/tex/context/sample/common/gray.tex b/tex/context/sample/common/gray.tex
new file mode 100644
index 000000000..6447de070
--- /dev/null
+++ b/tex/context/sample/common/gray.tex
@@ -0,0 +1,3 @@
+Unfortunately, the theory of memes is science only in the sense that Intelligent
+Design is science. Strictly speaking, it is not even a theory. Talk of memes is
+just the latest in a succession of ill-judged Darwinian metaphors.
diff --git a/tex/context/sample/common/samples.tex b/tex/context/sample/common/samples.tex
index d732a240e..71688270e 100644
--- a/tex/context/sample/common/samples.tex
+++ b/tex/context/sample/common/samples.tex
@@ -59,6 +59,7 @@ used in testing bibliographic references and citations.
their mark on the brain,
Rider, London, 2014. \NC \NR
\NC poe.tex \NC Edgar Allan Poe \NC A dream within a dream, www.poetryfoundation.org. \NC \NR
+\NC gray.tex \NC John Gray \NC https://www.theguardian.com/books/2008/mar/15/society \NC \NR
\stoptabulate
% Tufte: This quote will always produce hyphenated text, apart from the content,
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index cf93d030c..81e00d12e 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 05/29/19 19:11:02
+-- merge date : 06/01/19 19:11:40
do -- begin closure to overcome local limits and interference