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
 * ································································· */
    luaotfload -> otfl_fonts
    otfl_fonts -> otfl_fonts_merged [label="merged"]
    luaotfload -> luaotfload_libs
    luaotfload -> otfl_blacklist_cnf


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

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


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

    luaotfload        [label  = "luaotfload.lua",
                       shape  = rect,
                       width  = "3.2cm",
                       height = "1.2cm",
                       color  = "#01012222",
                       style  = "filled,rounded",
                       penwidth=2]
    otfl_fonts        [label = "otfl-fonts.lua",
                       shape = rect,
                       width  = "3.2cm",
                       height = "1.2cm",
                       color  = "#01012222",
                       style  = "filled,rounded",
                       penwidth=2]
    otfl_fonts_merged [label = "otfl-fonts-merged.lua",
                       shape = rect,
                       width  = "3.2cm",
                       height = "1.2cm",
                       color  = "#01012222",
                       style  = "filled,rounded",
                       penwidth=2]

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

/*
 *    subgraph cluster_luaotfload_libs {
 *        style     = "filled,rounded";
 *        color     = "grey90:goldenrod4";
 *        gradientangle=0;
 *        //nodesep   = "3.0";
 *        rank      = same;
 *        label     = "Luaotfload";
 *        otfl_font_otc;  otfl_lib_dir;   otfl_luat_ovr;
 *        otfl_font_pfb;  otfl_font_nms;  otfl_font_clr;
 *        otfl_font_ltx;  otfl_features;  otfl_blacklist_cnf;
 *    }
 *
 *    otfl_font_otc      [style=filled, color=white, shape=box, label="otfl-font-otc.lua"]
 *    otfl_lib_dir       [style=filled, color=white, shape=box, label="otfl-lib-dir.lua"]
 *    otfl_luat_ovr      [style=filled, color=white, shape=box, label="otfl-luat-ovr.lua"]
 *    otfl_font_pfb      [style=filled, color=white, shape=box, label="otfl-font-pfb.lua"]
 *    otfl_font_nms      [style=filled, color=white, shape=box, label="otfl-font-nms.lua"]
 *    otfl_font_clr      [style=filled, color=white, shape=box, label="otfl-font-clr.lua"]
 *    otfl_font_ltx      [style=filled, color=white, shape=box, label="otfl-font-ltx.lua"]
 *    otfl_features      [style=filled, color=white, shape=box, label="otfl-features.lua"]
 */

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

    luaotfload_libs [
        shape      = box,
        style      = "filled,rounded",
        color      = "grey90:goldenrod4",
        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>otfl-font-otc.lua</td> <td>otfl-lib-dir.lua</td>  </tr>
                <tr> <td>otfl-luat-ovr.lua</td> <td>otfl-font-pfb.lua</td> </tr>
                <tr> <td>otfl-font-nms.lua</td> <td>otfl-font-clr.lua</td> </tr>
                <tr> <td>otfl-font-ltx.lua</td> <td>otfl-features.lua</td> </tr>
            </table>
        >,
    ]

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

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

    otfl_fonts_merged -> merged_lua_libs
    otfl_fonts_merged -> merged_luatex_fonts
    otfl_fonts_merged -> merged_context_libs

    merged_lua_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">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>                                                  </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-gen.lua</td> <td>luatex-basics-nod.lua</td> </tr>
                <tr> <td>luatex-fonts-enc.lua</td>  <td>luatex-fonts-syn.lua</td> </tr>
                <tr> <td>luatex-fonts-tfm.lua</td>  <td>luatex-fonts-chr.lua</td> </tr>
                <tr> <td>luatex-fonts-lua.lua</td>  <td>luatex-fonts-def.lua</td> </tr>
                <tr> <td>luatex-fonts-ext.lua</td>  <td>luatex-fonts-cbk.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-oti.lua</td> </tr>
                <tr> <td>font-otf.lua</td> <td>font-otb.lua</td> <td>node-inj.lua</td> </tr>
                <tr> <td>font-ota.lua</td> <td>font-otn.lua</td> <td>font-def.lua</td> </tr>
            </table>
        >,
    ]
}

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