Inkscape

Inkscape
Inkscape logo 2.svg

Inkscape 0.48 in Ubuntu 10.04
Developer(s) The Inkscape Team
Stable release 0.48 / August 23, 2010; 5 months ago (2010-08-23)
Written in C++ (using GTK+)
Operating system Unix-like, Mac OS X, Microsoft Windows
Available in Multilingual (40)
Type Vector graphics editor
License GNU General Public License
Website www.inkscape.org

Inkscape is a vector graphics editor application. It is distributed under a free software license, the GNU GPL. Its stated goal is to become a powerful graphics tool while being fully compliant with the XML, SVG, and CSS standards.

Inkscape is cross-platform[1] and runs on Mac OS X (typically under X11, although the underlying GTK+ toolkit can be compiled to run natively under Quartz),[2] Unix-like operating systems, and Microsoft Windows. Inkscape's implementation of SVG and CSS standards is incomplete. Most notably, it does not yet support animation, or SVG fonts, though base support for the creation of SVG fonts has been implemented as of version 0.47. Inkscape has multi-lingual support, particularly for complex scripts, something currently lacking in most commercial vector graphics applications.

As of 2010, Inkscape is under active development, with new features being added regularly.

Contents

History

Inkscape began in 2003 as a code fork of the Sodipodi project. Sodipodi, developed since 1999, was itself based on Raph Levien's Gill (Gnome Illustration Application).

The fork was led by a team of four former Sodipodi developers (Ted Gould, Bryce Harrington, Nathan Hurst, and MenTaLguY) who identified differences over project objectives, openness to third-party contributions, and technical disagreements as their reasons for forking. With Inkscape, they said they would focus development on implementing the complete SVG standard, whereas Sodipodi development emphasized creating a general-purpose vector graphics editor, possibly at the expense of SVG.[3]

Since the fork, Inkscape has changed from using the C programming language to C++; changed to the GTK+ toolkit C++ bindings (gtkmm); redesigned the user interface and added a number of new features. Its implementation of the SVG standard has shown gradual improvement, but still is incomplete.

Rather than top-down governance, its developers strive to encourage an egalitarian culture where authority stems from an individual developer's abilities and active involvement in the project. As a result, the project places special emphasis on giving full access to its source code repository to all active developers, and on participation in the larger open source community (often in the form of inter-project initiatives such as the Create Project, Libre Graphics Meeting and spinoff projects like the Open Clip Art Library). While the project founders are still well-represented in the decision-making process, many newcomers have also come to play prominent roles. Among them is "bulia byak", architect of the radical user interface changes that have given Inkscape its present appearance. The new interface is modeled after Xara Xtreme's graphical user interface.

After Xara announced plans to release their (Linux version only) drawing application Xara Xtreme to open source,[4] they expressed interest in working with Inkscape to find ways the two projects can share code, coordinate efforts, and make open source graphics superior to anything available in the proprietary world.

Since 2005, Inkscape has participated in Google's Summer of Code program.[5]

Up until the end of November 2007, Inkscape's bug tracking system was hosted on Sourceforge, however it was announced on 21 November 2007, that they would move to Launchpad.[6]

Features

Object creation

The basic types of objects in Inkscape are:

Additionally, there are more specialized objects:

Object manipulation

Every object in the drawing can be subjected to arbitrary affine transformations—moving, rotating, scaling, skewing and a configurable matrix. Transformation parameters can be also specified numerically via the Transform dialog. Transformations can snap to angles, grids, guidelines and nodes of other objects. Grids, guides and snapping properties are defined on a per-document basis. As an alternative to snapping, an Align and Distribute dialog is provided, which can perform common alignment tasks on selected objects—e.g. line them up in a specified direction, space them equally, scatter them at random and remove overlaps between objects.

Objects can be arbitrarily grouped together. Groups of objects behave in many respects like "atomic" objects—for instance, they can be cloned or assigned a paint. Objects making up a group can be edited without having to ungroup it first, via an Enter Group command—the group can then be edited like a temporary layer. Z-order of objects can be managed either using layers, or by manually moving the object up and down in the Z stack. Layers can be locked or hidden, preventing modifying and accidental selection.

A special tool, Create Tiled Clones, is provided to create symmetrical or grid-like drawings using various plane symmetries.

Objects can be cut, copied and pasted using a clipboard. However, as of version 0.46, Inkscape uses an internal variable rather than the system clipboard, which limits copy and paste operations to one application instance. Objects can be copied between documents by opening them from the File menu in an already opened window, rather than by opening a second file from the operating system's shell.

Styling objects

Each object in inkscape has several attributes which determine its style. All of the attributes can generally be set for any object:

