Skip to content
Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版 SJISバージョン
C C++
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
img
misakiSJIS
.gitattributes
README.md

README.md

Arduino-misakiSJIS

Arduino用 美咲フォントライブラリ 教育漢字・内部フラッシュメモリ乗せ版

概要

Arduino用の美咲フォントドライバライブラリのシフトJISバージョンです。

※ 美咲フォントは、Little Limitさんが開発し、配布しているフォントです。
  8×8 ドット日本語フォント「美咲フォント」
   http://littlelimit.net/misaki.htm

フォントを教育漢字1,006字(小学校で習う漢字)+ひらがな・カタカナ・記号・半角等の1,710字に絞って Arduino Uno(Atmega328)のフラッシュメモリ上に格納しました。

※Arduino IDEでは文字コードにUTF-8を利用しています。スケッチ内で直接日本語を含む文字列を扱いたい場合は、Arduino-misakiUTF16をお使い下さい。

収録文字
対応フォント

仕様

  • 文字コード シフトJIS
  • フォントデータ 8x8ドッド美咲フォント
    美咲フォント: http://www.geocities.jp/littlimi/misaki.htm
  • 利用可能フォント数 1,710字(Arduinoのフラッシュメモリ上に格納)
    • 漢字 教育漢字 1,006字(小学校で習う漢字)
    • 非漢字 全角 546字(全角英数字、ひらがな、かたかな、記号)
    • 半角フォント 158字(半角記号、半角英数、半角カタカナ)

利用可能API

半角コード(記号英数字、カナ)をSJIS全角コードに変換する

  • 書式
    uint16_t HantoZen(uint16_t sjis)

  • 引数
    sjis: 文字コード(IN)

  • 戻り値
    変換したSJIS文字コード
    (指定したコードが全角の場合はそのままコードを返す)

SJISに対応するフォントデータ(8バイト)取得

  • 書式
    boolean getFontDataBySJIS(byte* fontdata, uint16_t sjis)

  • 引数
    fontdata: フォントデータ格納アドレス(OUT)
    sjis: SJIS文字コード(IN)

  • 戻り値
    true: 正常終了
    false: 異常終了
    対応するフォントが無かった場合、フォントデータとして豆腐(▢)を返す。

文字列に対応する先頭文字のフォントデータ取得

  • 書式
    char* getFontData(byte* fontdata,char *pSJIS,bool h2z=false)

  • 引数
    fontdata: フォントデータ格納アドレス(OUT)
    pSJIS: SJIS文字列(IN)
    h2z: 半角全角変換指定(IN)  true:全角変換あり false 全角変換なし(省略時デフォルト)

  • 戻り値
    変換を行った文字の次位置のアドレスを返す(文列末は0x00を指す位置となる).
    取得失敗時はNULLを返す.

フォントデータテーブル先頭アドレス取得

  • 書式
    const uint8_t* getFontTableAddress()

  • 引数
    なし

  • 戻り値
    フォントデータを格納しているデータ領域の先頭アドレスを返す.
    アドレスはフラッシュメモリ領域であるため領域参照はpgm_read_byte()を利用する必要がある.

■ 利用可能フォントの検索

  • 書式
    int findcode(uint16_t sjis)

  • 引数
    sjis: SJIS文字コード(IN)

  • 戻り値
    指定したコードに対するフォントコード(0~1709)を返す.
    該当するフォントが存在ししない場合は-1 を返す.
    本関数で取得したコードはフォントデータテーブル上の格納順番を示すコードである.
    フォントの格納アドレスの取得は次の記述で行える.
    getFontTableAddress()+findcode(sjis)*7

サンプルスケッチ

banner

//
// 美咲フォントライブラリサンプルプログラム by たま吉さん
//  2018/01/31 作成
//

#include <misakiSJIS.h>

//
// フォントパターンをコンソールに表示する
// 引数
//  pSJIS 表示する文字列
//  fore  ドットに使用するキャラクタ
//  back  空白に使用するキャラクタ
//
// ※半角文字は全角文字に置き換えを行う
//
void banner(char * pSJIS, char* fore, char* back) {
  int n=0;
  byte buf[20][8];  //160x8ドットのバナー表示パターン

  // バナー用パターン作成
  while(*pSJIS)
    pSJIS = getFontData(&buf[n++][0], pSJIS,0);  // フォントデータの取得

  // バナー表示
  for (byte i=0; i < 8; i++) {
    for (byte j=0; j < n; j++)
        for (byte k=0; k<8;k++)
          Serial.print(bitRead(buf[j][i],7-k) ? fore: back);
    Serial.println();
  }
  Serial.println();
}

void setup() {
  char str[] = {0x7a,0x7b,0x7c,0x7d,0x7e,0xa2,0xb1,0xb2,0xb3,0};// z{|}~「アイウ
  Serial.begin(115200);
  banner("Z[\\]^_`abc","$"," ");
  banner(str,"$"," ");
  banner("\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8","##","  "); //あいうえお
  banner("\x8d\xe9\x8B\xCA\x81\x99\x82\xB3\x82\xA2\x82\xBD\x82\xDC","[]","  "); // 埼玉☆さいたま  
}

void loop() {
}

banner

ライセンスについて

本フォントライブラリは、「美咲フォント」と同様にフリー(自由な)ソフトウエアです。
あらゆる改変の有無に関わらず、また商業的な利用であっても、
自由にご利用、複製、再配布することができます。
ただし、全て無保証とさせていただきます。

You can’t perform that action at this time.