#include #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(); }