["ஹ", "௸", "௵", "꧄", "ဪ", "꧅", "", "", "﷽", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""];

function setup() {
createCanvas(800, 800);
colorMode(HSB, 360, 100, 100, 100);
angleMode(DEGREES);
noSmooth();
noLoop();
}

function draw() {
background(0, 0, 90);
let offset = width / 20;
let margin = offset /3;
let cell_num = int(random(1, 8));
setGrid(-offset, -offset,
width + offset * 2, height + offset * 2,
cell_num, margin);
}

function setGrid(x, y, w, h, cell_num, m) {
let cw, ch;
let rotate_num = int(random(4));
if (rotate_num % 2 == 0) {
cw = w;
ch = h;
} else {
cw = h;
ch = w;
}
push();
translate(x + w / 2, y + h / 2);
rotate(rotate_num * 360 / 4);
translate(-cw / 2, -ch / 2);

let cdw = cw / cell_num;
let cdh = ch / cell_num;
let margin = 0;
let s = random(str_arr);
for (let j = 0; j < cell_num; j++) {
for (let i = 0; i < cell_num; i++) {
let cx = i * (cdw + margin);
let cy = j * (cdh + margin);
if (min(cdw, cdh) > width / 10) {
setGrid(cx, cy,
cdw, cdh,
int(random(1, 8)), margin);
} else {
push();
noStroke();
fill(0,0,90);
// rectMode(CENTER);
rect(cx,cy,cdw,cdh);
drawingContext.clip();
drawString(cx, cy, cdw, cdh, s);
pop();
}
}
}
pop();
}

function drawString(x, y, w, h,s) {
let cw, ch;
let rotate_num = int(random(8));
if (rotate_num % 2 == 0) {
cw = w;
ch = h;
} else {
cw = h;
ch = w;
}
push();
translate(x + w / 2, y + h / 2);
scale(random(100) >50 ? -1:1,
random(100) >50 ? -1:1);
rotate(random(360));
textSize(max(w,h));
textAlign(CENTER,CENTER);
// textStyle(BOLD);
textFont("serif");
fill(0,0,0);
text(s,0,0);
pop();

}