How can I set different sizes for Char with Geomerative?

Hello,
I am using the Geomerative library to draw some text. I manage to split it into chars and then set their size
according to their distance with mouseX, but the space between char is acting strangely. I’d like it to be the same and the text in the same order… Now the space is very large and the letters one on the other!!
Can someone help me to solve this problem please?
Thanks a lot in advance.
best,
L

import processing.pdf.*;
import geomerative.*;

int x, y;
String message="music is like a mountain path";
float [] fontSizes= new float[message.length()];
color textColor=0;
RFont f;
RShape gShape; 
RPoint[][] points; 
float fontSize=50;
int splitGlyph = 100;

void setup() {
  size(1920, 1000);
  RG.init(this);
  for (int i=0; i<message.length(); i++) {
    fontSizes[i]= fontSize;
  }

  points=new RPoint [message.length()][splitGlyph];
}

void draw() {

  background(255);
  smooth();
  translate(100, 500);

  for (int i=0; i<message.length(); i++) {     
    fontSizes[i]=fontSize;
    f = new RFont("FreeSans.ttf", int(fontSize), LEFT);
  } 
  //get grouped lettershapes from RFont
  RShape gShape = f.toShape(message);

  //get the PShape[] containing all the single letters as RShapes. Each letter = children
  RShape[] letterShapes = gShape.children;
  //Number of childrens --> number of letters
  int tChildCount = letterShapes.length;
  for (int i = 0; i < tChildCount; i++) {
    RShape tShape = letterShapes[i];
    // Calculate distance between mouseX position and the center of each character
    float d= dist(mouseX, 0, letterShapes[i].getCenter().x, 0);
    println(d);
    //Scale each character according to its distance with mouseX
    if (d<200) {
      float s= map(d, 0, 200, 2, 1);
      letterShapes[i].scale(s);
    }
    for (int j=0; j<splitGlyph; j++) {
      float frac=(1.0/splitGlyph);
      points[i][j]=letterShapes[i].getPoint(j*frac);
      //get the corner-points of the bounding box
      RPoint topLeft = tShape.getTopLeft();
      RPoint bottomRight = tShape.getBottomRight();
      // drawing letters outlines
      //tShape.draw();
      //draw bounding box using the two cornerpoints
      stroke(0);
      noFill();
      rect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
      fill(255);
      //Draw points along the letters shapes
      pushStyle();
      stroke(0, 200);
      strokeWeight(2);
      point( points[i][j].x, points[i][j].y);
      popStyle();
    }
  }
}

Oups sorry @jeremydouglas for not formating the code!
Since then I’ve solved my problem I manage to enlarge letters according to mouse position,
but now I’d like to select one line at a time and not both?! How should I proceeed please?! Thanks a lot in advance.
Best,
L

import processing.pdf.*;
import geomerative.*;

int x, y;
String [] message={"music is like a mountain path, once at the top", "you come down then go up again"};
float [] fontSizes= new float[message.length];
color textColor=0;
RFont f;
RShape gShape; 
RPoint[][] points; 
float fontSize=80;
int splitGlyph = 80;
String fontName="FreeSans.ttf";
int currentPhrase;

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void setup() {
  size(1920, 1000);
  RG.init(this);
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void draw() {

  background(255);
  smooth();

  translate(100, 500);

  for (int l=0; l<message.length; l++) {
    pushMatrix();
    translate(0, l*150);
    for (int i=0; i<message[l].length(); i++) {
      f = new RFont("FreeSans.ttf", int(fontSize), LEFT);
      //get grouped lettershapes from RFont
      points=new RPoint [message[l].length()][splitGlyph];
      gShape = f.toShape(message[l]);
      //get the PShape[] containing all the single letters as RShapes. Each letter = children
      RShape[]letterShapes = gShape.children;
      //Number of childrens --> number of letters
      int tChildCount = letterShapes.length;
      println(letterShapes.length);
      for (int k = 0; k < tChildCount; k++) { 
        RShape tShape = letterShapes[k];

        // Calculate distance between mouseX position and the center of each character
        float dx= dist(mouseX, 0, letterShapes[k].getCenter().x, 0);
        //Scale each character according to its distance with mouseX
        if (dx<100) {
          float sx= map(dx, 0, 100, 2, 1);
          float r= map(dx, 0, 100, 0, -TWO_PI);
          gShape.children[k].scale(sx, gShape.children[k].getCenter());
          //gShape.children[k].rotate(r, gShape.children[k].getCenter());
        }
        for (int j=0; j<splitGlyph; j++) {
          float frac=(1.0/splitGlyph);
          points[k][j]=letterShapes[k].getPoint(j*frac);
          //get the corner-points of the bounding box
          RPoint topLeft = tShape.getTopLeft();
          RPoint bottomRight = tShape.getBottomRight();
          // drawing letters outlines
          //tShape.draw();
          //draw bounding box using the two cornerpoints
          stroke(0);
          noFill();
          //rect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
          fill(255);
          //Draw points along the letters shapes
          pushStyle();
          stroke(0, 200);
          strokeWeight(1);
          point( points[k][j].x, points[k][j].y);
          popStyle();
        }
      }
    }
    popMatrix();
  }
}