Xournal User's Manual
</h2>
<p style="font-size: 0.95em; text-align: center; color: rgb(0,0,0)">
- Version 0.3.1
+ Version 0.4.2.1
</p>
<hr />
<p>
</p>
<p>
Xournal can be downloaded at
+<a href="http://xournal.sourceforge.net/">http://xournal.sourceforge.net/</a> or
<a href="http://math.mit.edu/~auroux/software/xournal/">http://math.mit.edu/~auroux/software/xournal/</a>
</p>
<p>
<li> <a href="manual.html#tools">The drawing and selection tools</a> </li>
<li> <a href="manual.html#pages-layers">Pages, layers, and backgrounds</a> </li>
<li> <a href="manual.html#printing">Printing</a> </li>
+ <li> <a href="manual.html#configuration">Configuration</a> </li>
<li> <a href="manual.html#author">Author information, license, bug-reports</a> </li>
<li> <a href="manual.html#changelog">Version history</a> </li>
<li> <a href="manual.html#file-format">The file format</a> </li>
is yellow) and thicknesses. Use the color and thickness toolbar buttons
to change these settings.
</p>
+<h3 class="subsub"><img src="pixmaps/text-tool.png"> The text tool</h3>
+<p>
+ To insert a new text item, click at the location where the text is to be
+ inserted on the page, then type it in or paste it using the contextual
+ menu (note: no wrapping is performed). To modify a text item, click inside
+ it. The font and point size can be modified using the "Text Font" command
+ in the Tools menu (or the toolbar button). The color is the same as that
+ currently selected for the pen (and can be modified using the toolbar
+ buttons).
+</p>
+<p>
+ Text items can contain arbitrary Unicode characters, provided that a
+ suitable font is installed on your system. However, languages written
+ in a direction other than left-to-right might not be handled properly.
+ If a journal contains some items in a font that is unavailable on your
+ system, another one will be substituted. (Also, text items will be
+ lost if the document is opened in a version of Xournal prior to 0.4).
+ Finally, note that the printing and PDF export features only accept
+ TrueType and Type 1 scalable fonts (do not use any bitmap fonts), and
+ that the typesetting of the text may be slightly different in the
+ printout.
+</p>
<h3 class="subsub"><img src="pixmaps/ruler.png"> The ruler</h3>
<p>
The ruler is not a tool by itself, but rather a special operating mode
line segments instead of curvy strokes. For simplicity, selecting the
ruler when not in pen or highlighter mode automatically selects the pen.
</p>
+<a name="recognizer"></a>
+<h3 class="subsub"><img src="pixmaps/shapes.png"> The shape recognizer</h3>
+<p>
+ The shape recognizer is also a special
+ operating mode of the pen and highlighter tools. When it is enabled,
+ Xournal attempts to recognize geometric shapes as they are drawn, and
+ if successful will replace the drawn strokes accordingly. The shapes
+ that can be recognized are: line segments, circles, rectangles, arrows,
+ triangles and quadrilaterals. Polygonal shapes can be drawn in a single
+ stroke or in a sequence of consecutive strokes.
+</p>
+<p>
+ The recognizer is set to be as unobtrusive as possible, and should not
+ interfere too much with handwriting. (It differs in this and other ways
+ from another shape recognizer written for Xournal by Lukasz Kaiser).
+ As a result, it may only recognize shapes if you draw them carefully and
+ deliberately. Specific tips for better recognition: (1) for circles,
+ a closed curve that isn't quite round works better
+ than a rounder curve that doesn't close; (2) for arrows, it is better
+ to lift the pen before drawing the tip of the arrow, and make sure
+ the tip consists of two straight line segments;
+ (3) for very elongated rectangles,
+ recognition tends to be better if you lift the pen between consecutive
+ sides.
+</p>
<h3 class="subsub"><img src="pixmaps/recycled.png"> Default tools</h3>
<p>
- Each drawing tool (pen, eraser, highlighter) has a default setting
- (color, thickness, ...) associated to it.
- The "Default Pen", "Default Eraser", and "Default Highlighter" entries of
+ Each tool (pen, eraser, highlighter, text) has a default setting
+ (color, thickness, ... for the drawing tools, font and size for the
+ text tool) associated to it.
+ The "Default Pen", "Default Eraser", "Default Highlighter", and
+ "Default Text" entries of
the Tools menu select the appropriate tool and reset its settings to
the defaults. The toolbar also includes a "Default" button which
- resets the currently selected drawing tool to its default settings,
+ resets the currently selected tool to its default settings,
and a "Default Pen" button. <br />
The "Set As Default" entry of the Tools menu takes the current settings
- of the currently selected drawing tool and makes them the new default.
+ of the currently selected tool and makes them the new default.
</p>
<a name="thicknesses"></a>
<h3 class="subsub"><img src="pixmaps/thin.png"> <img src="pixmaps/medium.png">
cursor above the top of the page so that the entire block being moved
becomes invisible results in the items being moved to the previous page.
</p>
+<h3 class="subsub"><img src="pixmaps/hand.png"> Hand tool</h3>
+<p>
+ This tool lets you browse the journal; dragging the cursor scrolls the
+ view.
+</p>
<h3 class="subsub">Undo and redo</h3>
<p>
All operations performed on the currently open journal (drawing, erasing,
its pages have the same size as in Xournal. Highlighter strokes
are rendered in a partially transparent manner (note however that
applications such as xpdf and ghostview do not always handle
-PDF transparency properly).
+PDF transparency properly). Text items are rendered by embedding
+TrueType subsets or Type 1 fonts into the PDF document as appropriate.
</p>
<p>
Xournal also includes a PDF file parser compatible with PDF format
PDF file is generated from scratch.
</p>
<hr />
+<a name="configuration"></a>
+<h2 class="subtitle">Configuration</h2>
+<p>
+Starting with version 0.3.2, Xournal's configuration settings can be
+saved to a file (<tt>~user/.xournal/config</tt>) by using the "Save
+Preferences" command in the Options menu. The settings saved in the
+configuration file include in particular:
+<ul>
+<li>general display preferences: zoom level, window size, ...</li>
+<li>default paper settings (as set by the "Set As Default" command in
+the Journal menu)</li>
+<li>default settings for the pen, eraser, highlighter, and text tools
+(as set by the "Set As Default" command in the Tools menu)</li>
+<li>mappings for buttons 2 and 3</li>
+<li>the various preferences set in the Options menu</li>
+</ul>
+The configuration file also gives access to additional customization
+options which cannot be set from the user interface, such as: the
+display resolution in pixels per inch, the step increment in zoom factors,
+the tool selected at startup, the thickness of the various drawing tools,
+the default directory for opening and saving files, the visibility and
+position of the menu and toolbars, ...
+</p>
+<hr />
<a name="author"></a>
<h2 class="subtitle">Author information, license, bug-reports</h2>
<p>
<a name="changelog"></a>
<h2 class="subtitle">Version history</h2>
<p>
+Version 0.4.2.1 (Mar 27, 2008):
+<ul>
+ <li>bugfix for #1926757 (crash upon pasting variable-width stroke)</li>
+ <li>bugfix: set ruler/recognizer setting to default upon switching tools</li>
+</ul>
+</p>
+<p>
+Version 0.4.2 (Mar 25, 2008):
+<ul>
+ <li>bugfixes for X.org 7.3; allow XInput and core events in reverse order</li>
+ <li>resize selection (patch contributed by Andy Neitzke)</li>
+ <li>pressure sensitive pen (variable stroke width) (patch by Andy Neitzke)</li>
+ <li>geometric shape recognizer (after an idea by Lukasz Kaiser)
+ (see <a href="manual.html#recognizer">here</a>)</li>
+ <li>clean up compiler warnings (patch contributed by Danny Kukawka)</li>
+</ul>
+</p>
+<p>
+Version 0.4.1 (Sep 15, 2007):
+<ul>
+ <li> bugfix: compatibility with new versions of pdftoppm (thanks to
+ Vincenzo Ciancia)</li>
+ <li>GTK+ 2.11 event processing bugfix</li>
+ <li>minor bugfixes: hand tool, handling of filenames containing '&'</li>
+ <li>desktop and MIME files (thanks to Mathieu Bouchard) + updated installer</li>
+ <li>config options: left-handed scrollbar (contributed by Uwe Winter),
+ hide some menu items (customizable in config file), auto-save
+ preferences</li>
+</ul>
+</p>
+<p>
+Version 0.4.0.1 (September 3, 2007):
+<ul>
+ <li>bugfixes for GTK+ 2.11 behavior (thanks to everyone who reported bugs)</li>
+</ul>
+</p>
+<p>
+Version 0.4 (August 15, 2007):
+<ul>
+ <li>text tool (handles most TrueType and Type1 fonts)</li>
+ <li>font selection dialog and button</li>
+ <li>keyboard mappings (arrow keys)</li>
+ <li>menu mnemonics and shortcuts (suggestions by Jean-Baptiste Rouquier)</li>
+ <li>more responsive hand tool</li>
+ <li>bugfix for GTK+ 2.11 XInput behavior (thanks to Robert Gerlach)</li>
+ <li>various minor bugfixes and enhancements</li>
+</ul>
+</p>
+<p>
+Version 0.3.3 (January 31, 2007):
+<ul>
+ <li>bugfix: upon loading a new file, zoom is set to default startup zoom</li>
+ <li>config option to allow input from a mouse or other core pointer device</li>
+ <li>config file entry to specify a default location for open/save
+ (patch contributed by Andy Neitzke)</li>
+ <li>config file entries to customize visibility and position of toolbars</li>
+ <li>icon (thanks to Michele Codutti)</li>
+</ul>
+</p>
+<p>
+Version 0.3.2 (November 25, 2006):
+<ul>
+ <li>preferences file and Save Preferences command</li>
+ <li>extra customization (via preferences file)</li>
+ <li>minor UI changes (patch contributed by Eduardo de Barros Lima)</li>
+ <li>hand tool (partially contributed by Vincenzo Ciancia)</li>
+ <li>a few bugfixes in rendering of bitmap backgrounds</li>
+</ul>
+<p>
Version 0.3.1 (August 3, 2006):
<ul>
<li>fixed a file format bug on systems with non-standard numeric locale
<p>
Version 0.1 (January 2, 2006): initial release.
</p>
-<p>
-Features yet to be implemented:
-<ul>
- <li>freeform selection tool</li>
- <li>preferences file; persistent printer settings</li>
- <li>various functionalities (flatten layers, ...)</li>
-</ul>
-</p>
<hr />
<a name="file-format"></a>
<h2 class="subtitle">The file format</h2>
<p>
Xournal stores its data in gzipped XML-like files. The gzipped data consists
of a succession of XML tags describing the document. By convention, the
-first few lines contain a header in the following format:
+file header and trailer look like this:
<pre>
<?xml version="1.0" standalone="no"?>
+<xournal version="...">
<title>Xournal document - see http://math.mit.edu/~auroux/software/xournal/</title>
-<xournal version="..."/>
+... sequence of pages ...
+</xournal>
</pre>
The <title> and <xournal> tags may only appear within the file
header (not within the pages of the document). The <i>version</i> attribute of
the <xournal> tag indicates which version of Xournal was used to
create the document; it is currently ignored, but may be used in a later
release if the file format changes in an incompatible manner.
+(Following a suggestion of Matteo Abrate, starting with version 0.4 the
+<xournal> tag is the document's root tag, and encloses all other tags).
</p>
<p>
The rest of the file is a sequence of pages, specified by a
After the line specifying the background, the remainder of a <page>
section is occupied by one or more layer sections
<pre><layer> ... </layer></pre>
-describing the various strokes within a layer. Every page must
+describing the various items within a layer. Every page must
contain at least one layer; a layer may be empty. The successive layers
are listed in their stacking order, from bottom to top.
</p>
<p>
-A layer consist of a collection of items, listed in the order in which
+A layer consists of a collection of items, listed in the order in which
they should be drawn
(from bottom-most to top-most).
-As of the current version, the only legal contents within a layer are
+Up to version 0.3.3, the only legal contents within a layer are
strokes. The format of a stroke is:
<pre><stroke tool="..." color="..." width="...">
... list of coordinates ...
or whiteout eraser); a value of "highlighter" indicates that the stroke
should be painted in a partially transparent manner (Xournal uses an alpha
coefficient of 0.5).
+</p>
+<p>
The <i>color</i> attribute can take one of the standard values "black",
"blue", "red", "green", "gray", "lightblue", "lightgreen", "magenta",
"orange", "yellow", "white", or can specify a hexadecimal RGBA value in
-the format "#rrggbbaa". The <i>width</i> attribute is a floating-point
-number and specifies the width of the stroke in points (1/72 in).
+the format "#rrggbbaa".
+</p>
+<p>
+The <i>width</i> attribute is a floating-point
+number (or a sequence of floating-point numbers starting with version 0.4.2),
+and specifies the width of the stroke in points (1/72 in). (For a
+variable-width stroke, the <i>width</i> attribute contains a
+whitespace-separated succession of floating-point values: first the
+nominal brush width, and then the width of each successive segment forming
+the stroke.)
</p>
<p>
The list of coordinates is simply a succession of floating-point values,
stroke). The default precision used by Xournal for the x,y coordinates is
0.01 unit (1/7200 in).
</p>
+<p>Starting with version 0.4, layers also contain text items.
+The format of a text item is:
+<pre><text font="..." size="..." x="..." y="..." color="...">... text ...</text>
+</pre>
+The <i>font</i> attribute contains the font name, for example "Serif Bold
+Italic"; if the font is not available, another font will be substituted.
+The <i>size</i> attribute specifies the font size in points. The <i>x</i>
+and <i>y</i> attributes specify the coordinates of the top-left corner
+of the text box in page coordinates (measured in points from the top-left
+corner of the page). Finally, the <i>color</i> attribute contains either
+the name of a standard color or a hexadecimal RGBA value (see above).
+</p>
+<p>
+The contents of the text are encoded in UTF-8, with the characters
+<tt>'&', '<', '>'</tt> replaced by <tt>&amp;, &lt;,
+&gt;</tt>. Whitespace and linefeeds are preserved (in particular,
+no extraneous whitespace should be inserted between the enclosing tags
+and the text itself).
+</p>
<hr />
<a name="installation"></a>
<h2 class="subtitle">Installation issues</h2>
later):
<ul>
<li> the <b>gtk+</b> libraries, version <b>2.4</b> or later
- (2.6 recommended) (package gtk2 and dependencies)</li>
+ (<b>2.6</b> strongly recommended) (package gtk2 and dependencies)</li>
<li> <b>libgnomecanvas</b> version <b>2.4</b> or later
(package libgnomecanvas and dependencies)</li>
<li> <b>libgnomeprint</b> and <b>libgnomeprintui</b> version <b>2.2</b> or later
./autogen.sh
make
(as root) make install
+(as root) make desktop-install
</pre>
</p>
<p>
./configure --prefix=$HOME
make
make install
+make home-desktop-install
</pre>
</p>
<p><b>Configure error message:</b> <br />
use USB instead; the BottomX and BottomY values correspond to the physical
resolution of the tablet and will vary from one model to another.
</p>
+<p>
+For historical reasons, most X servers do not allow the input device
+designated as the "core pointer" in the X server's configuration file
+to be used as an XInput extension device. Thus, your tablet input devices
+should <b>not</b> be designated as the core pointer device. Instead, they
+should be configured with the "SendCoreEvents" option, which enables them
+to simultaneously generate XInput extension events and move the cursor on
+the screen. Since high-resolution coordinates cannot be obtained for the
+core pointer device, it is disabled in Xournal by default.
+Starting with version 0.3.3,
+it is possible to have core events processed alongside with extension
+events (uncheck "Discard Core Events" in the Options menu); however, in
+some rare cases this may lead to a loss of resolution on all devices.
+</p>
<h3 class="subsub">The cursor doesn't appear in the right place...</h3>
<p>
If the mouse pointer does not follow accurately the position of the stylus,
properly when using xsetwacom).
</p>
<p>
-<b>Important:</b> due to issues with the linuxwacom driver, it is important
-to either upgrade your driver to a <a href="manual.html#wacompatch">patched
-version</a>, or restrict your choice of settings as follows:
+<b>Important:</b> due to issues with old versions of the linuxwacom
+driver (< 0.7.6), it is important to upgrade your driver,
+or restrict your choice of settings as follows:
<ul>
<li> your calibration settings should not be changed at runtime (i.e.,
insert your settings directly into your X server configuration file.
</p>
<h3 class="subsub">Strokes aren't drawn under the cursor...</h3>
<p>
-This is due to misfeatures in the linuxwacom driver. Typically, this
-will happen in all of the following cases:
+This is typically due to misfeatures in the linuxwacom driver in versions
+prior to 0.7.6, and will happen in all of the following cases:
<ul>
<li> the calibration settings have been changed after the X server was
started (using xsetwacom) </li>
<li> the calibration TopX or TopY values are not 0 </li>
<li> the display has been rotated </li>
</ul>
-Future versions of the driver may fix these issues. Meanwhile, you can
+Most of these issues should have been fixed in version 0.7.6 of the
+wacom driver. Otherwise, you can
either disable XInput support in Xournal (in the Options menu), at a
price of a severe loss of resolution (and the eraser tip won't be detected
-anymore), or apply this <a href="manual.html#wacompatch">patch</a>
-to the wacom driver.
+anymore), or inspect carefully your X server configuration and make
+sure the tablet devices are calibrated and configured properly.
</p>
<p>
I have also had a report that one of the workarounds used by Xournal to
bypass a calibration bug in GTK+ can actually entirely prevent strokes
from being drawn. If you are being unsuccessful at drawing in Xournal
-with XInput enabled, try recompiling after changing the first line of
-<tt>src/main.c</tt> to
-<pre>#define ENABLE_XINPUT_BUGFIX 0</pre>
+with XInput enabled, try recompiling after commenting out the line
+<pre>#define ENABLE_XINPUT_BUGFIX</pre>
+near the beginning of <tt>src/xournal.h</tt>.
If this modification does improve things for you, and if you have a bit
of spare time to help investigate the causes of this problem, please
contact me.
</p>
<h3 class="subsub">On-the-fly display rotation</h3>
<p>
-You need an X server that supports the RANDR extension, and a
-<a href="manual.html#wacompatch">patched</a> version of the linuxwacom
-driver to support on-the-fly rotation.
+You need an X server that supports the RANDR extension, and a sufficiently
+recent (0.7.6 or later)
+version of the linuxwacom driver to support on-the-fly rotation.
</p>
<p>
To set the tablet in portrait mode:
become incorrect.
Exit Xournal and restart it after the display has been rotated.
</p>
-<a name="wacompatch"></a>
-<h3 class="subsub">Linuxwacom patch for calibration and rotation</h3>
-<p>
-This patch fixes rotation and calibration issues with the linuxwacom driver
-version 0.7.0.
-<ul>
-<li>The <a href="http://math.mit.edu/~auroux/software/xournal/linuxwacom-0.7.0-rotate-patch">patch
-file</a> for the linuxwacom source code (also included with the Xournal
-distribution).</li>
-<li>The <a href="http://math.mit.edu/~auroux/software/xournal/linuxwacom-rotate-patch.tar.gz">patched
-binaries</a> for the X.org X server.</li>
-</ul>
-</p>
</body>
</html>