Different x starting position of text

Hey,
My code draws a text line by line to the screen in different sizes, but the lines seem to start at a different x position according to the text size. Also the first line begins at a different x position. Could somebody explain me why this is happening and how I could change that?


Many thanks in advance!

PFont font;

String [] lines;
int index = 0;
int xvalue;


void setup() {
  size(600, 400);
  font = createFont("UtopiaStd-Regular", 20);

  String everything; 
  everything = "Hab’ ich mich nicht an den ganz historischen Energien der Umwelt, die uns so ausgiebig zu lachen machten, so wenig begrenzt sie waren, selbst ergetzt? Hab’ ich nicht – o was gibt der Einzelne, daß er über sich schimpfen darf! Ich will, lieber Freund, ich verspreche dir’s ich will mich stärken, will nicht mehr ein bißchen Elend, das uns das Einverständnis vorlegt, wiederholen wie ich’s immer getan habe; ";
  lines = splitTokens(everything, ",.?!;:");
  textFont(font);
  frameRate(2);
}

void draw() {
  background(0);
  int y=7; 
  int x = 10;
  for (int index=0; index<lines.length; index++) {
        if(random(100) > 50){
     xvalue=20;
}
else {
    xvalue = 40;   
}
    textSize(xvalue);
    float a1= textAscent() + textDescent(); 
    y+=a1;
    text(lines[index], x, y);    
  }
  noLoop();
}
void keyPressed() {
  redraw();
}

I think it’s because the first letter in the line is ’ ’ (space).

Check with if( lines[index].charAt(0) == ' ') println("space");

if so remove the first sign

Yes this explains why the first word starts at a different position!
Thank you :slight_smile:

Do you know how I could say, that all lines with text size = 40 start for example at x= -10? To also compensate the optical difference of the starting point?

Kind regards,
Ida

Hello,

To cut the first letter away look at: String::substring() \ Language (API) \ Processing 3+

or use trim() command:

text(lines[index].trim(), x, y);

Then your question isn’t necessary anymore. [all lines with text size = 40 start for example at x= -10?]


Your Question

in the part of the if-clause where you say xvalue = 40 add in your code: x= -10

Are you in a class with Sophie?

Warm regards,

Chrisir


Full Code:

The full code uses trim() AND x= -10 which doesn’t make sense…


PFont font;

String [] lines;
int index = 0;
int xvalue;


void setup() {
  size(600, 400);
  font = createFont("UtopiaStd-Regular", 20);

  String everything; 
  everything = "Hab’ ich mich nicht an den ganz historischen Energien der Umwelt, die uns so ausgiebig zu lachen machten, so wenig begrenzt sie waren, selbst ergetzt? "
    +"Hab’ ich nicht – o was gibt der Einzelne, daß er über sich schimpfen darf! Ich will, lieber Freund, ich verspreche dir’s ich will mich stärken, will nicht mehr ein bißchen Elend, das uns das Einverständnis vorlegt, "
    +"wiederholen wie ich’s immer getan habe; ";
  lines = splitTokens(everything, ",.?!;:");
  textFont(font);
  frameRate(2);
}

void draw() {
  background(0);
  int y=7; 
  int x = 10;
  for (int index=0; index<lines.length; index++) {
    if (random(100) > 50) {
      xvalue=20;
    } else {
      xvalue = 40;
      x=-10;
    }
    textSize(xvalue);
    float a1= textAscent() + textDescent(); 
    y+=a1;
    text(lines[index].trim(), x, y);
  }
  noLoop();
}
void keyPressed() {
  redraw();
}
//
1 Like