diff options
Diffstat (limited to 'tex')
-rw-r--r-- | tex/context/base/context-version.pdf | bin | 4168 -> 4170 bytes | |||
-rw-r--r-- | tex/context/base/mkiv/cont-new.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/mkiv/context.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/mkiv/font-con.lua | 2 | ||||
-rw-r--r-- | tex/context/base/mkiv/font-map.lua | 60 | ||||
-rw-r--r-- | tex/context/base/mkiv/lpdf-res.lua | 2 | ||||
-rw-r--r-- | tex/context/base/mkiv/meta-imp-clp.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/mkiv/meta-imp-grid.mkiv | 63 | ||||
-rw-r--r-- | tex/context/base/mkiv/page-set.mkiv | 72 | ||||
-rw-r--r-- | tex/context/base/mkiv/spac-ver.mkiv | 11 | ||||
-rw-r--r-- | tex/context/base/mkiv/status-files.pdf | bin | 9080 -> 9033 bytes | |||
-rw-r--r-- | tex/context/base/mkiv/status-lua.pdf | bin | 258716 -> 258720 bytes | |||
-rw-r--r-- | tex/generic/context/luatex/luatex-fonts-merged.lua | 34 |
13 files changed, 143 insertions, 107 deletions
diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf Binary files differindex 9a9ee1f36..97cb0c64f 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf diff --git a/tex/context/base/mkiv/cont-new.mkiv b/tex/context/base/mkiv/cont-new.mkiv index b1cd92589..796a0d948 100644 --- a/tex/context/base/mkiv/cont-new.mkiv +++ b/tex/context/base/mkiv/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2016.01.13 15:10} +\newcontextversion{2016.01.14 09:55} %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 98172700f..96c9558c8 100644 --- a/tex/context/base/mkiv/context.mkiv +++ b/tex/context/base/mkiv/context.mkiv @@ -39,7 +39,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2016.01.13 15:10} +\edef\contextversion{2016.01.14 09:55} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/mkiv/font-con.lua b/tex/context/base/mkiv/font-con.lua index e5bf9e9c1..d08c61eac 100644 --- a/tex/context/base/mkiv/font-con.lua +++ b/tex/context/base/mkiv/font-con.lua @@ -683,7 +683,7 @@ function constructors.scale(tfmdata,specification) chr.unicode = isunicode chr.tounicode = tounicode(isunicode) -- in luatex > 0.85 we can do this: - -- chr.tounicode = isunicode +-- chr.tounicode = isunicode end if hasquality then -- we could move these calculations elsewhere (saves calculations) diff --git a/tex/context/base/mkiv/font-map.lua b/tex/context/base/mkiv/font-map.lua index 78e5435a5..a91e5234f 100644 --- a/tex/context/base/mkiv/font-map.lua +++ b/tex/context/base/mkiv/font-map.lua @@ -80,12 +80,11 @@ local f_double = formatters["%04X%04X"] -- local tounicodes = table.setmetatableindex(function(t,unicode) -- local s --- if unicode < 0x10000 then +-- if unicode < 0xD7FF or (unicode > 0xDFFF and unicode <= 0xFFFF) then -- s = f_single(unicode) --- elseif unicode < 0x1FFFFFFF then --- s = f_double(floor(unicode/1024),unicode%1024+0xDC00) -- else --- s = false +-- unicode = unicode - 0x10000 +-- s = f_double(floor(unicode/1024)+0xD800,unicode%1024+0xDC00) -- end -- t[unicode] = s -- return s @@ -140,12 +139,11 @@ local f_double = formatters["%04X%04X"] -- end local function tounicode16(unicode,name) - if unicode < 0x10000 then + if unicode < 0xD7FF or (unicode > 0xDFFF and unicode <= 0xFFFF) then return f_single(unicode) - elseif unicode < 0x1FFFFFFFF then - return f_double(floor(unicode/1024),unicode%1024+0xDC00) else - report_fonts("can't convert %a in %a into tounicode",unicode,name) + unicode = unicode - 0x10000 + return f_double(floor(unicode/1024)+0xD800,unicode%1024+0xDC00) end end @@ -153,13 +151,11 @@ local function tounicode16sequence(unicodes,name) local t = { } for l=1,#unicodes do local u = unicodes[l] - if u < 0x10000 then + if u < 0xD7FF or (u > 0xDFFF and u <= 0xFFFF) then t[l] = f_single(u) - elseif unicode < 0x1FFFFFFFF then - t[l] = f_double(floor(u/1024),u%1024+0xDC00) else - report_fonts ("can't convert %a in %a into tounicode",u,name) - return + u = u - 0x10000 + t[l] = f_double(floor(u/1024)+0xD800,u%1024+0xDC00) end end return concat(t) @@ -170,23 +166,20 @@ local function tounicode(unicode,name) local t = { } for l=1,#unicode do local u = unicode[l] - if u < 0x10000 then + if u < 0xD7FF or (u > 0xDFFF and u <= 0xFFFF) then t[l] = f_single(u) - elseif u < 0x1FFFFFFFF then - t[l] = f_double(floor(u/1024),u%1024+0xDC00) else - report_fonts ("can't convert %a in %a into tounicode",u,name) - return + u = u - 0x10000 + t[l] = f_double(floor(u/1024)+0xD800,u%1024+0xDC00) end end return concat(t) else - if unicode < 0x10000 then + if unicode < 0xD7FF or (unicode > 0xDFFF and unicode <= 0xFFFF) then return f_single(unicode) - elseif unicode < 0x1FFFFFFFF then - return f_double(floor(unicode/1024),unicode%1024+0xDC00) else - report_fonts("can't convert %a in %a into tounicode",unicode,name) + unicode = unicode - 0x10000 + return f_double(floor(unicode/1024)+0xD800,unicode%1024+0xDC00) end end end @@ -196,7 +189,8 @@ local function fromunicode16(str) return tonumber(str,16) else local l, r = match(str,"(....)(....)") - return (tonumber(l,16))*0x400 + tonumber(r,16) - 0xDC00 + -- return (tonumber(l,16))*0x400 + tonumber(r,16) - 0xDC00 + return 0x10000 + (tonumber(l,16)-0xD800)*0x400 + tonumber(r,16) - 0xDC00 end end @@ -214,26 +208,6 @@ end -- return lpegmatch(p,str) -- end --- This is quite a bit faster but at the cost of some memory but if we --- do this we will also use it elsewhere so let's not follow this route --- now. I might use this method in the plain variant (no caching there) --- but then I need a flag that distinguishes between code branches. --- --- local cache = { } --- --- function mappings.tounicode16(unicode) --- local s = cache[unicode] --- if not s then --- if unicode < 0x10000 then --- s = format("%04X",unicode) --- else --- s = format("%04X%04X",unicode/0x400+0xD800,unicode%0x400+0xDC00) --- end --- cache[unicode] = s --- end --- return s --- end - mappings.makenameparser = makenameparser mappings.tounicode = tounicode mappings.tounicode16 = tounicode16 diff --git a/tex/context/base/mkiv/lpdf-res.lua b/tex/context/base/mkiv/lpdf-res.lua index d13fc798e..ca092c772 100644 --- a/tex/context/base/mkiv/lpdf-res.lua +++ b/tex/context/base/mkiv/lpdf-res.lua @@ -22,7 +22,7 @@ local useboxresource = tex.useboxresource local getboxresource = tex.getboxresourcedimensions function codeinjections.registerboxresource(n) - return saveboxresource(n,nil,lpdf.collectedresources,true) -- direct + return saveboxresource(n,nil,lpdf.collectedresources(),true) -- direct, todo: accept functions as attr/resources end function codeinjections.restoreboxresource(index) diff --git a/tex/context/base/mkiv/meta-imp-clp.mkiv b/tex/context/base/mkiv/meta-imp-clp.mkiv index 5c9206dee..89886b389 100644 --- a/tex/context/base/mkiv/meta-imp-clp.mkiv +++ b/tex/context/base/mkiv/meta-imp-clp.mkiv @@ -1,5 +1,5 @@ %D \module -%D [ file=meta-clp, +%D [ file=meta-imp-clp, %D version=2000.07.06, %D title=\METAPOST\ Graphics, %D subtitle=Clipping, diff --git a/tex/context/base/mkiv/meta-imp-grid.mkiv b/tex/context/base/mkiv/meta-imp-grid.mkiv new file mode 100644 index 000000000..9208a3dae --- /dev/null +++ b/tex/context/base/mkiv/meta-imp-grid.mkiv @@ -0,0 +1,63 @@ +%D \module +%D [ file=meta-imp-grid, +%D version=2016.01.08, +%D title=\METAPOST\ Graphics, +%D subtitle=Grid Tracing, +%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. + +\startMPextensions + color mfun_grid_lgc[] ; + numeric mfun_grid_lgi ; + mfun_grid_lgc[1] := red ; + mfun_grid_lgc[2] := green ; + mfun_grid_lgc[3] := blue ; + mfun_grid_lgi := 1 ; +\stopMPextensions + +\startuseMPgraphic{linegrid} + % if unknown mfun_grid_lgi : + % color mfun_grid_lgc[] ; + % numeric mfun_grid_lgi ; + % mfun_grid_lgc[1] := red ; + % mfun_grid_lgc[2] := green ; + % mfun_grid_lgc[3] := blue ; + % mfun_grid_lgi := 1 ; + % elseif mfun_grid_lgi = 3 : + if mfun_grid_lgi = 3 : + mfun_grid_lgi := 1 ; + else : + mfun_grid_lgi := mfun_grid_lgi + 1 ; + fi ; + draw image ( + save f, t ; + pair f, t ; + f := (0,-2*LineHeight) ; + t := (0, 2*LineHeight) ; + for i=ypart f - eps step LineHeight/5 until ypart t + eps: + draw (-EmWidth,i) -- (0,i) ; + endfor ; + draw f -- t ; + draw (-EmWidth,0) -- (EmWidth,0) ; + % ) shifted (-mfun_grid_lgi*EmWidth/3,0) withcolor mfun_grid_lgc[mfun_grid_lgi] ; + ) shifted (-EmWidth/2,0) withcolor mfun_grid_lgc[mfun_grid_lgi] ; + setbounds currentpicture to origin -- cycle ; +\stopuseMPgraphic + +\unexpanded\def\showlinegrid{\dontleavehmode\smash{\useMPgraphic{linegrid}}} + +\continueifinputfile{meta-imp-grid.mkiv} + +\starttext + +\showlinegrid \input tufte \par +\showlinegrid \input tufte \par +\showlinegrid \input ward \par +\showlinegrid \input ward \par + +\stoptext diff --git a/tex/context/base/mkiv/page-set.mkiv b/tex/context/base/mkiv/page-set.mkiv index 98548b3aa..6a3d550bd 100644 --- a/tex/context/base/mkiv/page-set.mkiv +++ b/tex/context/base/mkiv/page-set.mkiv @@ -2172,7 +2172,7 @@ % links rechts => odd, even, n, named -\definesystemvariable {mt} % MulTicolumn +\installcorenamespace{columnsetarea} \unexpanded\def\definecolumntextarea {\dotripleempty\dodefinecolumntextarea} @@ -2187,11 +2187,11 @@ {\definecolumntextarea[#1][\v!right][\c!type=#2,#3]} {\definecolumntextarea[#1][\v!left ][\c!type=#2,#3]}} {\presetlocalframed - [\??mt#1#2]% + [\??columnsetarea#1#2]% \processaction[#2] % \doglobal voorkomt stack build up [ \v!left=>\doglobal\addtocommalist{#1}\columnleftareas, \v!right=>\doglobal\addtocommalist{#1}\columnrightareas]% - \getparameters[\??mt#1#2] + \getparameters[\??columnsetarea#1#2] [\c!x=1,\c!y=1,\c!nx=1,\c!ny=1,\c!clipoffset=2\lineheight, \c!leftoffset=\zeropoint,\c!rightoffset=\zeropoint, \c!offset=\v!overlay,\c!strut=\v!no,\c!frame=\v!off, @@ -2212,18 +2212,18 @@ {\doifelseoddpage {\setupcolumntextarea[#1][\v!right][#3]} {\setupcolumntextarea[#1][\v!left][#3]}} - {\getparameters[\??mt#1#2][#3]}}% + {\getparameters[\??columnsetarea#1#2][#3]}}% \else \setupcolumntextarea[#1][\v!next][#2]% \fi} \def\docheckcolumnsetareapage#1#2% - {\ifnum\getvalue{\??mt#1\c!page}>\plusone - \doifelsevalue{\??mt#1\c!type}\v!fixed - {\ifnum\columnsetpage=\getvalue{\??mt#1\c!page}\relax + {\ifnum\getvalue{\??columnsetarea#1\c!page}>\plusone + \doifelsevalue{\??columnsetarea#1\c!type}\v!fixed + {\ifnum\columnsetpage=\getvalue{\??columnsetarea#1\c!page}\relax \donetrue\else\donefalse \fi} - {\ifnum\columnsetpage<\getvalue{\??mt#1\c!page}\relax + {\ifnum\columnsetpage<\getvalue{\??columnsetarea#1\c!page}\relax \donefalse\else\donetrue \fi}% \else @@ -2243,7 +2243,7 @@ \ifdone \donefalse \processaction - [\getvalue{\??mt##1#2\c!state}] + [\getvalue{\??columnsetarea##1#2\c!state}] [ \v!start=>\donetrue, \v!repeat=>\donetrue, \s!unknown=>\doperformtest\commalistelement\donetrue\donefalse]% @@ -2254,8 +2254,8 @@ \def\dodoinitializecolumntextareas#1#2% {\doOTRSETsetgridcells {\copy\placeholderboxd} - {\getvalue{\??mt#1#2\c!x }}{\getvalue{\??mt#1#2\c!y }} - {\getvalue{\??mt#1#2\c!nx}}{\getvalue{\??mt#1#2\c!ny}} + {\getvalue{\??columnsetarea#1#2\c!x }}{\getvalue{\??columnsetarea#1#2\c!y }} + {\getvalue{\??columnsetarea#1#2\c!nx}}{\getvalue{\??columnsetarea#1#2\c!ny}} {\copy\placeholderboxd}} \unexpanded\def\placecolumntextareas @@ -2273,7 +2273,7 @@ \ifdone \donefalse \processaction - [\getvalue{\??mt##1#2\c!state}] + [\getvalue{\??columnsetarea##1#2\c!state}] [ \v!start=>\donetrue\doglobal\removefromcommalist{##1}#1, \v!repeat=>\donetrue, \s!unknown=>\doperformtest\commalistelement\donetrue\donefalse]% @@ -2300,7 +2300,7 @@ % beware, we have clipping offsets of 2\lineheight by default \def\columntextareaparameter#1% - {\csname\??mt\currentcolumntestarea#1\endcsname} + {\csname\??columnsetarea\currentcolumntestarea#1\endcsname} \def\dodoplacecolumntextareas#1#2% {\def\currentcolumntestarea{#1#2}% @@ -2321,7 +2321,7 @@ % \setbox\scratchbox\vbox {\donetrue\localframed - [\??mt\currentcolumntestarea] + [\??columnsetarea\currentcolumntestarea] [\c!location=,% new (*) \c!width=\!!widtha,\c!height=\!!heighta,\c!lines=] {\columntextareaparameter\empty{}}}% messy @@ -2377,13 +2377,13 @@ \def\dosetupcolumntextareatext[#1][#2][#3]% {\ifthirdargument \doifelse{#2}\v!both - {\setvalue{\??mt#1\v!left }{#3}% - \setvalue{\??mt#1\v!right}{#3}} + {\setvalue{\??columnsetarea#1\v!left }{#3}% + \setvalue{\??columnsetarea#1\v!right}{#3}} {\doifelse{#2}\v!next {\doifelseoddpage - {\setvalue{\??mt#1\v!right}{#3}}% - {\setvalue{\??mt#1\v!left }{#3}}}% - {\setvalue{\??mt#1#2}{#3}}}% + {\setvalue{\??columnsetarea#1\v!right}{#3}}% + {\setvalue{\??columnsetarea#1\v!left }{#3}}}% + {\setvalue{\??columnsetarea#1#2}{#3}}}% \else \setupcolumntextareatext[#1][\v!next][{#2}]% \fi} @@ -2437,13 +2437,15 @@ \d_strc_float_temp_width \fi} +\installcorenamespace{columnsetspan} + \unexpanded\def\definecolumnsetspan {\dodoubleempty\dodefinecolumnsetspan} \def\dodefinecolumnsetspan[#1][#2]% {%\ifsecondargument \defineframedtext % we can have a parent - [cs:#1] + [\??columnsetspan#1] [\c!frame=\v!off, \c!before=, \c!after=, @@ -2469,7 +2471,7 @@ \def\dosetupcolumnsetspan[#1][#2]% {\ifsecondargument - \setupframedtexts[cs:#1][#2]% + \setupframedtexts[\??columnsetspan#1][#2]% \else \setupcolumnsetspan[\s!default][#1]% \fi} @@ -2490,13 +2492,13 @@ \nofcolumns\plusone \mofcolumns\plusone \fi - \setupframedtexts[cs:#1] + \setupframedtexts[\??columnsetspan#1] [\c!width=\columnsetspanhsize, \c!linecorrection=\v!off, \c!depthcorrection=\v!off, #2]% % determine widths - \!!countc\namedframedtextparameter{cs:#1}\c!n + \!!countc\namedframedtextparameter{\??columnsetspan#1}\c!n % \!!countd\numexpr(\nofcolumns-\mofcolumns+\plusone)% \!!countd\nofcolumns % n <= n of columns @@ -2504,16 +2506,16 @@ \advance\!!countd -\mofcolumns \advance\!!countd \plusone % n <= n of available columns (alternative a) - \doif{\namedframedtextparameter{cs:#1}\c!alternative}\v!a + \doif{\namedframedtextparameter{\??columnsetspan#1}\c!alternative}\v!a {\ifnum\!!countc>\!!countd \!!countc\!!countd \fi}% % here it all starts \setcolumnsetspanhsize\mofcolumns\!!countc % a/b used \hsize\columnsetspanhsize \setbox\scratchbox\vbox\bgroup - \pack_framed_text_start{cs:#1}[\v!none]% geen nils placement + \pack_framed_text_start{\??columnsetspan#1}[\v!none]% geen nils placement % spoils spacing : \vskip-\struttotal\par\verticalstrut\par \ifnum\columnsetlevel>\zerocount - \namedframedtextparameter{cs:#1}\c!before + \namedframedtextparameter{\??columnsetspan#1}\c!before \fi \unexpanded\def\stopcolumnsetspan{\dostopcolumnsetspan{#1}}} @@ -2523,8 +2525,8 @@ \kern-2\struttotal \verticalstrut \ifnum\columnsetlevel>\zerocount - \doifsomething{\namedframedtextparameter{cs:#1}\c!after} - {\namedframedtextparameter{cs:#1}\c!after + \doifsomething{\namedframedtextparameter{\??columnsetspan#1}\c!after} + {\namedframedtextparameter{\??columnsetspan#1}\c!after \kern\zeropoint}% otherwise blanks disappear, better be a switch \else \endgraf @@ -2533,7 +2535,7 @@ \egroup \setbox\scratchbox\frozenhbox to \hsize {\dontcomplain - \alignedline{\namedframedtextparameter{cs:#1}\c!location}\v!middle{\lower\strutdepth\box\scratchbox}}% + \alignedline{\namedframedtextparameter{\??columnsetspan#1}\c!location}\v!middle{\lower\strutdepth\box\scratchbox}}% \dp\scratchbox\zeropoint % else wrong snap insidefloat % % to be tested first (strange in grid mode) @@ -2541,7 +2543,7 @@ % \setbox\scratchbox\frozenhbox to \hsize % {\dontcomplain % \alignstrutmode\zerocount -% \alignedline{\namedframedtextparameter{cs:#1}\c!plaats}\v!midden +% \alignedline{\namedframedtextparameter{\??columnsetspan#1}\c!plaats}\v!midden % {\box\scratchbox}}% % \ifinsidefloat @@ -2549,23 +2551,23 @@ \else\ifnum\columnsetlevel>\zerocount % we only set \columnsetspacing when asked for, else bottom problems % don't change this any more (test naw) - \columnslotspacing\namedframedtextparameter{cs:#1}\c!nlines\relax + \columnslotspacing\namedframedtextparameter{\??columnsetspan#1}\c!nlines\relax % todo: nboven/onder %\OTRSETstoreincolumnslotHERE\scratchbox - \edef\floatmethod{\namedframedtextparameter{cs:#1}\c!default}% + \edef\floatmethod{\namedframedtextparameter{\??columnsetspan#1}\c!default}% \@EA\uppercasestring\floatmethod\to\floatmethod % todo : \v!here -> here enzovoorts \OTRSETstoreincolumnslot\floatmethod\scratchbox - \checknextindentation[\namedframedtextparameter{cs:#1}\c!indentnext]% + \checknextindentation[\namedframedtextparameter{\??columnsetspan#1}\c!indentnext]% \else % of course we needed a one-column fall back for tm; brrr, the box has now too % much height (try \ruledvbox); don't change this without testing techniek \scratchdimen\ht\scratchbox \advance\scratchdimen-\strutdp \ht\scratchbox\scratchdimen - \namedframedtextparameter{cs:#1}\c!before + \namedframedtextparameter{\??columnsetspan#1}\c!before \snaptogrid\vbox{\box\scratchbox}% - \namedframedtextparameter{cs:#1}\c!after + \namedframedtextparameter{\??columnsetspan#1}\c!after \fi\fi \egroup \endgraf} diff --git a/tex/context/base/mkiv/spac-ver.mkiv b/tex/context/base/mkiv/spac-ver.mkiv index ee30cb264..c54606451 100644 --- a/tex/context/base/mkiv/spac-ver.mkiv +++ b/tex/context/base/mkiv/spac-ver.mkiv @@ -579,7 +579,7 @@ \fi \fi \ifdim\pagegoal<\maxdimen - %\blank[\v!white,\the\d_spac_lines_correction_before]% \blank[\v!white]\dotopbaselinecorrection + % \blank[\v!white,\the\d_spac_lines_correction_before]% \blank[\v!white]\dotopbaselinecorrection \directcheckedvspacing{\v!white,\the\d_spac_lines_correction_before}% \blank[\v!white]\dotopbaselinecorrection \fi \nointerlineskip % new @@ -594,13 +594,16 @@ \fi \box\scratchbox \endgraf - %\blank[\the\d_spac_lines_correction_after]% \dobotbaselinecorrection - \directcheckedvspacing{\the\d_spac_lines_correction_after}% \dobotbaselinecorrection + % + % eventually i'll get it right ... (i also need to check all whitespace code elsewhere) + % + % \blank[\the\d_spac_lines_correction_after]% \dobotbaselinecorrection + % \directcheckedvspacing{\the\d_spac_lines_correction_after}% \dobotbaselinecorrection + \directcheckedvspacing{\v!white,\the\d_spac_lines_correction_after}% \dobotbaselinecorrection % \allowbreak % new, otherwise problems when many in a row \prevdepth\strutdp \spac_lines_action_around} - \let\stoplinecorrection \spac_lines_stop_correction \let\stoplocallinecorrection\spac_lines_stop_correction diff --git a/tex/context/base/mkiv/status-files.pdf b/tex/context/base/mkiv/status-files.pdf Binary files differindex d3b1d9571..0950af5fd 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 a5fac22ed..f3c2a95fd 100644 --- a/tex/context/base/mkiv/status-lua.pdf +++ b/tex/context/base/mkiv/status-lua.pdf diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 5f138d407..c1e2902c6 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 : 01/13/16 15:10:24 +-- merge date : 01/14/16 09:55:22 do -- begin closure to overcome local limits and interference @@ -5489,25 +5489,22 @@ end local f_single=formatters["%04X"] local f_double=formatters["%04X%04X"] local function tounicode16(unicode,name) - if unicode<0x10000 then + if unicode<0xD7FF or (unicode>0xDFFF and unicode<=0xFFFF) then return f_single(unicode) - elseif unicode<0x1FFFFFFFF then - return f_double(floor(unicode/1024),unicode%1024+0xDC00) else - report_fonts("can't convert %a in %a into tounicode",unicode,name) + unicode=unicode-0x10000 + return f_double(floor(unicode/1024)+0xD800,unicode%1024+0xDC00) end end local function tounicode16sequence(unicodes,name) local t={} for l=1,#unicodes do local u=unicodes[l] - if u<0x10000 then + if u<0xD7FF or (u>0xDFFF and u<=0xFFFF) then t[l]=f_single(u) - elseif unicode<0x1FFFFFFFF then - t[l]=f_double(floor(u/1024),u%1024+0xDC00) else - report_fonts ("can't convert %a in %a into tounicode",u,name) - return + u=u-0x10000 + t[l]=f_double(floor(u/1024)+0xD800,u%1024+0xDC00) end end return concat(t) @@ -5517,23 +5514,20 @@ local function tounicode(unicode,name) local t={} for l=1,#unicode do local u=unicode[l] - if u<0x10000 then + if u<0xD7FF or (u>0xDFFF and u<=0xFFFF) then t[l]=f_single(u) - elseif u<0x1FFFFFFFF then - t[l]=f_double(floor(u/1024),u%1024+0xDC00) else - report_fonts ("can't convert %a in %a into tounicode",u,name) - return + u=u-0x10000 + t[l]=f_double(floor(u/1024)+0xD800,u%1024+0xDC00) end end return concat(t) else - if unicode<0x10000 then + if unicode<0xD7FF or (unicode>0xDFFF and unicode<=0xFFFF) then return f_single(unicode) - elseif unicode<0x1FFFFFFFF then - return f_double(floor(unicode/1024),unicode%1024+0xDC00) else - report_fonts("can't convert %a in %a into tounicode",unicode,name) + unicode=unicode-0x10000 + return f_double(floor(unicode/1024)+0xD800,unicode%1024+0xDC00) end end end @@ -5542,7 +5536,7 @@ local function fromunicode16(str) return tonumber(str,16) else local l,r=match(str,"(....)(....)") - return (tonumber(l,16))*0x400+tonumber(r,16)-0xDC00 + return 0x10000+(tonumber(l,16)-0xD800)*0x400+tonumber(r,16)-0xDC00 end end mappings.makenameparser=makenameparser |