!7 sclass Letter { char c; Rect r; *() {} *(char *c, Rect *r) {} } p { S code = text2floatingLetters("HELLO WORLD"); new L letters; for (S line : tlft(code)) { L tok = tok_mergeInts(javaTok(line)); if (jmatch2("Char at ( \\* )", tok)) { tok = codeTokens(tok); char c = toChar(unquote(tok.get(1))); Rect r = new Rect(getInt(tok, 4), getInt(tok, 5), getInt(tok, 7), getInt(tok, 8)); print("Char " + quote(c) + " at " + r); letters.add(Letter(c, r)); } else print("Non-match? " + line); } showImage(renderLetters(letters)); } static BufferedImage renderLetters(L letters) { Pt size = rectsMaxBottomRight(collect(letters, 'r)); BufferedImage canvas = newBufferedImage(size.x*2, size.y*2, Color.white); for (Letter l : letters) petRender(canvas, l.r.x*2, l.r.y*2, l.c); ret canvas; }