strict digraph luaotfload_files { //looks weird with circo ...
    compound       = true;

//  label          = "Schematic of the files included in Luaotfload.";
//  labelloc       = "b";

    fontsize       = "14.4";
    labelfontname  = "Iwona Medium Regular";
    fontname       = "Iwona Light Regular";
    size           = "21cm";

    rankdir        = LR;
    ranksep        = 0.618;
    nodesep        = 1.618;

    edge [
        arrowhead = onormal,
        fontname  = "Iwona Cond Regular",
        penwidth  = 1.0,
    ];
    node [
        //penwidth = 0.7,
        fontname = "Liberation Mono",
        fontsize = 12,
    ];

/* ····································································
 * file structure
 * ································································· */
    fontdbutil  -> font_names   [label="--update",
                                 style=dashed]

    luaotfload -> merged_lua_libs     [style=solid]
    luaotfload -> luaotfload_init     [label="main()",   style=solid]
    luaotfload -> luaotfload_libs     [label="main()",   style=solid]

    fontloader        -> merged_luatex_fonts [label="merged",
                                              style=dotted,
                                              lhead=cluster_merged]
    fontloader        -> merged_context_libs [label="merged",
                                              style=dotted,
                                              lhead=cluster_merged]

    luaotfload_init -> luaotfload_log        [label="init_early()", style=solid]
    luaotfload_init -> luaotfload_basics_gen [label="init_early()", style=solid]
    luaotfload_init -> fontloader            [label="init_main()",  style=solid]

    luaotfload_init -> merged_luatex_fonts [label="unmerged", style=solid]
    luaotfload_init -> merged_context_libs [label="unmerged", style=solid]

    merged_luatex_fonts -> font_age [label="luatex-fonts-enc.lua",
                                     ltail=cluster_merged]

    fontdbutil -> fontdbutil_diagnostics [label="--diagnose"]
    fontdbutil -> status [label="version information"]

    mkimport -> fontloader [label="merges", style=dashed]

    merged_luatex_fonts -> characters [label="luaotfload-auxiliary.lua",
                                       ltail=cluster_merged]

    luaotfload_libs -> font_names         [label="luaotfload-database.lua"]
    luaotfload_libs -> otfl_blacklist_cnf [label="luaotfload-database.lua"]


    mkstatus    -> status     [label="generates from distribution files",
                               style=dashed]

    mkglyphlist -> font_age     [label="generates from glyphlist.txt",
                                 style=dashed]

    mkcharacters -> characters     [label="generates from Context’s char-def.lua",
                                    style=dashed]

    fontdbutil_diagnostics -> status [label="hash files"]

    mkimport -> merged_luatex_fonts [label="pulls", style=dashed, constraint=no];
    mkimport -> merged_context_libs [label="pulls", style=dashed, constraint=no];

    subgraph { rank = same;
               fontdbutil;
               luaotfload }

    subgraph cluster_scripts {
        node [style=filled, color=white];
        style     = "filled,rounded";
        color     = "#44000011:#CCCCCC77";
        //nodesep   = "3.0";
        rank      = same;
        label     = "Standalone scripts";
        gradientangle=90;
        mkcharacters;
        mkglyphlist;
        mkimport;
        mktest;
        mkstatus;
    }

/* ····································································
 * main files
 * ································································· */

    fontdbutil        [label  = "luaotfload-tool.lua",
                       shape  = rect,
                       width  = "3.2cm",
                       height = "1.2cm",
                       color  = "#01012222",
                       style  = "filled,rounded",
                       penwidth=2]

    fontdbutil_diagnostics [label  = "luaotfload-diagnostics.lua",
                            shape  = rect,
                            width  = "3.2cm",
                            height = "1.2cm",
                            color  = "#01012222",
                            style  = "filled,rounded",
                            penwidth=2]

    mktest           [label  = "mktest",
                       shape  = rect,
                       width  = "3.2cm",
                       height = "0.618cm",
                       color  = "#FFFFFF66",
                       style  = "filled,rounded",
                       penwidth=2]

    mkimport          [label  = "mkimport",
                       shape  = rect,
                       width  = "3.2cm",
                       height = "0.618cm",
                       color  = "#FFFFFF66",
                       style  = "filled,rounded",
                       penwidth=2]

    mkstatus          [label  = "mkstatus",
                       shape  = rect,
                       width  = "3.2cm",
                       height = "0.618cm",
                       color  = "#FFFFFF66",
                       style  = "filled,rounded",
                       penwidth=2]

    mkglyphlist       [label  = "mkglyphlist",
                       shape  = rect,
                       width  = "3.2cm",
                       height = "0.618cm",
                       color  = "#FFFFFF66",
                       style  = "filled,rounded",
                       penwidth=2]

    mkcharacters      [label  = "mkcharacters",
                       shape  = rect,
                       width  = "3.2cm",
                       height = "0.618cm",
                       color  = "#FFFFFF66",
                       style  = "filled,rounded",
                       penwidth=2]

    luaotfload        [label  = "luaotfload-main.lua",
                       shape  = rect,
                       width  = "3.2cm",
                       height = "1.2cm",
                       color  = "#01012222",
                       style  = "filled,rounded",
                       penwidth=2]
    /*
     *otfl_fonts        [label = "luaotfload-fonts.lua",
     *                   shape = rect,
     *                   width  = "3.2cm",
     *                   height = "1.2cm",
     *                   color  = "#01012222",
     *                   style  = "filled,rounded",
     *                   penwidth=2]
     */
    luaotfload_init       [label = "luaotfload-init.lua",
                           shape = rect,
                           width  = "3.2cm",
                           height = "1.2cm",
                           color  = "#44440122",
                           style  = "filled,rounded",
                           penwidth=2]

    luaotfload_log        [label = "luaotfload-log.lua",
                           shape = rect,
                           width  = "3.2cm",
                           height = "1.2cm",
                           color  = "#44440122",
                           style  = "filled,rounded",
                           penwidth=2]

    luaotfload_basics_gen [label = "fontloader-basics-gen.lua",
                           shape = rect,
                           width  = "3.2cm",
                           height = "1.2cm",
                           color  = "#FFFFFF66",
                           style  = "filled,rounded",
                           penwidth=2]

    fontloader            [label = "fontloader-YY-MM-DD.lua",
                           shape = rect,
                           width  = "3.2cm",
                           height = "1.2cm",
                           color  = "#FFFFFF66",
                           style  = "filled,rounded",
                           penwidth=2]

/* ····································································
 * luaotfload files
 * ································································· */

    characters [style      = "filled,dashed",
                shape      = rect,
                width      = "3.2cm",
                fillcolor  = "#01012222",
                color      = grey40,
                style      = "filled,dotted,rounded",
                label      = "luaotfload-characters.lua"]

    font_age [style      = "filled,dashed",
              shape      = rect,
              width      = "3.2cm",
              fillcolor  = "#01012222",
              color      = grey40,
              style      = "filled,dotted,rounded",
              label      = "luaotfload-glyphlist.lua"]

    font_names [style      = "filled,dashed",
                shape      = rect,
                width      = "3.2cm",
                fillcolor  = "#01012222",
                color      = grey40,
                style      = "filled,dotted,rounded",
                label      = "luaotfload-names.lua.gz\nluaotfload-names.luc"]

    status [style      = "filled,dashed",
            shape      = rect,
            width      = "3.2cm",
            fillcolor  = "#01012222",
            color      = grey40,
            style      = "filled,dotted,rounded",
            label      = "luaotfload-status.lua"]

    otfl_blacklist_cnf [style      = "filled,dashed",
                        shape      = rect,
                        width      = "3.2cm",
                        fillcolor  = "#01012222",
                        color      = grey40,
                        style      = "filled,dotted,rounded",
                        label      = "luaotfload-blacklist.cnf"]

    luaotfload_libs [
        shape      = box,
        style      = "filled,rounded",
        color      = "grey90",
        fontsize   = 10,
        label      = <
            <table cellborder="0" bgcolor="#FFFFFFAA">
                <th> <td colspan="2"> <font point-size="12" face="Iwona Italic">Luaotfload Libraries</font> </td> </th>
                <tr> <td>luaotfload-auxiliary.lua</td>    <td>luaotfload-features.lua</td>      </tr>
                <tr> <td>luaotfload-loaders.lua</td>      <td>luaotfload-colors.lua</td>        </tr>
                <tr> <td>luaotfload-resolvers.lua</td>    <td>luaotfload-letterspace.lua</td>   </tr>
                <tr> <td>luaotfload-parsers.lua</td>      <td>luaotfload-database.lua</td>      </tr>
                <tr> <td>luaotfload-configuration.lua</td><td></td>                             </tr>
            </table>
        >,
    ]

/* ····································································
 * merged files
 * ································································· */

   subgraph cluster_merged {
       node [style=filled, color=white];
       style     = "filled,rounded";
       color     = "#912CEE33";
       //nodesep   = "3.0";
       rank      = same;
       label     = "Merged Libraries";
       gradientangle=0;
       merged_luatex_fonts;
       merged_context_libs;
   }

    fontloader -> merged_luatex_fonts
    fontloader -> merged_context_libs

   subgraph cluster_fontloader {
       node [style=filled, color=white];
       style     = "filled,rounded";
       color     = "bisque";
       //nodesep   = "3.0";
       rank      = same;
       label     = "Fontloader";
       gradientangle=0;
       luaotfload_basics_gen;
       fontloader;
   }

    merged_lua_libs [
        shape      = box,
        style      = "filled,rounded",
        color      = "#CCCC1166",
        fontsize   = 10,
        fontsize   = 10,
        label      = <
            <table border="0">
                <th> <td colspan="3"> <font point-size="12" face="Iwona Italic">
                        Lualibs &ndash; Lua Libraries from Context</font> </td> </th>
                <tr> <td>l-lua.lua</td>     <td>l-lpeg.lua</td>    <td>l-function.lua</td>  </tr>
                <tr> <td>l-string.lua</td>  <td>l-table.lua</td>   <td>l-io.lua</td>        </tr>
                <tr> <td>l-file.lua</td>    <td>l-boolean.lua</td> <td>l-math.lua</td>      </tr>
                <tr> <td>util-str.lua</td>  <td>util-fil.lua</td>                           </tr>
            </table>
        >,
    ]

    merged_luatex_fonts [
        shape      = box,
        style      = "filled,rounded",
        color      = "#FFFFFFAA",
        fontsize   = 10,
        label      = <
            <table border="0">
                <th> <td colspan="2"> <font point-size="12" face="Iwona Italic">Font Loader (LuaTeX-Fonts)</font> </td> </th>
                <tr>
                    <td>luatex-basics-nod.lua</td>
                    <td>luatex-basics-chr.lua</td>
                </tr>
                <tr>
                    <td>luatex-fonts-enc.lua</td>
                    <td>luatex-fonts-syn.lua</td>
                </tr>
                <tr>
                    <td>luatex-fonts-ext.lua</td>
                </tr>
            </table>
        >,
    ]

    merged_context_libs [
        shape      = box,
        style      = "filled,rounded",
        color      = "#FFFFFFAA",
        fontsize   = 10,
        label      = <
            <table border="0">
                <th> <td colspan="3"> <font point-size="12" face="Iwona Italic"> Font and Node Libraries from Context </font> </td> </th>
                <tr>
                    <td>data-con.lua</td>
                    <td>font-ini.lua</td>
                    <td>font-con.lua</td>
                </tr>
                <tr>
                    <td>font-cid.lua</td>
                    <td>font-map.lua</td>
                    <td>font-tfm.lua</td>
                </tr>
                <tr>
                    <td>font-afm.lua</td>
                    <td>font-afk.lua</td>
                    <td>font-oti.lua</td>
                </tr>
                <tr>
                    <td>font-otr.lua</td>
                    <td>font-cff.lua</td>
                    <td>font-ttf.lua</td>
                </tr>
                <tr>
                    <td>font-dsp.lua</td>
                    <td>font-oup.lua</td>
                    <td>font-otl.lua</td>
                </tr>
                <tr>
                    <td>font-oto.lua</td>
                    <td>font-otj.lua</td>
                    <td>font-ota.lua</td>
                </tr>
                <tr>
                    <td>font-ots.lua</td>
                    <td>font-osd.lua</td>
                    <td>font-lua.lua</td>
                </tr>
                <tr>
                    <td>font-def.lua</td>
                    <td>font-xtx.lua</td>
                    <td>font-gbn.lua</td>
                </tr>
            </table>
        >,
    ]
}

// vim:ft=dot:sw=4:ts=4:expandtab