From 78aafeff01160ce000074e88a1eaf2cd4b7fbce6 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Fri, 11 Jun 2021 00:21:44 +0200 Subject: 2021-06-10 23:11:00 --- .../manuals/followingup/followingup-formats.tex | 272 +++++++++++++++++++++ .../general/manuals/followingup/followingup.tex | 1 + tex/context/base/mkii/cont-new.mkii | 2 +- tex/context/base/mkii/context.mkii | 2 +- tex/context/base/mkiv/cont-new.mkiv | 2 +- tex/context/base/mkiv/context.mkiv | 2 +- tex/context/base/mkiv/status-files.pdf | Bin 23931 -> 23949 bytes tex/context/base/mkiv/status-lua.pdf | Bin 230130 -> 230146 bytes tex/context/base/mkiv/strc-syn.lua | 10 +- tex/context/base/mkiv/type-set.mkiv | 154 ++++++------ tex/context/base/mkxl/cont-new.mkxl | 2 +- tex/context/base/mkxl/context.mkxl | 2 +- tex/context/base/mkxl/core-con.mkxl | 7 +- tex/context/base/mkxl/math-del.mkxl | 7 +- tex/context/base/mkxl/math-fen.mkxl | 61 +++-- tex/context/base/mkxl/math-int.mkxl | 10 +- tex/context/base/mkxl/page-txt.mklx | 2 +- tex/context/base/mkxl/strc-syn.mkxl | 19 +- tex/context/base/mkxl/tabl-tbl.mkxl | 17 ++ tex/context/base/mkxl/type-set.mkxl | 154 ++++++------ tex/context/fonts/mkiv/type-imp-dejavu.mkiv | 7 +- .../fonts/mkiv/type-imp-newcomputermodern.mkiv | 93 +++++++ tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 23 files changed, 626 insertions(+), 202 deletions(-) create mode 100644 doc/context/sources/general/manuals/followingup/followingup-formats.tex create mode 100644 tex/context/fonts/mkiv/type-imp-newcomputermodern.mkiv diff --git a/doc/context/sources/general/manuals/followingup/followingup-formats.tex b/doc/context/sources/general/manuals/followingup/followingup-formats.tex new file mode 100644 index 000000000..fb8700a51 --- /dev/null +++ b/doc/context/sources/general/manuals/followingup/followingup-formats.tex @@ -0,0 +1,272 @@ +% language=us + +\environment followingup-style + +\startcomponent followingup-format + +\startchapter[title={The format file}] + +It is interesting when someone compares macro package and uses parameters like +the size of a format file, the output of \type {\tracingall}, or startup time to +make some point. The point I want to make here is that unless you know exactly +what goes in a run that involves a real document, which can itself involve +multiple runs, such a comparison is rather pointless. + +For instance, when you load few fonts, typeset one page and don't do anything +that demands any processing or multiple runs, you basically don't measure +anything. More interesting are the differences between 10 or 500 pages, a few +font calls or tens of thousands, no color of extensive usage of color and other +properties, interfacing, including inheritance of document constructs, etc. And +even then, when comparing macro packages, it is kind of tricky to deduce much +from what you observe. You really need to know what is going on inside and also +how that relates to for instance adaptive font scaling. You can have a fast start +up but if a users needs one tikz picture, loading that package alone will make +you forget the initial startup time. You always pay a price for advanced features +and integration. And we didn't even talk about the operating system caching +files, running on a network share, sharing processors among virtual machines, +etc. + +Pointless comparing is also true for looking at the log file when enabling \type +{\tracingall}. When a macro package loads stuff at startup you can be sure that +the log file is larger. When the first a font or language is loaded the first +time, or maybe when math is set up there can be plenty of lines dumped. And, when +a box is shown the configured depth and breadth really matter, and it might also +be that the engine provides much more (verbose) detail. So, a comparison is again +pointless. + +That brings us to the format file. When you make a \CONTEXT\ format with the +English user interface, with interfacing being a feature that itself introduces +overhead, the \LUATEX\ engine will show this at the end: + +\starttyping +Beginning to dump on file cont-en.fmt + (format=cont-en 2021.6.9) +48605 strings using 784307 bytes +1050637 memory locations dumped; current usage is 414&523763 +44974 multiletter control sequences +\font\nullfont=nullfont +0 preloaded fonts +\stoptyping + +The file itself is quite large: 11,129,903 bytes. However, it is actually much +larger because the format file is compressed! The real size is 19.399.216. Not +taking that into account when comparing the size of format files is kind of bad +because compression directly relates to what resources a format uses and how +usage is distributed over the available memory blobs. The \LUATEX\ engine does +some optimizations and saves the data sparse but the more holes you create, the +worse it gets. For instance, the large character vectors are compartmentalized in +order to handle \UNICODE\ efficiently so the used memory relates to what you +define: do you set up all catcodes or just a subset. Maybe you delay some +initialization to after the format is loaded, in which case a smaller format file +gets compensated by more memory usage and initializaton time afterwards. Maybe +your temporary macros create holes in the token array. The memory that is +configured in the configuration files also matter. Some memory blobs are saved at +their configured size, others dismiss the top part that is not used when saving +the format but allocate the lot when the format is loaded. That means that memory +usage in for instance \LUATEX\ can be much larger than a format file suggests +(keep in mind that a format file is basically a memory dump). + +Now, how does \LUAMETATEX\ compare to \LUATEX. Again we will look at the size of +the format file, but you need to keep in mind that for various reasons the \LMTX\ +macros are somewhat more efficient than the \MKIV\ ones, in the meantime some new +mechanism were added, which adds more \TEX\ and \LUA\ code, but I still expect +(at least for now) a smaller format file. However when we create the format we +see this (reformatted): + +\starttyping +Dumping format 'cont-en.fmt 2021.6.9' in file 'cont-en.fmt': +tokenlist compacted from 489733 to 488204 entries, +1437 potentially aliased lua call/value entries, +max string length 69, 16 fingerprint ++ 16 engine + 28 preamble ++ 836326 stringpool ++ 10655 nodes + 3905660 tokens ++ 705300 equivalents ++ 23072 math codes + 493024 text codes ++ 38132 primitives + 497352 hashtable ++ 4 fonts + 10272 math + 1008 language + 180 insert ++ 10305643 bytecodes ++ 12 housekeeping = 16826700 total. +\stoptyping + +This looks quite different from the \LUATEX\ output. Here we report more detail: +for each blob we mention the number of bytes used. The final result is a file +that takes 16.826.700 bytes. That number should be compared with the 19.399.216 +for \LUATEX. So, we need less indeed. But, when we compress the \LUAMETATEX\ +format we get this: 5,913,932 which is much less than the 11,129,903 compressed +size that the \LUATEX\ engine makes of it. One reason for using level 3 zip +compression compression in \LUATEX\ is that (definitely when we started) it loads +faster. It adds to creating the dump but doesn't really influence loading, +although that depends a bit on the compiler used. It is not easy to see from +these numbers what goes on, but when you consider the fact that we mostly store +32 bit numbers it will also be clear that many can be zero or have two or three +zero bytes. There's a lot of repetition involved! + +So let's look at some of these numbers. The mentioning of token list compaction +relates to getting rid of holes in memory. Each token takes 8 bytes, 4 for the +token identifier, internally called a cmd and chr, and 4 for a value like an +integer or dimension value, or a glue pointer, or a pointer to a next token, etc. +In our case compaction doesn't save that much. + +The mentioning of potentially aliased \LUA\ call|/|value entries is more a warning. +Because the \LUA\ engine starts fresh each run, you cannot store its \quote +{pointers} and because hashes are randomized this means that you need to delay +initialization to startup time, definitely for function tokens. + +Strings in \TEX\ can be pretty long but in practice they aren't. In \CONTEXT\ the +maximum string length is 69. This makes it possible to use one byte for +registering the string length instead of four which saves quite a bit. Of course +one large string will spoil this game. + +The fingerprint, engine, preamble and later housekeeping bytes can be neglected +but the string pool not. These are the bytes that make up the strings. The bytes +are stored in format but when loaded become dynamically allocated. The \LUATEX\ +engine and its successor don't really have a pool. + +Now comes a confusing number. There are not tens of thousands of nodes allocated. +A node is just a pointer into a large array so actually node references are just +indices. Their size varies from 2 slots to 25; the largest are par nodes, while +shape nodes are allocated dynamically. So what gets reported are the number of +bytes that a node takes. each node slot takes 8 bytes, so a glyph node of 12 +bytes takes 96 bytes, while a glue spec node (think skip registers) takes 5 slots +or 40 bytes. These are amounts of memory that were not realistic when \TEX\ was +written. For the record: in \LUATEX\ glue spec nodes are not shared, so we have +many more. + +The majority of \TEX\ related dump data is for tokens, and here we need 3905660 +which means 488K tokens (each reported value also includes some overhead). The +memory used for the table of equivalents makes for some 88K of them. This table +relates to macros (their names and content). Keep in mind that (math) character +references are also macros. + +The next sections that get loaded are math and text codes. These are the +mentioned compartimized character properties. The number of math codes is not +that large (because we delay much of math) but the text codes are plenty, think +of lc, uc, sf, hj, catcodes, etc. Compared to \LUATEX\ we have more categories +but use less space because we have an more granular storage model. Optimizing +that bit really payed off. + +The way primitives and macro names get resolved is pretty much the same in all +engines but by using the fact that we operate in 32 bit I could actually get rid +of some parallel tables that handle saving and restore. Some optimizations relate +to the fact that the register ranges are part of the game so basically we have +some holes in there when they are not used. I guess this is why \ETEX\ uses a +sparse model for the registers above 255. What also saved a lot is that we don't +need to store font names, because these are available in another way; even in +\LUATEX\ that takes a large, basically useless, chunk. The memory that a macro +without parameters consumes is 8 bytes smaller and in \CONTEXT\ we have lots of +these. +We don't really store fonts, so that section is small, but we do store the math +parameters, and there is not much we can save there. We also have more such +parameters in \LUAMETATEX\ so there we might actually use more storage. The +information related to languages is also minimal because patterns and exceptions +are loaded at runtime. A new category (compared to \LUATEX) is inserts because in +\LUAMETATEX\ we can use an alternative (not register based) variant. As you can +see from the 180 bytes uses, indeed \CONTEXT\ uses that variant. + +That leaves a large block of more than 10 million bytes that relates to \LUA\ +bytecode. A large part of that is the huge \LUA\ character table that \CONTEXT\ +uses. The implementation of font handling also takes quite a bit and we're not +even talking of all the auxiliary \LUA\ modules, \XML\ processing, etc. When +\CONTEXT\ would load that on demand which is nearly always the format file would +be much smaller but one would pay for it later. Loading the (some 600) \LUA\ byte +code chunks takes of course some time as does initialization but not much. + +All that said, the reason why we have a large format file can be understood well +if one considers what goes in there. The \CONTEXT\ format files for \PDFTEX\ and +\XETEX\ are 3.3 and 4.7 MB each which is smaller but not that much when you +consider the fact that there is no \LUA\ code stored and that there are less +character tables and an \ETEX\ register model used. But a format file is not the +whole story. Runtime memory usage also comes at a price. + +The current memory settings of \CONTEXT\ are as follows; these values get +reported when a format has been generated and can be queried at runtime an any +moment: + +\starttabulate[|l|r|r|r|r|] +\BC \BC max \BC min \BC set \BC stp \BC \NR +\HL +\BC string \NC 2097152 \NC 150000 \NC 500000 \NC 100000 \NC \NR +\BC pool \NC 100000000 \NC 10000000 \NC 20000000 \NC 1000000 \NC \NR +\BC hash \NC 2097152 \NC 150000 \NC 250000 \NC 100000 \NC \NR +\BC lookup \NC 2097152 \NC 150000 \NC 250000 \NC 100000 \NC \NR +\BC node \NC 50000000 \NC 1000000 \NC 5000000 \NC 500000 \NC \NR +\BC token \NC 10000000 \NC 1000000 \NC 10000000 \NC 250000 \NC \NR +\BC buffer \NC 100000000 \NC 1000000 \NC 10000000 \NC 1000000 \NC \NR +\BC input \NC 100000 \NC 10000 \NC 100000 \NC 10000 \NC \NR +\BC file \NC 2000 \NC 500 \NC 2000 \NC 250 \NC \NR +\BC nest \NC 10000 \NC 1000 \NC 10000 \NC 1000 \NC \NR +\BC parameter \NC 100000 \NC 20000 \NC 100000 \NC 10000 \NC \NR +\BC save \NC 500000 \NC 100000 \NC 500000 \NC 10000 \NC \NR +\BC font \NC 100000 \NC 250 \NC 250 \NC 250 \NC \NR +\BC language \NC 10000 \NC 250 \NC 250 \NC 250 \NC \NR +\BC mark \NC 10000 \NC 50 \NC 50 \NC 50 \NC \NR +\BC insert \NC 500 \NC 10 \NC 10 \NC 10 \NC \NR +\stoptabulate + +The maxima is what can be used at most. Apart from the magic number 2097152 all +these maxima can be bumped at compile time but if you need more, you might wonder +of your approach to rendering makes sense. The minima are what always gets +allocated, and again these are hard coded defaults. The size can be configured +and is normally the same as the minima but we use larger values in \CONTEXT. The +step is how much an initial memory blob will grow when more is needed than is +currently available. The last four entries show that we don't start out with many +fonts (especially when we use the \CONTEXT\ compact font model not that many are +needed) and because \CONTEXT\ implements marks in a different way we actually +don't need them. We do use the new insert properties storage model and for now +the set sizes are enough for what we need. + +In practice a \LUAMETATEX\ run uses less memory than a \LUATEX\ one, not only +because memory allocation is more dynamic, but also because of other +optimizations. When the compact font model is used (something \CONTEXT) even less +memory is needed. Even this claim should me made with care. Whenever I discuss +the use of resources one needs to limit the conclusions to \CONTEXT. I can't +speak for other macro packages simply because I don't know the internals and the +design decisions made and their impact on the statistics. As a teaser I show the +impact of some definitions: + +\starttyping +\chardef \MyFooA1234 +\Umathchardef\MyFooB"1 "0 "1234 +\Umathcode 1 2 3 4 +\def \MyFooC{ABC} +\def \MyFooD#1{A#1C} +\def \MyFooE{\directlua{print("some lua")}} +\stoptyping + +The stringpool grows because we store the names (here they are oq equal length). +Only symbolic definitions bump the hashtable and equivalents. And with +definitions that have text inside the number of bytes taken by tokens grows fast +because every character in that linked list takes 8 bytes, 4 for the character +with its catcode state and 4 for the link to the next token. + +\starttabulate[|l||||||] +\BC \BC stringpool \BC tokens \BC equivalents \BC hashtable \BC total \NC \NR +\HL +\NC \NC 836408 \NC 3906124 \NC 705316 \NC 497396 \NC 16828987 \NC \NR +\NC \type {\chardef} \NC 836415 \NC 3906116 \NC 705324 \NC 497408 \NC 16829006 \NC \NR +\NC \type {\Umathchardef} \NC 836422 \NC 3906116 \NC 705324 \NC 497420 \NC 16829025 \NC \NR +\NC \type {\Umathcode} \NC 836422 \NC 3906124 \NC 705324 \NC 497420 \NC 16829033 \NC \NR +\NC \type {\def} (no arg) \NC 836429 \NC 3906148 \NC 705332 \NC 497428 \NC 16829080 \NC \NR +\NC \type {\def} (arg) \NC 836436 \NC 3906196 \NC 705340 \NC 497440 \NC 16829155 \NC \NR +\NC \type {\def} (text) \NC 836443 \NC 3906372 \NC 705348 \NC 497452 \NC 16829358 \NC \NR +\stoptabulate + +So, every time a user wants some feature (some extra checking, a warning, color +or font support for some element) that results in a trivial extension to the +core, it can bump the size fo the format file more than you think. Of course when +it leads to some overhaul sharing code can actually make the format shrink too. I +hope it is clear now that there really is not much to deduce from the bare +numbers. Just try to imagine what: + +\starttyping +\definefilesynonym + [type-imp-newcomputermodern-book.mkiv] + [type-imp-newcomputermodern.mkiv] +\stoptyping + +adds to the format. Convenience has a price. + +\stopchapter + +\stopcomponent diff --git a/doc/context/sources/general/manuals/followingup/followingup.tex b/doc/context/sources/general/manuals/followingup/followingup.tex index 996673a36..417cafcbd 100644 --- a/doc/context/sources/general/manuals/followingup/followingup.tex +++ b/doc/context/sources/general/manuals/followingup/followingup.tex @@ -30,6 +30,7 @@ \component followingup-retrospect \component followingup-fonts \component followingup-memory + \component followingup-formats \stopbodymatter \stopdocument diff --git a/tex/context/base/mkii/cont-new.mkii b/tex/context/base/mkii/cont-new.mkii index b2394098d..90e3723f7 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{2021.06.09 20:31} +\newcontextversion{2021.06.10 23:09} %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 f87187c45..15405b852 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{2021.06.09 20:31} +\edef\contextversion{2021.06.10 23:09} %D For those who want to use this: diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index 9ef4d9f95..69e142b5f 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{2021.06.09 20:31} +\newcontextversion{2021.06.10 23:09} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkiv/context.mkiv b/tex/context/base/mkiv/context.mkiv index 776d85c8b..0eaaf8682 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{2021.06.09 20:31} +\edef\contextversion{2021.06.10 23:09} %D Kind of special: diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf index 4363c067a..f1d723687 100644 Binary files a/tex/context/base/mkiv/status-files.pdf and b/tex/context/base/mkiv/status-files.pdf differ diff --git a/tex/context/base/mkiv/status-lua.pdf b/tex/context/base/mkiv/status-lua.pdf index 1f3016ff8..a8c81db5d 100644 Binary files a/tex/context/base/mkiv/status-lua.pdf and b/tex/context/base/mkiv/status-lua.pdf differ diff --git a/tex/context/base/mkiv/strc-syn.lua b/tex/context/base/mkiv/strc-syn.lua index c0ebb556c..6b50da4ac 100644 --- a/tex/context/base/mkiv/strc-syn.lua +++ b/tex/context/base/mkiv/strc-syn.lua @@ -193,9 +193,12 @@ function synonyms.prepare(data) local entry = result[i] local definition = entry.definition if definition then - local tag = definition.tag - local key = tag ~= "" and tag or definition.synonym - entry.split = splitter(strip(key)) + local srt = definition.sortkey or "" + local tag = definition.tag or "" + local key = (srt ~= "" and srt) or (tag ~= "" and tag) or definition.synonym + if key then + entry.split = splitter(strip(key)) + end end end end @@ -310,6 +313,7 @@ implement { { "tag" }, { "synonym" }, { "meaning" }, + { "sortkey" }, { "used", "boolean" } } } diff --git a/tex/context/base/mkiv/type-set.mkiv b/tex/context/base/mkiv/type-set.mkiv index 68cd939d7..c7910ac62 100644 --- a/tex/context/base/mkiv/type-set.mkiv +++ b/tex/context/base/mkiv/type-set.mkiv @@ -59,81 +59,83 @@ \fi -\definefilesynonym [type-imp-latin-modern.mkiv] [type-imp-latinmodern.mkiv] -\definefilesynonym [type-imp-modern-latin.mkiv] [type-imp-modernlatin.mkiv] - -\definefilesynonym [type-imp-lucida.mkiv] [type-imp-lucida-typeone.mkiv] -\definefilesynonym [type-imp-lucidaot.mkiv] [type-imp-lucida-opentype.mkiv] -\definefilesynonym [type-imp-lucidadk.mkiv] [type-imp-lucida-opentype.mkiv] - -\definefilesynonym [type-imp-dejavu-condensed.mkiv] [type-imp-dejavu.mkiv] - -\definefilesynonym [type-imp-palatino.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-courier.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-avantgarde.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-helvetica.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-chancery.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-bookman.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-schoolbook.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-times.mkiv] [type-imp-texgyre.mkiv] - -\definefilesynonym [type-imp-cursor.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-adventor.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-heros.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-chorus.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-bonum.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-schola.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-pagella.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-termes.mkiv] [type-imp-texgyre.mkiv] - -\definefilesynonym [type-imp-mscoretimes.mkiv] [type-imp-mscore.mkiv] -\definefilesynonym [type-imp-mscorearial.mkiv] [type-imp-mscore.mkiv] -\definefilesynonym [type-imp-mscorecourier.mkiv] [type-imp-mscore.mkiv] -\definefilesynonym [type-imp-mscoreverdana.mkiv] [type-imp-mscore.mkiv] - -\definefilesynonym [type-imp-candara.mkiv] [type-imp-cleartype.mkiv] -\definefilesynonym [type-imp-consolas.mkiv] [type-imp-cleartype.mkiv] -\definefilesynonym [type-imp-constantia.mkiv] [type-imp-cleartype.mkiv] -\definefilesynonym [type-imp-corbel.mkiv] [type-imp-cleartype.mkiv] -\definefilesynonym [type-imp-calibri.mkiv] [type-imp-cleartype.mkiv] - -\definefilesynonym [type-imp-antykwa-poltawskiego.mkiv] [type-imp-antykwapoltawskiego.mkiv] - -%definefilesynonym [type-imp-mac.mkiv] [type-imp-osx.mkiv] -%definefilesynonym [type-imp-win.mkiv] [type-imp-mscore.mkiv] - -\definefilesynonym [type-imp-eulernovum.mkiv] [type-imp-euler.mkiv] -\definefilesynonym [type-imp-eulernova.mkiv] [type-imp-euler.mkiv] - -\definefilesynonym [type-imp-euler-with-pagella.mkiv] [type-imp-euler.mkiv] -\definefilesynonym [type-imp-pagella-with-euler.mkiv] [type-imp-euler.mkiv] - -\definefilesynonym [type-imp-mdbch.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mdugm.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mdput.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mdici.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mdpgd.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mdpus.mkiv] [type-imp-mathdesign.mkiv] - -\definefilesynonym [type-imp-mathdesignch.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesigngm.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesignut.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesignci.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesigngd.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesignus.mkiv] [type-imp-mathdesign.mkiv] - -\definefilesynonym [type-imp-mathdesigncharter.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesigngaramond.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesignutopia.mkiv] [type-imp-mathdesign.mkiv] - -\definefilesynonym [type-imp-cows.mkiv] [type-imp-koeielettersot.mkiv] -\definefilesynonym [type-imp-sheep.mkiv] [type-imp-koeielettersot.mkiv] -\definefilesynonym [type-imp-coloredcows.mkiv] [type-imp-koeielettersot.mkiv] -\definefilesynonym [type-imp-coloredsheep.mkiv] [type-imp-koeielettersot.mkiv] -\definefilesynonym [type-imp-koeieletters.mkiv] [type-imp-koeielettersot.mkiv] - -\definefilesynonym [type-imp-stixtwo.mkiv] [type-imp-stix.mkiv] - -\definefilesynonym [type-imp-ibmplex.mkiv] [type-imp-plex.mkiv] +\definefilesynonym [type-imp-latin-modern.mkiv] [type-imp-latinmodern.mkiv] +\definefilesynonym [type-imp-modern-latin.mkiv] [type-imp-modernlatin.mkiv] + +\definefilesynonym [type-imp-lucida.mkiv] [type-imp-lucida-typeone.mkiv] +\definefilesynonym [type-imp-lucidaot.mkiv] [type-imp-lucida-opentype.mkiv] +\definefilesynonym [type-imp-lucidadk.mkiv] [type-imp-lucida-opentype.mkiv] + +\definefilesynonym [type-imp-dejavu-condensed.mkiv] [type-imp-dejavu.mkiv] + +\definefilesynonym [type-imp-palatino.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-courier.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-avantgarde.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-helvetica.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-chancery.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-bookman.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-schoolbook.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-times.mkiv] [type-imp-texgyre.mkiv] + +\definefilesynonym [type-imp-cursor.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-adventor.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-heros.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-chorus.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-bonum.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-schola.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-pagella.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-termes.mkiv] [type-imp-texgyre.mkiv] + +\definefilesynonym [type-imp-mscoretimes.mkiv] [type-imp-mscore.mkiv] +\definefilesynonym [type-imp-mscorearial.mkiv] [type-imp-mscore.mkiv] +\definefilesynonym [type-imp-mscorecourier.mkiv] [type-imp-mscore.mkiv] +\definefilesynonym [type-imp-mscoreverdana.mkiv] [type-imp-mscore.mkiv] + +\definefilesynonym [type-imp-candara.mkiv] [type-imp-cleartype.mkiv] +\definefilesynonym [type-imp-consolas.mkiv] [type-imp-cleartype.mkiv] +\definefilesynonym [type-imp-constantia.mkiv] [type-imp-cleartype.mkiv] +\definefilesynonym [type-imp-corbel.mkiv] [type-imp-cleartype.mkiv] +\definefilesynonym [type-imp-calibri.mkiv] [type-imp-cleartype.mkiv] + +\definefilesynonym [type-imp-antykwa-poltawskiego.mkiv] [type-imp-antykwapoltawskiego.mkiv] + +%definefilesynonym [type-imp-mac.mkiv] [type-imp-osx.mkiv] +%definefilesynonym [type-imp-win.mkiv] [type-imp-mscore.mkiv] + +\definefilesynonym [type-imp-eulernovum.mkiv] [type-imp-euler.mkiv] +\definefilesynonym [type-imp-eulernova.mkiv] [type-imp-euler.mkiv] + +\definefilesynonym [type-imp-euler-with-pagella.mkiv] [type-imp-euler.mkiv] +\definefilesynonym [type-imp-pagella-with-euler.mkiv] [type-imp-euler.mkiv] + +\definefilesynonym [type-imp-mdbch.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mdugm.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mdput.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mdici.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mdpgd.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mdpus.mkiv] [type-imp-mathdesign.mkiv] + +\definefilesynonym [type-imp-mathdesignch.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesigngm.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesignut.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesignci.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesigngd.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesignus.mkiv] [type-imp-mathdesign.mkiv] + +\definefilesynonym [type-imp-mathdesigncharter.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesigngaramond.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesignutopia.mkiv] [type-imp-mathdesign.mkiv] + +\definefilesynonym [type-imp-cows.mkiv] [type-imp-koeielettersot.mkiv] +\definefilesynonym [type-imp-sheep.mkiv] [type-imp-koeielettersot.mkiv] +\definefilesynonym [type-imp-coloredcows.mkiv] [type-imp-koeielettersot.mkiv] +\definefilesynonym [type-imp-coloredsheep.mkiv] [type-imp-koeielettersot.mkiv] +\definefilesynonym [type-imp-koeieletters.mkiv] [type-imp-koeielettersot.mkiv] + +\definefilesynonym [type-imp-stixtwo.mkiv] [type-imp-stix.mkiv] + +\definefilesynonym [type-imp-ibmplex.mkiv] [type-imp-plex.mkiv] + +\definefilesynonym [type-imp-newcomputermodern-book.mkiv] [type-imp-newcomputermodern.mkiv] \protect \endinput diff --git a/tex/context/base/mkxl/cont-new.mkxl b/tex/context/base/mkxl/cont-new.mkxl index 25b2101ef..017357e88 100644 --- a/tex/context/base/mkxl/cont-new.mkxl +++ b/tex/context/base/mkxl/cont-new.mkxl @@ -13,7 +13,7 @@ % \normalend % uncomment this to get the real base runtime -\newcontextversion{2021.06.09 20:31} +\newcontextversion{2021.06.10 23:09} %D This file is loaded at runtime, thereby providing an excellent place for hacks, %D patches, extensions and new features. There can be local overloads in cont-loc diff --git a/tex/context/base/mkxl/context.mkxl b/tex/context/base/mkxl/context.mkxl index d6ec56778..1eb9519c2 100644 --- a/tex/context/base/mkxl/context.mkxl +++ b/tex/context/base/mkxl/context.mkxl @@ -29,7 +29,7 @@ %D {YYYY.MM.DD HH:MM} format. \immutable\edef\contextformat {\jobname} -\immutable\edef\contextversion{2021.06.09 20:31} +\immutable\edef\contextversion{2021.06.10 23:09} %overloadmode 1 % check frozen / warning %overloadmode 2 % check frozen / error diff --git a/tex/context/base/mkxl/core-con.mkxl b/tex/context/base/mkxl/core-con.mkxl index 223afa1a1..33dc921b7 100644 --- a/tex/context/base/mkxl/core-con.mkxl +++ b/tex/context/base/mkxl/core-con.mkxl @@ -180,12 +180,7 @@ %D %D The last part of this module is dedicated to converting dates. Because we want to %D use as meaningful commands as possible, and because \TEX\ already uses up some of -%D those, we save the original meanings. - -% \savenormalmeaning\time -% \savenormalmeaning\year -% \savenormalmeaning\month -% \savenormalmeaning\day +%D those, we save the original meanings. The above are defined already. %D \macros %D {month,MONTH} diff --git a/tex/context/base/mkxl/math-del.mkxl b/tex/context/base/mkxl/math-del.mkxl index 07e6d7948..538883bfc 100644 --- a/tex/context/base/mkxl/math-del.mkxl +++ b/tex/context/base/mkxl/math-del.mkxl @@ -85,11 +85,12 @@ \appendtoks \ifcstok{\mathdelimiterparameter\c!define}\v!yes + % we can intercept auto here \frozen\instance\setuevalue\currentmathdelimiter{\mathdelimiter[\currentmathdelimiter]}% \fi \to \everydefinemathdelimiter -\permanent\tolerant\protected\def\mathdelimiter[#1]#*[#2]% +\permanent\tolerant\protected\def\mathdelimiter[#1]#*[#2]% so not really used (for now) {\mathop {\edef\currentmathdelimiter{#1}% \iftok{#2}\emptytoks @@ -118,7 +119,9 @@ \mskip\p_rightoffset \fi}} -\definemathdelimiter[integral][\c!symbol="222B] +% \definemathdelimiter[integral][\c!symbol="222B] + +\permanent\protected\def\integral{\int\Umathadaptsize} % \setupmathdelimiter[integral][rightoffset=-3mu,exact=yes,factor=2] % diff --git a/tex/context/base/mkxl/math-fen.mkxl b/tex/context/base/mkxl/math-fen.mkxl index 8aa0e62a8..cfefb4e2e 100644 --- a/tex/context/base/mkxl/math-fen.mkxl +++ b/tex/context/base/mkxl/math-fen.mkxl @@ -15,6 +15,10 @@ \unprotect +% ignore missign right message, so we can have left extensibles (int or so) +% +% \mathdelimitersmode"20 (todo: flipbit) + % maybe always "method=auto" for: % % \switchtobodyfont[cambria] @@ -87,10 +91,10 @@ \installcorenamespace {mathfencesize} -\setvalue{\??mathfencesize big}{1} -\setvalue{\??mathfencesize Big}{2} -\setvalue{\??mathfencesize bigg}{3} -\setvalue{\??mathfencesize Bigg}{4} +\defcsname\??mathfencesize big\endcsname{1} +\defcsname\??mathfencesize Big\endcsname{2} +\defcsname\??mathfencesize bigg\endcsname{3} +\defcsname\??mathfencesize Bigg\endcsname{4} \def\math_fenced_force_size#1#2% {\c_attr_mathsize\numexpr @@ -268,6 +272,25 @@ \enforced\let\fenced\math_fenced_fenced \to \everymathematics +% integral experiment (but no scripts) +% +% \protected\def\math_fenced_fenced_simple#1% +% {\pushmacro\currentmathfence +% \edef\currentmathfence{#1}% +% \math_fenced_fenced_common +% \math_fenced_left +% \popmacro\currentmathfence +% \stopusemathstyleparameter} +% +% \immutable\protected\def\integral {\math_fenced_fenced_simple{integral}} +% +% let's keep this weird hack: +% +% \mathdelimitersmode"20 +% \startformula +% x = \integral {\vrule height 20mm depth 18mm width 5mm}^^{2\,}__{2\,} +% \stopformula + % todo: | in mathmode letter % % \appendtoks @@ -399,20 +422,20 @@ \newconditional\c_math_fenced_unknown \settrue\c_math_fenced_unknown \permanent\protected\def\installmathfencepair#1#2#3#4% - {\letcsname\??mathleft \normalmeaning#1\endcsname#2% - \letcsname\??mathright\normalmeaning#3\endcsname#4} + {\letcsname\??mathleft \normalmeaningless#1\endcsname#2% + \letcsname\??mathright\normalmeaningless#3\endcsname#4} \def\math_unknown_left {\setfalse\c_math_fenced_done\ifconditional\c_math_fenced_unknown\normalleft \nexttoken\fi} \def\math_unknown_right {\setfalse\c_math_fenced_done\ifconditional\c_math_fenced_unknown\normalright \nexttoken\fi} \def\math_unknown_middle{\setfalse\c_math_fenced_done\ifconditional\c_math_fenced_unknown\normalmiddle\nexttoken\fi} -\letvalue{\??mathleft \s!unknown}\math_unknown_left -\letvalue{\??mathright \s!unknown}\math_unknown_right -\letvalue{\??mathmiddle\s!unknown}\math_unknown_middle +\letcsname\??mathleft \s!unknown\endcsname\math_unknown_left +\letcsname\??mathright \s!unknown\endcsname\math_unknown_right +\letcsname\??mathmiddle\s!unknown\endcsname\math_unknown_middle \def\math_left {\settrue\c_math_fenced_done - \ifcsname\??mathleft\normalmeaning\nexttoken\endcsname + \ifcsname\??mathleft\normalmeaningless\nexttoken\endcsname \expandafter\lastnamedcs \else \expandafter\math_unknown_left @@ -420,7 +443,7 @@ \def\math_right {\settrue\c_math_fenced_done - \ifcsname\??mathright\normalmeaning\nexttoken\endcsname + \ifcsname\??mathright\normalmeaningless\nexttoken\endcsname \expandafter\lastnamedcs \else \expandafter\math_unknown_right @@ -428,7 +451,7 @@ \def\math_middle {\settrue\c_math_fenced_done - \ifcsname\??mathmiddle\normalmeaning\nexttoken\endcsname + \ifcsname\??mathmiddle\normalmeaningless\nexttoken\endcsname \expandafter\lastnamedcs \else \expandafter\math_unknown_middle @@ -437,7 +460,7 @@ \permanent\protected\def\lfence#1% {\settrue\c_math_fenced_done \let\nexttoken#1% - \ifcsname\??mathleft\normalmeaning\nexttoken\endcsname + \ifcsname\??mathleft\normalmeaningless\nexttoken\endcsname \expandafter\lastnamedcs \else \expandafter\math_unknown_left @@ -446,7 +469,7 @@ \permanent\protected\def\rfence#1% {\settrue\c_math_fenced_done \let\nexttoken#1% - \ifcsname\??mathright\normalmeaning\nexttoken\endcsname + \ifcsname\??mathright\normalmeaningless\nexttoken\endcsname \expandafter\lastnamedcs \else \expandafter\math_unknown_right @@ -455,7 +478,7 @@ \permanent\protected\def\mfence#1% {\settrue\c_math_fenced_done \let\nexttoken#1% - \ifcsname\??mathmiddle\normalmeaning\nexttoken\endcsname + \ifcsname\??mathmiddle\normalmeaningless\nexttoken\endcsname \expandafter\lastnamedcs \else \expandafter\math_unknown_middle @@ -623,10 +646,10 @@ \installcorenamespace{mathbig} -\setvalue{\??mathbig1}{0.85} -\setvalue{\??mathbig2}{1.15} -\setvalue{\??mathbig3}{1.45} -\setvalue{\??mathbig4}{1.75} +\defcsname\??mathbig1\endcsname{0.85} +\defcsname\??mathbig2\endcsname{1.15} +\defcsname\??mathbig3\endcsname{1.45} +\defcsname\??mathbig4\endcsname{1.75} \permanent\protected\def\choosemathbig#1#2% so we accept \big{||} as well {{\naturalhbox\bgroup diff --git a/tex/context/base/mkxl/math-int.mkxl b/tex/context/base/mkxl/math-int.mkxl index a8dcd3c95..462c6587b 100644 --- a/tex/context/base/mkxl/math-int.mkxl +++ b/tex/context/base/mkxl/math-int.mkxl @@ -57,11 +57,11 @@ % none \fi} -\letvalue{\??mathintegral nolimits}\zerocount -\letvalue{\??mathintegral displaylimits}\plusone -\letvalue{\??mathintegral limits}\plustwo -\letvalue{\??mathintegral autolimits}\plusthree -\letvalue{\??mathintegral none}\plusfour +\letcsname\??mathintegral nolimits\endcsname\zerocount +\letcsname\??mathintegral displaylimits\endcsname\plusone +\letcsname\??mathintegral limits\endcsname\plustwo +\letcsname\??mathintegral autolimits\endcsname\plusthree +\letcsname\??mathintegral none\endcsname\plusfour \appendtoks \mathintlimitmode\executeifdefined{\??mathintegral\mathematicsparameter\s!integral}\zerocount diff --git a/tex/context/base/mkxl/page-txt.mklx b/tex/context/base/mkxl/page-txt.mklx index b03d704c8..ed7fbbd80 100644 --- a/tex/context/base/mkxl/page-txt.mklx +++ b/tex/context/base/mkxl/page-txt.mklx @@ -766,7 +766,7 @@ % this can be done better now, no meaning hackery needed \edef\currentlayoutelement{\m_page_layouts_page_number_location_v:\m_page_layouts_page_number_location_h}% \edef\tempstring{\detokenizedlayoutelementparameter\m_page_layouts_page_number_location_x}% - \doif{\meaning\tempstring}{\meaning\page_layouts_place_page_number} + \doif{\normalmeaningless\tempstring}{\normalmeaningless\page_layouts_place_page_number} {\resetlayoutelementparameter\m_page_layouts_page_number_location_x}% \fi} diff --git a/tex/context/base/mkxl/strc-syn.mkxl b/tex/context/base/mkxl/strc-syn.mkxl index df573a7e9..c6a62e607 100644 --- a/tex/context/base/mkxl/strc-syn.mkxl +++ b/tex/context/base/mkxl/strc-syn.mkxl @@ -274,13 +274,29 @@ \frozen\instance\protected\defcsname\e!complete\e!listof#2\endcsname{\completelistofsynonyms[#1]}% \fi} -\permanent\tolerant\protected\def\definesynonym[#1]#*[#2]#*[#3]% +% \abbreviation[XXX][321]{321}{Three, Two, One} : optional sort key + +\permanent\tolerant\protected\def\definesynonym[#1]#*[#2]#*[#3]#*[#4]% [yes][abbreviation][FOO]{foo}{foo me} {\begingroup \edef\currentsynonymoption{#1}% \edef\currentsynonym{#2}% \edef\currentsynonymtag{#3}% + \edef\currentsynonymsortkey{#4}% \strc_synonyms_define_entry} +% \installcorenamespace {synonymentry} +% +% \installsetuponlycommandhandler \??synonymentry {synonymentry} +% +% \permanent\tolerant\protected\def\setsynonym[#1]#*[#2]% +% {\begingroup +% \setupsynonymentry[#2]% +% \edef\currentsynonym {#1}% +% \edef\currentsynonymoption {\synonymentryparameter\c!option}% +% \edef\currentsynonymtag {\synonymentryparameter\c!tag}% +% \edef\currentsynonymsortkey{\synonymentryparameter\c!sortkey}% +% \strc_synonyms_define_entry{\synonymentryparameter\c!text}{\synonymentryparameter\c!meaning}} + \def\strc_synonyms_define_entry#1#2% {\let\currentsimplelist\currentsynonym \ifempty\currentsynonymtag @@ -305,6 +321,7 @@ }% definition {% tag {\currentsynonymtag}% + sortkey {\currentsynonymsortkey}% synonym {\m_synonyms_text}% meaning {\m_synonyms_meaning}% % used false diff --git a/tex/context/base/mkxl/tabl-tbl.mkxl b/tex/context/base/mkxl/tabl-tbl.mkxl index 08f2ee4ad..a1601c23e 100644 --- a/tex/context/base/mkxl/tabl-tbl.mkxl +++ b/tex/context/base/mkxl/tabl-tbl.mkxl @@ -2162,6 +2162,23 @@ % \ruledvbox{\starttabulate[|k8|] \NC xxx \NC \NR \stoptabulate} % \ruledvbox{\starttabulate[|l|l|] \NC xxx \NC xxx \NC \NR \stoptabulate} +% \enabletrackers[localanchor] +% +% \startoverlayMPgraphic{mp:whatever-6} +% draw anchorcell (1,1) withpen pencircle scaled 1pt withcolor "blue" ; +% fill anchorspan (2,2) (3,5) withpen pencircle scaled 1pt withcolor "yellow" ; +% draw anchorcell (2,2) withpen pencircle scaled 1pt withcolor "green" ; +% draw anchorcell (3,3) withpen pencircle scaled 1pt withcolor "red" ; +% \stopoverlayMPgraphic +% +% \starttabulate[synchronize=background,background=mp:whatever-6,format={|l|c|r|}] +% \NC test \NC test \NC test \NC \NR +% \NC test \NC test test \NC test \NC \NR +% \NC test test \NC test \NC test \NC \NR +% \NC test \NC test \NC test \NC \NR +% \NC test \NC test \NC test test \NC \NR +% \stoptabulate + \protected\def\tabl_tabulate_anchor_indeed {\edef\xanchor{\number\c_tabl_tabulate_column}% \edef\yanchor{\number\c_tabl_tabulate_nofrealrows}% diff --git a/tex/context/base/mkxl/type-set.mkxl b/tex/context/base/mkxl/type-set.mkxl index 4a22b59a5..ed282a140 100644 --- a/tex/context/base/mkxl/type-set.mkxl +++ b/tex/context/base/mkxl/type-set.mkxl @@ -59,81 +59,83 @@ \fi -\definefilesynonym [type-imp-latin-modern.mkiv] [type-imp-latinmodern.mkiv] -\definefilesynonym [type-imp-modern-latin.mkiv] [type-imp-modernlatin.mkiv] - -\definefilesynonym [type-imp-lucida.mkiv] [type-imp-lucida-typeone.mkiv] -\definefilesynonym [type-imp-lucidaot.mkiv] [type-imp-lucida-opentype.mkiv] -\definefilesynonym [type-imp-lucidadk.mkiv] [type-imp-lucida-opentype.mkiv] - -\definefilesynonym [type-imp-dejavu-condensed.mkiv] [type-imp-dejavu.mkiv] - -\definefilesynonym [type-imp-palatino.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-courier.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-avantgarde.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-helvetica.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-chancery.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-bookman.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-schoolbook.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-times.mkiv] [type-imp-texgyre.mkiv] - -\definefilesynonym [type-imp-cursor.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-adventor.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-heros.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-chorus.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-bonum.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-schola.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-pagella.mkiv] [type-imp-texgyre.mkiv] -\definefilesynonym [type-imp-termes.mkiv] [type-imp-texgyre.mkiv] - -\definefilesynonym [type-imp-mscoretimes.mkiv] [type-imp-mscore.mkiv] -\definefilesynonym [type-imp-mscorearial.mkiv] [type-imp-mscore.mkiv] -\definefilesynonym [type-imp-mscorecourier.mkiv] [type-imp-mscore.mkiv] -\definefilesynonym [type-imp-mscoreverdana.mkiv] [type-imp-mscore.mkiv] - -\definefilesynonym [type-imp-candara.mkiv] [type-imp-cleartype.mkiv] -\definefilesynonym [type-imp-consolas.mkiv] [type-imp-cleartype.mkiv] -\definefilesynonym [type-imp-constantia.mkiv] [type-imp-cleartype.mkiv] -\definefilesynonym [type-imp-corbel.mkiv] [type-imp-cleartype.mkiv] -\definefilesynonym [type-imp-calibri.mkiv] [type-imp-cleartype.mkiv] - -\definefilesynonym [type-imp-antykwa-poltawskiego.mkiv] [type-imp-antykwapoltawskiego.mkiv] - -%definefilesynonym [type-imp-mac.mkiv] [type-imp-osx.mkiv] -%definefilesynonym [type-imp-win.mkiv] [type-imp-mscore.mkiv] - -\definefilesynonym [type-imp-eulernovum.mkiv] [type-imp-euler.mkiv] -\definefilesynonym [type-imp-eulernova.mkiv] [type-imp-euler.mkiv] - -\definefilesynonym [type-imp-euler-with-pagella.mkiv] [type-imp-euler.mkiv] -\definefilesynonym [type-imp-pagella-with-euler.mkiv] [type-imp-euler.mkiv] - -\definefilesynonym [type-imp-mdbch.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mdugm.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mdput.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mdici.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mdpgd.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mdpus.mkiv] [type-imp-mathdesign.mkiv] - -\definefilesynonym [type-imp-mathdesignch.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesigngm.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesignut.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesignci.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesigngd.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesignus.mkiv] [type-imp-mathdesign.mkiv] - -\definefilesynonym [type-imp-mathdesigncharter.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesigngaramond.mkiv] [type-imp-mathdesign.mkiv] -\definefilesynonym [type-imp-mathdesignutopia.mkiv] [type-imp-mathdesign.mkiv] - -\definefilesynonym [type-imp-cows.mkiv] [type-imp-koeielettersot.mkiv] -\definefilesynonym [type-imp-sheep.mkiv] [type-imp-koeielettersot.mkiv] -\definefilesynonym [type-imp-coloredcows.mkiv] [type-imp-koeielettersot.mkiv] -\definefilesynonym [type-imp-coloredsheep.mkiv] [type-imp-koeielettersot.mkiv] -\definefilesynonym [type-imp-koeieletters.mkiv] [type-imp-koeielettersot.mkiv] - -\definefilesynonym [type-imp-stixtwo.mkiv] [type-imp-stix.mkiv] - -\definefilesynonym [type-imp-ibmplex.mkiv] [type-imp-plex.mkiv] +\definefilesynonym [type-imp-latin-modern.mkiv] [type-imp-latinmodern.mkiv] +\definefilesynonym [type-imp-modern-latin.mkiv] [type-imp-modernlatin.mkiv] + +\definefilesynonym [type-imp-lucida.mkiv] [type-imp-lucida-typeone.mkiv] +\definefilesynonym [type-imp-lucidaot.mkiv] [type-imp-lucida-opentype.mkiv] +\definefilesynonym [type-imp-lucidadk.mkiv] [type-imp-lucida-opentype.mkiv] + +\definefilesynonym [type-imp-dejavu-condensed.mkiv] [type-imp-dejavu.mkiv] + +\definefilesynonym [type-imp-palatino.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-courier.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-avantgarde.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-helvetica.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-chancery.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-bookman.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-schoolbook.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-times.mkiv] [type-imp-texgyre.mkiv] + +\definefilesynonym [type-imp-cursor.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-adventor.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-heros.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-chorus.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-bonum.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-schola.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-pagella.mkiv] [type-imp-texgyre.mkiv] +\definefilesynonym [type-imp-termes.mkiv] [type-imp-texgyre.mkiv] + +\definefilesynonym [type-imp-mscoretimes.mkiv] [type-imp-mscore.mkiv] +\definefilesynonym [type-imp-mscorearial.mkiv] [type-imp-mscore.mkiv] +\definefilesynonym [type-imp-mscorecourier.mkiv] [type-imp-mscore.mkiv] +\definefilesynonym [type-imp-mscoreverdana.mkiv] [type-imp-mscore.mkiv] + +\definefilesynonym [type-imp-candara.mkiv] [type-imp-cleartype.mkiv] +\definefilesynonym [type-imp-consolas.mkiv] [type-imp-cleartype.mkiv] +\definefilesynonym [type-imp-constantia.mkiv] [type-imp-cleartype.mkiv] +\definefilesynonym [type-imp-corbel.mkiv] [type-imp-cleartype.mkiv] +\definefilesynonym [type-imp-calibri.mkiv] [type-imp-cleartype.mkiv] + +\definefilesynonym [type-imp-antykwa-poltawskiego.mkiv] [type-imp-antykwapoltawskiego.mkiv] + +%definefilesynonym [type-imp-mac.mkiv] [type-imp-osx.mkiv] +%definefilesynonym [type-imp-win.mkiv] [type-imp-mscore.mkiv] + +\definefilesynonym [type-imp-eulernovum.mkiv] [type-imp-euler.mkiv] +\definefilesynonym [type-imp-eulernova.mkiv] [type-imp-euler.mkiv] + +\definefilesynonym [type-imp-euler-with-pagella.mkiv] [type-imp-euler.mkiv] +\definefilesynonym [type-imp-pagella-with-euler.mkiv] [type-imp-euler.mkiv] + +\definefilesynonym [type-imp-mdbch.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mdugm.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mdput.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mdici.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mdpgd.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mdpus.mkiv] [type-imp-mathdesign.mkiv] + +\definefilesynonym [type-imp-mathdesignch.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesigngm.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesignut.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesignci.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesigngd.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesignus.mkiv] [type-imp-mathdesign.mkiv] + +\definefilesynonym [type-imp-mathdesigncharter.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesigngaramond.mkiv] [type-imp-mathdesign.mkiv] +\definefilesynonym [type-imp-mathdesignutopia.mkiv] [type-imp-mathdesign.mkiv] + +\definefilesynonym [type-imp-cows.mkiv] [type-imp-koeielettersot.mkiv] +\definefilesynonym [type-imp-sheep.mkiv] [type-imp-koeielettersot.mkiv] +\definefilesynonym [type-imp-coloredcows.mkiv] [type-imp-koeielettersot.mkiv] +\definefilesynonym [type-imp-coloredsheep.mkiv] [type-imp-koeielettersot.mkiv] +\definefilesynonym [type-imp-koeieletters.mkiv] [type-imp-koeielettersot.mkiv] + +\definefilesynonym [type-imp-stixtwo.mkiv] [type-imp-stix.mkiv] + +\definefilesynonym [type-imp-ibmplex.mkiv] [type-imp-plex.mkiv] + +\definefilesynonym [type-imp-newcomputermodern-book.mkiv] [type-imp-newcomputermodern.mkiv] \protect \endinput diff --git a/tex/context/fonts/mkiv/type-imp-dejavu.mkiv b/tex/context/fonts/mkiv/type-imp-dejavu.mkiv index 6da2daa89..092e1fde6 100644 --- a/tex/context/fonts/mkiv/type-imp-dejavu.mkiv +++ b/tex/context/fonts/mkiv/type-imp-dejavu.mkiv @@ -44,7 +44,7 @@ \definefontsynonym [\s!MonoBoldItalic] [\s!name:dejavusansmonoboldoblique] [\s!features=\s!none,\s!fallbacks=\s!MonoBoldItalic] \stoptypescript - \starttypescript [\s!math][dejavu][\s!name] + \starttypescript [\s!math][dejavu] [\s!name] \loadfontgoodies[dejavu-math] \definefontsynonym[\s!MathRoman] [\s!file:texgyredejavu-math][\s!features={\s!math\mathsizesuffix,mathextra},\s!goodies=dejavu-math] \definefontsynonym[\s!MathRomanBold][\s!file:texgyredejavu-math][\s!features={\s!math\mathsizesuffix,dejavu-math-bold,mathextra},\s!goodies=dejavu-math] @@ -83,10 +83,6 @@ \starttypescript [\s!mono] [dejavu-condensed] [\s!name] \setups[\s!font:\s!fallback:\s!mono] - % \definefontsynonym [\s!Mono] [\s!name:dejavusansmonocondensed] [\s!features=\s!none] - % \definefontsynonym [\s!MonoBold] [\s!name:dejavusansmonoboldcondensed] [\s!features=\s!none] - % \definefontsynonym [\s!MonoItalic] [\s!name:dejavusansmonoobliquecondensed] [\s!features=\s!none] - % \definefontsynonym [\s!MonoBoldItalic] [\s!name:dejavusansmonoboldobliquecondensed] [\s!features=\s!none] \definefontsynonym [\s!Mono] [\s!name:dejavusansmono] [\s!features=dejavu-condensed-mono] \definefontsynonym [\s!MonoBold] [\s!name:dejavusansmonobold] [\s!features=dejavu-condensed-mono] \definefontsynonym [\s!MonoItalic] [\s!name:dejavusansmonooblique] [\s!features=dejavu-condensed-mono] @@ -105,7 +101,6 @@ \definetypeface [dejavu-condensed] [\s!rm] [\s!serif] [dejavu-condensed] [\s!default] \definetypeface [dejavu-condensed] [\s!ss] [\s!sans] [dejavu-condensed] [\s!default] \definetypeface [dejavu-condensed] [\s!tt] [\s!mono] [dejavu-condensed] [\s!default] - % \definetypeface [dejavu-condensed] [\s!mm] [\s!math] [xits] [\s!default] [\s!rscale=1.2] \definetypeface [dejavu-condensed] [\s!mm] [\s!math] [dejavu] [\s!default] \stoptypescript diff --git a/tex/context/fonts/mkiv/type-imp-newcomputermodern.mkiv b/tex/context/fonts/mkiv/type-imp-newcomputermodern.mkiv new file mode 100644 index 000000000..536c90ede --- /dev/null +++ b/tex/context/fonts/mkiv/type-imp-newcomputermodern.mkiv @@ -0,0 +1,93 @@ +%D \module +%D [ file=type-imp-newcomputermodern, +%D version=2021.06.08, +%D title=\CONTEXT\ Typescript Macros, +%D subtitle=NewComputerModern, +%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. + +%D There is something fishy with the books fonts. The otf files are twice as large +%D as the normal ones but the tma's we filter from it are pretty close (mostly +%D boundingbox differences). The streams are also of similar size so there must be +%D something extra in there. + +% \definefontfallback[Serif] [file:notoserif-regular.ttf] [0x0000-0xFFFF] [check=yes,rscale=1.02] +% \definefontfallback[SerifBold][file:notoserif-bold.ttf] [0x0000-0xFFFF] [check=yes,rscale=1.02] + +\starttypescriptcollection[newcomputermodern] + + \doifunknownfontfeature {newcomputermodern-math-bold} {\definefontfeature[newcomputermodern-math-bold][boldened]} + + \starttypescript [\s!serif] [newcomputermodern] [\s!name] + \setups[\s!font:\s!fallback:\s!serif] + \definefontsynonym [\s!Serif] [\s!file:newcm10-regular.otf] [\s!features=\s!default,\s!fallbacks=\s!Serif] + \definefontsynonym [\s!SerifBold] [\s!file:newcm10-bold.otf] [\s!features=\s!default,\s!fallbacks=\s!SerifBold] + \definefontsynonym [\s!SerifItalic] [\s!file:newcm10-italic.otf] [\s!features=\s!default,\s!fallbacks=\s!SerifItalic] + \definefontsynonym [\s!SerifBoldItalic] [\s!file:newcm10-bolditalic.otf] [\s!features=\s!default,\s!fallbacks=\s!SerifBoldItalic] + \stoptypescript + + \starttypescript [\s!sans] [newcomputermodern] [\s!name] + \setups[\s!font:\s!fallback:\s!sans] + \definefontsynonym [\s!Sans] [\s!file:newcmsans10-regular.otf] [\s!features=\s!default,\s!fallbacks=\s!Sans] + \definefontsynonym [\s!SansBold] [\s!file:newcmsans10-bold.otf] [\s!features=\s!default,\s!fallbacks=\s!SansBold] + \definefontsynonym [\s!SansItalic] [\s!file:newcmsans10-oblique.otf] [\s!features=\s!default,\s!fallbacks=\s!SansItalic] + \definefontsynonym [\s!SansBoldItalic] [\s!file:newcmsans10-boldoblique.otf] [\s!features=\s!default,\s!fallbacks=\s!SansBoldItalic] + \stoptypescript + + \starttypescript [\s!mono] [newcomputermodern] [\s!name] + \setups[\s!font:\s!fallback:\s!mono] + \definefontsynonym [\s!Mono] [\s!file:newcmmono10-regular.otf] [\s!features=\s!none,\s!fallbacks=\s!Mono] + \definefontsynonym [\s!MonoBold] [\s!file:newcmmono10-bold.otf] [\s!features=\s!none,\s!fallbacks=\s!MonoBold] + \definefontsynonym [\s!MonoItalic] [\s!file:newcmmono10-italic.otf] [\s!features=\s!none,\s!fallbacks=\s!MonoItalic] + \definefontsynonym [\s!MonoBoldItalic] [\s!file:newcmmono10-bolditalic.otf] [\s!features=\s!none,\s!fallbacks=\s!MonoBoldItalic] + \stoptypescript + + \starttypescript [\s!math][newcomputermodern] [\s!name] + % \loadfontgoodies[newcomputermodern-math] ,\s!goodies=newcomputermodern-math + \definefontsynonym[\s!MathRoman] [\s!file:newcmmath-regular][\s!features={\s!math\mathsizesuffix,mathextra}] + \definefontsynonym[\s!MathRomanBold][\s!file:newcmmath-regular][\s!features={\s!math\mathsizesuffix,newcomputermodern-math-bold,mathextra}] + \stoptypescript + + \starttypescript [\s!serif] [newcomputermodern-book] [\s!name] + \setups[\s!font:\s!fallback:\s!serif] + \definefontsynonym [\s!Serif] [\s!file:newcm10-book.otf] [\s!features=\s!default,\s!fallbacks=\s!Serif] + \definefontsynonym [\s!SerifBold] [\s!file:newcm10-bold.otf] [\s!features=\s!default,\s!fallbacks=\s!SerifBold] + \definefontsynonym [\s!SerifItalic] [\s!file:newcm10-bookitalic.otf] [\s!features=\s!default,\s!fallbacks=\s!SerifItalic] + \definefontsynonym [\s!SerifBoldItalic] [\s!file:newcm10-bolditalic.otf] [\s!features=\s!default,\s!fallbacks=\s!SerifBoldItalic] + \stoptypescript + + \starttypescript [\s!sans] [newcomputermodern-book] [\s!name] + \setups[\s!font:\s!fallback:\s!sans] + \definefontsynonym [\s!Sans] [\s!file:newcmsans10-book.otf] [\s!features=\s!default,\s!fallbacks=\s!Sans] + \definefontsynonym [\s!SansBold] [\s!file:newcmsans10-bold.otf] [\s!features=\s!default,\s!fallbacks=\s!SansBold] + \definefontsynonym [\s!SansItalic] [\s!file:newcmsans10-bookoblique.otf] [\s!features=\s!default,\s!fallbacks=\s!SansItalic] + \definefontsynonym [\s!SansBoldItalic] [\s!file:newcmsans10-boldoblique.otf] [\s!features=\s!default,\s!fallbacks=\s!SansBoldItalic] + \stoptypescript + + \starttypescript [\s!mono] [newcomputermodern-book] [\s!name] + \setups[\s!font:\s!fallback:\s!mono] + \definefontsynonym [\s!Mono] [\s!file:newcmmono10-book.otf] [\s!features=\s!none,\s!fallbacks=\s!Mono] + \definefontsynonym [\s!MonoBold] [\s!file:newcmmono10-bold.otf] [\s!features=\s!none,\s!fallbacks=\s!MonoBold] + \definefontsynonym [\s!MonoItalic] [\s!file:newcmmono10-bookitalic.otf] [\s!features=\s!none,\s!fallbacks=\s!MonoItalic] + \definefontsynonym [\s!MonoBoldItalic] [\s!file:newcmmono10-bolditalic.otf] [\s!features=\s!none,\s!fallbacks=\s!MonoBoldItalic] + \stoptypescript + + \starttypescript [\s!math][newcomputermodern-book] [\s!name] + % \loadfontgoodies[newcomputermodern-math] ,\s!goodies=newcomputermodern-math + \definefontsynonym[\s!MathRoman] [\s!file:newcmmath-book][\s!features={\s!math\mathsizesuffix,mathextra}] + \definefontsynonym[\s!MathRomanBold][\s!file:newcmmath-book][\s!features={\s!math\mathsizesuffix,newcomputermodern-math-bold,mathextra}] + \stoptypescript + + \starttypescript[newcomputermodern,newcomputermodern-book] + \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] + \definetypeface [\typescriptone] [\s!mm] [\s!math] [\typescriptone] [\s!default] + \stoptypescript + +\stoptypescriptcollection diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 0f2a28228..5dc6b3f44 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 : 2021-06-09 20:31 +-- merge date : 2021-06-10 23:09 do -- begin closure to overcome local limits and interference -- cgit v1.2.3