Main goals of the 0.7.x series: ------------------------------ - Port to GTK/GDK - Rewrite and extend the UI code: - Multidocument interface - Better integration of user scripts and builtin commands - A tree view of the object hierarchy - Dialogs for Styles and user defined arrows - better color handling, at least let the user define colors in various color models, most importantly CMYK. Perhaps support for icc files and colormanagement. - Multi font, multi line text. See below for more details. - Variable resolutions for images - reorganize the code to clearly separate the code into: - Representation of the document and graphics objects (in Sketch.Graphics) - Output devices (e.g. screen and PostScript) (currently in Sketch.Graphics) - High-level editor logic (in Sketch.Editors) - Toolkit specific interface code like window and event handling (in Sketch.UI) The goals of this restructuring are: - easier maintenance - enable users to modify the behavior of the editors and or implement new tools (if that is possible) - make Sketch usable as a library for: - Python scripts to convert between file formats (e.g. load from cmx and export as ps). This will make scripts like sk2ps simpler. This usage will only require the Sketch.Graphics part, the filters and perhaps some other bits, but not Sketch.Editors or Sketch.UI - Highlevel 2D drawing (e.g. to generate data plots) - Embed Sketch into another application. Secondary goals: --------------- Some of these are quite important and will be main goals for 1.0. - Support for icc files and colormanagement. - Boolean operations on Bezier objects - Area text - Winding rule for fills - More font features: - TrueType - Multiple Master fonts - Vector patterns Details: ========= Text: ----- There are two variants of text objects. `Point text', which is basically an extension of the current SimpleText class and `area text', text set in some kind of container, such as a rectangle, ellipse or arbitrary curve. (perhaps path text should be a special kind of area text?) Both types should be able to handle: - Multiple fonts - The usual text selection, copy and paste - Multiple encodings, not just ISO-Latin-1 but also other 8 and 16-bit encodings. For a start, it would perhaps be enough to have just one encoding per object, but multiple encodings per object would be very interesting, even for english text, as you could easily include e.g. math symbols. The best approach might actually be to use Unicode. - typesetting features such as kerning and ligatures - subscript, superscript Point Text: - Multiple lines Area text: - area text would be a more or less complete word processor. - text flow across multiple containers