Understanding Gestaltung's generative design
This exercise uses OpenType font file. The text is manipulated using the opentype methods to draw the text on canvas.
// Declare variables for font
let font;
let textTyped = 'ABC';
let path;
function setup() {
    createCanvas(500, 500);
    // Load the font with all its functions
    opentype.load('../data/FreeSans.otf', function(err, f) {
        if(err){
            console.log('Error');
        } else {
            font = f;
            noLoop();
        }
    });
}
function draw() {
    // If there is no font return nothing
    if(!font) return;
    background(255);
    translate(20, 220);
    
    if(textTyped.length > 0) {
        // Call the getpath function to get a path from opentype
        let fontPath = font.getPath(textTyped, 0, 0, 200);
        console.log(fontPath);
        // Get the points in the path which are in the commands
        // Convert them to a g.Path object
        path = new g.Path(fontPath.commands);
        // Resample the path with only 10 px between them
        // The less pixels the more points are returned
        path = g.resampleByLength(path, 10);
        console.log(path);
    }
}
let font;
let textTyped = 'ABC';
let path;
function setup() {
    createCanvas(500, 500);
    opentype.load('../data/FreeSans.otf', function(err, f) {
        if(err){
            console.log('Error');
        } else {
            font = f;
            noLoop();
        }
    });
}
function draw() {
    if(!font) return;
    background(255);
    translate(20, 220);
    
    if(textTyped.length > 0) {
        let fontPath = font.getPath(textTyped, 0, 0, 200);
        console.log(fontPath);
        path = new g.Path(fontPath.commands);
        path = g.resampleByLength(path, 10);
        console.log(path);
    }
    // Add fill, stroke and diameter to the objects
    fill(0);
    noStroke();
    let diameter = 5;
    // Go through array to get the points and draw them
    for(let i = 0; i < path.commands.length; i++) {
        let pnt = path.commands[i];
        ellipse(pnt.x, pnt.y, diameter, diameter);
    }
}
function keyPressed() {
    if (key == 's' || key == 'S') saveCanvas(gd.timestamp(), '.png');
}
