V6 Changes: Text

The next public build will be using an entirely new architecture for drawing (and printing) text. I’m sure there will be bugs so keep an eye open and report anything that looks odd.

Why a new text architecture?

  • We want to start supporting a richer set of text features in the future. Things like being able to change font characteristics in a single stretch of text, superscripts, subscripts, stacked fractions… The current architecture was becoming a bit too unwieldy to be able to do this.
  • Windows and Mac Rhino currently use completely different architectures for drawing text with OpenGL which increases development time and makes finding/fixing bugs on both platforms difficult.
  • We want to use modern OpenGL features when available for improving quality, speed, and stability.
  • Make our SDK easier for drawing text in Rhino viewports.

What has changed?

  • Any text that is displayed in a Rhino viewport is drawn using the new architecture. This includes text, dimensions, text dots, xyz labels on the axis icon, grasshopper previews of text.
  • There are essentially two functions at the lowest level which perform the text drawing. Which function is called is based on the OpenGL capabilities of the display driver. If the driver supports OpenGL 2.1 or higher (pretty much all modern drivers), then things like programmable shaders are used for drawing text. Legacy fixed function OpenGL is used for drivers that are at levels below OpenGL 2.1

Future Work

  • There is still plenty to do to improve both the quality of the text displayed and the performance speed. Right now the current text probably looks slightly worse than V5. The initial work was done just to make sure all of the text showed up in the correct locations on the screen and printed correctly under both raster and vector output.
  • A list of outstanding issues to improve text quality/speed in V6 which can be found at http://mcneel.myjetbrains.com/youtrack/issue/RH-30878