16x16漢字フォント表示テスト
Dependencies: SDFileSystem mbed
16x16漢字フォント表示テストプログラムです。
フォントファイルは http://goji2100.com に置いてあります。
(日本語フォントROM GT20L16J1Y が在庫切れのため・・)
「委託品からスイッチサイエンス商品となりました」だそうです・・(;
https://www.switch-science.com/catalog/1611/
GKanji16.cpp@0:41876cc67853, 2014-09-23 (annotated)
- Committer:
- Goji
- Date:
- Tue Sep 23 10:01:01 2014 +0000
- Revision:
- 0:41876cc67853
16x16 ??????????????????? http://goji2100.com ?????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Goji | 0:41876cc67853 | 1 | #include "mbed.h" |
Goji | 0:41876cc67853 | 2 | #include "SDFileSystem.h" |
Goji | 0:41876cc67853 | 3 | SDFileSystem sd(p5, p6, p7, p8, "sd"); |
Goji | 0:41876cc67853 | 4 | |
Goji | 0:41876cc67853 | 5 | int Load_Font16(uint16_t req, uint8_t *buff) |
Goji | 0:41876cc67853 | 6 | { |
Goji | 0:41876cc67853 | 7 | static FILE *fp = 0; |
Goji | 0:41876cc67853 | 8 | |
Goji | 0:41876cc67853 | 9 | if ((fp == 0) || (req == 0xFFF0)) { |
Goji | 0:41876cc67853 | 10 | fp = fopen("/sd/jiskan16.fnt", "rb"); |
Goji | 0:41876cc67853 | 11 | if (req == 0xFFF0) return((fp) ? 0 : -1); |
Goji | 0:41876cc67853 | 12 | } |
Goji | 0:41876cc67853 | 13 | |
Goji | 0:41876cc67853 | 14 | if (req == 0xFFF1) { |
Goji | 0:41876cc67853 | 15 | fclose(fp); |
Goji | 0:41876cc67853 | 16 | return(0); |
Goji | 0:41876cc67853 | 17 | } |
Goji | 0:41876cc67853 | 18 | |
Goji | 0:41876cc67853 | 19 | if (fseek(fp, (req * 32L), SEEK_SET) != -1) { |
Goji | 0:41876cc67853 | 20 | fread(buff, 1, 32, fp); |
Goji | 0:41876cc67853 | 21 | return(0); |
Goji | 0:41876cc67853 | 22 | } |
Goji | 0:41876cc67853 | 23 | return(-1); |
Goji | 0:41876cc67853 | 24 | } |
Goji | 0:41876cc67853 | 25 | |
Goji | 0:41876cc67853 | 26 | void Disp_Font16(uint16_t k) |
Goji | 0:41876cc67853 | 27 | { |
Goji | 0:41876cc67853 | 28 | uint8_t buff[16][2]; |
Goji | 0:41876cc67853 | 29 | |
Goji | 0:41876cc67853 | 30 | k -= (k > 0x9FFC) ? (0x8140 + 0x4000) : 0x8140; |
Goji | 0:41876cc67853 | 31 | if (k & 0x00C0) k--; |
Goji | 0:41876cc67853 | 32 | k = ((k >> 8) * 94 * 2) + (k & 0x00FF); |
Goji | 0:41876cc67853 | 33 | |
Goji | 0:41876cc67853 | 34 | Load_Font16(k, buff[0]); |
Goji | 0:41876cc67853 | 35 | |
Goji | 0:41876cc67853 | 36 | for (int y = 0; y < 16; y++) { |
Goji | 0:41876cc67853 | 37 | for (int x = 0; x < 2; x++) { |
Goji | 0:41876cc67853 | 38 | for (uint8_t m = 0x80; m; m >>= 1) { |
Goji | 0:41876cc67853 | 39 | printf((buff[y][x] & m) ? "o" : "."); |
Goji | 0:41876cc67853 | 40 | } |
Goji | 0:41876cc67853 | 41 | } |
Goji | 0:41876cc67853 | 42 | printf("\n"); |
Goji | 0:41876cc67853 | 43 | } |
Goji | 0:41876cc67853 | 44 | printf("\n"); |
Goji | 0:41876cc67853 | 45 | } |
Goji | 0:41876cc67853 | 46 | |
Goji | 0:41876cc67853 | 47 | |
Goji | 0:41876cc67853 | 48 | void Disp_KANJI(uint16_t *s) |
Goji | 0:41876cc67853 | 49 | { |
Goji | 0:41876cc67853 | 50 | while(*s) Disp_Font16(*s++); |
Goji | 0:41876cc67853 | 51 | } |
Goji | 0:41876cc67853 | 52 | |
Goji | 0:41876cc67853 | 53 | uint16_t kstr[] = { |
Goji | 0:41876cc67853 | 54 | 0x93FA, 0x967B, 0x8CEA, 0x955C, 0x8EA6, 0x82CC, 0x8365, 0x8358, 0x8367, 0x82C5, 0x82B7, 0x8142 |
Goji | 0:41876cc67853 | 55 | , 0 |
Goji | 0:41876cc67853 | 56 | }; |
Goji | 0:41876cc67853 | 57 | |
Goji | 0:41876cc67853 | 58 | |
Goji | 0:41876cc67853 | 59 | int main() |
Goji | 0:41876cc67853 | 60 | { |
Goji | 0:41876cc67853 | 61 | Disp_KANJI(kstr); |
Goji | 0:41876cc67853 | 62 | |
Goji | 0:41876cc67853 | 63 | uint16_t ds = 0x93FA; |
Goji | 0:41876cc67853 | 64 | uint16_t de = 0x94FF; |
Goji | 0:41876cc67853 | 65 | |
Goji | 0:41876cc67853 | 66 | for ( ; ds < de; ds++) { |
Goji | 0:41876cc67853 | 67 | if (ds < 0x8140) continue; |
Goji | 0:41876cc67853 | 68 | if (ds > 0xE0FC) break; |
Goji | 0:41876cc67853 | 69 | if ((ds & 0x00FF) < 0x40) continue; |
Goji | 0:41876cc67853 | 70 | if ((ds & 0x00FF) == 0x7F) continue; |
Goji | 0:41876cc67853 | 71 | if ((ds & 0x00FF) > 0xFC) continue; |
Goji | 0:41876cc67853 | 72 | |
Goji | 0:41876cc67853 | 73 | printf("%04X:\n", ds); |
Goji | 0:41876cc67853 | 74 | Disp_Font16(ds); |
Goji | 0:41876cc67853 | 75 | } |
Goji | 0:41876cc67853 | 76 | } |