diff options
author | Taco Hoekwater <taco@elvenkind.com> | 2011-06-01 08:54:21 +0000 |
---|---|---|
committer | Taco Hoekwater <taco@elvenkind.com> | 2011-06-01 08:54:21 +0000 |
commit | d7ccb42582f85acf30568913610ccf4d602023fb (patch) | |
tree | 7292e3545a420676878e7451b68892d360c62cb6 /Master/texmf-dist/tex/context/base/typo-dir.mkiv | |
parent | 2d62a6fe9b80def59c392268022f1f9a2d6e358f (diff) |
commit context 2011.05.18
git-svn-id: svn://tug.org/texlive/trunk@22719 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/typo-dir.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/typo-dir.mkiv | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/typo-dir.mkiv b/Master/texmf-dist/tex/context/base/typo-dir.mkiv new file mode 100644 index 00000000000..b4e7cb67fb0 --- /dev/null +++ b/Master/texmf-dist/tex/context/base/typo-dir.mkiv @@ -0,0 +1,143 @@ +%D \module +%D [ file=typo-dir, +%D version=2009.03.27, % code moved from core-spa.mkiv +%D title=\CONTEXT\ Typesetting Macros, +%D subtitle=Directions, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright=\PRAGMA] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\writestatus{loading}{ConTeXt Typesetting Macros / Directions} + +\unprotect + +\registerctxluafile{typo-dir}{1.001} + +\definesystemattribute[directions][public] + +% experimental directions + +\unexpanded\def\setdirection[#1]% todo: symbolic names + {\ctxlua{typesetters.directions.set(#1)}} + +\unexpanded\def\resetdirection + %{\ctxlua{typesetters.directions.set(0)}} + {\attribute\directionsattribute\attributeunsetvalue} + +\newtoks\everysetupdirections + +\unexpanded\def\setupdirections[#1]% there will be more like setting up directions themselves + {\getparameters[\??di][#1]% + \the\everysetupdirections} + +\newconstant\directionsbidimode + +\letvalue{\??di:bidi:\v!off }\zerocount +\letvalue{\??di:bidi:\v!global}\plusone +\letvalue{\??di:bidi:\v!local }\plustwo +\letvalue{\??di:bidi:\v!on }\plustwo + +\appendtoks + \directionsbidimode\executeifdefined{\??di:bidi:\@@dibidi}\zerocount\relax + \ifcase\directionsbidimode + \resetdirection + \or + \setdirection[1]% global, chars + \or + \setdirection[2]% local, attributes + \or + \setdirection[1]% default + \fi +\to \everysetupdirections + +% bidi: local=obey grouping, global=ignore grouping (unicode has no grouping) + +\setupdirections % maybe start/stop + [bidi=\v!off] + +\unexpanded\def\bidilre{\utfchar{"0x202A}} +\unexpanded\def\bidirle{\utfchar{"0x202B}} +\unexpanded\def\bidipop{\utfchar{"0x202C}} +\unexpanded\def\bidilro{\utfchar{"0x202D}} +\unexpanded\def\bidirlo{\utfchar{"0x202E}} + +\unexpanded\def\dirlre{\ifcase\directionsbidimode\or\bidilre\or\textdir TLT\fi} +\unexpanded\def\dirrle{\ifcase\directionsbidimode\or\bidirle\or\textdir TRT\fi} +\unexpanded\def\dirlro{\ifcase\directionsbidimode\or\bidilro\or\setdirection[3]\fi} +\unexpanded\def\dirrlo{\ifcase\directionsbidimode\or\bidirlo\or\setdirection[4]\fi} + +% for the moment: \setdirection[\plusone] + +\protect \endinput + +% bidi test + +\definefontfeature + [arab] + [mode=node,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] + +\font\Arabic=arabtype*arab at 20pt + +\def\LATIN{LATIN} {\setdirection[1]} % enable this +\def\ARAB {محمد} + +\startluacode + function documentdata.split_tokens(str) + for s in str:bytes() do + tex.sprint(tex.ctxcatcodes,string.format("\\hbox{\\char %s}",s)) + end + end +\stopluacode + +\def\biditest#1#2#3% font text raw + {\dontleavehmode\hbox + {\framed[offset=overlay]{\tttf#2}\quad + \enabletrackers[typesetters.directions]% + \framed[offset=overlay]{#1#3}\quad + \disabletrackers[typesetters.directions]% + \tttf\ctxlua{documentdata.split_tokens([[\detokenize{#3}]])}}} + +\startbuffer[bidi-sample] +\biditest\Arabic{LATIN BARA}{\textdir TLT\relax \LATIN\ \ARAB}\par +\biditest\Arabic{BARA LATIN}{\textdir TRT\relax \LATIN\ \ARAB}\par +\biditest\Arabic{LATIN ARAB}{\textdir TLT{\bidilro \LATIN\ \ARAB}}\par % right -> left +\biditest\Arabic{LATIN ARAB}{\textdir TRT{\bidilro \LATIN\ \ARAB}}\par % right -> left +\biditest\Arabic{BARA NITAL}{\textdir TLT{\bidirlo \LATIN\ \ARAB}}\par % left -> right +\biditest\Arabic{BARA NITAL}{\textdir TRT{\bidirlo \LATIN\ \ARAB}}\par % left -> right +\stopbuffer + +\startbuffer[bidi-sample] +\biditest\Arabic{LATIN BARA}{\textdir TLT\relax \LATIN\ \ARAB}\par +\biditest\Arabic{BARA LATIN}{\textdir TRT\relax \LATIN\ \ARAB}\par +\biditest\Arabic{LATIN ARAB}{\textdir TLT\bidilro \LATIN\ \ARAB}\par % right -> left +\biditest\Arabic{LATIN ARAB}{\textdir TRT\bidilro \LATIN\ \ARAB}\par % right -> left +\biditest\Arabic{BARA NITAL}{\textdir TLT\bidirlo \LATIN\ \ARAB}\par % left -> right +\biditest\Arabic{BARA NITAL}{\textdir TRT\bidirlo \LATIN\ \ARAB}\par % left -> right +\stopbuffer + +\startbuffer[bidi-setup] +\setupdirections[bidi=off] +\stopbuffer + +{\typebuffer[bidi-setup] \getbuffer[bidi-setup] \getbuffer[bidi-sample]} + +\startbuffer[bidi-setup] +\setupdirections[bidi=global] +\stopbuffer + +{\typebuffer[bidi-setup] \getbuffer[bidi-setup] \getbuffer[bidi-sample]} + +\startbuffer[bidi-setup] +\setupdirections[bidi=local] +\stopbuffer + +{\typebuffer[bidi-setup] \getbuffer[bidi-setup] \getbuffer[bidi-sample]} + +\stoptext |