User Tools


Text

Text can be used in designs to create the outline of charaters, which can then be used to create either 2D or 3D shapes.

NOTE: Only the ASCII characters can be used today.

Single Characters

A single character can be converted into an outline, i.e. segments. The character height as well as the character position can be requested by specifying options. The height is the height of UPPERCASE characters.

Defaults:

  • xOffset : 0
  • yOffset : 0
  • height : 21
  • extrudeOffset : 0
  • font : 'hershey simplex' (built in)
let char1 = vectorChar('H');
let char2 = vectorChar({ height: 50 }, 'i');

Note: The old function vector_char(x,y,char) is also available but will be deprecated in the V2 API.

The above example only creates the outlines of the characters. In order to convert to something useful, the following can be used to extrude a rectangle along the outlines, i.e. segments of each character. This example creates 3D shapes from the outlines of each character.

let shape1 = csgFromSegments(char1.segments);
let shape2 = csgFromSegments(char2.segments);
 
function csgFromSegments (segments) {
  let output = [];
  segments.forEach(segment => output.push(
    rectangular_extrude(segment, { w:2, h:1 })
  ));
  return union(output);
}

Text Strings

In addition to single characters, complete text strings can be converted to a series of outlines, i.e. segments. Text can be split into multiple lines by including '\n'. And of course, text can be aligned and spaced by specifying options.

Defaults:

  • xOffset : 0
  • yOffset : 0
  • height : 21
  • lineSpacing = 1.4
  • letterSpacing = 1
  • align = 'left'
  • extrudeOffset : 0
  • font : 'hershey simplex' (built in)

Note: The old function vector_text(x,y,string) is also available but will be deprecated in the V2 API.

let text1 = vectorText('OpenJSCAD');
let text2 = vectorText({ yOffset: -90, height: 10, extrudeOffset: 2, input: 'OpenJSCAD\nLOVE<3' });
let text3 = vectorText({ height: 25, align: 'right', lineSpacing: 2.2, extrudeOffset: 2 }, 'OpenJSCAD\nRocks!!');

Using Other Fonts

Other fonts can be used when creating the text outlines. Here are the steps.

  1. Download one or more font files from the fonts/vector directory
  2. Include the font file in the design
  3. Reference the font object
  4. Specify the 'font' in the options to vectorChar() or vectorText()

Note: Font objects append 'Font' to the font name, e.g. camBamStick1Font.

Default:

include('https://www.openjscad.org/fonts/camBamStick1.js');
 
function main (params) {
  let myfont = camBamStick1Font; // font object (! NOTE the "Font" suffix)
  let text = vectorText({font: myfont, height: 5},'OpenJSCAD');
  return csgFromSegments(text);
}
 
function csgFromSegments (segments) {
  let output = [];
  segments.forEach(segment => output.push(
    rectangular_extrude(segment, { w:2, h:1 })
  ));
  return union(output);
}

Special Note: These fonts are NOT TrueType fonts. And TrueType fonts cannot be used today. Look for full TrueType fonts in the V2 API.