diff options
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 Binary files differindex 1d34669e2..b63ecd054 100644 --- a/doc/context/documents/general/manuals/workflows-mkiv.pdf +++ b/doc/context/documents/general/manuals/workflows-mkiv.pdf diff --git a/doc/context/documents/general/manuals/xml-mkiv.pdf b/doc/context/documents/general/manuals/xml-mkiv.pdf Binary files differindex 6508f2ecc..bd538c215 100644 --- a/doc/context/documents/general/manuals/xml-mkiv.pdf +++ b/doc/context/documents/general/manuals/xml-mkiv.pdf diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf Binary files differindex 7679fdb76..2b1a2622c 100644 --- a/doc/context/documents/general/qrcs/setup-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf Binary files differindex 1cd01bed1..357501e49 100644 --- a/doc/context/documents/general/qrcs/setup-de.pdf +++ b/doc/context/documents/general/qrcs/setup-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf Binary files differindex 479e16737..fd58e5805 100644 --- a/doc/context/documents/general/qrcs/setup-en.pdf +++ b/doc/context/documents/general/qrcs/setup-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf Binary files differindex 86f70bc73..8dce1fdc1 100644 --- a/doc/context/documents/general/qrcs/setup-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf Binary files differindex 7b863fabf..6f10683f4 100644 --- a/doc/context/documents/general/qrcs/setup-it.pdf +++ b/doc/context/documents/general/qrcs/setup-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf Binary files differindex 6c13ca4af..0499538f3 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/doc/context/documents/general/qrcs/setup-mapping-de.pdf Binary files differindex 1675610f4..63e8b8585 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-de.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/doc/context/documents/general/qrcs/setup-mapping-en.pdf Binary files differindex 561220390..1f5124d5e 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-en.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf Binary files differindex a99ea5ac6..526271805 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/doc/context/documents/general/qrcs/setup-mapping-it.pdf Binary files differindex db48c25d7..6663131d2 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-it.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf Binary files differindex 8fed3b6f3..b1b4151cd 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf Binary files differindex 7d213c131..9769c32c6 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf Binary files differindex d78433474..a6051bbb1 100644 --- a/doc/context/documents/general/qrcs/setup-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf Binary files differindex 251dbb387..c6c7bee9d 100644 --- a/doc/context/documents/general/qrcs/setup-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-ro.pdf 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 Binary files differindex ee13ad39a..16d4d5c9d 100644 --- a/tex/context/base/mkiv/status-files.pdf +++ b/tex/context/base/mkiv/status-files.pdf diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf Binary files differindex e3b70eaa0..41badc3d8 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf 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 Binary files differindex 479e16737..fd58e5805 100644 --- a/tex/context/interface/mkiv/i-context.pdf +++ b/tex/context/interface/mkiv/i-context.pdf diff --git a/tex/context/interface/mkiv/i-readme.pdf b/tex/context/interface/mkiv/i-readme.pdf Binary files differindex e428d7f39..c13794faa 100644 --- a/tex/context/interface/mkiv/i-readme.pdf +++ b/tex/context/interface/mkiv/i-readme.pdf 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 = { - ["<"] = "<", - [">"] = ">", - ["&"] = "&", - ['"'] = """, -} - -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 |