diff options
Diffstat (limited to 'Master/texmf-dist/doc/luatex/luaotfload/filegraph.tex')
-rw-r--r-- | Master/texmf-dist/doc/luatex/luaotfload/filegraph.tex | 265 |
1 files changed, 265 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/luatex/luaotfload/filegraph.tex b/Master/texmf-dist/doc/luatex/luaotfload/filegraph.tex new file mode 100644 index 00000000000..e37167400c5 --- /dev/null +++ b/Master/texmf-dist/doc/luatex/luaotfload/filegraph.tex @@ -0,0 +1,265 @@ +% !Mode:: "TeX:EN:UTF-8:Main" +%created with by @marmot 14.09.2018 +% +\documentclass[border=3.14mm,tikz]{standalone} +\usetikzlibrary{fit,matrix,positioning,arrows.meta,decorations.text,shapes.callouts} +\pgfdeclarelayer{background} +\pgfdeclarelayer{container} +\pgfdeclarelayer{foreground} +\pgfsetlayers{container,background,main,foreground} +\usepackage {fontspec} +\usepackage {unicode-math} +\usepackage{tikzmarmots,tikzducks} + +\setmainfont[ +% Numbers = OldStyle, %% buggy with font cache + Ligatures = TeX, + BoldFont = {Linux Libertine O Bold}, + ItalicFont = {Linux Libertine O Italic}, + SlantedFont = {Linux Libertine O Italic}, +]{Linux Libertine O} +\setmonofont[Ligatures=TeX,Scale=MatchLowercase]{InconsolataN-Regular.otf} +%setsansfont[Ligatures=TeX]{Linux Biolinum O} +\setsansfont[Ligatures=TeX,Scale=MatchLowercase]{Iwona Medium} + +\usepackage{luacode} +\begin{luacode} +require("luaotfload-filelist.lua") + +function printctxfontlist () + t= luaotfload.filelist.selectctxfontentries (luaotfload.filelist.data) + for i,v in ipairs (t) do + tex.sprint("\\mbox{"..v.name..v.ext.."} ") + end +end + +function printctxlibslist () + t= luaotfload.filelist.selectctxlibsentries (luaotfload.filelist.data) + local rowcnt = 0 + local sep = "&" + for i,v in ipairs (t) do + rowcnt = rowcnt + 1 + if rowcnt % 4 == 0 then sep = "\\\\" else sep = "&" end + tex.sprint("\\mbox{"..v.name..v.ext.."}".. sep) + end +end + +function printctxgenericlist () + t= luaotfload.filelist.selectctxgeneusedentries (luaotfload.filelist.data) + local rowcnt = 0 + local sep = "&" + for i,v in ipairs (t) do + rowcnt = rowcnt + 1 + if rowcnt % 2 == 0 then sep = "\\\\" else sep = "&" end + tex.sprint("\\mbox{"..v.ctxpref..v.name..v.ext.."}".. sep) + end +end + + +function printlibrarylist () + t = luaotfload.filelist.selectlollibentries (luaotfload.filelist.data) + local rowcnt = 0 + local sep = "&" + for i,v in ipairs (t) do + rowcnt = rowcnt + 1 + if rowcnt % 2 == 0 then sep = "\\\\" else sep = "&" end + tex.sprint("\\mbox{"..v.gitpref..v.name..v.ext.."}".. sep) + end +end + +function printscriptlist () + t = luaotfload.filelist.selectlolscrentries (luaotfload.filelist.data) + for i,v in ipairs ( t ) do + if v.kind == 8 then + tex.sprint( v.name .."\\\\") + end + end +end + +\end{luacode} +\begin{document} +\begin{tikzpicture}[rounded corners,basic/.style={inner +sep=9pt,font=\ttfamily,align=center}] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% text nodes +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% m1 +\matrix [matrix of nodes,font=\ttfamily,nodes={anchor=base west}, +label={[name=mL1,font=\itshape]above:Luaotfload Libraries}] (m1) +{% +%<<<<<<<<<<<<<<<< +\directlua{printlibrarylist()} +%>>>>>>>>>>>>>>>> +}; +% m2 +\node[right=4.2cm of m1,fill=gray!20,draw=gray!30,dashed,basic] (m2) {luaotfload-blacklist.cnf}; +% m3 +\matrix [below=2cm of m1,matrix of nodes,font=\ttfamily,nodes={anchor=base west}, +label={[name=mL3,font=\itshape,anchor=south]above:Lualibs -- Lua Libraries from Context}] (m3) +{% +%<<<<<<<<<<<<<<<< +\directlua{printctxlibslist ()} +%>>>>>>>>>>>>>>>> +}; +% m4 +\node[left=2cm of m3,fill=gray!20,draw=gray!30,thick,basic,inner sep=6mm] (m4) {luaotfload-main.lua}; +% m5 +\node[fill=gray!20,draw=gray!30,dashed,basic,inner sep=6mm,anchor=south west] at (m3.south -| +m2.west)(m5){% +%<<<<<<<<<<<<<<<< +luaotfload-names.lua.gz\\ +luaotfload-names.luc +%>>>>>>>>>>>>>>>> +}; +% m6 +\node[below=3cm of m3,fill=gray!20,draw=gray!30,thick,basic,inner sep=6mm] (m6){luaotfload-init.lua}; +% m7 +\node[above right=0.5cm and 2.5cm of m6,fill=gray!20,draw=gray!30,thick,basic,inner sep=6mm] (m7){luaotfload-log.lua}; +% m8 +\matrix [below left=1cm and 2cm of m6,matrix of nodes,font=\ttfamily, +row sep=5mm, +nodes={inner sep=3mm,fill=orange!10,rounded corners}, +label={[name=mL8,font=\it]above:Fontloader}] (m8) +{% +%<<<<<<<<<<<<<<<< +fontloader-basics-gen.lua\\ +fontloader-YY-MM-DD.lua\\ +%<<<<<<<<<<<<<<<< +}; +% m9 +\node [below right=1cm and 2cm of m6,font=\ttfamily, +inner sep=3mm,text width=7.3cm,align=left, +label={[name=mL9,font=\itshape]Font and Node Libraries from Context}] (m9) +{\spaceskip=1.5em \raggedright +%%<<<<<<<<<<<<<<<< +\directlua{printctxfontlist()} +%>>>>>>>>>>>>>>>> +}; +% m10 +\node [below=1cm of m9,font=\ttfamily, +inner sep=3mm,text width=7.3cm,align=center, +label={[name=mL10,font=\itshape]Font Loader (LuaTeX-Fonts)}] (m10) +{\tabcolsep=0.5em + \begin{tabular}{@{}ll@{}} +%<<<<<<<<<<<<<<<< +\directlua{printctxgenericlist ()} +%>>>>>>>>>>>>>>>> + \end{tabular} +}; +% m11 +\node [above=1cm of m9] (m11) {Merged libraries}; +% m12 +\matrix [below=4cm of m6,xshift=-1cm,matrix of nodes,font=\ttfamily, +row sep=5mm, +nodes={inner sep=3mm,fill=gray!10,rounded corners,text width=3cm,align=center}, +label={[name=mL12,font=\sffamily]above:Standalone scripts}] (m12) +{% +%<<<<<<<<<<<<<<<< +\directlua{printscriptlist ()} +%>>>>>>>>>>>>>>>> +}; +% m13 +\node[below=1.2cm of m10,fill=gray!20,draw=gray!30,thick,basic,inner sep=6mm] (m13) +{% +%<<<<<<<<<<<<<<<< +luaotfload-glyphlist.lua +%>>>>>>>>>>>>>>>> +}; +% m14 +\node[below=0.8cm of m13,fill=gray!20,draw=gray!30,thick,basic,inner sep=6mm] (m14) +{% +%<<<<<<<<<<<<<<<< +luaotfload-characters.lua +%>>>>>>>>>>>>>>>> +}; +% m15 +\node[below=3cm of m8,fill=gray!20,draw=gray!30,thick,basic,inner sep=6mm] +(m15) {% +%<<<<<<<<<<<<<<<< +luaotfload-tool.lua +%>>>>>>>>>>>>>>>> +}; +% m16 +\node[below=1cm of m15,fill=gray!20,draw=gray!30,thick,basic,inner sep=6mm] +(m16) {% +%<<<<<<<<<<<<<<<< +luaotfload-diagnostics.lua +%>>>>>>>>>>>>>>>> +}; +% m17 +\node[below=2cm of m16,xshift=3cm,fill=gray!20,draw=gray!30,dashed,basic,inner sep=6pt] +(m17) {% +%<<<<<<<<<<<<<<<< +luaotfload-status.lua +%>>>>>>>>>>>>>>>> +}; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% envelopes +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{pgfonlayer}{background} +%M1 +\node[fill=gray!10,fit=(m1)(mL1),rounded corners=0](mF1){}; +%M3 +\node[fill=blue!10,fit=(m3)(mL3),rounded corners=0](mF3){}; +%M9 +\node[fill=purple!10,fit=(m9)(mL9)](mF9){}; +%M10 +\node[fill=purple!10,fit=(m10)(mL10)](mF10){}; +\end{pgfonlayer} +\begin{pgfonlayer}{container} +%M1 +\node[fill=gray!20,fit=(mF1)](M1){}; +%M3 +\node[fill=blue!20,fit=(mF3)](M3){}; +%M8 +\node[fill=orange!20,fit=(m8)(mL8)](mF8){}; +%M11 +\node[fill=purple!20,fit=(m11)(mF9)(mF10)](M11){}; +%M11 +\node[top color=gray!40,bottom color=red!60!black,fit=(mL12)(m12)](M12){}; +\end{pgfonlayer} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% arrows +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{scope}[font=\sffamily,>={Triangle[open]},annotate/.style={postaction={decorate,decoration={text along path,text +align=center,raise=2pt,text={|\sffamily| #1}}}}] +\draw[->,annotate=luaotfload-database.lua] (M1) -- (m2); +\draw[->,annotate=main()] (m4) -- (M1); +\draw[->] (m4) -- (M3); +\draw[->,annotate=luaotfload-database.lua] (M1.-15) to[out=0,in=90] (m5); +\draw[->,annotate=main()] (m4) to[out=-70,in=120] (m6); +\draw[->,annotate=init{{\_}}early()] (m6) to[out=45,in=190] (m7); +\draw[<-,annotate=init{{\_}}early()] (m8-1-1) to[in=-150,out=0] (m6); +\draw[<-,annotate=init{{\_}}main()] (m8-2-1) to[in=-100,out=4] (m6); +\draw[->,annotate=unmerged] (m6) to[out=0,in=180] (mF9.150); +\draw[->,dashed,annotate=merged] (m8-2-1) to[out=0,in=180] (mF9.170); +\draw[->,dashed,annotate=pulls] (m12-1-1) to[out=0,in=180] (mF9); +\draw[->,dashed,annotate=pulls] (m12-1-1) to[out=0,in=180] (mF10); +\draw[<-,dashed,annotate=merges] (m8-2-1) to[out=-45,in=180] (m12-1-1); +\draw[->] (mF10) to node[midway,left]{luatex-fonts-enc.lua} (m13); +\draw[->] (mF10.-30) to[out=-60,in=50]node[pos=0.3,right]{ luaotfload-auxiliary.lua} (m14.15); +\draw[->,dashed,annotate=generates from glyphlist.txt] (m12-2-1) to[out=0,in=180] (m13); +\draw[->,dashed,annotate=generates from Context's char-def.lua] (m12-3-1) to[out=0,in=180] (m14); +\draw[->,dashed,annotate={{-}{-}update}] (m15) to[out=130,in=-80] ++ (-3.5,4) +to[out=100,in=-110] ++ (0,2) +to[out=70,in=-165] (m5); +\draw[->,annotate=version information] (m15) to[out=-170,in=90] ++(-3.5,-3) +to[out=-90,in=180] (m17); +\draw[->] (m15) -- node[midway,right]{-\,-diagnose} (m16); +\draw[->,annotate=hash files] (m16) -- (m17); +\draw[<-,dashed,annotate=generates from distribution files] (m17) +to[out=0,in=-135] ++(5,1) to[out=45,in=0] (m12-4-1); +\end{scope} + +\begin{scope}[shift={([xshift=2cm,yshift=-3cm]current bounding box.north west)}] +\marmot; +\duck[invisible]; +\node[anchor=south,draw,text width=3cm,shape=rectangle callout,font=\sffamily\scriptsize,align=center] +at ([yshift=1cm,xshift=-0.5cm]bill) +{It looks complicated\\ because it is complicated!}; +% +\end{scope} + +\end{tikzpicture} +\end{document}
\ No newline at end of file |