|
|
- <!doctype html>
- <html>
- <head>
- <title>Network | Multifont Labels</title>
-
- <script type="text/javascript" src="../../../dist/vis.js"></script>
- <link href="../../../dist/vis-network.min.css" rel="stylesheet" type="text/css" />
-
- <style type="text/css">
- #mynetwork {
- width: 600px;
- height: 400px;
- border: 1px solid lightgray;
- }
- code {
- font-size: 15px;
- }
- p {
- max-width: 600px;
- }
- .indented {
- margin-left: 30px;
- }
- table {
- border-collapse: collapse;
- font-family: sans-serif;
- }
- table code {
- background: #dddddd;
- }
- th, td {
- border: 1px solid #aaaaaa;
- text-align: center;
- padding: 5px;
- font-weight: normal;
- }
- </style>
-
- </head>
-
- <body>
-
- <p>Node and edge labels may be marked up to be drawn with multiple fonts.</p>
-
- <div id="mynetwork"></div>
-
- <p>The value of the <code>font.multi</code> property may be set to <code>'html'</code>, <code>'markdown'</code> or a boolean.</p>
- <table class="indented">
- <tr><th colspan='4'>Embedded Font Markup</th></tr>
- <tr><th rowspan=2>font mod</th><th colspan=3><code>font.multi</code> setting</th></tr>
- <tr><th><code>'html'</code> or <code>true</code></th><th><code>'markdown'</code> or <code>'md'</code></th><th><code>false<code></th></tr>
- <tr><th>bold</th><td><code><b></code> ... <code></b></code></td><td><code> *</code> ... <code>* </code></td><td>n/a</td></tr>
- <tr><th>italic</th><td><code><i></code> ... <code></i></code></td><td><code> _</code> ... <code>_ </code></td><td>n/a</td></tr>
- <tr><th>mono-spaced</th><td><code><code></code> ... <code></code></code></td><td><code> `</code> ... <code>` </code></td><td>n/a</td></tr>
- </table>
-
- <p>
- The <code>html</code> and <code>markdown</code> rendering is limited: bolds may be embedded in italics, italics may be embedded in bolds, and mono-spaced may be embedded in bold or italic, but will not be altered by those font mods, nor will embedded bolds or italics be handled.
- The only entities that will be observed in html are <code>&lt;</code> and <code>&amp;</code> and in <code>markdown</code> a backslash will escape the following character (including a backslash) from special processing.
- Any font mod that is started in a label line will be implicitly terminated at the end of that line.
- While this interpretation may not exactly match <i>official</i> rendering standards, it is a consistent compromise for drawing multifont strings in the non-multifont html canvas element underlying vis.
- </p>
-
- <p>This implies that four additional sets of font properties will be recognized in label processing.</p>
- <p class="indented"><code>font.bold</code> designates the font used for rendering bold font mods.
- <br/><code>font.ital</code> designates the font used for rendering italic font mods.
- <br/><code>font.boldital</code> designates the font used for rendering bold-<b><i>and</i></b>-italic font mods.
- <br/><code>font.mono</code> designates the font used for rendering monospaced font mods.</p>
- <p>Any font mod without a matching font will be rendered using the normal <code>font</code> (or default) value.</p>
-
- <p>The <code>font.multi</code> and extended font settings may be set in the network's <code>nodes</code> or <code>edges</code> properties, or on individual nodes and edges.
- Node and edge label fonts are separate.</p>
-
- <script type="text/javascript">
- var nodes = [
- { id: 1, label: 'This is a\nsingle-font label', x: -120, y: -120 },
- { id: 2, font: { multi: true }, label: '<b>This</b> is a\n<i>default</i> <b><i>multi-</i>font</b> <code>label</code>', x: -40, y: -40 },
- { id: 3, font: { multi: 'html', size: 20 }, label: '<b>This</b> is an\n<i>html</i> <b><i>multi-</i>font</b> <code>label</code>', x: 40, y: 40 },
- { id: 4, font: { multi: 'md', face: 'georgia' }, label: '*This* is a\n_markdown_ *_multi-_ font* `label`', x: 120, y: 120},
- ];
-
- var edges = [
- {from: 1, to: 2, label: "single to default"},
- {from: 2, to: 3, font: { multi: true }, label: "default to <b>html</b>" },
- {from: 3, to: 4, font: { multi: "md" }, label: "*html* to _md_" }
- ];
-
- var container = document.getElementById('mynetwork');
- var data = {
- nodes: nodes,
- edges: edges
- };
- var options = {
- edges: {
- font: {
- size: 12
- }
- },
- nodes: {
- shape: 'box',
- font: {
- bold: {
- color: '#0077aa'
- }
- }
- },
- physics: {
- enabled: false
- }
- };
- var network = new vis.Network(container, data, options);
- </script>
-
- </body>
- </html>
|