Inkscape is a free and open source vector graphics editor application. Its stated goal is to become a powerful graphic tool while being fully compliant with the XML, SVG and CSS standards.
Inkscape is primarily developed for Linux, but it is cross-platform and runs on Mac OS X (under X11), other 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. Inkscape has multi-lingual support, particularly for complex scripts, something currently lacking in most commercial vector graphics applications.
As of 2008, Inkscape is under active development, with new features being added regularly.
Inkscape began in 2003 as a code fork
of the Sodipodi
project. Sodipodi, developed since 1999, was itself based on Gill
, the work of Raph Levien
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.
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 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 oriented on Xara Xtreme's GUI.
After Xara announced plans to release their drawing application Xara Xtreme to open source, 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.
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.
The basic types of objects in Inkscape are:
- Paths—made with the Pencil tool, which allows freehand drawing of paths; the Pen tool, which allows the user to create a Bezier spline node-by-node; the Calligraphy tool, which can be used to draw freehand calligraphic or brush-like strokes, or the Paint Bucket tool, which fills bounded areas of the image. The Calligraphy tool optionally can use pressure and tilt readings from graphic tablets. The Paint Bucket tool works optically rather than geometrically and can assist image tracing.
- Rectangles—created using the Rectangle tool. Corners of rectangles can be rounded.
- Ellipses—created using the Ellipse tool. Ellipses can be transformed into arcs and circle segments.
- Stars/polygons—created using the Polygon tool. Multi-pointed stars can be used to emulate spirographs.
- Text—created with the Text tool. Texts can use any of the system fonts, and can be easily converted to paths. Both regular and flowed text is supported. All text objects can be arbitrarily transformed. Text can be manually kerned and flowed along a path.
- Raster images—created by importing or pasting bitmap images into Inkscape. Images are linked by default, but they can be embedded into the SVG document using an effect. Images can be traced using an embedded Potrace backend. Inkscape supports PNG, JPEG and BMP.
- Clones—create using the Clone operation on existing objects. Clones are verbatim copies of other objects which can have different transformations applied than the original object, and are updated live whenever the original object changes. Deleting the original object causes the clone to be "unlinked" - it becomes a separate object. It is also possible to create chained clones, i.e. clones of a clone, to an arbitrary depth.
Additionally, there are more specialized objects:
- Spirals—created using the Spiral tool, they have a configurable number of turns and convergence.
- 3D Boxes—created using the 3D Box tool. The boxes have adjustable perspective and a configurable number of vanishing points. They can be used to assist perspective drawings. 3D boxes are in fact groups of paths and after ungrouping can be further modified.
Every object in the drawing can be subjected to arbitrary affine transformations
- moving, rotating, scaling and skewing. 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 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.
Each shape in inkscape has several properties which determine its style. All of those properties can generally be set for any object:
- Fill—can be a solid color, a linear gradient, a radial gradient, a pattern, or inherited from a parent object. The color selector has multiple color spaces available, but all selected colors are currently converted to RGBA. Gradients can have multiple stops. All colors can have an alpha value specified. Patterns can be constructed from any collection of objects, or one of the several supplied stock patterns can be used.
- Stroke fill—can have the same values as fill, but acts on the object's stroke.
- Stroke style—can vary in width, join style, cap style, start and end markers (can be used to create arrowheads) and dashing. Additionally, various markers can be added on the nodes in the middle of the stroke (can be used e.g. to create a "cut here" line with small pictures of scissors along it).
- Opacity—specifies alpha value for all fill colors. Each object has a distinct opacity value, which e.g. can be used to make groups transparent.
- Filters—there is an easy-to-use slider for Gaussian blur for each object. Arbitrary filter stacks using the SVG filters can be constructed using the Filters dialog.
Appearance of objects can be further changed by using masks and clipping paths, which can be created from arbitrary objects, including groups.
The style is separate from the objects' shapes, and after copying an object into the clipboard, only its style can be pasted to be applied to another object.
Operations on paths
Inkscape has a comprehensive tool set to deal with paths, as they are the most common constituents of a vector image. The Node tool allows to edit the path on the single node level by tweaking 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 using the mouse, or scaled and rotated using keyboard shortcuts. Additional nodes can be inserted into paths at arbitrary places, 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 operation on paths. It can push, grow, shrink, attract, repel or roughen paths. 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 destructively outsetting or insetting a path by a fixed amount, creating a dynamic offset of a path which can be tweaked using the Node tool, creating a linked offset of a path which updates whenever the original is modified, converting another shape like a spiral or text into a path, converting the stroke of an object to a path, simplifying a path to contain less nodes while preserving 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. One of those effects is Gears, which creates a contraption of gears based on the nodes of the supplied path. Another one is Bend, which deforms one path along another.
Inkscape supports text editing for both regular multi-line text (SVG's <text>
element) and flowed text (the <flowRoot>
element, formerly proposed for SVG 1.2). As of version 0.46, flowed text is misrendered by other applications, due to a lack of an appropriate parallel <switch>
structure in the SVG document. 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
, etc. Kerning
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.
Unlike many other GTK+ applications, Inkscape uses its own renderer library to create graphics, called libnr
can render images at up to 25600% zoom with anti-aliasing, and update graphics during transformations. There is also an alternative outline mode which can considerably increase responsiveness when working with complex drawings. Inkscape has used Cairo to render in outline mode since release 0.46.
XMPP client for real-time collaborative whiteboarding
Whiteboard | Instant Messaging… presents the Pedro XMPP client. With such clients, multiple users of Inkscape can collaborate in Jabber instant messaging/chat environments. This feature originated from the 2005 inclusion of Inkboard.
For users of Mac OS X who find that Inkscape.app lacks the Whiteboard menu, a more inclusive compilation may be gained:
- install XQuartz
- install MacPorts
- command sudo port install inkscape
- command inkscape
Thereafter, whenever the applications are required, simply command inkscape
XML tree editor, for direct manipulation of SVG document structure.
Connector tool, to create diagrams with integrated graph layout and routing algorithms.
Edition of RDF metadata.
Command-line interface, mostly exposes format conversion functions.
More than forty interface languages.
Extensible to new file formats, effects and other features.
Mathematical diagramming, with various uses of LaTeX.
Experimental support for scripting.
Interface and usability
One of the 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 transformations (not only moving but also scaling and rotating) 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 Selector. The most common operations (such as transformations, zooming, z-order) have convenient one-key shortcuts.
Inkscape provides floating tooltips and status bar hints for all buttons, controls, commands, keys, and on-canvas handles. 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 current Inkscape interface has been influenced by that of Xara Xtreme.
- Version 0.46 (March 24, 2008) added Paint Bucket, Tweak and 3D Box tools, Live Path Effects, support for most SVG filters, the ability to open PDF files, and OpenType/PostScript and Type1 font support fixed.
- Version 0.45.1 (March 23, 2007) was a bugfix release.
- Version 0.45 (February 5, 2007) has support for Gaussian blur, pattern along path and many other minor modifications to existing features.
- Version 0.44.1 was a bugfix release.
- Version 0.44 (June 24, 2006) added a Layers dialog, support for clipping and masking, improved PDF export with transparency, and performance improvements.
- Version 0.43 (November 19, 2005) added Connector tool, collaborative editing, tablet pressure/angle sensitivity, and Node tool enhancements.
- Version 0.42 (July 26, 2005) added flowed text support, styling text spans, enhanced effects support, and the new gradient tool.
- Version 0.41 (February 10, 2005) added the clone tiler tool and color tracing, plus many bugfixes.
- Version 0.40 added support for layers, bitmap tracing, and text on path.
- Version 0.39 was the first release to use the Pango library, bringing better support for more languages, as well as support for markers, clones, and pattern fills.
- Version 0.38 was a bug fix release, but it also featured text kerning and letterspacing, multistage gradients, and many usability enhancements.
- Version 0.37 saw the addition of boolean path operations and path inset/outset.
- Version 0.36 was the first release with the reorganized UI using a menu bar and docked context-sensitive toolbars in the document window.
- Version 0.35 (November 2, 2003) was the first release of Inkscape, very similar to Sodipodi version 0.32.