diff options
Diffstat (limited to 'Master/texmf-dist/tex/context/base/spec-xtx.tex')
-rw-r--r-- | Master/texmf-dist/tex/context/base/spec-xtx.tex | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/spec-xtx.tex b/Master/texmf-dist/tex/context/base/spec-xtx.tex new file mode 100644 index 00000000000..ea355abd7bb --- /dev/null +++ b/Master/texmf-dist/tex/context/base/spec-xtx.tex @@ -0,0 +1,247 @@ +%D \module
%D [ file=spec-xtx,
%D version=2004.11.08,
%D title=\CONTEXT\ Special Macros,
%D subtitle=\XETEX\ support,
%D author={Adam Lindsay \& Hans Hagen \& \unknown},
%D date=\currentdate,
%D copyright={Adam Lindsay \& Hans Hagen}] + +\unprotect + +\startspecials[xetex][reset,dpx] + +%D Actually, there's an intermediate ``\type{xdv}'' +%D output format, but by default, it's tranparently +%D converted to \PDF\ by \XETEX. + +\setjobsuffix{pdf} + +%D Rotation looks fine. + +\definespecial\dostartrotation#1% + {\special{x:gsave}\special{x:rotate #1}} + +\definespecial\dostoprotation% + {\special{x:grestore}} + +%D Scaling and mirroring are also fine. + +\definespecial\dostartscaling#1#2% + {\special{x:gsave}\special{x:scale #1 #2}} + +\definespecial\dostopscaling% + {\special{x:grestore}} + +\definespecial\dostartmirroring% + {\special{x:gsave}\special{x:scale -1 1}} + +\definespecial\dostopmirroring% + {\special{x:grestore}} + +%D Colors are done with the \DVIPDFMX\ color model, which are +%D inherited. + +%D Although hex colors were accommodated by Hans, we'll try the +%D more familiar \DVIPDFMX\ ones. One good side-effect of the +%D previous approach +%D was that it kept track of the color state (transparency +%D in XeTeX is accomplished setting the color to an RGBA quadruple, +%D rather than an RGB triple). So transparency will need another +%D plan. + +% \macros +% {dostarttransparency,dostoptransparency} +% +% \starttypen +% \dostarttransparency{fraction}{type} +% \dostoptransparency +% \stoptypen +% +% Although in \CONTEXT\ transparency is closely integrated +% in the color drivers, in the end it is an independent +% feature. + +%\installspecial [\dostarttransparency] [or] [2] +%\installspecial [\dostoptransparency] [or] [0] + +%D \macros +%D {doloadmapfile,doloadmapline,doresetmapfilelist} +%D +%D \XETEX\ 0.91 allows map file additions, via a special. + +\definespecial\doresetmapfilelist{\special{x:fontmapfile original-empty.map}} +\definespecial\doloadmapfile #1#2{\special{x:fontmapfile #1#2}} +\definespecial\doloadmapline #1#2{\special{x:fontmapline #1#2}} + +%D \XETEX\ supports \type{\doPDFdestination} and +%D \type{\doPDFbookmark} inherited straight from \DVIPDFMX. + +\definespecial\doinsertfile#1#2#3#4#5#6#7#8#9% + {\bgroup + \dodoinsertfile{xtx}{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}{#9}% + \egroup} + +\definefileinsertion{xtx}{jpg}{\xtxhandleotherimage} +\definefileinsertion{xtx}{png}{\xtxhandleotherimage} +\definefileinsertion{xtx}{gif}{\xtxhandleotherimage} +\definefileinsertion{xtx}{tif}{\xtxhandleotherimage} +\definefileinsertion{xtx}{pdf}{\xtxhandlepdfimage } + +\def\xtxhandleotherimage#1#2#3#4#5#6#7#8#9% + {\bgroup % not needed, we load this under a normal catcode regime; \catcode`\"=11 + \XeTeXpicfile "#1" width #7 height #8\relax% + \donetrue + \egroup} + +\def\xtxhandlepdfimage#1#2#3#4#5#6#7#8#9% + {\bgroup % not needed, we load this under a normal catcode regime; \catcode`\"=11 + \checkpdfimagepagenumber{#9} + \XeTeXpdffile "#1" \pdfimagepagenumber\space width #7 height #8 \relax% + \donetrue + \egroup} + +\def\checkpdfimagepagenumber#1% + {\let\pdfimagepagenumber\empty + \getfromcommacommand[#1][1]% + \doifnumberelse\commalistelement + {\ifcase\commalistelement\else + \edef\pdfimagepagenumber{page \commalistelement}% + %\message{(pdf image \pdfimagepagenumber)}% + \fi} + {}} + +% \type{\getfiguredimensionsA} calls this one. +% \type{\executedtrue} means it was able to get the desired +% dogetfiguresizeBLAH method for the image type. +% \type{\donetrue} means that the image was successfully +% measured to be more than zero points. + +\def\dogetXTXfiguresize#1#2#3#4#5#6#7% + {#4\zeropoint + #5\zeropoint + \setbox\foundexternalfigure\vbox{\XeTeXpicfile "#2"}% + #6\wd\foundexternalfigure + #7\ht\foundexternalfigure + \ifdim\wd\foundexternalfigure=\zeropoint % \ifzeropt\wd\foundexternalfigure + #1{#2}{#3}{#4}{#5}{#6}{#7}% + \fi} + +\def\dogetXTXpdfsize#1#2#3#4#5#6#7% + {#4\zeropoint + #5\zeropoint + \checkpdfimagepagenumber{#3} + \setbox\foundexternalfigure\vbox{\XeTeXpdffile "#2" \pdfimagepagenumber}% \relax not needed + #6\wd\foundexternalfigure + #7\ht\foundexternalfigure + \ifdim\wd\foundexternalfigure=\zeropoint % \ifzeropt\wd\foundexternalfigure + #1{#2}{#3}{#4}{#5}{#6}{#7}% + \fi} + +\let\normaldogetfiguresizepng=\dogetfiguresizepng +\let\normaldogetfiguresizetif=\dogetfiguresizetif +\let\normaldogetfiguresizejpg=\dogetfiguresizejpg +\let\normaldogetfiguresizegif=\dogetfiguresizegif +\let\normaldogetfiguresizepdf=\dogetfiguresizepdf + +\def\dogetfiguresizepng{\dogetXTXfiguresize\normaldogetfiguresizepng} +\def\dogetfiguresizejpg{\dogetXTXfiguresize\normaldogetfiguresizejpg} +\def\dogetfiguresizegif{\dogetXTXfiguresize\normaldogetfiguresizegif} +\def\dogetfiguresizetif{\dogetXTXfiguresize\normaldogetfiguresizetif} +\def\dogetfiguresizepdf{\dogetXTXpdfsize\normaldogetfiguresizepdf} + +\appendtoksonce + \let\dogetfiguresizepng\normaldogetfiguresizepng + \let\dogetfiguresizetif\normaldogetfiguresizetif + \let\dogetfiguresizejpg\normaldogetfiguresizejpg + \let\dogetfiguresizegif\normaldogetfiguresizegif + \let\dogetfiguresizepdf\normaldogetfiguresizepdf +\to \everyresetspecials + +%D The figure object system caused no end of headaches. They all +%D went away with this single line: + +\setupexternalfigures[\c!object=\v!no] + +\stopspecials + +\protect + +%\endinput + +% FOR THE MOMENT HERE + +\ifx\dqfontquote\undefined \else \endinput \fi + +\unprotect + +% actually, we can use "" in pdftex> 1.20 as well + +\def\parsefontspec#1% + {\xdef\somefontspec{#1\space}% + \@EA\doparsefontspec\somefontspec\relax]% =>#1 \empty] + \donoparsefontspec} + +\def\doparsefontspec#1% + {\ifx"#1% + \@EA\dodqparsefontspec + \else\ifx'#1% + \@EAEAEA\dosqparsefontspec + \else + \@EAEAEA\dodoparsefontspec + \fi\fi#1} + +\def\dqfontquote{"} +\def\sqfontquote{'} + +\def\dodqparsefontspec"#1"#2% + {\def\somefontname{#1}% + \let\somefontquote\dqfontquote + \ifx#2\relax\@EA\setnaturalfontspec\else\@EA\setforcedfontspec\fi#2} + +\def\dosqparsefontspec'#1'#2% + {\def\somefontname{#1}% + \let\somefontquote\sqfontquote + \ifx#2\relax\@EA\setnaturalfontspec\else\@EA\setforcedfontspec\fi#2} + +\def\dodoparsefontspec#1 #2% + {\def\somefontname{#1}% + \let\somefontquote\empty + \ifx\somefontname\empty % space before fontname + \@EA\doparsefontspec + \else\ifx#2\relax + \@EAEAEA\setnaturalfontspec + \else + \@EAEAEA\setforcedfontspec + \fi\fi + #2} + +\def\setnaturalfontspec#1]% + {\@fs@scaled\plusthousand\relax} + +\def\setforcedfontspec#1 #2\relax]% + {\csname\@fs@#1\endcsname#2\relax} + +\beginXETEX \font + +\def\donoparsefontspec % #1 == \cs + {\edef\fontfile{\somefontquote\truefontname\somefontname\somefontquote}% + \ifx\fontfile\s!unknown \let\fontfile\defaultfontfile \fi + \edef\lastfontname{\fontfile\somefontspec}% + \ifx\fontclass\empty + \expandafter\definefontlocal + \else + \expandafter\definefontglobal + \fi} % #1 == \cs + +\endXETEX + +\protect \endinput + +\starttext + +\definedfont[{cmr10} at 40pt] test +\definedfont['cmss10' at 40pt] test +\definedfont["cmtt10" at 40pt] test + +\definedfont[{cmr10} at 40pt] test +\definedfont['cmss10' at 40pt] test +\definedfont["cmtt10" at 40pt] test + +% \definedfont["Gentium" at 40pt] test + +\stoptext + |