mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-21 13:06:23 +01:00
130 lines
4.1 KiB
Plaintext
130 lines
4.1 KiB
Plaintext
import java.awt.Desktop;
|
|
|
|
int curY = 0;
|
|
PFont myFont;
|
|
PrintWriter logOutput;
|
|
|
|
void setup() {
|
|
|
|
size(1200, 1000);
|
|
|
|
boolean smooth = true;
|
|
boolean crisp = false;
|
|
curY = 0;
|
|
|
|
int[] unicodeBlocks = {
|
|
0x0021, 0x007E, //Basic Latin, 128, 128, Latin (52 characters), Common (76 characters)
|
|
0x0080, 0x00FF, //Latin-1 Supplement, 128, 128, Latin (64 characters), Common (64 characters)
|
|
0x0100, 0x017F, //Latin Extended-A, 128, 128, Latin
|
|
0x0180, 0x024F, //Latin Extended-B, 208, 208, Latin
|
|
//0x0250, 0x02AF, //IPA Extensions, 96, 96, Latin
|
|
//0x02B0, 0x02FF, //Spacing Modifier Letters, 80, 80, Bopomofo (2 characters), Latin (14 characters), Common (64 characters)
|
|
//0x0030, 0x0039, //Example custom range (numbers 0-9)
|
|
//0x0041, 0x005A, //Example custom range (Upper case A-Z)
|
|
//0x0061, 0x007A, //Example custom range (Lower case a-z)
|
|
//0xF000, 0xF0FF, //weather font
|
|
};
|
|
|
|
int blockCount = unicodeBlocks.length;
|
|
int firstUnicode = 0;
|
|
int lastUnicode = 0;
|
|
char[] charset;
|
|
int index = 0, count = 0;
|
|
|
|
for (int i = 0; i < blockCount; i+=2) {
|
|
firstUnicode = unicodeBlocks[i];
|
|
lastUnicode = unicodeBlocks[i+1];
|
|
if (lastUnicode < firstUnicode) {
|
|
delay(100);
|
|
System.err.println("ERROR: Bad Unicode range secified, last < first!");
|
|
System.err.print("first in range = 0x" + hex(firstUnicode, 4));
|
|
System.err.println(", last in range = 0x" + hex(lastUnicode, 4));
|
|
while (true);
|
|
}
|
|
count += (lastUnicode - firstUnicode + 1);
|
|
}
|
|
|
|
charset = new char[count];
|
|
for (int i = 0; i < blockCount; i+=2) {
|
|
firstUnicode = unicodeBlocks[i];
|
|
lastUnicode = unicodeBlocks[i+1];
|
|
for (int code = firstUnicode; code <= lastUnicode; code++) {
|
|
charset[index] = Character.toChars(code)[0];
|
|
index++;
|
|
}
|
|
}
|
|
|
|
String str = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}~°ÄÅÆÖØÚÜßáäåæéíöøúüýąČěľłńŘřŚŠź";
|
|
char[] charsetbasic = str.toCharArray();
|
|
str = "ABCDEFGHIJKLMNOPQRSTUVWXYZminortzÁÅÄÖØÚČŚŠ0123456789-";
|
|
char[] charsetdaynames = str.toCharArray();
|
|
str = "0123456789.°-";
|
|
char[] charsetnumbers = str.toCharArray();
|
|
|
|
createAndSaveFont("twcondensed", ".ttf", charsetdaynames, 20, crisp);
|
|
|
|
createAndSaveFont("bahnschrift", ".ttf", charsetbasic, 20, crisp);
|
|
createAndSaveFont("bahnschrift", ".ttf", charsetbasic, 30, crisp);
|
|
createAndSaveFont("bahnschrift", ".ttf", charsetnumbers, 70, crisp);
|
|
|
|
createAndSaveFont("calibrib", ".ttf", charsetbasic, 30, crisp);
|
|
|
|
createAndSaveFont("calibrib", ".ttf", charset, 16, crisp);
|
|
createAndSaveFont("REFSAN", ".ttf", charset, 12, crisp);
|
|
createAndSaveFont("tahoma", ".ttf", charset, 9, crisp);
|
|
|
|
try {
|
|
String path = sketchPath();
|
|
Desktop.getDesktop().open(new File(path+"/FontFiles"));
|
|
}
|
|
catch(IOException e) {
|
|
println("Failed to create the file");
|
|
}
|
|
}
|
|
|
|
void createAndSaveFont(String fontName, String fontType, char charset[], int fontSize, boolean smooth) {
|
|
|
|
int displayFontSize = fontSize;
|
|
myFont = createFont(fontName+fontType, displayFontSize, smooth, charset);
|
|
fill(0, 0, 0);
|
|
textFont(myFont);
|
|
int gapx = displayFontSize*10/8;
|
|
int gapy = displayFontSize*10/8;
|
|
int index = 0;
|
|
fill(0);
|
|
textSize(displayFontSize);
|
|
curY += gapy;
|
|
for (int y = curY; y < height-gapy; y += gapy) {
|
|
int x = 10;
|
|
curY = y;
|
|
while (x < width) {
|
|
|
|
int unicode = charset[index];
|
|
float cwidth = textWidth((char)unicode) + 2;
|
|
if ( (x + cwidth) > (width - gapx) ) break;
|
|
|
|
text(new String(Character.toChars(unicode)), x, y);
|
|
|
|
x += cwidth;
|
|
index++;
|
|
if (index >= charset.length) break;
|
|
}
|
|
if (index >= charset.length) break;
|
|
}
|
|
|
|
PFont font;
|
|
font = createFont(fontName + fontType, fontSize, smooth, charset);
|
|
println("Created font " + fontName + str(fontSize) + ".vlw");
|
|
try {
|
|
print("Saving to sketch FontFiles folder... ");
|
|
OutputStream output = createOutput("FontFiles/" + fontName + str(fontSize) + ".vlw");
|
|
font.save(output);
|
|
output.close();
|
|
println("OK!");
|
|
delay(100);
|
|
}
|
|
catch (IOException e) {
|
|
println("Doh! Failed to create the file");
|
|
}
|
|
}
|