12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #include <stdio.h>
- #include "pico/stdlib.h"
- #include "pfnfont.h"
- __asm(\
- ".section \".rodata\" \n"
- ".balign 4\n"
- ".global _pfnfont_data\n"
- ".global _pfnfont_data_len\n"
- "_pfnfont_data:\n"
- ".incbin \"shnmk14u.pfn\"\n"
- ".set _pfnfont_data_len, . - _pfnfont_data\n"
- ".section \".text\"\n"
- );
- extern const uint8_t _pfnfont_data[];
- extern uint32_t _pfnfont_data_len;
- // ターミナルにアスキーアートとしてフォントを描画するコールバック関数
- void draw_font_to_terminal(font_gryph_t *gryph, int x, int y) {
- printf("--- Glyph at (%d, %d) ---\n", x, y);
- for (int r = 0; r < gryph->height; r++) {
- for (int c = 0; c < gryph->width; c++) {
- // ビットマップからピクセルデータを取得
- int bit_index = r * gryph->width + c;
- int byte_index = bit_index / 8;
- int bit_offset = 7 - (bit_index % 8);
- if ((gryph->bitmap[byte_index] >> bit_offset) & 1) {
- printf("#"); // ピクセルがオン
- } else {
- printf(" "); // ピクセルがオフ
- }
- }
- printf("\n");
- }
- printf("-----------------------\n");
- }
- int main()
- {
- stdio_init_all();
- // 描画コールバック関数を渡してPFNFontオブジェクトを生成
- PFNFont *pfn = new PFNFont((uint8_t *)_pfnfont_data, (size_t)&_pfnfont_data_len, draw_font_to_terminal);
- // フォントが正しく読み込めたかチェック
- if (pfn->isValid()) {
- printf("Font loaded successfully.\n");
- pfn->draw_string("Picoで日本語表示!", 0, 0);
- } else {
- printf("Failed to load font.\n");
- }
- // メモリを解放
- delete pfn;
-
- while (true)
- tight_loop_contents();
- }
|