Appearance of objects can be further changed by using masks and clipping paths, which can be created from arbitrary objects, including groups.

The style attributes are 'attached' to the source object, so after cutting/copying an object into the clipboard, the style's attributes can be pasted to another object as >Paste >Style.

Operations on paths

Inkscape has a comprehensive tool set to edit paths, as they are the most common part of a vector file. The Node tool allows editing single or multiple (v.048) paths on single or multiple node levels by editing the position of nodes and control points of Bezier paths. Path segments can be adjusted by dragging them. When multiple nodes are selected, they can be moved, scaled and rotated using keyboard shortcut or mouse controls. Additional nodes can be inserted into paths at arbitrary or even placements, and an effect can be used to insert nodes at predefined intervals. When nodes are deleted, the handles on remaining ones are adjusted to preserve the original shape as closely as possible.

Tweak tool is provided for more high-level, whole object(s) or node editing regions (parts) of an object. It can push, repel/attract, randomize positioning, shrink/enlarge, rotate, copy/delete selected whole objects. With parts of a path you can push, shrink/enlarge, repel/attract, roughen edges, blur and color. Nodes are dynamically created and deleted when needed while using this tool, so it can also be used on simple paths without pre-processing.

Other possible high-level operations on paths include offsetting or insetting a path by a fixed amount. Creating an unlinked dynamic offset of a path which can be fine tuned using the Node tool. Creating a linked offset of a path will update whenever the original is modified. Object converting another shape like a spiral or text into a path, converting the stroke of a shape to a path. Simplifying a path to contain less nodes while preserving the shape, or performing Boolean operations like union, difference, intersection or exclusion on them.

Recent releases include a feature called Live Path Effects, which can apply various modifiers to a path. Envelope Deformation is available via the Path Effects and provides a perspective effect. There are more than a dozen of these live path effects. LPE can be stacked onto a single object and have interactive live on canvas and menu based editing of the effects.

Text support

Inkscape supports text editing for both regular multi-line text (SVG's <text> element) and flowed text (the non-standard <flowRoot> element, formerly proposed for SVG 1.2). As of version 0.47, flowed text is not rendered by other applications, due to a lack of an appropriate parallel <switch> structure in the SVG document. The SVG 1.2 Tiny <textArea> element is not supported. All text is directly editable on canvas. Text rendering is based on the Pango library, which allows Inkscape to support several complex scripts including Hebrew, Arabic, Thai, Tibetan, etc. Kerning and letter-spacing can be adjusted on a per-glyph basis using keyboard shortcuts. Putting text on path is also supported, and both the text and the path remain editable.

Rendering

Unlike many other GTK+ applications, Inkscape uses its own rendering library to create graphics, called libnr. libnr can render images at up to 25600% zoom with anti-aliasing, and update graphics during transformations. There are alternative outline and no filter viewer modes which can considerably increase responsiveness when working with complex drawings. Inkscape has used Cairo to render in outline mode since release 0.46.[7]

Collaborative whiteboarding

In 2005, Inkscape added Inkboard, an XMPP whiteboard to allow multiple users of Inkscape to collaborate in XMPP/Jabber instant messaging/chat environments.

Miscellaneous

Interface and usability

One of the main priorities of the Inkscape project is interface consistency and usability. This includes efforts to follow the GNOME Human interface guidelines, universal keyboard accessibility, and convenient on-canvas editing. Inkscape has achieved significant progress in usability since the project started.

The number of floating dialog boxes has been reduced, with their functions available using keyboard shortcuts or in the docked toolbars in the editing window. The tool controls bar at the top of the window always displays the controls relevant to the current tool.

All vector transformations, scale, rotation and positioning (minus skewing) have keyboard shortcuts with consistent modifiers (e.g. Alt transforms by 1 screen pixel at the current zoom, Shift multiplies the transformation by 10, etc.); these keys work on nodes in Node tool as well as on objects in the Selector Tool. The most common operations (such as transformations, zooming, z-order) have convenient one-key shortcuts.

Inkscape provides floating tool-tips and status bar hints for all buttons, controls, commands, keys, and on-canvas handles. The hint messages are dynamic, a given object can display up to four hints while editing it with just one tool. The hints update based on two(2) items the tool(1) being used and the type(2) of object/node/handle being edited, text, shapes, paths, node types, etc. It comes with a complete keyboard and mouse reference (in HTML and SVG) and several interactive tutorials in SVG.

The interface of Sodipodi (Inkscape's predecessor) was based on those of CorelDRAW and GIMP. The Inkscape interface has been influenced by that of Xara Xtreme.

Version history

See also

References

Bibliography

External links