From 8114597629901975313c670cf46e374e8052cd52 Mon Sep 17 00:00:00 2001 From: Marius Date: Tue, 22 Jan 2013 20:00:20 +0200 Subject: beta 2013.01.22 18:33 --- tex/context/base/cont-new.mkii | 2 +- tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context-version.pdf | Bin 4122 -> 4129 bytes tex/context/base/context-version.png | Bin 40132 -> 40255 bytes tex/context/base/context.mkii | 2 +- tex/context/base/context.mkiv | 2 +- tex/context/base/font-mis.lua | 2 +- tex/context/base/font-otf.lua | 2 +- tex/context/base/font-otp.lua | 30 +++--- tex/context/base/l-string.lua | 1 - tex/context/base/meta-ini.mkiv | 2 +- tex/context/base/mlib-pps.mkiv | 6 +- tex/context/base/mult-low.lua | 2 + tex/context/base/pack-box.mkiv | 14 +-- tex/context/base/pack-com.mkiv | 6 +- tex/context/base/page-box.mkvi | 8 +- tex/context/base/page-txt.mkvi | 20 ++-- tex/context/base/status-files.pdf | Bin 24733 -> 24787 bytes tex/context/base/status-lua.pdf | Bin 208427 -> 208438 bytes tex/context/base/supp-box.mkiv | 2 +- tex/context/base/tabl-tbl.mkiv | 37 +------- tex/context/base/typo-del.mkiv | 22 ++--- tex/generic/context/luatex/luatex-fonts-merged.lua | 102 ++++++++++++--------- 23 files changed, 128 insertions(+), 136 deletions(-) (limited to 'tex') 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.pdf index 1e37d5bb4..1318060a5 100644 Binary files a/tex/context/base/context-version.pdf and b/tex/context/base/context-version.pdf differ diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.png index beb1a9ba9..26753f6a0 100644 Binary files a/tex/context/base/context-version.png and b/tex/context/base/context-version.png differ 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.pdf index 0c20b0e47..9db601262 100644 Binary files a/tex/context/base/status-files.pdf and b/tex/context/base/status-files.pdf differ diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf index 8f0c2a65d..06121b179 100644 Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ 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.

--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 -- cgit v1.2.3