From ed88828fa950808bd5335a7f3342263d4b6e381d Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Sun, 13 Sep 2009 14:24:00 +0200 Subject: beta 2009.09.13 14:24 --- tex/context/base/cont-new.tex | 2 +- tex/context/base/context.tex | 2 +- tex/context/base/font-ini.mkii | 12 +++++-- tex/context/base/font-ini.mkiv | 2 +- tex/context/base/font-xtx.mkii | 49 ++++++++++++++++++++--------- tex/context/base/m-translate.tex | 6 ++-- tex/context/base/strc-lst.lua | 2 +- tex/generic/context/luatex-fonts-merged.lua | 2 +- 8 files changed, 51 insertions(+), 26 deletions(-) diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex index 59c58b5d4..76599f6d4 100644 --- a/tex/context/base/cont-new.tex +++ b/tex/context/base/cont-new.tex @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2009.09.12 14:44} +\newcontextversion{2009.09.13 14:24} %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/context.tex b/tex/context/base/context.tex index b4765d30d..0e8e16e7d 100644 --- a/tex/context/base/context.tex +++ b/tex/context/base/context.tex @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2009.09.12 14:44} +\edef\contextversion{2009.09.13 14:24} %D For those who want to use this: diff --git a/tex/context/base/font-ini.mkii b/tex/context/base/font-ini.mkii index f614a07cd..9eb532d70 100644 --- a/tex/context/base/font-ini.mkii +++ b/tex/context/base/font-ini.mkii @@ -3163,12 +3163,14 @@ \def\definefontfeature {\dotripleargument\dodefinefontfeature} +\def\dododefinefontfeature#1% + {\edef\!!stringa{\ifx\!!stringa\empty\else\!!stringa,\fi\executeifdefined{\??fa#1}\empty}} + \def\dodefinefontfeature[#1][#2][#3]% {\doifassignmentelse{#2} {\setevalue{\??fa#1}{#2}} {\let\!!stringa\empty - \def\mkdodefinefontfeature##1{\edef\!!stringa{\ifx\!!stringa\empty\else\!!stringa,\fi##1}}% - \processcommalist[#2]\mkdodefinefontfeature + \processcommalist[#2]\dododefinefontfeature \setevalue{\??fa#1}{\ifx\!!stringa\empty\else\!!stringa,\fi#3}}} \definefontfeature @@ -3185,11 +3187,15 @@ \definefontfeature % no calt [arabic] - [mode=node,language=dflt,script=arab, + [language=dflt,script=arab, init=yes,medi=yes,fina=yes,isol=yes, liga=yes,dlig=yes,rlig=yes,clig=yes, mark=yes,mkmk=yes,kern=yes,curs=yes] +\definefontfeature + [none] + [features=no] + %D The next auxilliary macro is an alternative to \type %D {\fontname}. diff --git a/tex/context/base/font-ini.mkiv b/tex/context/base/font-ini.mkiv index 705cb12d2..91b789204 100644 --- a/tex/context/base/font-ini.mkiv +++ b/tex/context/base/font-ini.mkiv @@ -2750,7 +2750,7 @@ \definefontfeature [none] - [mode=none,features=off] + [mode=none,features=no] \definefontfeature [virtualmath] diff --git a/tex/context/base/font-xtx.mkii b/tex/context/base/font-xtx.mkii index 5f4b85879..d6086b44e 100644 --- a/tex/context/base/font-xtx.mkii +++ b/tex/context/base/font-xtx.mkii @@ -98,11 +98,14 @@ \fi \fi\fi\fi} +\newconditional\enabledfontfeatures + \def\checkfontfilename% -- todo: integrate so that we call do.. directly {\expandafter\docheckfontfilename\fontfile*\empty*\relax} \def\docheckfontfilename#1*#2#3*#4\relax % class overrules file - {\edef\checkedfontfeatures + {\settrue\enabledfontfeatures + \edef\checkedfontfeatures {\expandafter\ifx\csname\fontclass\s!features\endcsname\empty \ifx\@@fontfeatures\empty\ifx#2\empty\else#2#3\fi\else\@@fontfeatures\fi \else\expandafter\ifx\csname\fontclass\s!features\endcsname\relax % redundant, will go away @@ -121,33 +124,49 @@ \processcommacommand[\checkedfontfeatures]\doconvertfontfeatures % raw \ifx\convertedfontfeatures\empty \let\checkedfontfeatures\empty - \else + \else\ifconditional\enabledfontfeatures \edef\checkedfontfeatures{:\convertedfontfeatures}% - \fi + \else + \let\checkedfontfeatures\empty + \fi\fi \fi \fi \docheckfontfilenameprefix#1:\empty:\empty\relax \doshowcheckedfontfeatures} +\edef\@@fontfeaturesareno {features\v!no} +\edef\@@fontfeaturesareoff{features\v!off} + \def\dodoconvertfontfeatures#1=#2#3=#4\relax {\ifx#2\empty % invalid feature \else\ifcsname @xtx@#1@#2#3\endcsname - \expandafter\ifx\csname @xtx@#1@#2#3\endcsname\empty\else - \edef\convertedfontfeatures{\convertedfontfeatures\csname @xtx@#1@#2#3\endcsname;}% - \fi + \expandafter\ifx\csname @xtx@#1@#2#3\endcsname\empty\else + \edef\convertedfontfeatures{\convertedfontfeatures\csname @xtx@#1@#2#3\endcsname;}% + \fi \else \edef\!!stringa{#1}% \edef\!!stringb{#2#3}% - \edef\convertedfontfeatures - {\convertedfontfeatures - \ifx\!!stringb\v!yes - +\!!stringa - \else\ifx\!!stringb\v!no - -\!!stringa - \else - \!!stringa=\!!stringb - \fi\fi;}% + \edef\!!stringc{#1#2#3}% + \ifx\!!stringc\@@fontfeaturesareoff + \setfalse\enabledfontfeatures + \else\ifx\!!stringc\@@fontfeaturesareno + \setfalse\enabledfontfeatures + \else + \edef\convertedfontfeatures + {\convertedfontfeatures + \ifx\!!stringb\v!yes + +\!!stringa + \else\ifx\!!stringb\v!on + +\!!stringa + \else\ifx\!!stringb\v!no + -\!!stringa + \else\ifx\!!stringb\v!off + -\!!stringa + \else + \!!stringa=\!!stringb + \fi\fi\fi\fi;}% + \fi\fi \fi\fi} \def\doconvertfontfeatures#1% diff --git a/tex/context/base/m-translate.tex b/tex/context/base/m-translate.tex index a9601bdd5..9c550eca7 100644 --- a/tex/context/base/m-translate.tex +++ b/tex/context/base/m-translate.tex @@ -44,14 +44,14 @@ end function translators.reset(s) - resolvers.filters.user_translator = nil + resolvers.install_text_filter("user",nil) list, compiled = nil, nil end function translators.enable(s) - resolvers.filters.user_translator = translators.translate + resolvers.install_text_filter("user",translators.translate) end function translators.disable(s) - resolvers.filters.user_translator = nil + resolvers.install_text_filter("user",nil) end \stopluacode diff --git a/tex/context/base/strc-lst.lua b/tex/context/base/strc-lst.lua index e48138166..c29069121 100644 --- a/tex/context/base/strc-lst.lua +++ b/tex/context/base/strc-lst.lua @@ -13,7 +13,7 @@ if not modules then modules = { } end modules ['strc-lst'] = { local format, tonumber = string.format, tonumber local texsprint, texprint, texwrite, texcount = tex.sprint, tex.print, tex.write, tex.count -local insert, remove = table.insert, table.remove +local concat, insert, remove = table.concat, table.insert, table.remove local trace_lists = false trackers.register("structure.lists", function(v) trace_lists = v end) diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua index 59be57eff..8e8de0a3a 100644 --- a/tex/generic/context/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/texmf/tex/generic/context/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/texmf/tex/generic/context/luatex-fonts.lua --- merge date : 09/12/09 14:46:27 +-- merge date : 09/13/09 14:26:14 do -- begin closure to overcome local limits and interference -- cgit v1.2.3