Skip to content

Instantly share code, notes, and snippets.

@MikuroXina
Last active September 25, 2020 00:40
Show Gist options
  • Select an option

  • Save MikuroXina/ba4b014a8b1f3ec90e379e2da46d45e3 to your computer and use it in GitHub Desktop.

Select an option

Save MikuroXina/ba4b014a8b1f3ec90e379e2da46d45e3 to your computer and use it in GitHub Desktop.
M+ Bitmap Font 12x12 glyphs, Katakana-only
// katakana glyph header
// Copyright (c) MikuroXina
// SPDX-License-Identifier: Apache-2.0
#ifndef GLYPH_HPP
#define GLYPH_HPP
/**
* Glyph represents Katakana as a 12x12 bitmap.
*/
class Glyph {
unsigned char bits[18]; // 8 * 18 = 12 * 12
int column(int columnIndex) const {
int column = 0;
if (columnIndex % 2 == 0) {
// 000000001111
// 0: bits[i / 2 * 3]
// 1: bits[i / 2 * 3 + 1] & 0xf0
column |= bits[columnIndex / 2 * 3];
column |= (bits[columnIndex / 2 * 3 + 1] & 0xf0) >> 8;
} else {
// 111122222222
// 1: bits[i / 2 * 3 + 1] & 0x0f
// 2: bits[i / 2 * 3 + 2]
column |= bits[columnIndex / 2 * 3 + 1] & 0x0f;
column |= (bits[columnIndex / 2 * 3 + 2] >> 4);
}
return column;
}
public:
void write(unsigned char[16][64] buf, unsigned char x, unsigned char y) const {
for (int columnIdx = 0; columnIdx < 12; ++column) {
if (64 <= y + columnIdx) return; // out of y bounds
if (128 - 12 <= x) continue; // out of x bounds
int columnBits = column(columnIdx) >> (x % 8);
// y + columnIdx > [00000000] [00000000] ...
// ^ x / 8
buf[x / 8][y + columnIdx] = (columnBits & 0xff00) >> 8;
if (0 < x % 8) {
buf[x / 8 + 1][y + columnIdx] = columnBits & 0x00ff;
}
}
}
/**
* `code` must be in [0x30A1, 0x30F6], otherwise returns an empty glyph
*/
static Glyph katakana(char16_t code);
};
Glyph Glyph::katakana(char16_t code) {
// Original: M+ Bitmap Gothic Font
// http://mplus-fonts.osdn.jp/mplus-bitmap-fonts/
switch (code) {
case u'ァ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000000000000
001111111000
000000001000
000001001000
000001010000
000001000000
000010000000
000100000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00000000, 0b00000011, 0b11111000, 0b00000000, 0b10000000, 0b01001000,
0b00000101, 0b00000000, 0b01000000, 0b00001000, 0b00000001, 0b00000000,
};
case u'ア':
return {
/*
000000000000
000000000000
011111111110
000000000010
000000000100
000001001000
000001000000
000001000000
000001000000
000001000000
000010000000
001100000000
*/
0b00000000, 0b00000000, 0b00000000, 0b01111111, 0b11100000, 0b00000010,
0b00000000, 0b01000000, 0b01001000, 0b00000100, 0b00000000, 0b01000000,
0b00000100, 0b00000000, 0b01000000, 0b00001000, 0b00000011, 0b00000000,
};
case u'ィ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000000000000
000000001000
000000010000
000001100000
000110100000
000000100000
000000100000
000000100000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00000000, 0b00000000, 0b00001000, 0b00000001, 0b00000000, 0b01100000,
0b00011010, 0b00000000, 0b00100000, 0b00000010, 0b00000000, 0b00100000,
};
case u'イ':
return {
/*
000000000000
000000000000
000000000100
000000001000
000000010000
000001100000
000110100000
011000100000
000000100000
000000100000
000000100000
000000100000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b01000000, 0b00001000,
0b00000001, 0b00000000, 0b01100000, 0b00011010, 0b00000110, 0b00100000,
0b00000010, 0b00000000, 0b00100000, 0b00000010, 0b00000000, 0b00100000,
};
case u'ゥ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000001000000
000001000000
001111111000
001000001000
001000001000
000000001000
000000010000
000011100000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00000100, 0b00000000, 0b01000000, 0b00111111, 0b10000010, 0b00001000,
0b00100000, 0b10000000, 0b00001000, 0b00000001, 0b00000000, 0b11100000,
};
case u'ウ':
return {
/*
000000000000
000001000000
000001000000
011111111100
010000000100
010000000100
010000000100
000000001000
000000001000
000000010000
000001100000
000110000000
*/
0b00000000, 0b00000000, 0b01000000, 0b00000100, 0b00000111, 0b11111100,
0b01000000, 0b01000100, 0b00000100, 0b01000000, 0b01000000, 0b00001000,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000001, 0b10000000,
};
case u'ェ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000000000000
001111111000
000001000000
000001000000
000001000000
000001000000
001111111000
000000000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00000000, 0b00000011, 0b11111000, 0b00000100, 0b00000000, 0b01000000,
0b00000100, 0b00000000, 0b01000000, 0b00111111, 0b10000000, 0b00000000,
};
case u'エ':
return {
/*
000000000000
000000000000
000000000000
011111111100
000001000000
000001000000
000001000000
000001000000
000001000000
000001000000
111111111110
000000000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000111, 0b11111100,
0b00000100, 0b00000000, 0b01000000, 0b00000100, 0b00000000, 0b01000000,
0b00000100, 0b00000000, 0b01000000, 0b11111111, 0b11100000, 0b00000000,
};
case u'ォ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000000100000
000000100000
001111111000
000000100000
000001100000
000010100000
001100100000
000001100000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00000010, 0b00000000, 0b00100000, 0b00111111, 0b10000000, 0b00100000,
0b00000110, 0b00000000, 0b10100000, 0b00110010, 0b00000000, 0b01100000,
};
case u'オ':
return {
/*
000000000000
000000010000
000000010000
000000010000
011111111110
000000010000
000000110000
000001010000
000110010000
011000010000
000000010000
000001110000
*/
0b00000000, 0b00000000, 0b00010000, 0b00000001, 0b00000000, 0b00010000,
0b01111111, 0b11100000, 0b00010000, 0b00000011, 0b00000000, 0b01010000,
0b00011001, 0b00000110, 0b00010000, 0b00000001, 0b00000000, 0b01110000,
};
case u'カ':
return {
/*
000000000000
000001000000
000001000000
000001000000
011111111110
000001000010
000001000010
000001000010
000010000010
000010000010
000100000010
011000011100
*/
0b00000000, 0b00000000, 0b01000000, 0b00000100, 0b00000000, 0b01000000,
0b01111111, 0b11100000, 0b01000010, 0b00000100, 0b00100000, 0b01000010,
0b00001000, 0b00100000, 0b10000010, 0b00010000, 0b00100110, 0b00011100,
};
case u'ガ':
return {
/*
000000000100
000001010010
000001001000
000001000000
011111111110
000001000010
000001000010
000001000010
000010000010
000010000010
000100000010
011000011100
*/
0b00000000, 0b01000000, 0b01010010, 0b00000100, 0b10000000, 0b01000000,
0b01111111, 0b11100000, 0b01000010, 0b00000100, 0b00100000, 0b01000010,
0b00001000, 0b00100000, 0b10000010, 0b00010000, 0b00100110, 0b00011100,
};
case u'キ':
return {
/*
000000000000
000001000000
000001000000
000001000000
011111111100
000001000000
000001000000
000001000000
011111111110
000000100000
000000100000
000000100000
*/
0b00000000, 0b00000000, 0b01000000, 0b00000100, 0b00000000, 0b01000000,
0b01111111, 0b11000000, 0b01000000, 0b00000100, 0b00000000, 0b01000000,
0b01111111, 0b11100000, 0b00100000, 0b00000010, 0b00000000, 0b00100000,
};
case u'ギ':
return {
/*
000000000000
000010000100
000010010010
000010001000
111111110000
000010000000
000010000000
000010000000
111111111100
000001000000
000001000000
000001000000
*/
0b00000000, 0b00000000, 0b10000100, 0b00001001, 0b00100000, 0b10001000,
0b11111111, 0b00000000, 0b10000000, 0b00001000, 0b00000000, 0b10000000,
0b11111111, 0b11000000, 0b01000000, 0b00000100, 0b00000000, 0b01000000,
};
case u'ク':
return {
/*
000000000000
000001000000
000001000000
000001111100
000010000100
000100000100
001000000100
000000001000
000000001000
000000010000
000001100000
001110000000
*/
0b00000000, 0b00000000, 0b01000000, 0b00000100, 0b00000000, 0b01111100,
0b00001000, 0b01000001, 0b00000100, 0b00100000, 0b01000000, 0b00001000,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000011, 0b10000000,
};
case u'グ':
return {
/*
000000000100
000010010010
000010001000
000011111000
000100001000
001000001000
010000001000
000000010000
000000010000
000000100000
000011000000
011100000000
*/
0b00000000, 0b01000000, 0b10010010, 0b00001000, 0b10000000, 0b11111000,
0b00010000, 0b10000010, 0b00001000, 0b01000000, 0b10000000, 0b00010000,
0b00000001, 0b00000000, 0b00100000, 0b00001100, 0b00000111, 0b00000000,
};
case u'ケ':
return {
/*
000000000000
000100000000
000100000000
000100000000
000111111110
001000010000
010000010000
000000010000
000000100000
000000100000
000011000000
001100000000
*/
0b00000000, 0b00000001, 0b00000000, 0b00010000, 0b00000001, 0b00000000,
0b00011111, 0b11100010, 0b00010000, 0b01000001, 0b00000000, 0b00010000,
0b00000010, 0b00000000, 0b00100000, 0b00001100, 0b00000011, 0b00000000,
};
case u'ゲ':
return {
/*
000000000100
001000010010
001000001000
001000000000
001111111100
010000100000
100000100000
000000100000
000001000000
000001000000
000110000000
011000000000
*/
0b00000000, 0b01000010, 0b00010010, 0b00100000, 0b10000010, 0b00000000,
0b00111111, 0b11000100, 0b00100000, 0b10000010, 0b00000000, 0b00100000,
0b00000100, 0b00000000, 0b01000000, 0b00011000, 0b00000110, 0b00000000,
};
case u'コ':
return {
/*
000000000000
000000000000
000000000000
011111111100
000000000100
000000000100
000000000100
000000000100
000000000100
000000000100
011111111100
000000000100
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000111, 0b11111100,
0b00000000, 0b01000000, 0b00000100, 0b00000000, 0b01000000, 0b00000100,
0b00000000, 0b01000000, 0b00000100, 0b01111111, 0b11000000, 0b00000100,
};
case u'ゴ':
return {
/*
000000000100
000000100010
000000010000
011111111100
000000000100
000000000100
000000000100
000000000100
000000000100
000000000100
011111111100
000000000100
*/
0b00000000, 0b01000000, 0b00100010, 0b00000001, 0b00000111, 0b11111100,
0b00000000, 0b01000000, 0b00000100, 0b00000000, 0b01000000, 0b00000100,
0b00000000, 0b01000000, 0b00000100, 0b01111111, 0b11000000, 0b00000100,
};
case u'サ':
return {
/*
000000000000
000100001000
000100001000
000100001000
011111111110
000100001000
000100001000
000100001000
000000010000
000000010000
000001100000
000110000000
*/
0b00000000, 0b00000001, 0b00001000, 0b00010000, 0b10000001, 0b00001000,
0b01111111, 0b11100001, 0b00001000, 0b00010000, 0b10000001, 0b00001000,
0b00000001, 0b00000000, 0b00010000, 0b00000110, 0b00000001, 0b10000000,
};
case u'ザ':
return {
/*
000000000000
001000010100
001000010010
001000011000
111111110100
001000010000
001000010000
001000010000
000000100000
000000100000
000011000000
001100000000
*/
0b00000000, 0b00000010, 0b00010100, 0b00100001, 0b00100010, 0b00011000,
0b11111111, 0b01000010, 0b00010000, 0b00100001, 0b00000010, 0b00010000,
0b00000010, 0b00000000, 0b00100000, 0b00001100, 0b00000011, 0b00000000,
};
case u'シ':
return {
/*
000000000000
000000000000
001100000000
000011000000
000000000010
011000000010
000110000100
000000000100
000000001000
000000010000
000001100000
001110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00110000, 0b00000000, 0b11000000,
0b00000000, 0b00100110, 0b00000010, 0b00011000, 0b01000000, 0b00000100,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000011, 0b10000000,
};
case u'ジ':
return {
/*
000000000100
000000010010
001100001000
000011000000
000000000010
011000000010
000110000100
000000000100
000000001000
000000010000
000001100000
001110000000
*/
0b00000000, 0b01000000, 0b00010010, 0b00110000, 0b10000000, 0b11000000,
0b00000000, 0b00100110, 0b00000010, 0b00011000, 0b01000000, 0b00000100,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000011, 0b10000000,
};
case u'ス':
return {
/*
000000000000
000000000000
001111111000
000000001000
000000001000
000000001000
000000010000
000000010000
000000110000
000001001000
000110000100
011000000010
*/
0b00000000, 0b00000000, 0b00000000, 0b00111111, 0b10000000, 0b00001000,
0b00000000, 0b10000000, 0b00001000, 0b00000001, 0b00000000, 0b00010000,
0b00000011, 0b00000000, 0b01001000, 0b00011000, 0b01000110, 0b00000010,
};
case u'ズ':
return {
/*
000000100100
000000010010
011111110000
000000010000
000000010000
000000010000
000000100000
000000100000
000001100000
000010010000
001100001000
110000000100
*/
0b00000010, 0b01000000, 0b00010010, 0b01111111, 0b00000000, 0b00010000,
0b00000001, 0b00000000, 0b00010000, 0b00000010, 0b00000000, 0b00100000,
0b00000110, 0b00000000, 0b10010000, 0b00110000, 0b10001100, 0b00000100,
};
case u'セ':
return {
/*
000000000000
000010000000
000010000000
000010001110
000010110010
000111000100
111010000100
000010001000
000010000000
000010000000
000010000000
000001111110
*/
0b00000000, 0b00000000, 0b10000000, 0b00001000, 0b00000000, 0b10001110,
0b00001011, 0b00100001, 0b11000100, 0b11101000, 0b01000000, 0b10001000,
0b00001000, 0b00000000, 0b10000000, 0b00001000, 0b00000000, 0b01111110,
};
case u'ゼ':
return {
/*
000000000100
000010010010
000010001000
000010001110
000010110010
000111000100
111010000100
000010001000
000010000000
000010000000
000010000000
000001111110
*/
0b00000000, 0b01000000, 0b10010010, 0b00001000, 0b10000000, 0b10001110,
0b00001011, 0b00100001, 0b11000100, 0b11101000, 0b01000000, 0b10001000,
0b00001000, 0b00000000, 0b10000000, 0b00001000, 0b00000000, 0b01111110,
};
case u'ソ':
return {
/*
000000000000
000000000000
010000000100
010000000100
001000000100
001000000100
000000000100
000000001000
000000001000
000000010000
000001100000
000110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b01000000, 0b01000100, 0b00000100,
0b00100000, 0b01000010, 0b00000100, 0b00000000, 0b01000000, 0b00001000,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000001, 0b10000000,
};
case u'ゾ':
return {
/*
000000000100
000000010010
100000001000
100000000000
010000001000
010000001000
000000001000
000000010000
000000010000
000000100000
000011000000
001100000000
*/
0b00000000, 0b01000000, 0b00010010, 0b10000000, 0b10001000, 0b00000000,
0b01000000, 0b10000100, 0b00001000, 0b00000000, 0b10000000, 0b00010000,
0b00000001, 0b00000000, 0b00100000, 0b00001100, 0b00000011, 0b00000000,
};
case u'タ':
return {
/*
000000000000
000001000000
000001000000
000001111100
000010000100
000100000100
001001100100
000000011000
000000001000
000000010000
000001100000
001110000000
*/
0b00000000, 0b00000000, 0b01000000, 0b00000100, 0b00000000, 0b01111100,
0b00001000, 0b01000001, 0b00000100, 0b00100110, 0b01000000, 0b00011000,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000011, 0b10000000,
};
case u'ダ':
return {
/*
000000000100
000010010010
000010001000
000011111000
000100001000
001000001000
010011001000
000000110000
000000010000
000000100000
000011000000
011100000000
*/
0b00000000, 0b01000000, 0b10010010, 0b00001000, 0b10000000, 0b11111000,
0b00010000, 0b10000010, 0b00001000, 0b01001100, 0b10000000, 0b00110000,
0b00000001, 0b00000000, 0b00100000, 0b00001100, 0b00000111, 0b00000000,
};
case u'チ':
return {
/*
000000000000
000000000000
000000111100
011111000000
000001000000
000001000000
111111111110
000001000000
000001000000
000001000000
000010000000
001100000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000011, 0b11000111, 0b11000000,
0b00000100, 0b00000000, 0b01000000, 0b11111111, 0b11100000, 0b01000000,
0b00000100, 0b00000000, 0b01000000, 0b00001000, 0b00000011, 0b00000000,
};
case u'ヂ':
return {
/*
000000000000
000000000100
000000110010
011111001000
000001000000
000001000000
111111111110
000001000000
000001000000
000001000000
000010000000
001100000000
*/
0b00000000, 0b00000000, 0b00000100, 0b00000011, 0b00100111, 0b11001000,
0b00000100, 0b00000000, 0b01000000, 0b11111111, 0b11100000, 0b01000000,
0b00000100, 0b00000000, 0b01000000, 0b00001000, 0b00000011, 0b00000000,
};
case u'ッ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000000000000
001001001000
001001001000
001001001000
000000010000
000000010000
000001100000
000110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00000000, 0b00000010, 0b01001000, 0b00100100, 0b10000010, 0b01001000,
0b00000001, 0b00000000, 0b00010000, 0b00000110, 0b00000001, 0b10000000,
};
case u'ツ':
return {
/*
000000000000
000000000000
010010000100
010010000100
001001000100
001001000100
000000000100
000000001000
000000001000
000000010000
000001100000
000110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b01001000, 0b01000100, 0b10000100,
0b00100100, 0b01000010, 0b01000100, 0b00000000, 0b01000000, 0b00001000,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000001, 0b10000000,
};
case u'ヅ':
return {
/*
000000000100
000000010010
100100001000
100100000000
010010001000
010010001000
000000001000
000000010000
000000010000
000000100000
000011000000
001100000000
*/
0b00000000, 0b01000000, 0b00010010, 0b10010000, 0b10001001, 0b00000000,
0b01001000, 0b10000100, 0b10001000, 0b00000000, 0b10000000, 0b00010000,
0b00000001, 0b00000000, 0b00100000, 0b00001100, 0b00000011, 0b00000000,
};
case u'テ':
return {
/*
000000000000
000000000000
001111111100
000000000000
000000000000
011111111110
000000100000
000000100000
000000100000
000000100000
000001000000
000110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00111111, 0b11000000, 0b00000000,
0b00000000, 0b00000111, 0b11111110, 0b00000010, 0b00000000, 0b00100000,
0b00000010, 0b00000000, 0b00100000, 0b00000100, 0b00000001, 0b10000000,
};
case u'デ':
return {
/*
000000000100
000000010010
011111101000
000000000000
000000000000
111111111100
000001000000
000001000000
000001000000
000001000000
000010000000
001100000000
*/
0b00000000, 0b01000000, 0b00010010, 0b01111110, 0b10000000, 0b00000000,
0b00000000, 0b00001111, 0b11111100, 0b00000100, 0b00000000, 0b01000000,
0b00000100, 0b00000000, 0b01000000, 0b00001000, 0b00000011, 0b00000000,
};
case u'ト':
return {
/*
000000000000
000100000000
000100000000
000100000000
000100000000
000111000000
000100110000
000100001100
000100000000
000100000000
000100000000
000100000000
*/
0b00000000, 0b00000001, 0b00000000, 0b00010000, 0b00000001, 0b00000000,
0b00010000, 0b00000001, 0b11000000, 0b00010011, 0b00000001, 0b00001100,
0b00010000, 0b00000001, 0b00000000, 0b00010000, 0b00000001, 0b00000000,
};
case u'ド':
return {
/*
000000000000
001000001000
001000100100
001000010000
001000000000
001110000000
001001100000
001000011000
001000000000
001000000000
001000000000
001000000000
*/
0b00000000, 0b00000010, 0b00001000, 0b00100010, 0b01000010, 0b00010000,
0b00100000, 0b00000011, 0b10000000, 0b00100110, 0b00000010, 0b00011000,
0b00100000, 0b00000010, 0b00000000, 0b00100000, 0b00000010, 0b00000000,
};
case u'ナ':
return {
/*
000000000000
000000100000
000000100000
000000100000
011111111110
000000100000
000000100000
000000100000
000001000000
000001000000
000010000000
001100000000
*/
0b00000000, 0b00000000, 0b00100000, 0b00000010, 0b00000000, 0b00100000,
0b01111111, 0b11100000, 0b00100000, 0b00000010, 0b00000000, 0b00100000,
0b00000100, 0b00000000, 0b01000000, 0b00001000, 0b00000011, 0b00000000,
};
case u'二':
return {
/*
000000000000
000000000000
000000000000
001111111100
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
011111111110
000000000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000011, 0b11111100,
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00000000, 0b00000000, 0b00000000, 0b01111111, 0b11100000, 0b00000000,
};
case u'ヌ':
return {
/*
000000000000
000000000000
001111111100
000000000100
000000000100
000010001000
000001001000
000000110000
000000010000
000000101000
000011000100
011100000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00111111, 0b11000000, 0b00000100,
0b00000000, 0b01000000, 0b10001000, 0b00000100, 0b10000000, 0b00110000,
0b00000001, 0b00000000, 0b00101000, 0b00001100, 0b01000111, 0b00000000,
};
case u'ネ':
return {
/*
000000000000
000001000000
000001000000
011111111000
000000001000
000000010000
000000100000
000001100000
000111011000
111001000110
000001000000
000001000000
*/
0b00000000, 0b00000000, 0b01000000, 0b00000100, 0b00000111, 0b11111000,
0b00000000, 0b10000000, 0b00010000, 0b00000010, 0b00000000, 0b01100000,
0b00011101, 0b10001110, 0b01000110, 0b00000100, 0b00000000, 0b01000000,
};
case u'ノ':
return {
/*
000000000000
000000000000
000000001000
000000001000
000000001000
000000001000
000000001000
000000010000
000000010000
000000100000
000011000000
001100000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b10000000, 0b00001000,
0b00000000, 0b10000000, 0b00001000, 0b00000000, 0b10000000, 0b00010000,
0b00000001, 0b00000000, 0b00100000, 0b00001100, 0b00000011, 0b00000000,
};
case u'ハ':
return {
/*
000000000000
000000000000
000100000000
000100001000
000100001000
000100000100
001000000100
001000000100
001000000010
010000000010
010000000010
010000000010
*/
0b00000000, 0b00000000, 0b00000000, 0b00010000, 0b00000001, 0b00001000,
0b00010000, 0b10000001, 0b00000100, 0b00100000, 0b01000010, 0b00000100,
0b00100000, 0b00100100, 0b00000010, 0b01000000, 0b00100100, 0b00000010,
};
case u'バ':
return {
/*
000000000000
000000000100
000000010010
000100001000
000100000000
000100000000
000100001000
001000001000
001000000100
001000000100
010000000010
010000000010
*/
0b00000000, 0b00000000, 0b00000100, 0b00000001, 0b00100001, 0b00001000,
0b00010000, 0b00000001, 0b00000000, 0b00010000, 0b10000010, 0b00001000,
0b00100000, 0b01000010, 0b00000100, 0b01000000, 0b00100100, 0b00000010,
};
case u'パ':
return {
/*
000000000000
000000001100
000000010010
000100010010
000100001100
000100000000
000100001000
001000001000
001000000100
001000000100
010000000010
010000000010
*/
0b00000000, 0b00000000, 0b00001100, 0b00000001, 0b00100001, 0b00010010,
0b00010000, 0b11000001, 0b00000000, 0b00010000, 0b10000010, 0b00001000,
0b00100000, 0b01000010, 0b00000100, 0b01000000, 0b00100100, 0b00000010,
};
case u'ヒ':
return {
/*
000000000000
001000000000
001000000000
001000000000
001000011100
001111100000
001000000000
001000000000
001000000000
001000000000
001000000000
000111111100
*/
0b00000000, 0b00000010, 0b00000000, 0b00100000, 0b00000010, 0b00000000,
0b00100001, 0b11000011, 0b11100000, 0b00100000, 0b00000010, 0b00000000,
0b00100000, 0b00000010, 0b00000000, 0b00100000, 0b00000001, 0b11111100,
};
case u'ビ':
return {
/*
000000000000
000000000100
001000010010
001000001000
001000000000
001000011100
001111100000
001000000000
001000000000
001000000000
001000000000
000111111100
*/
0b00000000, 0b00000000, 0b00000100, 0b00100001, 0b00100010, 0b00001000,
0b00100000, 0b00000010, 0b00011100, 0b00111110, 0b00000010, 0b00000000,
0b00100000, 0b00000010, 0b00000000, 0b00100000, 0b00000001, 0b11111100,
};
case u'ピ':
return {
/*
000000000000
000000001100
010000010010
010000010010
010000001100
010001100000
011110000000
010000000000
010000000000
010000000000
010000000000
001111111000
*/
0b00000000, 0b00000000, 0b00000100, 0b00100001, 0b00100010, 0b00001000,
0b00100000, 0b00000010, 0b00011100, 0b00111110, 0b00000010, 0b00000000,
0b00100000, 0b00000010, 0b00000000, 0b00100000, 0b00000001, 0b11111100,
};
case u'フ':
return {
/*
000000000000
000000000000
011111111100
000000000100
000000000100
000000000100
000000000100
000000001000
000000001000
000000010000
000001100000
001110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b01111111, 0b11000000, 0b00000100,
0b00000000, 0b01000000, 0b00000100, 0b00000000, 0b01000000, 0b00001000,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000011, 0b10000000,
};
case u'ブ':
return {
/*
000000000100
000000100010
000000010000
111111111000
000000001000
000000001000
000000001000
000000010000
000000010000
000000100000
000011000000
001100000000
*/
0b00000000, 0b01000000, 0b00100010, 0b00000001, 0b00001111, 0b11111000,
0b00000000, 0b10000000, 0b00001000, 0b00000000, 0b10000000, 0b00010000,
0b00000001, 0b00000000, 0b00100000, 0b00001100, 0b00000011, 0b00000000,
};
case u'プ':
return {
/*
000000001100
000000010010
111111110010
000000001100
000000001000
000000001000
000000001000
000000010000
000000010000
000000100000
000011000000
001100000000
*/
0b00000000, 0b11000000, 0b00010010, 0b11111111, 0b00100000, 0b00001100,
0b00000000, 0b10000000, 0b00001000, 0b00000000, 0b10000000, 0b00010000,
0b00000001, 0b00000000, 0b00100000, 0b00001100, 0b00000011, 0b00000000,
};
case u'ヘ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000111000000
001000100000
010000010000
100000001000
000000000100
000000000010
000000000000
000000000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00011100, 0b00000010, 0b00100000, 0b01000001, 0b00001000, 0b00001000,
0b00000000, 0b01000000, 0b00000010, 0b00000000, 0b00000000, 0b00000000,
};
case u'ベ':
return {
/*
000000000000
000000000100
000000010010
000000001000
000000000000
000111000000
001000100000
010000010000
100000001000
000000000100
000000000010
000000000000
*/
0b00000000, 0b00000000, 0b00000100, 0b00000001, 0b00100000, 0b00001000,
0b00000000, 0b00000001, 0b11000000, 0b00100010, 0b00000100, 0b00010000,
0b10000000, 0b10000000, 0b00000100, 0b00000000, 0b00100000, 0b00000000,
};
case u'ペ':
return {
/*
000000000000
000000001100
000000010010
000000010010
000000001100
000111000000
001000100000
010000010000
100000001000
000000000100
000000000010
000000000000
*/
0b00000000, 0b00000000, 0b00001100, 0b00000001, 0b00100000, 0b00010010,
0b00000000, 0b11000001, 0b11000000, 0b00100010, 0b00000100, 0b00010000,
0b10000000, 0b10000000, 0b00000100, 0b00000000, 0b00100000, 0b00000000,
};
case u'ホ':
return {
/*
000000000000
000001000000
000001000000
000001000000
111111111110
000001000000
000001000000
001001001000
010001000100
100001000010
000001000000
000011000000
*/
0b00000000, 0b00000000, 0b01000000, 0b00000100, 0b00000000, 0b01000000,
0b11111111, 0b11100000, 0b01000000, 0b00000100, 0b00000010, 0b01001000,
0b01000100, 0b01001000, 0b01000010, 0b00000100, 0b00000000, 0b11000000,
};
case u'ボ':
return {
/*
000000000100
000001010010
000001001000
000001000000
111111111110
000001000000
000001000000
001001001000
010001000100
100001000010
000001000000
000011000000
*/
0b00000000, 0b01000000, 0b01010010, 0b00000100, 0b10000000, 0b01000000,
0b11111111, 0b11100000, 0b01000000, 0b00000100, 0b00000010, 0b01001000,
0b01000100, 0b01001000, 0b01000010, 0b00000100, 0b00000000, 0b11000000,
};
case u'ポ':
return {
/*
000000000000
000001001100
000001010010
000001010010
111111111100
000001000000
000001000000
001001001000
010001000100
100001000010
000001000000
000011000000
*/
0b00000000, 0b00000000, 0b01001100, 0b00000101, 0b00100000, 0b01010010,
0b11111111, 0b11000000, 0b01000000, 0b00000100, 0b00000010, 0b01001000,
0b01000100, 0b01001000, 0b01000010, 0b00000100, 0b00000000, 0b11000000,
};
case u'マ':
return {
/*
000000000000
000000000000
000000000000
011111111110
000000000010
000000000100
000000001000
000100010000
000010100000
000001000000
000000100000
000000010000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000111, 0b11111110,
0b00000000, 0b00100000, 0b00000100, 0b00000000, 0b10000001, 0b00010000,
0b00001010, 0b00000000, 0b01000000, 0b00000010, 0b00000000, 0b00010000,
};
case u'ミ':
return {
/*
000000000000
000000000000
000111000000
000000111000
000000000000
000000000000
000111000000
000000110000
000000000000
000000000000
001111000000
000000111000
*/
0b00000000, 0b00000000, 0b00000000, 0b00011100, 0b00000000, 0b00111000,
0b00000000, 0b00000000, 0b00000000, 0b00011100, 0b00000000, 0b00110000,
0b00000000, 0b00000000, 0b00000000, 0b00111100, 0b00000000, 0b00111000,
};
case u'ム':
return {
/*
000000000000
000010000000
000010000000
000010000000
000010000000
000100000000
000100001000
000100001000
001000001000
001001110100
111110000100
000000000100
*/
0b00000000, 0b00000000, 0b10000000, 0b00001000, 0b00000000, 0b10000000,
0b00001000, 0b00000001, 0b00000000, 0b00010000, 0b10000001, 0b00001000,
0b00100000, 0b10000010, 0b01110100, 0b11111000, 0b01000000, 0b00000100,
};
case u'メ':
return {
/*
000000000000
000000010000
000000010000
000000010000
000000010000
001100010000
000011100000
000000111000
000000100110
000001000000
000110000000
011000000000
*/
0b00000000, 0b00000000, 0b00010000, 0b00000001, 0b00000000, 0b00010000,
0b00000001, 0b00000011, 0b00010000, 0b00001110, 0b00000000, 0b00111000,
0b00000010, 0b01100000, 0b01000000, 0b00011000, 0b00000110, 0b00000000,
};
case u'モ':
return {
/*
000000000000
000000000000
011111111000
000010000000
000010000000
000010000000
111111111110
000010000000
000010000000
000010000000
000010000000
000001111000
*/
0b00000000, 0b00000000, 0b00000000, 0b01111111, 0b10000000, 0b10000000,
0b00001000, 0b00000000, 0b10000000, 0b11111111, 0b11100000, 0b10000000,
0b00001000, 0b00000000, 0b10000000, 0b00001000, 0b00000000, 0b01111000,
};
case u'ャ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000010000000
000010000000
000010111000
001111001000
000010010000
000001010000
000001000000
000001000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00001000, 0b00000000, 0b10000000, 0b00001011, 0b10000011, 0b11001000,
0b00001001, 0b00000000, 0b01010000, 0b00000100, 0b00000000, 0b01000000,
};
case u'ヤ':
return {
/*
000000000000
000100000000
000100000000
000100011100
000111100100
111010000100
000010001000
000010001000
000010000000
000001000000
000001000000
000001000000
*/
0b00000000, 0b00000001, 0b00000000, 0b00010000, 0b00000001, 0b00011100,
0b00011110, 0b01001110, 0b10000100, 0b00001000, 0b10000000, 0b10001000,
0b00001000, 0b00000000, 0b01000000, 0b00000100, 0b00000000, 0b01000000,
};
case u'ュ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000000000000
001111100000
000000100000
000000100000
000000100000
000000100000
011111111000
000000000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00000000, 0b00000011, 0b11100000, 0b00000010, 0b00000000, 0b00100000,
0b00000010, 0b00000000, 0b00100000, 0b01111111, 0b10000000, 0b00000000,
};
case u'ユ':
return {
/*
000000000000
000000000000
000000000000
001111110000
000000010000
000000010000
000000010000
000000010000
000000010000
000000010000
111111111110
000000000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000011, 0b11110000,
0b00000001, 0b00000000, 0b00010000, 0b00000001, 0b00000000, 0b00010000,
0b00000001, 0b00000000, 0b00010000, 0b11111111, 0b11100000, 0b00000000,
};
case u'ョ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000000000000
000111111000
000000001000
000000001000
000111111000
000000001000
000000001000
000111111000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00000000, 0b00000001, 0b11111000, 0b00000000, 0b10000000, 0b00001000,
0b00011111, 0b10000000, 0b00001000, 0b00000000, 0b10000001, 0b11111000,
};
case u'ヨ':
return {
/*
000000000000
000000000000
001111111100
000000000100
000000000100
000000000100
001111111100
000000000100
000000000100
000000000100
001111111100
000000000100
*/
0b00000000, 0b00000000, 0b00000000, 0b00111111, 0b11000000, 0b00000100,
0b00000000, 0b01000000, 0b00000100, 0b00111111, 0b11000000, 0b00000100,
0b00000000, 0b01000000, 0b00000100, 0b00111111, 0b11000000, 0b00000100,
};
case u'ラ':
return {
/*
000000000000
000000000000
001111111000
000000000000
000000000000
011111111100
000000000100
000000000100
000000001000
000000010000
000001100000
000110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00111111, 0b10000000, 0b00000000,
0b00000000, 0b00000111, 0b11111100, 0b00000000, 0b01000000, 0b00000100,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000001, 0b10000000,
};
case u'リ':
return {
/*
000000000000
001000001000
001000001000
001000001000
001000001000
001000001000
001000001000
000000001000
000000010000
000000010000
000000100000
000011000000
*/
0b00000000, 0b00000010, 0b00001000, 0b00100000, 0b10000010, 0b00001000,
0b00100000, 0b10000010, 0b00001000, 0b00100000, 0b10000000, 0b00001000,
0b00000001, 0b00000000, 0b00010000, 0b00000010, 0b00000000, 0b11000000,
};
case u'ル':
return {
/*
000000000000
000000100000
000100100000
000100100000
000100100000
000100100000
000100100010
000100100010
001000100100
001000100100
010000101000
010000110000
*/
0b00000000, 0b00000000, 0b00100000, 0b00010010, 0b00000001, 0b00100000,
0b00010010, 0b00000001, 0b00100000, 0b00010010, 0b00100001, 0b00100010,
0b00100010, 0b01000010, 0b00100100, 0b01000010, 0b10000100, 0b00110000,
};
case u'レ':
return {
/*
000000000000
000000000000
001000000000
001000000000
001000000000
001000000000
001000000000
001000000100
001000001000
001000010000
001001100000
001110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00100000, 0b00000010, 0b00000000,
0b00100000, 0b00000010, 0b00000000, 0b00100000, 0b00000010, 0b00000100,
0b00100000, 0b10000010, 0b00010000, 0b00100110, 0b00000011, 0b10000000,
};
case u'ロ':
return {
/*
000000000000
000000000000
000000000000
011111111100
010000000100
010000000100
010000000100
010000000100
010000000100
010000000100
011111111100
010000000100
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000111, 0b11111100,
0b01000000, 0b01000100, 0b00000100, 0b01000000, 0b01000100, 0b00000100,
0b01000000, 0b01000100, 0b00000100, 0b01111111, 0b11000100, 0b00000100,
};
case u'ヮ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000000000000
001111111000
001000001000
001000001000
000000001000
000000001000
000000010000
000011100000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00000000, 0b00000011, 0b11111000, 0b00100000, 0b10000010, 0b00001000,
0b00000000, 0b10000000, 0b00001000, 0b00000001, 0b00000000, 0b11100000,
};
case u'ワ':
return {
/*
000000000000
000000000000
011111111100
010000000100
010000000100
010000000100
000000000100
000000001000
000000001000
000000010000
000001100000
000110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b01111111, 0b11000100, 0b00000100,
0b01000000, 0b01000100, 0b00000100, 0b00000000, 0b01000000, 0b00001000,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000001, 0b10000000,
};
case u'ヰ':
return {
/*
000000000000
000000010000
000000010000
000000010000
001111111100
000100010000
000100010000
000100010000
011111111110
000000010000
000000010000
000000010000
*/
0b00000000, 0b00000000, 0b00010000, 0b00000001, 0b00000000, 0b00010000,
0b00111111, 0b11000001, 0b00010000, 0b00010001, 0b00000001, 0b00010000,
0b01111111, 0b11100000, 0b00010000, 0b00000001, 0b00000000, 0b00010000,
};
case u'ヱ':
return {
/*
000000000000
000000000000
000000000000
001111111100
000000001000
000000010000
000001100000
000001000000
000001000000
000001000000
011111111110
000000000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000011, 0b11111100,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000000, 0b01000000,
0b00000100, 0b00000000, 0b01000000, 0b01111111, 0b11100000, 0b00000000,
};
case u'ヲ':
return {
/*
000000000000
000000000000
001111111100
000000000100
000000000100
001111111100
000000000100
000000001000
000000001000
000000010000
000001100000
000110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00111111, 0b11000000, 0b00000100,
0b00000000, 0b01000011, 0b11111100, 0b00000000, 0b01000000, 0b00001000,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000001, 0b10000000,
};
case u'ン':
return {
/*
000000000000
000000000000
001100000000
000011000000
000000000010
000000000010
000000000100
000000000100
000000001000
000000010000
000001100000
001110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00110000, 0b00000000, 0b11000000,
0b00000000, 0b00100000, 0b00000010, 0b00000000, 0b01000000, 0b00000100,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000011, 0b10000000,
};
case u'ヴ':
return {
/*
000000000100
000001010010
000001001000
011111111100
010000000100
010000000100
010000000100
000000001000
000000001000
000000010000
000001100000
000110000000
*/
0b00000000, 0b01000000, 0b01010010, 0b00000100, 0b10000111, 0b11111100,
0b01000000, 0b01000100, 0b00000100, 0b01000000, 0b01000000, 0b00001000,
0b00000000, 0b10000000, 0b00010000, 0b00000110, 0b00000001, 0b10000000,
};
case u'ヵ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000010000000
000010000000
001111111000
000010001000
000010001000
000010001000
000100001000
000100110000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00001000, 0b00000000, 0b10000000, 0b00111111, 0b10000000, 0b10001000,
0b00001000, 0b10000000, 0b10001000, 0b00010000, 0b10000001, 0b00110000,
};
case u'ヶ':
return {
/*
000000000000
000000000000
000000000000
000000000000
000100000000
000100000000
000111111000
001000100000
001000100000
000000100000
000001000000
000110000000
*/
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000,
0b00010000, 0b00000001, 0b00000000, 0b00011111, 0b10000010, 0b00100000,
0b00100010, 0b00000000, 0b00100000, 0b00000100, 0b00000001, 0b10000000,
};
}
return {}; // an empty glyph
}
#endif // GLYPH_HPP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment