Mnemonic Technical overview
General Info

Introduction
Screenshots
Mailing Lists and IRC
Alternative Browsers
Special Thanks

FAQ
Understanding Mnemonic
TODO list and ideas
Bug Reports


User Info

Download binaries
Platforms
Compiling Mnemonic
Other useful software


Developer Info

Core
Message modules
Library modules
Object modules
Coding Guidelines
Browse Source
Using CVS


View with any browser

Website questions to:
webmaster@mnemonic.org

Mnemonic questions to:
disc@mnemonic.org

 

Data flow in Mnemonic

We assume that you are familiar with the distinction between library modules, message modules and object implemention modules. If not, consult the documentation of the mnemonic core.

Some ascii art, a better picture and more text will follow:

           | I/O              |
           |                  |
           V                  V
    [oil-httphandler]   [oil-httphandler]               [lib-layout]
           |                  |                              |
           | raw data         |                              |
           V                  V                              V 
    [oil-xmlhandler]--->[oil-xslhandler]                [lib-gtklayout]
           |                  |                              |
[lib-dom]->| DOM object 1     | DOM/XSL object 2             |
           |                  |                              |
           V                  V            gtkboxes          V  
             [oil-gtkdisplay]     <--------------------[lib-w3style]
                   |
                   | Gtk-- widgets
                   V
             [oil-gtkclient]

Note in particular that oil-gtkdisplay knows nothing about the XSL or HTML tags (eg. it does not know how to draw <H1>). It only knows about the basic flow concepts as described by the XSL specification. It is the responsibility of the oil-w3stylehandler to take the XSL DOM and the associated stylesheet DOM and produce, using the boxes provided by oil-gtkdisplay, a tree of displayable elements which is subsequently rendered by the logic coming from lib-layout.

When OILs get created, or when they have produced a new data object that they want to make visible to the world, they usually announce this by sending a specific message (eg. the oil-xmlhandler will broadcast a msg_dom_create_event upon creation of a new document. Similarly, when oil-gtkdisplay creates a new viewing canvas, it sends a message with a reference to the corresponding gtk-- widget). These messages can in turn trigger loading of other OILs (eg. in the examples, the oil-w3style becomes alive, and oil-gtkclient puts the canvas in a visible area of the browser window).

Internationalisation and Unicode

There is a page on Persian internet issues.

The easiest way to combine fonts for different Unicode character ranges is to use the unicode-range CSS descriptor. Example:

@font-face { font-family:   lucidasans;
             unicode-range: U+00??;
           }
@font-face { font-family:   cjk;
             unicode-range: U+3000-33FF, U+4E00-9FFF;
           }
             
BODY  { font-family: lucidasans, cjk; }
Note: none of this works at the moment.