Work in progress on text

From GIMP GUI Redesign
Jump to: navigation, search

Text in GIMP

towards solution models

overview of text in GIMP: Text packs.jpg

Grouping of task packages


  • typography aka in-text-layouting
    • character and paragraph level
    • preset functionality and behavior
    • OpenType implementation may need to be postponed
    • lots of functions -> much screen space
    • toolbox space?
  • editing modes
    • editor, on canvas, HUD
    • level of abstraction
    • availability and placement of functions
    • switching between modes
  • basic shape
    • non-shape, rectangle
    • creation
    • modification
  • text in 2D-space
    • needs logical specification
    • needs ui implementation, how to make the two tools work together
    • dependencies: vector tool, GEGL (for non-destructiveness)
    • minor number of functions inside text tool. most adjustment is done in vector tool


  • annotations
    • differ in many dimensions to usual text:
      • need to be turned on and off quickly
      • have no need for most of the formatting options
      • searchable?
    • = are better managed by its own system
  • complex shape/vector management
    • creation and modification of complex shapes and paths is exactly what the new vector tool is made for
    • doubling it in the text-tool…
      • …overloads the text tool
      • …uses space and control used for text-specific work
    • with GEGL a "link" between text-object and the shape should do the job
    • = should be done in vector tool: unified approach
  • text effects
    • drop shadow etc. are not unique to text
    • useful for different sorts of objects (vectors)
    • workflow is "select object" - "apply effect", no matter if it is special to text or a global effect
    • = unified approach suits it better

starting points

text (no container) fixed basic (rectangular) shape fixed (any) vector shape
aims/scenarios click'n'type


text centered

small amounts of text

non-strict layouting

area/shape is not an object as itself

layout centered = placement control

prevent/control intereference with other objects on canvas (boundaries)

use box as a shape (the box itself is


generally broad variety of aims

free art vs. exact layouting

interaction with rest of canvas

definition one corner is defined (e.g. its coordinates) all four sides are defined.

when reaching the right side, text is wrapped

when reaching the lower side, text runs out of the box and is visually clipped

same as in fixed basic shape
creating click + enter text,

sets start point of baseline

resulting "shape" is always rectangular

click + drag

? convert rectangular vector shape + enter text?

  • create text shape vector specifically for it
  • use existing vector
    • copy it -> text shape vector
    • clone it -> text shape vector that reflects changes on vector of origin
modifying resize -> becomes fixed shape

in-text layouting might modify shape


  • text only (changes box anyways)



convert to fixed shape

convert to vector shape

resize shape (alters line breaks)


  • text only
  • shape only (changes to vector shape mode)
  • text + shape (changes to vector shape mode)



convert to dynamic shape

convert to vector shape

resize shape (alters line breaks)

node manipulation (alters line breaks)


  • text only
  • shape only
  • text + shape


any other transformation applicable to vectors


conversion to dynamic shape (e.g. unbind from vector)

not possible to make basic shape

two subcases of the dynamic and fixed basic shape are missing from this analysis.

  • a fixed basic shape, that does not clip: lines over the bottom of the box are not clipped. Rather, the box is extended.
    • workaround: this can easily be achieved by vertically resizing the box
  • a fixed basic shape, that does not wrap: text runs out of the right side of the box, but is invisible outside the box. only manual line breaks cause new lines. However it is clipped at the bottom of the box
    • workaround: if wrapping is a property of text on a paragraph level (by default set to positive), this can be turned off. In combination with a fixed shape it allows for a replication of above case.

conclusion: these special cases can be replicated with existing means. A native implementation would complicate the system too much and is much less appealing than the simplicity of the current implementation.