diff options
Diffstat (limited to 'tex')
23 files changed, 128 insertions, 136 deletions
| diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index 2d272051e..6aa0a82d5 100644 --- a/tex/context/base/cont-new.mkii +++ b/tex/context/base/cont-new.mkii @@ -11,7 +11,7 @@  %C therefore copyrighted by \PRAGMA. See mreadme.pdf for  %C details. -\newcontextversion{2013.01.21 18:18} +\newcontextversion{2013.01.22 18:33}  %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/cont-new.mkiv b/tex/context/base/cont-new.mkiv index e30f91f58..2e0a6c4c4 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@  %C therefore copyrighted by \PRAGMA. See mreadme.pdf for  %C details. -\newcontextversion{2013.01.21 18:18} +\newcontextversion{2013.01.22 18:33}  %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/context-version.pdf b/tex/context/base/context-version.pdfBinary files differ index 1e37d5bb4..1318060a5 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.pngBinary files differ index beb1a9ba9..26753f6a0 100644 --- a/tex/context/base/context-version.png +++ b/tex/context/base/context-version.png diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii index 0796a482c..b6f91d1ed 100644 --- a/tex/context/base/context.mkii +++ b/tex/context/base/context.mkii @@ -20,7 +20,7 @@  %D your styles an modules.  \edef\contextformat {\jobname} -\edef\contextversion{2013.01.21 18:18} +\edef\contextversion{2013.01.22 18:33}  %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index db76f786a..3e85c4426 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -25,7 +25,7 @@  %D up and the dependencies are more consistent.  \edef\contextformat {\jobname} -\edef\contextversion{2013.01.21 18:18} +\edef\contextversion{2013.01.22 18:33}  %D For those who want to use this: diff --git a/tex/context/base/font-mis.lua b/tex/context/base/font-mis.lua index c103d57d5..cfef770d7 100644 --- a/tex/context/base/font-mis.lua +++ b/tex/context/base/font-mis.lua @@ -22,7 +22,7 @@ local handlers = fonts.handlers  handlers.otf   = handlers.otf or { }  local otf      = handlers.otf -otf.version    = otf.version or 2.738 +otf.version    = otf.version or 2.740  otf.cache      = otf.cache   or containers.define("fonts", "otf", otf.version, true)  function otf.loadcached(filename,format,sub) diff --git a/tex/context/base/font-otf.lua b/tex/context/base/font-otf.lua index 4d0828209..782e2d194 100644 --- a/tex/context/base/font-otf.lua +++ b/tex/context/base/font-otf.lua @@ -47,7 +47,7 @@ local otf                = fonts.handlers.otf  otf.glists               = { "gsub", "gpos" } -otf.version              = 2.738 -- beware: also sync font-mis.lua +otf.version              = 2.740 -- beware: also sync font-mis.lua  otf.cache                = containers.define("fonts", "otf", otf.version, true)  local fontdata           = fonts.hashes.identifiers diff --git a/tex/context/base/font-otp.lua b/tex/context/base/font-otp.lua index fc98b2bdc..62368adc0 100644 --- a/tex/context/base/font-otp.lua +++ b/tex/context/base/font-otp.lua @@ -11,6 +11,7 @@ if not modules then modules = { } end modules ['font-otp'] = {  local next, type = next, type  local sort, concat = table.sort, table.concat +local sortedhash = table.sortedhash  local trace_packing = false  trackers.register("otf.packing", function(v) trace_packing = v end)  local trace_loading = false  trackers.register("otf.loading", function(v) trace_loading = v end) @@ -99,18 +100,17 @@ local function tabstr_boolean(t)      end  end --- -- saves only a few tens of bytes --- --- local function stripdata(data) ---     for k, v in next, data do ---         if not v or v == "" then ---             data[k] = nil ---         elseif type(v) == "table" then ---             stripdata(v) -- keep empty tables ---         end ---     end +-- tabstr_boolean_x = tabstr_boolean + +-- tabstr_boolean = function(t) +--     local a = tabstr_normal(t) +--     local b = tabstr_boolean_x(t) +--     print(a) +--     print(b) +--     return b  -- end +  local function packdata(data)      if data then       -- stripdata(data) @@ -118,7 +118,7 @@ local function packdata(data)          local hh, tt, cc = { }, { }, { }          local nt, ntt = 0, 0          local function pack_normal(v) -            local tag = tabstr_normal(v,flat) +            local tag = tabstr_normal(v)              local ht = h[tag]              if ht then                  c[ht] = c[ht] + 1 @@ -319,18 +319,18 @@ local function packdata(data)                  for _, lookup in next, lookups do                      local rules = lookup.rules                      if rules then -                        for i=1,#rules do -- was next loop +                        for i=1,#rules do                              local rule = rules[i]                              local r = rule.before       if r then for i=1,#r do r[i] = pack_boolean(r[i]) end end                              local r = rule.after        if r then for i=1,#r do r[i] = pack_boolean(r[i]) end end                              local r = rule.current      if r then for i=1,#r do r[i] = pack_boolean(r[i]) end end -                            local r = rule.replacements if r then rule.replacements  = pack_boolean(r)        end -                            local r = rule.lookups      if r then rule.lookups       = pack_boolean(r)        end +                            local r = rule.replacements if r then rule.replacements  = pack_flat   (r)    end +                            local r = rule.lookups      if r then rule.lookups       = pack_indexed(r)    end                          end                      end                  end              end -            local anchor_to_lookup = resources.anchor_to_lookup +            local anchor_to_lookup  = resources.anchor_to_lookup              if anchor_to_lookup then                  for anchor, lookup in next, anchor_to_lookup do                      anchor_to_lookup[anchor] = pack_normal(lookup) diff --git a/tex/context/base/l-string.lua b/tex/context/base/l-string.lua index 828285ca1..b6e3576f0 100644 --- a/tex/context/base/l-string.lua +++ b/tex/context/base/l-string.lua @@ -99,7 +99,6 @@ function string.is_empty(str)      end  end -  -- if not string.escapedpattern then  --  --     local patterns_escapes = { diff --git a/tex/context/base/meta-ini.mkiv b/tex/context/base/meta-ini.mkiv index aea43ee87..ef7e86540 100644 --- a/tex/context/base/meta-ini.mkiv +++ b/tex/context/base/meta-ini.mkiv @@ -566,7 +566,7 @@  \unexpanded\def\meta_obey_box_origin    {\setbox\b_meta_graphic\hbox\bgroup -     \hskip\MPllx\raise\MPlly\box\b_meta_graphic +     \kern\MPllx\raise\MPlly\box\b_meta_graphic     \egroup}  \unexpanded\def\obeyMPboxdepth  {\let\meta_relocate_box\meta_obey_box_depth  } diff --git a/tex/context/base/mlib-pps.mkiv b/tex/context/base/mlib-pps.mkiv index 3ecabc1c3..f21d84e0d 100644 --- a/tex/context/base/mlib-pps.mkiv +++ b/tex/context/base/mlib-pps.mkiv @@ -126,7 +126,7 @@  \def\doMPLIBstopgroup#1#2#3#4#5#6% some day this might happen elsewhere    {\egroup -   \setbox\scratchbox\hbox{\hskip\onebasepoint\box\scratchbox}% weird correction +   \setbox\scratchbox\hbox{\kern\onebasepoint\box\scratchbox}% weird correction     \wd\scratchbox \dimexpr#5\onebasepoint-#3\onebasepoint+2\onebasepoint\relax     \ht\scratchbox #6\onebasepoint     \dp\scratchbox-#4\onebasepoint @@ -134,8 +134,8 @@       attr      {/Group << /S /Transparency /I \ifnum#1=1 true \else false \fi /K \ifnum#1=1 true \else false \fi >>}       resources {\pdfbackendcurrentresources}       \scratchbox -   \setbox\scratchbox\hbox\bgroup\hskip-\onebasepoint\pdfrefxform\pdflastxform\egroup -   \setbox\scratchbox\hbox\bgroup\hskip-\onebasepoint\pdfrefxform\pdflastxform\egroup +   \setbox\scratchbox\hbox\bgroup\kern-\onebasepoint\pdfrefxform\pdflastxform\egroup +   \setbox\scratchbox\hbox\bgroup\kern-\onebasepoint\pdfrefxform\pdflastxform\egroup     \wd\scratchbox\zeropoint     \ht\scratchbox\zeropoint     \dp\scratchbox\zeropoint diff --git a/tex/context/base/mult-low.lua b/tex/context/base/mult-low.lua index 9b95be3cd..bdce5af7e 100644 --- a/tex/context/base/mult-low.lua +++ b/tex/context/base/mult-low.lua @@ -332,6 +332,8 @@ return {          "obeylualines", "obeyluatokens",          "startluacode", "stopluacode", "startlua", "stoplua",          -- +        "carryoverpar", +        --          "Umathbotaccent",      }  } diff --git a/tex/context/base/pack-box.mkiv b/tex/context/base/pack-box.mkiv index 5829657d7..f8b36691c 100644 --- a/tex/context/base/pack-box.mkiv +++ b/tex/context/base/pack-box.mkiv @@ -233,7 +233,7 @@     \global\advance\boxhdisplacement\d_pack_layers_x_position     \ifdim\boxhdisplacement<\zeropoint       \global\setbox\b_pack_boxes_collector\hbox -       {\hskip-\boxhdisplacement +       {\kern-\boxhdisplacement          \box\b_pack_boxes_collector}%     \fi     \global\advance\boxvdisplacement\d_pack_layers_y_position @@ -246,7 +246,7 @@     \d_pack_layers_y_size\htdp\b_pack_boxes_collector     \global\setbox\b_pack_boxes_collector\hbox       {\box\b_pack_boxes_collector -      \hskip\dimexpr +      \kern\dimexpr          -\d_pack_layers_x_size          +\d_pack_layers_x_position           \ifdim\boxhdisplacement<\zeropoint @@ -888,12 +888,12 @@       \setbox\nextbox\vbox         {\forgetall % already done          \offinterlineskip -        \vskip\scratchtopoffset +        \kern\scratchtopoffset          \hbox -          {\hskip\scratchleftoffset +          {\kern\scratchleftoffset             \box\nextbox -           \hskip\scratchrightoffset}% -        \vskip\scratchbottomoffset}% +           \kern\scratchrightoffset}% +        \kern\scratchbottomoffset}%       \ht\nextbox\htdp\nextbox       \dp\nextbox\zeropoint     \fi @@ -902,7 +902,7 @@     \scratchdepth \offsetboxparameter\c!depth     \edef\p_location{\offsetboxparameter\c!location}%     \setbox\nextbox\hbox -     {\hskip\scratchxposition +     {\kern\scratchxposition        \lower\scratchyposition\hbox          {\ifx\p_location\empty             \box\nextbox diff --git a/tex/context/base/pack-com.mkiv b/tex/context/base/pack-com.mkiv index d0768d97c..113ae89ab 100644 --- a/tex/context/base/pack-com.mkiv +++ b/tex/context/base/pack-com.mkiv @@ -291,7 +291,7 @@    {\aligntab     \aligntab     \aligntab -   \hskip\p_distance +   \kern\p_distance     \aligntab     \pack_combinations_pickup} @@ -619,12 +619,12 @@  \def\pack_pairedboxes_flush_left    {\box\b_pack_pairedboxes_second -   \hskip\pairedboxparameter\c!distance +   \kern\pairedboxparameter\c!distance     \box\b_pack_pairedboxes_first}  \def\pack_pairedboxes_flush_right    {\box\b_pack_pairedboxes_first -   \hskip\pairedboxparameter\c!distance +   \kern\pairedboxparameter\c!distance     \box\b_pack_pairedboxes_second}  \def\pack_pairedboxes_flush_top diff --git a/tex/context/base/page-box.mkvi b/tex/context/base/page-box.mkvi index 58a5627cb..8f5647a14 100644 --- a/tex/context/base/page-box.mkvi +++ b/tex/context/base/page-box.mkvi @@ -99,7 +99,7 @@    {\setbox#box\vbox       {\offinterlineskip        \dorecurse{\layoutparameter\c!ny} -        {\hbox{\dorecurse{\layoutparameter\c!nx}{\copy#box\hskip\layoutparameter\c!dx}\unskip}% +        {\hbox{\dorecurse{\layoutparameter\c!nx}{\copy#box\kern\layoutparameter\c!dx}\unskip}%           \vskip\layoutparameter\c!dy}        \unskip}} @@ -194,7 +194,7 @@        \advance\scratchwidth \scratchoffset        \ifconditional#right\relax           \scratchdimen-\scratchoffset -         \hskip\scratchdimen +         \kern\scratchdimen        \else           \scratchdimen\zeropoint        \fi @@ -227,10 +227,10 @@        \doifbothsides          {\advance\scratchwidth\scratchoffset           \scratchdimen-\scratchoffset -         \hskip\scratchdimen}% +         \kern\scratchdimen}%          {\scratchdimen\zeropoint}          {\scratchdimen-\scratchoffset -         \hskip\scratchdimen}% +         \kern\scratchdimen}%        \lower\scratchoffset\hbox          {\clip             [\c!hoffset=\scratchdimen, diff --git a/tex/context/base/page-txt.mkvi b/tex/context/base/page-txt.mkvi index dc445e0e1..707af25e9 100644 --- a/tex/context/base/page-txt.mkvi +++ b/tex/context/base/page-txt.mkvi @@ -555,40 +555,40 @@    {\edef\currentlayoutelement{\currentlayouttextline:\v!edge}%     \page_layouts_place_element_indeed\leftedgewidth       {\hss\layoutelementparameter#parameter}% -   \hskip\leftedgedistance} +   \kern\leftedgedistance}  \def\page_layouts_left_margin_element#parameter#extrastate%    {\edef\currentlayoutelement{\currentlayouttextline:\v!margin}%     \page_layouts_place_element_indeed\leftmarginwidth       {\hbox to \leftmarginwidth{\hss\layoutelementparameter#parameter}%        \ifnum#extrastate=\page_layouts_extra_at_margin_left -        \hskip-\leftmarginwidth +        \kern-\leftmarginwidth          \hbox to \leftmarginwidth{\hss\layoutelementparameter\c!margintext}%        \fi}% -   \hskip\leftmargindistance} +   \kern\leftmargindistance}  \def\page_layouts_text_body_element#left#middle#right#extrastate%    {\edef\currentlayoutelement{\currentlayouttextline:\v!text}%     \page_layouts_place_element_indeed\makeupwidth       {\hbox to \makeupwidth{\ifnum#extrastate=\page_layouts_extra_at_margin_left\page_layouts_place_extra_text_left\fi\layoutelementparameter#left\hss}% -      \hskip-\makeupwidth +      \kern-\makeupwidth        \hbox to \makeupwidth{\hss\layoutelementparameter#middle\hss}% -      \hskip-\makeupwidth +      \kern-\makeupwidth        \hbox to \makeupwidth{\hss\layoutelementparameter#right\ifnum#extrastate=\page_layouts_extra_at_margin_right\page_layouts_place_extra_text_right\fi}}}  \def\page_layouts_right_margin_element#parameter#extrastate%    {\edef\currentlayoutelement{\currentlayouttextline:\v!margin}% -   \hskip\rightmargindistance +   \kern\rightmargindistance     \page_layouts_place_element_indeed\rightmarginwidth       {\hbox to \rightmarginwidth{\layoutelementparameter#parameter\hss}%        \ifnum#extrastate=\page_layouts_extra_at_margin_right -        \hskip-\rightmarginwidth +        \kern-\rightmarginwidth          \hbox to \rightmarginwidth{\layoutelementparameter\c!margintext\hss}%        \fi}}  \def\page_layouts_right_edge_element#parameter%    {\edef\currentlayoutelement{\currentlayouttextline:\v!edge}% -   \hskip\rightedgedistance +   \kern\rightedgedistance     \page_layouts_place_element_indeed\rightedgewidth       {\layoutelementparameter#parameter\hss}} @@ -619,8 +619,8 @@  %D This code will move to \type {page-flt.tex}. -\appendtoks \placerightmarginblock \hskip-\rightmarginwidth \to \rightmargintextcontent -\appendtoks \placeleftmarginblock  \hskip-\leftmarginwidth  \to \leftmargintextcontent +\appendtoks \placerightmarginblock \kern-\rightmarginwidth \to \rightmargintextcontent +\appendtoks \placeleftmarginblock  \kern-\leftmarginwidth  \to \leftmargintextcontent  %D \macros  %D   {definetext} diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdfBinary files differ index 0c20b0e47..9db601262 100644 --- a/tex/context/base/status-files.pdf +++ b/tex/context/base/status-files.pdf diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdfBinary files differ index 8f0c2a65d..06121b179 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf diff --git a/tex/context/base/supp-box.mkiv b/tex/context/base/supp-box.mkiv index 84ae00da1..8ab205d4c 100644 --- a/tex/context/base/supp-box.mkiv +++ b/tex/context/base/supp-box.mkiv @@ -1989,7 +1989,7 @@     \scratchwidth\wd\ifdim\wd\nextbox>\wd\processbox\nextbox\else\processbox\fi     \setbox\processbox\hbox to \scratchwidth       {\hbox to \scratchwidth{\hss\box\processbox\hss}% -      \hskip-\scratchwidth +      \kern-\scratchwidth        \hbox to \scratchwidth{\hss\box\nextbox   \hss}}}  \unexpanded\def\startoverlay diff --git a/tex/context/base/tabl-tbl.mkiv b/tex/context/base/tabl-tbl.mkiv index 03e716e40..b5c3b0064 100644 --- a/tex/context/base/tabl-tbl.mkiv +++ b/tex/context/base/tabl-tbl.mkiv @@ -400,11 +400,11 @@  % \unexpanded % we can expand this one  \def\tabl_tabulate_inject_pre_skip#1%    {\ifdim#1>\zeropoint -     \hskip#1\relax +     \kern#1\relax % was \hskip     \else\ifnum\c_tabl_tabulate_column=\zerocount       \ifconditional\c_tabl_tabulate_autorulespacing         \ifcase\c_tabl_tabulate_has_rule_spec_first\else -         \hskip\s_tabl_tabulate_first\relax +         \kern\s_tabl_tabulate_first\relax % was \hskip         \fi       \fi     \fi\fi} @@ -412,11 +412,11 @@  % \unexpanded % we can expand this one  \def\tabl_tabulate_inject_post_skip#1%    {\ifdim#1>\zeropoint -     \hskip#1\relax +     \kern#1\relax % was \hskip     \else\ifnum\c_tabl_tabulate_columns=\c_tabl_tabulate_nofcolumns       \ifconditional\c_tabl_tabulate_autorulespacing         \ifcase\c_tabl_tabulate_has_rule_spec_last\else -         \hskip\s_tabl_tabulate_last\relax +         \kern\s_tabl_tabulate_last\relax % was \hskip         \fi       \fi     \fi\fi} @@ -1451,35 +1451,6 @@      \let\tabl_tabulate_hrule_inject\tabl_tabulate_hrule_inject_second  \to \t_tabl_tabulate_initializers_second -% \def\totaltabulatecolumns{0} -% -% \def\donormaltabulatehlinerule -%   {\leaders \hrule -%      \s!height\dimexpr.5\lineheight-\strutdepth -%      \s!depth-\dimexpr.5\lineheight-\strutdepth+\d_tabl_tabulate_hrulethickness_local -%      \hfill} -% -% \def\docoloredtabulatehlinerule -%   {\dousecolorparameter\currenttabulationlocalhrulecolor -%    \donormaltabulatehlinerule} -% -% \def\dotabulatelinerule -%   {\multispan\totaltabulatecolumns % \multispan is a plain macro -%    % for the moment this one -%    \strut\hskip\d_tabl_tabulate_margin -%    % neg values are ok ! -%    \hskip\d_tabl_tabulate_indent\relax % new august 2003 -%    \ifcase\d_tabl_tabulate_hrulethickness_local\else -%      \iftrialtypesetting % does not happen as we nil the caller -%        \donormaltabulatehlinerule -%      \else\ifx\currenttabulationlocalhrulecolor\empty -%        \donormaltabulatehlinerule -%      \else -%        \docoloredtabulatehlinerule -%      \fi\fi -%    \fi -%    \cr} -  %D Color:  % \starttabulate[||p||] diff --git a/tex/context/base/typo-del.mkiv b/tex/context/base/typo-del.mkiv index ee5d76266..8dfb2d461 100644 --- a/tex/context/base/typo-del.mkiv +++ b/tex/context/base/typo-del.mkiv @@ -359,17 +359,17 @@     \ignorespaces}  \def\typo_delimited_stop_par -   {\removeunwantedspaces -    \removelastskip -    \rightdelimitedtextmark -    \endgroup -    \popmacro\checkindentation -    \typo_delimited_stop_par_indeed -    \delimitedtextparameter\c!after -    \doifsomething{\delimitedtextparameter\c!spaceafter} -      {\blank[\delimitedtextparameter\c!spaceafter]}% -    \useindentnextparameter\delimitedtextparameter -    \dorechecknextindentation}% AM: This was missing! +  {\removeunwantedspaces +   \removelastskip +   \rightdelimitedtextmark +   \carryoverpar\endgroup % new per 2013-01-21 ... please left floats +   \popmacro\checkindentation +   \typo_delimited_stop_par_indeed +   \delimitedtextparameter\c!after +   \doifsomething{\delimitedtextparameter\c!spaceafter} +     {\blank[\delimitedtextparameter\c!spaceafter]}% +   \useindentnextparameter\delimitedtextparameter +   \dorechecknextindentation}% AM: This was missing!  \def\typo_delimited_start_txt    {\let\typo_delimited_stop\typo_delimited_stop_txt diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 0b714c1a7..7b2b0a282 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 : luatex-fonts-merged.lua  -- parent file : luatex-fonts.lua --- merge date  : 01/21/13 18:18:50 +-- merge date  : 01/22/13 18:33:20  do -- begin closure to overcome local limits and interference @@ -949,7 +949,6 @@ function string.is_empty(str)      end  end -  -- if not string.escapedpattern then  --  --     local patterns_escapes = { @@ -5794,7 +5793,7 @@ local otf                = fonts.handlers.otf  otf.glists               = { "gsub", "gpos" } -otf.version              = 2.738 -- beware: also sync font-mis.lua +otf.version              = 2.740 -- beware: also sync font-mis.lua  otf.cache                = containers.define("fonts", "otf", otf.version, true)  local fontdata           = fonts.hashes.identifiers @@ -9014,19 +9013,40 @@ local registerotffeature  = otffeatures.register  process features right.</p>  --ldx]]-- -analyzers.constants = { -    init = 1, -    medi = 2, -    fina = 3, -    isol = 4, - -- devanagari -    rphf = 5, -    half = 6, -    pref = 7, -    blwf = 8, -    pstf = 9, +-- never use these numbers directly + +local s_init = 1    local s_rphf =  7 +local s_medi = 2    local s_half =  8 +local s_fina = 3    local s_pref =  9 +local s_isol = 4    local s_blwf = 10 +local s_mark = 5    local s_pstf = 11 +local s_rest = 6 + +local states = { +    init = s_init, +    medi = s_medi, +    fina = s_fina, +    isol = s_isol, +    mark = s_mark, +    rest = s_rest, +    rphf = s_rphf, +    half = s_half, +    pref = s_pref, +    blwf = s_blwf, +    pstf = s_pstf, +} + +local features = { +    init = s_init, +    medi = s_medi, +    fina = s_fina, +    isol = s_isol, + -- mark = s_mark,  } +analyzers.states   = states +analyzers.features = features +  -- todo: analyzers per script/lang, cross font, so we need an font id hash -> script  -- e.g. latin -> hyphenate, arab -> 1/2/3 analyze -- its own namespace @@ -9044,40 +9064,40 @@ function analyzers.setstate(head,font)              if d then                  if d.class == "mark" or (useunicodemarks and categories[char] == "mn") then                      done = true -                    current[a_state] = 5 -- mark +                    current[a_state] = s_mark                  elseif n == 0 then                      first, last, n = current, current, 1 -                    current[a_state] = 1 -- init +                    current[a_state] = s_init                  else                      last, n = current, n+1 -                    current[a_state] = 2 -- medi +                    current[a_state] = s_medi                  end              else -- finish                  if first and first == last then -                    last[a_state] = 4 -- isol +                    last[a_state] = s_isol                  elseif last then -                    last[a_state] = 3 -- fina +                    last[a_state] = s_fina                  end                  first, last, n = nil, nil, 0              end          elseif id == disc_code then              -- always in the middle -            current[a_state] = 2 -- midi +            current[a_state] = s_midi              last = current          else -- finish              if first and first == last then -                last[a_state] = 4 -- isol +                last[a_state] = s_isol              elseif last then -                last[a_state] = 3 -- fina +                last[a_state] = s_fina              end              first, last, n = nil, nil, 0          end          current = current.next      end      if first and first == last then -        last[a_state] = 4 -- isol +        last[a_state] = s_isol      elseif last then -        last[a_state] = 3 -- fina +        last[a_state] = s_fina      end      return head, done  end @@ -9239,19 +9259,19 @@ local function finish(first,last)          if first == last then              local fc = first.char              if isol_fina_medi_init[fc] or isol_fina[fc] then -                first[a_state] = 4 -- isol +                first[a_state] = s_isol              else                  warning(first,"isol") -                first[a_state] = 0 -- error +                first[a_state] = s_error              end          else              local lc = last.char              if isol_fina_medi_init[lc] or isol_fina[lc] then -- why isol here ?              -- if laststate == 1 or laststate == 2 or laststate == 4 then -                last[a_state] = 3 -- fina +                last[a_state] = s_fina              else                  warning(last,"fina") -                last[a_state] = 0 -- error +                last[a_state] = s_error              end          end          first, last = nil, nil @@ -9259,10 +9279,10 @@ local function finish(first,last)          -- first and last are either both set so we never com here          local fc = first.char          if isol_fina_medi_init[fc] or isol_fina[fc] then -            first[a_state] = 4 -- isol +            first[a_state] = s_isol          else              warning(first,"isol") -            first[a_state] = 0 -- error +            first[a_state] = s_error          end          first = nil      end @@ -9279,33 +9299,33 @@ function methods.arab(head,font,attr) -- maybe make a special version with no tr              done = true              local char = current.char              if marks[char] or (useunicodemarks and categories[char] == "mn") then -                current[a_state] = 5 -- mark +                current[a_state] = s_mark              elseif isol[char] then -- can be zwj or zwnj too                  first, last = finish(first,last) -                current[a_state] = 4 -- isol +                current[a_state] = s_isol                  first, last = nil, nil              elseif not first then                  if isol_fina_medi_init[char] then -                    current[a_state] = 1 -- init +                    current[a_state] = s_init                      first, last = first or current, current                  elseif isol_fina[char] then -                    current[a_state] = 4 -- isol +                    current[a_state] = s_isol                      first, last = nil, nil                  else -- no arab                      first, last = finish(first,last)                  end              elseif isol_fina_medi_init[char] then                  first, last = first or current, current -                current[a_state] = 2 -- medi +                current[a_state] = s_medi              elseif isol_fina[char] then -                if not last[a_state] == 1 then +                if not last[a_state] == s_init then                      -- tricky, we need to check what last may be ! -                    last[a_state] = 2 -- medi +                    last[a_state] = s_medi                  end -                current[a_state] = 3 -- fina +                current[a_state] = s_fina                  first, last = nil, nil              elseif char >= 0x0600 and char <= 0x06FF then -                current[a_state] = 6 -- rest +                current[a_state] = s_rest                  first, last = finish(first,last)              else --no                  first, last = finish(first,last) @@ -11347,7 +11367,7 @@ end)  -- fonts.hashes.lookups = lookuphashes -local constants = fonts.analyzers.constants +local autofeatures = fonts.analyzers.features -- was: constants  local function initialize(sequence,script,language,enabled)      local features = sequence.features @@ -11357,7 +11377,7 @@ local function initialize(sequence,script,language,enabled)              if valid then                  local languages = scripts[script] or scripts[wildcard]                  if languages and (languages[language] or languages[wildcard]) then -                    return { valid, constants[kind] or false, sequence.chain or 0, kind, sequence } +                    return { valid, autofeatures[kind] or false, sequence.chain or 0, kind, sequence }                  end              end          end | 
