Боже мой! Я пошел просить о помощи, но всплыла подсказка со словами: не просите помощи ... хе-хе, через три дня я сделал это сам, поэтому подумал, что поделюсь несколькими дополнительными советами.
Вытащить файл в Java довольно легко.
Для импорта символов используйте (псевдокод) ,
BufferedInputStream bf = new BufferedInputStream(importGBKFileStream); byte glyphline[] = new byte[glyphBitWith/8]; // 64 for GBK 64 while (bf.available() > 0) { bf.read(glyphline); for(int i = 0 ; i < glyphline.length ; i++){ String s = ("0000000" + Integer.toBinaryString(0xFF & glyphline[i])).replaceAll(".*(.)$", "$1"); ... etc
Чтобы отобразить глифы на EPD
После некоторой тренировки вам нужно отправить два байта в EPD для каждого персонажа. Эти символы начинаются с (старший байт) 0x81, (младший байт) 0x40.
Это хорошая ссылка, https://en.wikipedia.org/wiki/GBK, чтобы увидеть, как устроен набор данных GBK. Еще одна полезная ссылка - это https://r12a.github.io/apps/encodings/
Создание собственного шрифта (псевдокод)
Загрузите файл .ttf и откройте его в Java
Font font = Font.createFont(Font.TRUETYPE_FONT, inttf); font = font.deriveFont((float) 64); // for all characters in ASCII table text = Character.toString(chara); img = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_BYTE_BINARY); g2d = img.createGraphics(); g2d.setColor(Color.BLACK); g2d.fillRect(0, 0, imageWidth, imageHeight); g2d.setColor(Color.WHITE); g2d.setFont(font); fm = g2d.getFontMetrics(); // for all ascii values 0 - 256, xpos g2d.drawString(text, 0, fm.getAscent()); // use the character and the derrived with from the FontMetrics to // create a map for spacing the text manually characterWidthLogger(chara, textWidth); // should have the image as a dataByte buffer WritableRaster raster = img.getRaster(); DataBufferByte data = (DataBufferByte) raster.getDataBuffer(); // output the data to a file or screen displayByteArray(data ,imageHeight, imageWidth);
CharacterWidthLogger () важен. На микроуправлении, которое контролирует EPD, я использую карту characterWidth, чтобы установить интервал как. Для этого команда «Текст» становится 4 отдельными командами ((x0, y0, «T»), (x0 + width «T», y0 «e») и т. Д.), И каждый символ затем преобразуется в китайский формат. где вы размещаете глифы в ваших файлах GBK, зависит только от вас. Epd разрешает только три файла GBK32, GBK48 и GBK64. Я скопировал китайские глифы в начале верхнего 0x81, нижнего 0x80. Таким образом, T, который является ascii 0x54, становится 0x81, 0xD4.
Надеюсь, поможет
Hayden