U 8 G 2中国語ライブラリをカスタマイズする方法
U 8 G 2ライブラリを使用してOled表示しますが、中国語サポートが足りず、自分で作った中国語フォントライブラリを使用しようとしています
必要な材料とツール: .mapファイル .pdfファイル(フォントファイル) bdfconv.exe(u 8 g 2持参) テキストとunicodeコード変換ガジェット TTF to BDFツールotf 2 bdf(u 8 g 2 githubにダウンロードあり) 1文字をtxtファイルに収集
iconvツールはほとんどの文字セット符号化をサポートしていますが、元のtxtファイルはUTF-8符号化で保存することをお勧めします.
txtテキストファイルは改行してもよいし、重複する文字が存在してもよい.ただし、ASCII文字を含めることはできません.例えばstr.txtファイル
2文字ファイルをbdfconvに変換するために必要なMapファイル
3フォントファイルをbdfファイルに変換
u 8 g 2のgithubで提供されるotf 2 bdfツール
ps:このツールはxpシステムの下で解凍して2つのdllが欠けていることを示します
freetype6.dllと
zlib1.dllネット上でこの2つのdllをダウンロードしてotf 2 bdfの同じディレクトリの下で働くことができます
8x8 Fonts:
16x16 Fonts:
4 bdfconv変換の使用
最後に生成されたmy_88yh_font.cヘッダに#include“my_88 yh_font.h”を追加
arduino処理
ヘッダファイルmy_を追加88yh_font.h
必要な材料とツール:
iconvツールはほとんどの文字セット符号化をサポートしていますが、元のtxtファイルはUTF-8符号化で保存することをお勧めします.
txtテキストファイルは改行してもよいし、重複する文字が存在してもよい.ただし、ASCII文字を含めることはできません.例えばstr.txtファイル
!"#¥%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|} ̄
2文字ファイルをbdfconvに変換するために必要なMapファイル
echo '32-128,' > myfont.map
cat str.txt | iconv -f utf-8 -t c99 | sed 's/\\u\([0-9a-f]\{4\}\)/\$\1,
/g' | sort | uniq |sed 's/^.//' | tr '/a-f/' '/A-F/' >> myfont.map
3フォントファイルをbdfファイルに変換
u 8 g 2のgithubで提供されるotf 2 bdfツール
ps:このツールはxpシステムの下で解凍して2つのdllが欠けていることを示します
freetype6.dllと
zlib1.dllネット上でこの2つのdllをダウンロードしてotf 2 bdfの同じディレクトリの下で働くことができます
8x8 Fonts:
otf2bdf -r 72 -p 8 -o
16x16 Fonts:
otf2bdf -r 72 -p 16 -o
4 bdfconv変換の使用
bdfconv -b 0 -f 1 -M myfont.map -n my_88yh_font -o my_88yh_font.c 8x8yh.bdf -d 8x8yh.bdf
最後に生成されたmy_88yh_font.cヘッダに#include“my_88 yh_font.h”を追加
arduino処理
ヘッダファイルmy_を追加88yh_font.h
#ifndef _MYFONT_H
#define _MYFONT_H
#include
#include
#ifdef __cplusplus
extern "C" {
#endif
#ifndef U8G2_USE_LARGE_FONTS
#define U8G2_USE_LARGE_FONTS
#endif
#ifndef U8X8_FONT_SECTION
#ifdef __GNUC__
# define U8X8_SECTION(name) __attribute__ ((section (name)))
#else
# define U8X8_SECTION(name)
#endif
#if defined(__GNUC__) && defined(__AVR__)
# define U8X8_FONT_SECTION(name) U8X8_SECTION(".progmem." name)
#endif
#if defined(ESP8266)
# define U8X8_FONT_SECTION(name) __attribute__((section(".text." name)))
#endif
#ifndef U8X8_FONT_SECTION
# define U8X8_FONT_SECTION(name)
#endif
#endif
#ifndef U8G2_FONT_SECTION
#define U8G2_FONT_SECTION(name) U8X8_FONT_SECTION(name)
#endif
extern const uint8_t my_88yh_font[] U8G2_FONT_SECTION("my_88yh_font");
#ifdef __cplusplus
}
#endif
#endif