快速浏览一下,我的观点是 Processing 的文本工具需要一点爱,正如您可以在此处和此处看到的(以及注释代码)。渲染器F2XD
似乎处理得更好一些;
查看图像,可能有一些特殊的 unicode 字符没有正确显示,并且字体是可变的。
如果您愿意在基本的概念证明上妥协,您可以通过坚持使用等宽字体(例如 Courier New)来获得一些东西:它会产生更可预测的结果(并使用FX2D
帮助):
float x = 5;
float y = 15;
String val = "Hello";
void setup(){
size(300, 60, FX2D);
fill(0, 192, 0);
strokeWeight(3);
textFont(createFont("Courier New", 16));
}
void draw(){
background(0);
text(val, x, y + textAscent());
stroke(0, sin(frameCount * 0.15) * 128, 0);
line(x + textWidth(val), y + 2, x + textWidth(val), y + textAscent() + 2);
}
void keyPressed(){
if(keyCode == DELETE || keyCode == BACKSPACE){
if(val.length() >= 1) val = val.substring(0, val.length() - 1);
}
if(key >= '0' && key <= 'z'){
val += key;
}
if(key == ' '){
val += ' ';
}
}
另一种选择可能是主要使用 JavaFX 来手动处理文本,然后将这些文本组件呈现到 Processing 的FX2D
Canvas 中。(这可能更冗长。)