xeij/FontPage.java (1/2)
1 2//========================================================================================
// FontPage.java
// en:Font page
// ja:フォントページ
// Copyright (C) 2003-2023 Makoto Kamada
//
// This file is part of the XEiJ (X68000 Emulator in Java).
// You can use, modify and redistribute the XEiJ if the conditions are met.
// Read the XEiJ License for more details.
// https://stdkmd.net/xeij/
//========================================================================================
package xeij;
import java.awt.*; //BasicStroke,BorderLayout,BoxLayout,Color,Component,Container,Cursor,Desktop,Dimension,Font,Frame,Graphics,Graphics2D,GraphicsDevice,GraphicsEnvironment,GridLayout,Image,Insets,Paint,Point,Rectangle,RenderingHints,Robot,Shape,Stroke,TexturePaint,Toolkit
import java.awt.font.*; //FontRenderContext,LineMetrics,TextLayout
import java.awt.geom.*; //AffineTransform,GeneralPath,Point2D,Rectangle2D
import java.awt.image.*; //BufferedImage,DataBuffer,DataBufferByte,DataBufferInt,IndexColorModel
import java.io.*; //BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter,ByteArrayOutputStream,File,FileInputStream,FileNotFoundException,FileReader,InputStream,InputStreamReader,IOException,OutputStreamWriter,RandomAccessFile,UnsupportedEncodingException
import java.lang.*; //Boolean,Character,Class,Comparable,Double,Exception,Float,IllegalArgumentException,Integer,Long,Math,Number,Object,Runnable,SecurityException,String,StringBuilder,System
import java.util.*; //ArrayList,Arrays,Calendar,GregorianCalendar,HashMap,Map,Map.Entry,Timer,TimerTask,TreeMap
import javax.imageio.*; //ImageIO
import javax.imageio.stream.*; //ImageOutputStream
import javax.swing.*; //AbstractButton,AbstractSpinnerModel,Box,ButtonGroup,DefaultListModel,ImageIcon,JButton,JCheckBox,JCheckBoxMenuItem,JComponent,JDialog,JFileChooser,JFrame,JLabel,JList,JMenu,JMenuBar,JMenuItem,JPanel,JRadioButton,JScrollPane,JSpinner,JTextArea,JTextField,JTextPane,JViewport,ScrollPaneConstants,SpinnerListModel,SpinnerNumberModel,SwingConstants,SwingUtilities,UIManager,UIDefaults,UnsupportedLookAndFeelException
public class FontPage {
//クラスフィールド
//色
// 1dotあたり2bit使用する
// bit0は背景の市松模様
// bit1は文字の有無
public static final int FNP_COLOR_0 = 0x00; //背景=黒,文字=なし
public static final int FNP_COLOR_1 = 0x33; //背景=灰,文字=なし
public static final int FNP_COLOR_2 = 0xff; //背景=黒,文字=あり
public static final int FNP_COLOR_3 = 0xff; //背景=灰,文字=あり
public static final byte[] FNP_COLOR_BASE = new byte[] {
(byte) FNP_COLOR_0,
(byte) FNP_COLOR_1,
(byte) FNP_COLOR_2,
(byte) FNP_COLOR_3,
};
public static final Color[] FNP_COLOR_ARRAY = new Color[] {
new Color (FNP_COLOR_0, FNP_COLOR_0, FNP_COLOR_0),
new Color (FNP_COLOR_1, FNP_COLOR_1, FNP_COLOR_1),
new Color (FNP_COLOR_2, FNP_COLOR_2, FNP_COLOR_2),
new Color (FNP_COLOR_3, FNP_COLOR_3, FNP_COLOR_3),
};
//4bitのフォントデータ→4dotのパレットコード
public static final byte[][] FNP_PALET = {
//背景=黒黒黒黒
{
0b00_00_00_00,
0b00_00_00_10,
0b00_00_10_00,
0b00_00_10_10,
0b00_10_00_00,
0b00_10_00_10,
0b00_10_10_00,
0b00_10_10_10,
(byte) 0b10_00_00_00,
(byte) 0b10_00_00_10,
(byte) 0b10_00_10_00,
(byte) 0b10_00_10_10,
(byte) 0b10_10_00_00,
(byte) 0b10_10_00_10,
(byte) 0b10_10_10_00,
(byte) 0b10_10_10_10,
},
//背景=灰灰灰灰
{
0b01_01_01_01,
0b01_01_01_11,
0b01_01_11_01,
0b01_01_11_11,
0b01_11_01_01,
0b01_11_01_11,
0b01_11_11_01,
0b01_11_11_11,
(byte) 0b11_01_01_01,
(byte) 0b11_01_01_11,
(byte) 0b11_01_11_01,
(byte) 0b11_01_11_11,
(byte) 0b11_11_01_01,
(byte) 0b11_11_01_11,
(byte) 0b11_11_11_01,
(byte) 0b11_11_11_11,
},
//背景=黒黒灰灰
{
0b00_00_01_01,
0b00_00_01_11,
0b00_00_11_01,
0b00_00_11_11,
0b00_10_01_01,
0b00_10_01_11,
0b00_10_11_01,
0b00_10_11_11,
(byte) 0b10_00_01_01,
(byte) 0b10_00_01_11,
(byte) 0b10_00_11_01,
(byte) 0b10_00_11_11,
(byte) 0b10_10_01_01,
(byte) 0b10_10_01_11,
(byte) 0b10_10_11_01,
(byte) 0b10_10_11_11,
},
//背景=灰灰黒黒
{
0b01_01_00_00,
0b01_01_00_10,
0b01_01_10_00,
0b01_01_10_10,
0b01_11_00_00,
0b01_11_00_10,
0b01_11_10_00,
0b01_11_10_10,
(byte) 0b11_01_00_00,
(byte) 0b11_01_00_10,
(byte) 0b11_01_10_00,
(byte) 0b11_01_10_10,
(byte) 0b11_11_00_00,
(byte) 0b11_11_00_10,
(byte) 0b11_11_10_00,
(byte) 0b11_11_10_10,
},
};
//4dotのパレットコード→4bitのフォントデータ
public static final byte[] FNP_INV_PALET = new byte[256];
static {
for (int i = 0; i < 256; i++) {
FNP_INV_PALET[i] = (byte) (i >> 4 & 8 | i >> 3 & 4 | i >> 2 & 2 | i >> 1 & 1); //0bP.Q.R.S. → 0b0000PQRS
}
}
//各フォントページはフォントデータを2つまたは3つの状態で保持する
// イメージ
// 全角は94点×94区
// イメージファイルの内容
// フォントエディタに表示するイメージ。ビットマップ
// バイナリ
// 全角は94点×94区
// フォントデータファイルの内容
// 半角のバイナリと全角のバイナリが連結された状態のフォントデータファイルを読み書きできる
// メモリ
// ROMの内容。CGROMにないフォントは含まない
// 全角は94点×77区(1区~8区,16区~84区)
// バイナリをメモリに変換するとき77区(1区~8区,16区~84区)をコピーして17区(9区~15区,85区~94区)を省く
// メモリをバイナリに変換するとき77区(1区~8区,16区~84区)にコピーして17区(9区~15区,85区~94区)を空白にする
// ROM.DAT(1MB)またはCGROM.DAT(768KB)から読み込む
//
// IPLROMにあるHan6x12の扱い
// Han6x12のメモリのアドレスはCGROMを指す
// Han6x12がCGROMになくてIPLROMにあるときIPLROMからCGROMにコピーする
// CGROMにあるHan6x12を更新したらIPLROMにコピーする。これはピクセルの編集を含む
//インスタンスフィールド
public int fnpCharacterWidth; //1文字の幅(ドット)
public int fnpCharacterHeight; //1文字の高さ(ドット)
public String fnpNameEn; //ページの名前(英語)
public String fnpNameJa; //ページの名前(日本語)
public String fnpFontDataFileName; //フォントデータファイル名。バイナリまたはバイナリを連結したもの
public String fnpFontImageFileName; //フォント画像ファイル名
public int fnpImageCols; //イメージとバイナリとメモリの桁数
public int fnpImageRows; //イメージとバイナリの行数
public int fnpMemoryRows; //メモリの行数。メモリがないときは0
public byte[] fnpMemoryArray; //メモリの配列。メモリがないときはnull
public int fnpMemoryAddress; //メモリのアドレス。メモリがないときは0
public char[][] fnpTableArray; //自動生成に使う文字テーブルの配列
public int fnpImageWidth; //イメージとバイナリとメモリの幅(ドット)
public int fnpImageHeight; //イメージとバイナリの高さ(ドット)
public BufferedImage fnpImageObject; //2ビットイメージのオブジェクト
public byte[] fnpBitmapArray; //2ビットイメージのビットマップ
public int fnpBitmapRasterBytes; //2ビットイメージのビットマップの1ラスタのバイト数。幅を4の倍数に切り上げて4で割る
public int fnpCharacterHorizontalBytes; //バイナリとメモリの1文字の水平方向のバイト数。幅を8の倍数に切り上げて8で割る
public int fnpCharacterBytes; //バイナリとメモリの1文字のバイト数
public int fnpBinaryBytes; //バイナリのバイト数
public byte[] fnpBinaryArray; //バイナリの配列
public int fnpMinimumFontDataFileLength; //フォントデータファイルの最小の長さ(バイト)
public int fnpMaximumFontDataFileLength; //フォントデータファイルの最大の長さ(バイト)
public int fnpMemoryBytes; //メモリのバイト数。メモリがないときは0
public boolean fnpReady; //true=フォントが有効。CGROM、フォントデータファイル、フォント画像ファイルのいずれかを読み込んだか、自動生成した
public String fnpHostFontName; //自動生成に使ったホストのフォント名
public JFileChooser2 fnpFontDataFileChooser; //フォントデータファイルチューザー
public String fnpExtension; //フォントデータファイルの拡張子
public String fnpDescription; //フォントデータファイルの説明
public JFileChooser2 fnpFontImageFileChooser; //フォント画像ファイルチューザー
public boolean fnpEditted; //true=編集あり。編集したらセット、フォントデータファイルまたはフォント画像ファイルに保存したらクリア
//コンストラクタ
public FontPage (int characterWidth, int characterHeight, String nameEn, String nameJa, String dataName, String imageName,
int imageCols, int imageRows, int memoryRows,
byte[] memoryArray, int memoryAddress,
char[][] tableArray) {
fnpCharacterWidth = characterWidth;
fnpCharacterHeight = characterHeight;
fnpNameEn = nameEn;
fnpNameJa = nameJa;
fnpFontDataFileName = dataName;
fnpFontImageFileName = imageName;
fnpImageCols = imageCols;
fnpImageRows = imageRows;
fnpMemoryRows = memoryArray == null ? 0 : memoryRows;
fnpMemoryArray = memoryArray;
fnpMemoryAddress = memoryArray == null ? 0 : memoryAddress;
fnpTableArray = tableArray;
fnpImageWidth = characterWidth * fnpImageCols;
fnpImageHeight = characterHeight * fnpImageRows;
fnpImageObject = new BufferedImage ((fnpImageWidth + 3) & -4, fnpImageHeight, BufferedImage.TYPE_BYTE_BINARY,
new IndexColorModel (2, 4, FNP_COLOR_BASE, FNP_COLOR_BASE, FNP_COLOR_BASE));
fnpBitmapArray = ((DataBufferByte) fnpImageObject.getRaster ().getDataBuffer ()).getData ();
fnpBitmapRasterBytes = (fnpImageWidth + 3) >> 2;
fnpCharacterHorizontalBytes = (characterWidth + 7) >> 3;
fnpCharacterBytes = fnpCharacterHorizontalBytes * fnpCharacterHeight;
fnpBinaryBytes = fnpCharacterBytes * fnpImageCols * fnpImageRows;
fnpBinaryArray = new byte[fnpBinaryBytes];
fnpMinimumFontDataFileLength = fnpBinaryBytes;
fnpMaximumFontDataFileLength = fnpBinaryBytes;
fnpMemoryBytes = memoryArray == null ? 0 : fnpCharacterBytes * fnpImageCols * fnpMemoryRows;
fnpReady = false;
fnpHostFontName = null;
fnpFontDataFileChooser = null;
fnpExtension = null;
fnpDescription = null;
fnpFontImageFileChooser = null;
fnpBinaryToImage (); //市松模様にする
}
//success = fnpInputMemory ()
// ロード済みのCGROMでフォントを構築する
// 半角は'A'(0x41)、全角は'あ'(4区2点)が空白のとき失敗する
public boolean fnpInputMemory () {
if (fnpMemoryArray == null) { //メモリがない
return false; //失敗
}
if (fnpImageCols == 16) { //半角
if (fnpIsBlankMemory (1, 4)) { //'A'(0x41)が空白
return false; //失敗
}
} else if (fnpImageCols == 94) { //全角
if (fnpIsBlankMemory (1, 3)) { //'あ'(4区2点)が空白
return false; //失敗
}
}
fnpMemoryToBinary (); //メモリをバイナリに変換する
fnpBinaryToImage (); //バイナリをイメージに変換する
if (!fnpReady) {
System.out.println (Multilingual.mlnJapanese ? fnpNameJa + " フォントの準備ができました" :
fnpNameEn + " font is ready");
fnpReady = true; //フォントデータが有効
}
return true;
}
//yes = fnpIsBlankMemory (col, memoryRow)
// メモリの指定された文字は空白か
// メモリがないときはtrueを返す
public boolean fnpIsBlankMemory (int col, int memoryRow) {
if (fnpMemoryArray != null) { //メモリがある
int start = fnpMemoryAddress + fnpCharacterBytes * (fnpImageCols * memoryRow + col);
for (int i = 0; i < fnpCharacterBytes; i++) {
if (fnpMemoryArray[start + i] != 0) {
return false;
}
}
}
return true;
}
//memoryRow = fnpImageRowToMemoryRow (imageRow)
// イメージとバイナリの行番号をメモリの行番号に変換する
// メモリがないか対応する行がないときは-1を返す
// 全角
// イメージ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 83 84 85 86 87 88 89 90 91 92 93 94 区
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 82 83 84 85 86 87 88 89 90 91 92 93 行
// --------------- ---------------
// メモリ 0 1 2 3 4 5 6 7 8 9 75 76 行
// 1 2 3 4 5 6 7 8 16 17 ... 83 84 区
public int fnpImageRowToMemoryRow (int imageRow) {
return (fnpMemoryArray == null ? -1 :
fnpImageCols != 94 ? imageRow :
imageRow <= 7 ? imageRow :
imageRow <= 14 ? -1 :
imageRow <= 83 ? imageRow - 7 :
-1);
}
//imageRow = fnpMemoryRowToImageRow (memoryRow)
// メモリの行番号をイメージとバイナリの行番号に変換する
// メモリがないときは-1を返す
public int fnpMemoryRowToImageRow (int memoryRow) {
return (fnpMemoryArray == null ? -1 :
fnpImageCols != 94 ? memoryRow :
memoryRow <= 7 ? memoryRow :
memoryRow + 7);
}
//fnpMemoryToBinary ()
// メモリをバイナリに変換する
public void fnpMemoryToBinary () {
if (fnpMemoryArray != null) { //メモリがある
for (int imageRow = 0; imageRow < fnpImageRows; imageRow++) {
int memoryRow = fnpImageRowToMemoryRow (imageRow);
if (0 <= memoryRow) {
System.arraycopy (fnpMemoryArray, fnpMemoryAddress + fnpCharacterBytes * fnpImageCols * memoryRow,
fnpBinaryArray, fnpCharacterBytes * fnpImageCols * imageRow,
fnpCharacterBytes * fnpImageCols);
} else {
Arrays.fill (fnpBinaryArray,
fnpCharacterBytes * fnpImageCols * imageRow,
fnpCharacterBytes * fnpImageCols * (imageRow + 1),
(byte) 0);
}
}
}
}
//fnpBinaryToMemory ()
// バイナリをメモリに変換する
public void fnpBinaryToMemory () {
if (fnpMemoryArray != null) { //メモリがある
for (int imageRow = 0; imageRow < fnpImageRows; imageRow++) {
int memoryRow = fnpImageRowToMemoryRow (imageRow);
if (0 <= memoryRow) {
System.arraycopy (fnpBinaryArray, fnpCharacterBytes * fnpImageCols * imageRow,
fnpMemoryArray, fnpMemoryAddress + fnpCharacterBytes * fnpImageCols * memoryRow,
fnpCharacterBytes * fnpImageCols);
}
}
}
}
//fnpBinaryToImage ()
// バイナリをイメージに変換する
public final void fnpBinaryToImage () {
byte[] bitmap = fnpBitmapArray;
byte[] m = fnpBinaryArray;
int a = 0;
int o = fnpBitmapRasterBytes;
int h = fnpCharacterHeight;
switch (fnpCharacterWidth) {
case 4:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte[] palet = FNP_PALET[(col ^ row) & 1]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (4 >> 2) * col;
// m[a]
// ABCD0000
// t
// 0000ABCD
// b[i]
// A.B.C.D.
bitmap[i] = palet[(m[a] & 255) >> 4];
a++;
}
}
}
break;
case 6:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col += 2) { //2文字ずつ変換する
// 偶数行 奇数行
byte[] palet0 = FNP_PALET[ row & 1]; //黒黒黒黒 灰灰灰灰
byte[] palet1 = FNP_PALET[2 | row & 1]; //黒黒灰灰 灰灰黒黒
byte[] palet2 = FNP_PALET[ ~row & 1]; //灰灰灰灰 黒黒黒黒
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (6 * col >> 2); //colは偶数
// m[a] m[a+h]
// ABCDEF00 GHIJKL00
// t
// 0000ABCD EFGHIJKL
// b[i] b[i+1] b[i+2]
// A.B.C.D. E.F.G.H. I.J.K.L.
int t = (m[a] & 253) << 4 | (m[a + h] & 253) >> 2;
bitmap[i ] = palet0[t >> 8 ]; //0000ABCD → A.B.C.D.
bitmap[i + 1] = palet1[t >> 4 & 15]; //0000EFGH → E.F.G.H.
bitmap[i + 2] = palet2[t & 15]; //0000IJKL → I.J.K.L.
a++;
}
a += h;
}
}
break;
case 8:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte[] palet = FNP_PALET[(col ^ row) & 1]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (8 >> 2) * col;
// m[a]
// ABCDEFGH
// t
// ABCDEFGH
// b[i] b[i+1]
// A.B.C.D. E.F.G.H.
int t = m[a] & 255;
bitmap[i ] = palet[t >> 4 ];
bitmap[i + 1] = palet[t & 15];
a++;
}
}
}
break;
case 12:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte[] palet = FNP_PALET[(col ^ row) & 1]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (12 >> 2) * col;
// m[a] m[a+1]
// ABCDEFGH IJKL0000
// t
// ABCDEFGH IJKL0000
// b[i] b[i+1] b[i+2]
// A.B.C.D. E.F.G.H. I.J.K.L.
int t = (char) (m[a] << 8 | m[a + 1] & 255);
bitmap[i ] = palet[t >> 12 ];
bitmap[i + 1] = palet[t >> 8 & 15];
bitmap[i + 2] = palet[t >> 4 & 15];
a += 2;
}
}
}
break;
case 16:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte[] palet = FNP_PALET[(col ^ row) & 1]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (16 >> 2) * col;
// m[a] m[a+1]
// ABCDEFGH IJKLMNOP
// t
// ABCDEFGH IJKLMNOP
// b[i] b[i+1] b[i+2] b[i+3]
// A.B.C.D. E.F.G.H. I.J.K.L. M.N.O.P.
int t = (char) (m[a] << 8 | m[a + 1] & 255);
bitmap[i ] = palet[t >> 12 ];
bitmap[i + 1] = palet[t >> 8 & 15];
bitmap[i + 2] = palet[t >> 4 & 15];
bitmap[i + 3] = palet[t & 15];
a += 2;
}
}
}
break;
case 24:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte[] palet = FNP_PALET[(col ^ row) & 1]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (24 >> 2) * col;
// m[a] m[a+1] m[a+2]
// ABCDEFGH IJKLMNOP RSTUVWX
// t
// ABCDEFGH IJKLMNOP RSTUVWX
// b[i] b[i+1] b[i+2] b[i+3] b[i+4] b[i+5]
// A.B.C.D. E.F.G.H. I.J.K.L. M.N.O.P. Q.R.S.T. U.V.W.X.
int t = (char) (m[a] << 8 | m[a + 1] & 255) << 8 | m[a + 2] & 255;
bitmap[i ] = palet[t >> 20 ];
bitmap[i + 1] = palet[t >> 16 & 15];
bitmap[i + 2] = palet[t >> 12 & 15];
bitmap[i + 3] = palet[t >> 8 & 15];
bitmap[i + 4] = palet[t >> 4 & 15];
bitmap[i + 5] = palet[t & 15];
a += 3;
}
}
}
break;
case 32:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte[] palet = FNP_PALET[(col ^ row) & 1]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (32 >> 2) * col;
int t = m[a] << 24 | (m[a + 1] & 255) << 16 | (char) (m[a + 2] << 8 | m[a + 3] & 255);
bitmap[i ] = palet[t >>> 28 ];
bitmap[i + 1] = palet[t >>> 24 & 15];
bitmap[i + 2] = palet[t >>> 20 & 15];
bitmap[i + 3] = palet[t >>> 16 & 15];
bitmap[i + 4] = palet[t >>> 12 & 15];
bitmap[i + 5] = palet[t >>> 8 & 15];
bitmap[i + 6] = palet[t >>> 4 & 15];
bitmap[i + 7] = palet[t & 15];
a += 4;
}
}
}
break;
case 48:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte[] palet = FNP_PALET[(col ^ row) & 1]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (48 >> 2) * col;
int t = m[a] << 24 | (m[a + 1] & 255) << 16 | (char) (m[a + 2] << 8 | m[a + 3] & 255);
bitmap[i ] = palet[t >>> 28 ];
bitmap[i + 1] = palet[t >>> 24 & 15];
bitmap[i + 2] = palet[t >>> 20 & 15];
bitmap[i + 3] = palet[t >>> 16 & 15];
bitmap[i + 4] = palet[t >>> 12 & 15];
bitmap[i + 5] = palet[t >>> 8 & 15];
bitmap[i + 6] = palet[t >>> 4 & 15];
bitmap[i + 7] = palet[t & 15];
t = (char) (m[a + 4] << 8 | m[a + 5] & 255);
bitmap[i + 8] = palet[t >>> 12 & 15];
bitmap[i + 9] = palet[t >>> 8 & 15];
bitmap[i + 10] = palet[t >>> 4 & 15];
bitmap[i + 11] = palet[t & 15];
a += 6;
}
}
}
break;
/*
default:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < fnpCharacterHeight; y++) {
for (int x = 0; x < fnpCharacterWidth; x++) {
fnpSetImagePixel (col, row, x, y, fnpGetBinaryPixel (col, row, x, y));
}
}
}
}
*/
}
}
//fnpCreateImage (hostFontName)
// イメージを自動生成する
public void fnpCreateImage (String hostFontName) {
//開始
System.out.println (Multilingual.mlnJapanese ?
hostFontName + " を使って " + fnpNameJa + " を作ります" :
"Creating " + fnpNameEn + " by using " + hostFontName);
long startTime = System.currentTimeMillis ();
//フォント
fnpHostFontName = hostFontName;
Font font = new Font (hostFontName, Font.PLAIN, fnpCharacterHeight);
double fw = (double) fnpCharacterWidth;
double fh = (double) fnpCharacterHeight;
//文字テーブル
char[][] tableArray = fnpTableArray;
int numberOfTable = tableArray.length; //文字のテーブルの数
int lastTableIndex = -1; //最後に描いた文字の文字テーブルの番号
double px = 0.0;
double py = 0.0;
double pw = 0.0;
double ph = 0.0;
//イメージ
Graphics2D g2 = (Graphics2D) fnpImageObject.getGraphics ();
FontRenderContext frc = g2.getFontRenderContext ();
//背景を黒で塗り潰す
byte[] bitmap = fnpBitmapArray;
Arrays.fill (bitmap, 0, fnpBitmapRasterBytes * fnpImageHeight, (byte) 0);
//白い文字を描く
g2.setColor (FNP_COLOR_ARRAY[2]);
g2.setFont (font);
//アフィン変換を保存する
AffineTransform savedTransform = g2.getTransform ();
//クリッピング領域を保存する
Shape savedClip = g2.getClip ();
//行ループ
for (int row = 0; row < fnpImageRows; row++) {
int gy = fnpCharacterHeight * row; //イメージ内y座標
//列ループ
col:
for (int col = 0; col < fnpImageCols; col++) {
int gx = fnpCharacterWidth * col; //イメージ内x座標
//クリッピング領域を設定する
// クリッピングしないと1ドットはみ出すことがある
g2.setClip (null);
g2.clipRect (gx, gy, fnpCharacterWidth, fnpCharacterHeight);
//描く文字を決める
// 最初の文字テーブルでは空白でも次の文字テーブルでは空白でない場合があるので、
// 空白が出てきても最後の文字テーブルまでループさせること
char[] table; //選択したテーブル
String s; //文字
char c; //文字の先頭
int tableIndex = -1; //文字テーブルの番号
do {
if (++tableIndex == numberOfTable) { //どの文字テーブルの文字も描けない
continue col;
}
table = tableArray[tableIndex];
int i = col + fnpImageCols * row;
if (table[1] != '\0') { //1文字構成
s = new String (table, i, 1);
} else { //2文字構成
i <<= 1;
if (table[i + 1] == '\0') { //1文字
s = new String (table, i, 1);
} else { //2文字
s = new String (table, i, 2);
}
}
c = s.charAt (0);
//特殊記号を描く
int t;
switch (c) {
case '\u2571': //U+2571 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
g2.setStroke (new BasicStroke ());
g2.drawLine (gx + fnpCharacterWidth - 1, gy, gx, gy + fnpCharacterHeight - 1);
continue col;
case '\u2572': //U+2572 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
g2.setStroke (new BasicStroke ());
g2.drawLine (gx, gy, gx + fnpCharacterWidth - 1, gy + fnpCharacterHeight - 1);
continue col;
case '\u2573': //U+2573 BOX DRAWINGS LIGHT DIAGONAL CROSS
g2.setStroke (new BasicStroke ());
g2.drawLine (gx, gy, gx + fnpCharacterWidth - 1, gy + fnpCharacterHeight - 1);
g2.drawLine (gx + fnpCharacterWidth - 1, gy, gx, gy + fnpCharacterHeight - 1);
continue col;
case '\u2581': //U+2581 LOWER ONE EIGHTH BLOCK
t = fnpCharacterHeight + 4 >> 3;
g2.fillRect (gx, gy + fnpCharacterHeight - t, fnpCharacterWidth, t);
continue col;
case '\u2582': //U+2582 LOWER ONE QUARTER BLOCK
t = fnpCharacterHeight * 2 + 4 >> 3;
g2.fillRect (gx, gy + fnpCharacterHeight - t, fnpCharacterWidth, t);
continue col;
case '\u2583': //U+2583 LOWER THREE EIGHTHS BLOCK
t = fnpCharacterHeight * 3 + 4 >> 3;
g2.fillRect (gx, gy + fnpCharacterHeight - t, fnpCharacterWidth, t);
continue col;
case '\u2584': //U+2584 LOWER HALF BLOCK
t = fnpCharacterHeight * 4 + 4 >> 3;
g2.fillRect (gx, gy + fnpCharacterHeight - t, fnpCharacterWidth, t);
continue col;
case '\u2585': //U+2585 LOWER FIVE EIGHTHS BLOCK
t = fnpCharacterHeight * 5 + 4 >> 3;
g2.fillRect (gx, gy + fnpCharacterHeight - t, fnpCharacterWidth, t);
continue col;
case '\u2586': //U+2586 LOWER THREE QUARTERS BLOCK
t = fnpCharacterHeight * 6 + 4 >> 3;
g2.fillRect (gx, gy + fnpCharacterHeight - t, fnpCharacterWidth, t);
continue col;
case '\u2587': //U+2587 LOWER SEVEN EIGHTHS BLOCK
t = fnpCharacterHeight * 7 + 4 >> 3;
g2.fillRect (gx, gy + fnpCharacterHeight - t, fnpCharacterWidth, t);
continue col;
case '\u2588': //U+2588 FULL BLOCK
g2.fillRect (gx, gy, fnpCharacterWidth, fnpCharacterHeight);
continue col;
case '\u2589': //U+2589 LEFT SEVEN EIGHTHS BLOCK
t = fnpCharacterWidth * 7 + 4 >> 3;
g2.fillRect (gx, gy, t, fnpCharacterHeight);
continue col;
case '\u258a': //U+258A LEFT THREE QUARTERS BLOCK
t = fnpCharacterWidth * 6 + 4 >> 3;
g2.fillRect (gx, gy, t, fnpCharacterHeight);
continue col;
case '\u258b': //U+258B LEFT FIVE EIGHTHS BLOCK
t = fnpCharacterWidth * 5 + 4 >> 3;
g2.fillRect (gx, gy, t, fnpCharacterHeight);
continue col;
case '\u258c': //U+258C LEFT HALF BLOCK
t = fnpCharacterWidth * 4 + 4 >> 3;
g2.fillRect (gx, gy, t, fnpCharacterHeight);
continue col;
case '\u258d': //U+258D LEFT THREE EIGHTHS BLOCK
t = fnpCharacterWidth * 3 + 4 >> 3;
g2.fillRect (gx, gy, t, fnpCharacterHeight);
continue col;
case '\u258e': //U+258E LEFT ONE QUARTER BLOCK
t = fnpCharacterWidth * 2 + 4 >> 3;
g2.fillRect (gx, gy, t, fnpCharacterHeight);
continue col;
case '\u258f': //U+258F LEFT ONE EIGHTH BLOCK
t = fnpCharacterWidth + 4 >> 3;
g2.fillRect (gx, gy, t, fnpCharacterHeight);
continue col;
case '\u2593': //U+2593 DARK SHADE
for (int v = 0; v < fnpCharacterHeight; v++) {
for (int u = 0; u < fnpCharacterWidth; u++) {
if (((u ^ v) & 1) == 0) {
g2.fillRect (gx + u, gy + v, 1, 1);
}
}
}
continue col;
case '\u2596': //U+2596 QUADRANT LOWER LEFT
g2.fillRect (gx, gy + (fnpCharacterHeight >> 1), fnpCharacterWidth >> 1, fnpCharacterHeight >> 1);
continue col;
case '\u2597': //U+2597 QUADRANT LOWER RIGHT
g2.fillRect (gx + (fnpCharacterWidth >> 1), gy + (fnpCharacterHeight >> 1), fnpCharacterWidth >> 1, fnpCharacterHeight >> 1);
continue col;
case '\u2598': //U+2598 QUADRANT UPPER LEFT
g2.fillRect (gx, gy, fnpCharacterWidth >> 1, fnpCharacterHeight >> 1);
continue col;
case '\u259a': //U+259A QUADRANT UPPER LEFT AND LOWER RIGHT
g2.fillRect (gx, gy, fnpCharacterWidth >> 1, fnpCharacterHeight >> 1);
g2.fillRect (gx + (fnpCharacterWidth >> 1), gy + (fnpCharacterHeight >> 1), fnpCharacterWidth >> 1, fnpCharacterHeight >> 1);
continue col;
case '\u259d': //U+259D QUADRANT UPPER RIGHT
g2.fillRect (gx + (fnpCharacterWidth >> 1), gy, fnpCharacterWidth >> 1, fnpCharacterHeight >> 1);
continue col;
case '\u259e': //U+259E QUADRANT UPPER RIGHT AND LOWER LEFT
g2.fillRect (gx + (fnpCharacterWidth >> 1), gy, fnpCharacterWidth >> 1, fnpCharacterHeight >> 1);
g2.fillRect (gx, gy + (fnpCharacterHeight >> 1), fnpCharacterWidth >> 1, fnpCharacterHeight >> 1);
continue col;
//case '\u25a1': //U+25A1 WHITE SQUARE
// g2.drawRect (gx, gy, fnpCharacterWidth - 1, fnpCharacterHeight - 1);
// continue col;
case '\u25e2': //U+25E2 BLACK LOWER RIGHT TRIANGLE
g2.setStroke (new BasicStroke ());
if (fnpCharacterWidth <= fnpCharacterHeight) { //縦長
for (int v = 0; v <= fnpCharacterHeight - 1; v++) {
int u = v * (fnpCharacterWidth - 1) / (fnpCharacterHeight - 1);
g2.drawLine (gx + fnpCharacterWidth - 1 - u, gy + v, gx + fnpCharacterWidth - 1, gy + v); //横線
}
} else { //横長
for (int u = 0; u <= fnpCharacterWidth - 1; u++) {
int v = u * (fnpCharacterHeight - 1) / (fnpCharacterWidth - 1);
g2.drawLine (gx + u, gy + fnpCharacterHeight - 1 - v, gx + u, gy + fnpCharacterHeight - 1); //縦線
}
}
continue col;
case '\u25e3': //U+25E3 BLACK LOWER LEFT TRIANGLE
g2.setStroke (new BasicStroke ());
if (fnpCharacterWidth <= fnpCharacterHeight) { //縦長
for (int v = 0; v <= fnpCharacterHeight - 1; v++) {
int u = v * (fnpCharacterWidth - 1) / (fnpCharacterHeight - 1);
g2.drawLine (gx, gy + v, gx + u, gy + v); //横線
}
} else { //横長
for (int u = 0; u <= fnpCharacterWidth - 1; u++) {
int v = u * (fnpCharacterHeight - 1) / (fnpCharacterWidth - 1);
g2.drawLine (gx + u, gy + v, gx + u, gy + fnpCharacterHeight - 1); //縦線
}
}
continue col;
}
} while (c == ' ' || c == ' ' || font.canDisplayUpTo (s) != -1); //空白または描けないときは次の文字テーブルへ
//フォントの枠を決める
// 半角はFULL BLOCK、全角は罫線の十字のレクタングルを基準にする
if (lastTableIndex != tableIndex) {
lastTableIndex = tableIndex;
Rectangle2D p = new TextLayout (table[0] < 0x80 ? "\u2588" : "┼", font, g2.getFontRenderContext ()).getBounds ();
px = p.getX ();
py = p.getY ();
pw = p.getWidth ();
ph = p.getHeight ();
}
//今回の文字のレクタングルを求める
Rectangle2D q = new TextLayout (s, font, g2.getFontRenderContext ()).getBounds ();
double qx = q.getX ();
double qy = q.getY ();
double qw = q.getWidth ();
double qh = q.getHeight ();
// x=sx*x+tx
// y=sy*y+ty
double sx = 1.0;
double sy = 1.0;
double tx = 0.0;
double ty = 0.0;
//{px,py,pw,ph}から{0,0,pw,ph}へ移動する
// x=(sx*x+tx)-px
// =sx*x+(tx-px)
// y=(sy*y+ty)-py
// =sy*y+(ty-py)
qx -= px;
qy -= py;
tx -= px;
ty -= py;
//{qx,qy,qw,qh}が{0,0,pw,ph}に収まるようにする
// 既に収まっているときは中央になくても動かしてはならない
if (pw < qw) { //幅が大きすぎるので水平方向に縮小してずらす
// x=((sx*x+tx)-qx)*pw/qw
// =sx*pw/qw*x+(tx-qx)*pw/qw
double r = pw / qw;
sx *= r;
tx = (tx - qx) * r;
} else if (qx < 0) { //左にはみ出しているので右にずらす
// x=(sx*x+tx)-qx
// =sx*x+(tx-qx)
tx -= qx;
} else if (pw < qx + qw) { //右にはみ出しているので左にずらす
// x=(sx*x+tx)-(qx+qw-pw)
// =sx*x+(tx-(qx+qw-pw))
tx -= qx + qw - pw;
}
if (ph < qh) { //高さが大きすぎるので垂直方向に縮小してずらす
// y=((sy*y+ty)-qy)*ph/qh
// =sy*ph/qh*y+(ty-qy)*ph/qh
double r = ph / qh;
sy *= r;
ty = (ty - qy) * r;
} else if (qy < 0) { //上にはみ出しているので下にずらす
// y=(sy*y+ty)-qy
// =sy*y+(ty-qy)
ty -= qy;
} else if (ph < qy + qh) { //下にはみ出しているので上にずらす
// y=(sy*y+ty)-(qy+qh-ph)
// =sy*y+(ty-(qy+qh-ph))
ty -= qy + qh - ph;
}
//{0,0,pw,ph}を{fw*col,fh*row,fw,fh}に拡大してずらす
// x=(sx*x+tx)*fw/pw+fw*col
// =(sx*fw/pw)*x+(tx*fw/pw+fw*col)
// y=(sy*y+ty)*fh/ph+fh*row
// =(sy*fh/ph)*y+(ty*fh/ph+fh*row)
{
double r = fw / pw;
sx *= r;
tx = tx * r + fw * (double) col;
}
{
double r = fh / ph;
sy *= r;
ty = ty * r + fh * (double) row;
}
//アフィン変換を設定する
g2.translate (tx, ty);
g2.scale (sx, sy);
//フォントを描く
g2.drawString (s, 0, 0);
//アフィン変換を復元する
g2.setTransform (savedTransform);
} //for col
} //for row
//クリッピング領域を復元する
g2.setClip (savedClip);
//背景を市松模様に塗る
// フォントが枠からはみ出していないか確認できる
int o = fnpBitmapRasterBytes;
int w = fnpCharacterWidth;
int h = fnpCharacterHeight;
switch (fnpCharacterWidth) {
case 4:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte p = FNP_PALET[(col ^ row) & 1][0]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (4 >> 2) * col;
bitmap[i] |= p;
}
}
}
break;
case 6:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col += 2) { //2文字ずつ変換する
// 偶数行 奇数行
byte p0 = FNP_PALET[ row & 1][0]; //黒黒黒黒 灰灰灰灰
byte p1 = FNP_PALET[2 | row & 1][0]; //黒黒灰灰 灰灰黒黒
byte p2 = FNP_PALET[ ~row & 1][0]; //灰灰灰灰 黒黒黒黒
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (6 * col >> 2);
bitmap[i ] |= p0;
bitmap[i + 1] |= p1;
bitmap[i + 2] |= p2;
}
}
}
break;
case 8:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte p = FNP_PALET[(col ^ row) & 1][0]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (8 >> 2) * col;
bitmap[i ] |= p;
bitmap[i + 1] |= p;
}
}
}
break;
case 12:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte p = FNP_PALET[(col ^ row) & 1][0]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (12 >> 2) * col;
bitmap[i ] |= p;
bitmap[i + 1] |= p;
bitmap[i + 2] |= p;
}
}
}
break;
case 16:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte p = FNP_PALET[(col ^ row) & 1][0]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (16 >> 2) * col;
bitmap[i ] |= p;
bitmap[i + 1] |= p;
bitmap[i + 2] |= p;
bitmap[i + 3] |= p;
}
}
}
break;
case 24:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte p = FNP_PALET[(col ^ row) & 1][0]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (24 >> 2) * col;
bitmap[i ] |= p;
bitmap[i + 1] |= p;
bitmap[i + 2] |= p;
bitmap[i + 3] |= p;
bitmap[i + 4] |= p;
bitmap[i + 5] |= p;
}
}
}
break;
case 32:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte p = FNP_PALET[(col ^ row) & 1][0]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (32 >> 2) * col;
bitmap[i ] |= p;
bitmap[i + 1] |= p;
bitmap[i + 2] |= p;
bitmap[i + 3] |= p;
bitmap[i + 4] |= p;
bitmap[i + 5] |= p;
bitmap[i + 6] |= p;
bitmap[i + 7] |= p;
}
}
}
break;
case 36:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte p = FNP_PALET[(col ^ row) & 1][0]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (36 >> 2) * col;
bitmap[i ] |= p;
bitmap[i + 1] |= p;
bitmap[i + 2] |= p;
bitmap[i + 3] |= p;
bitmap[i + 4] |= p;
bitmap[i + 5] |= p;
bitmap[i + 6] |= p;
bitmap[i + 7] |= p;
bitmap[i + 8] |= p;
}
}
}
break;
case 48:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
// 偶数マス 奇数マス
byte p = FNP_PALET[(col ^ row) & 1][0]; //黒黒黒黒 灰灰灰灰
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (48 >> 2) * col;
bitmap[i ] |= p;
bitmap[i + 1] |= p;
bitmap[i + 2] |= p;
bitmap[i + 3] |= p;
bitmap[i + 4] |= p;
bitmap[i + 5] |= p;
bitmap[i + 6] |= p;
bitmap[i + 7] |= p;
bitmap[i + 8] |= p;
bitmap[i + 9] |= p;
bitmap[i + 10] |= p;
bitmap[i + 11] |= p;
}
}
}
break;
/*
default:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < fnpCharacterHeight; y++) {
for (int x = 0; x < fnpCharacterWidth; x++) {
fnpSetImagePixel (col, row, x, y, fnpGetImagePixel (col, row, x, y));
}
}
}
}
*/
}
fnpImageToBinary (); //イメージをバイナリに変換する
fnpBinaryToMemory (); //バイナリをメモリに変換する
//終了
long elapsedTime = System.currentTimeMillis () - startTime;
//if (1000L <= elapsedTime) {
System.out.println (elapsedTime + "ms");
//}
if (!fnpReady) {
System.out.println (Multilingual.mlnJapanese ? fnpNameJa + " フォントの準備ができました" :
fnpNameEn + " font is ready");
fnpReady = true; //フォントデータが有効
}
} //fnpCreateImage
//fnpImageToBinary ()
// イメージをバイナリに変換する
public void fnpImageToBinary () {
byte[] bitmap = fnpBitmapArray;
byte[] m = fnpBinaryArray;
int a = 0;
int o = fnpBitmapRasterBytes;
int h = fnpCharacterHeight;
switch (fnpCharacterWidth) {
case 4:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (4 >> 2) * col;
// b[i]
// A.B.C.D.
// m[a]
// ABCD0000
m[a] = (byte) (FNP_INV_PALET[bitmap[i] & 255] << 4);
a++;
}
}
}
break;
case 6:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col += 2) { //2文字ずつ変換する
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (6 * col >> 2);
// b[i] b[i+1] b[i+2]
// A.B.C.D. E.F.G.H. I.J.K.L.
// t
// A.B.C.D. E.F.G.H. I.J.K.L.
// m[a] m[a+h]
// ABCDEF00 GHIJKL00
int t = (char) (bitmap[i] << 8 | bitmap[i + 1] & 255) << 8 | bitmap[i + 2] & 255;
m[a ] = (byte) (FNP_INV_PALET[t >> 16 ] << 4 | //0000ABCD → ABCD0000
FNP_INV_PALET[t >> 8 & 240]); //E.F.0000 → 0000EF00
m[a + h] = (byte) (FNP_INV_PALET[t >> 4 & 255] << 4 | //G.H.I.J. → GHIJ0000
FNP_INV_PALET[t << 4 & 240]); //K.L.0000 → 0000KL00
a++;
}
a += h;
}
}
break;
case 8:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (8 >> 2) * col;
// b[i] b[i+1]
// A.B.C.D. E.F.G.H.
// m[a]
// ABCDEFGH
m[a] = (byte) (FNP_INV_PALET[bitmap[i] & 255] << 4 | FNP_INV_PALET[bitmap[i + 1] & 255]);
a++;
}
}
}
break;
case 12:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (12 >> 2) * col;
// b[i] b[i+1] b[i+2]
// A.B.C.D. E.F.G.H. I.J.K.L.
// m[a] m[a+1]
// ABCDEFGH IJKL0000
m[a ] = (byte) (FNP_INV_PALET[bitmap[i ] & 255] << 4 | FNP_INV_PALET[bitmap[i + 1] & 255]);
m[a + 1] = (byte) (FNP_INV_PALET[bitmap[i + 2] & 255] << 4);
a += 2;
}
}
}
break;
case 16:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (16 >> 2) * col;
// b[i] b[i+1] b[i+2] b[i+3]
// A.B.C.D. E.F.G.H. I.J.K.L. M.N.O.P.
// m[a] m[a+1]
// ABCDEFGH IJKLMNOP
m[a ] = (byte) (FNP_INV_PALET[bitmap[i ] & 255] << 4 | FNP_INV_PALET[bitmap[i + 1] & 255]);
m[a + 1] = (byte) (FNP_INV_PALET[bitmap[i + 2] & 255] << 4 | FNP_INV_PALET[bitmap[i + 3] & 255]);
a += 2;
}
}
}
break;
case 18:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col += 2) { //2文字ずつ変換する
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (18 * col >> 2);
long t = ((long) FNP_INV_PALET[bitmap[i ] & 255] << 32 |
(long) FNP_INV_PALET[bitmap[i + 1] & 255] << 28 |
(long) FNP_INV_PALET[bitmap[i + 2] & 255] << 24 |
(long) FNP_INV_PALET[bitmap[i + 3] & 255] << 20 |
(long) FNP_INV_PALET[bitmap[i + 4] & 255] << 16 |
(long) FNP_INV_PALET[bitmap[i + 5] & 255] << 12 |
(long) FNP_INV_PALET[bitmap[i + 6] & 255] << 8 |
(long) FNP_INV_PALET[bitmap[i + 7] & 255] << 4 |
(long) FNP_INV_PALET[bitmap[i + 8] & 255]);
// 333333222222222211111111110000000000
// 543210987654321098765432109876543210
// 000000001111111122......
// 000000001111111122......
m[a ] = (byte) (t >> 28);
m[a + 1] = (byte) (t >> 20);
m[a + 2] = (byte) ((t >> 12) & 0xc0);
m[a + 3 * h ] = (byte) (t >> 10);
m[a + 3 * h + 1] = (byte) (t >> 2);
m[a + 3 * h + 2] = (byte) (t << 6);
a += 3;
}
a += 3 * h;
}
}
break;
case 24:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (24 >> 2) * col;
// b[i] b[i+1] b[i+2] b[i+3] b[i+4] b[i+5]
// A.B.C.D. E.F.G.H. I.J.K.L. M.N.O.P. Q.R.S.T. U.V.W.X.
// m[a] m[a+1] m[a+2]
// ABCDEFGH IJKLMNOP RSTUVWX
m[a ] = (byte) (FNP_INV_PALET[bitmap[i ] & 255] << 4 | FNP_INV_PALET[bitmap[i + 1] & 255]);
m[a + 1] = (byte) (FNP_INV_PALET[bitmap[i + 2] & 255] << 4 | FNP_INV_PALET[bitmap[i + 3] & 255]);
m[a + 2] = (byte) (FNP_INV_PALET[bitmap[i + 4] & 255] << 4 | FNP_INV_PALET[bitmap[i + 5] & 255]);
a += 3;
}
}
}
break;
case 28:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (28 >> 2) * col;
m[a ] = (byte) (FNP_INV_PALET[bitmap[i ] & 255] << 4 | FNP_INV_PALET[bitmap[i + 1] & 255]);
m[a + 1] = (byte) (FNP_INV_PALET[bitmap[i + 2] & 255] << 4 | FNP_INV_PALET[bitmap[i + 3] & 255]);
m[a + 2] = (byte) (FNP_INV_PALET[bitmap[i + 4] & 255] << 4 | FNP_INV_PALET[bitmap[i + 5] & 255]);
m[a + 3] = (byte) (FNP_INV_PALET[bitmap[i + 6] & 255] << 4);
a += 4;
}
}
}
break;
case 30:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col += 2) { //2文字ずつ変換する
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (30 * col >> 2);
long t = ((long) FNP_INV_PALET[bitmap[i ] & 255] << 56 |
(long) FNP_INV_PALET[bitmap[i + 1] & 255] << 52 |
(long) FNP_INV_PALET[bitmap[i + 2] & 255] << 48 |
(long) FNP_INV_PALET[bitmap[i + 3] & 255] << 44 |
(long) FNP_INV_PALET[bitmap[i + 4] & 255] << 40 |
(long) FNP_INV_PALET[bitmap[i + 5] & 255] << 36 |
(long) FNP_INV_PALET[bitmap[i + 6] & 255] << 32 |
(long) FNP_INV_PALET[bitmap[i + 7] & 255] << 28 |
(long) FNP_INV_PALET[bitmap[i + 8] & 255] << 24 |
(long) FNP_INV_PALET[bitmap[i + 9] & 255] << 20 |
(long) FNP_INV_PALET[bitmap[i + 10] & 255] << 16 |
(long) FNP_INV_PALET[bitmap[i + 11] & 255] << 12 |
(long) FNP_INV_PALET[bitmap[i + 12] & 255] << 8 |
(long) FNP_INV_PALET[bitmap[i + 13] & 255] << 4 |
(long) FNP_INV_PALET[bitmap[i + 14] & 255]);
// 555555555544444444443333333333222222222211111111110000000000
// 987654321098765432109876543210987654321098765432109876543210
// 000000001111111122222222333333..
// 000000001111111122222222333333..
m[a ] = (byte) (t >> 52);
m[a + 1] = (byte) (t >> 44);
m[a + 2] = (byte) (t >> 36);
m[a + 3] = (byte) ((t >> 28) & 0xfc);
m[a + 4 * h ] = (byte) (t >> 22);
m[a + 4 * h + 1] = (byte) (t >> 14);
m[a + 4 * h + 2] = (byte) (t >> 6);
m[a + 4 * h + 3] = (byte) (t << 2);
a += 4;
}
a += 4 * h;
}
}
break;
case 32:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (32 >> 2) * col;
m[a ] = (byte) (FNP_INV_PALET[bitmap[i ] & 255] << 4 | FNP_INV_PALET[bitmap[i + 1] & 255]);
m[a + 1] = (byte) (FNP_INV_PALET[bitmap[i + 2] & 255] << 4 | FNP_INV_PALET[bitmap[i + 3] & 255]);
m[a + 2] = (byte) (FNP_INV_PALET[bitmap[i + 4] & 255] << 4 | FNP_INV_PALET[bitmap[i + 5] & 255]);
m[a + 3] = (byte) (FNP_INV_PALET[bitmap[i + 6] & 255] << 4 | FNP_INV_PALET[bitmap[i + 7] & 255]);
a += 4;
}
}
}
break;
case 36:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (36 >> 2) * col;
m[a ] = (byte) (FNP_INV_PALET[bitmap[i ] & 255] << 4 | FNP_INV_PALET[bitmap[i + 1] & 255]);
m[a + 1] = (byte) (FNP_INV_PALET[bitmap[i + 2] & 255] << 4 | FNP_INV_PALET[bitmap[i + 3] & 255]);
m[a + 2] = (byte) (FNP_INV_PALET[bitmap[i + 4] & 255] << 4 | FNP_INV_PALET[bitmap[i + 5] & 255]);
m[a + 3] = (byte) (FNP_INV_PALET[bitmap[i + 6] & 255] << 4 | FNP_INV_PALET[bitmap[i + 7] & 255]);
m[a + 4] = (byte) (FNP_INV_PALET[bitmap[i + 8] & 255] << 4);
a += 5;
}
}
}
break;
case 48:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < h; y++) {
int i = o * (h * row + y) + (48 >> 2) * col;
m[a ] = (byte) (FNP_INV_PALET[bitmap[i ] & 255] << 4 | FNP_INV_PALET[bitmap[i + 1] & 255]);
m[a + 1] = (byte) (FNP_INV_PALET[bitmap[i + 2] & 255] << 4 | FNP_INV_PALET[bitmap[i + 3] & 255]);
m[a + 2] = (byte) (FNP_INV_PALET[bitmap[i + 4] & 255] << 4 | FNP_INV_PALET[bitmap[i + 5] & 255]);
m[a + 3] = (byte) (FNP_INV_PALET[bitmap[i + 6] & 255] << 4 | FNP_INV_PALET[bitmap[i + 7] & 255]);
m[a + 4] = (byte) (FNP_INV_PALET[bitmap[i + 8] & 255] << 4 | FNP_INV_PALET[bitmap[i + 9] & 255]);
m[a + 5] = (byte) (FNP_INV_PALET[bitmap[i + 10] & 255] << 4 | FNP_INV_PALET[bitmap[i + 11] & 255]);
a += 6;
}
}
}
break;
/*
default:
for (int row = 0; row < fnpImageRows; row++) {
for (int col = 0; col < fnpImageCols; col++) {
for (int y = 0; y < fnpCharacterHeight; y++) {
for (int x = 0; x < fnpCharacterWidth; x++) {
fnpSetBinaryPixel (col, row, x, y, fnpGetImagePixel (col, row, x, y));
}
}
}
}
*/
}
}
/*
//d = fnpGetImagePixel (imageCol, imageRow, characterX, characterY)
// イメージから1ピクセルゲットする
public int fnpGetImagePixel (int imageCol, int imageRow, int characterX, int characterY) {
int imageX = fnpCharacterWidth * imageCol + characterX;
int imageY = fnpCharacterHeight * imageRow + characterY;
int bitmapIndex = fnpBitmapRasterBytes * imageY + (imageX >> 2); //ビットマップのインデックス
int bitmapBit = 1 + ((~imageX & 3) << 1); //ビットマップのビット番号
return (fnpBitmapArray[bitmapIndex] >> bitmapBit) & 1; //ビットマップからゲット
} //fnpGetImagePixel
//fnpSetImagePixel (imageCol, imageRow, characterX, characterY, d)
// イメージに1ピクセルセットする
public void fnpSetImagePixel (int imageCol, int imageRow, int characterX, int characterY, int d) {
int imageX = fnpCharacterWidth * imageCol + characterX;
int imageY = fnpCharacterHeight * imageRow + characterY;
int bitmapIndex = fnpBitmapRasterBytes * imageY + (imageX >> 2); //ビットマップのインデックス
int bitmapBit = 1 + ((~imageX & 3) << 1); //ビットマップのビット番号
fnpBitmapArray[bitmapIndex] = (byte) ((fnpBitmapArray[bitmapIndex] & ~(1 << bitmapBit)) | ((d & 1) << bitmapBit)); //ビットマップにセット
} //fnpSetImagePixel
*/
//fnpGetExtension ()
// フォントデータファイルの拡張子を返す
// 全角と半角は.fonまたは.f<1文字の高さ>、それ以外は.dat
public String fnpGetExtension () {
if (fnpExtension == null) {
fnpExtension = ".dat";
}
return fnpExtension;
}
//fnpGetDescription ()
// フォントデータファイルの説明を返す
public String fnpGetDescription () {
if (fnpDescription == null) {
fnpDescription = (Multilingual.mlnJapanese ?
fnpNameJa + " フォントデータファイル (*" + fnpGetExtension () + ")" :
fnpNameEn + " font data files (*" + fnpGetExtension () + ")");
}
return fnpDescription;
}
//fnpMakeFontDataFileChooser ()
// フォントデータファイルチューザーを作る
public void fnpMakeFontDataFileChooser () {
if (fnpFontDataFileChooser == null) {
fnpFontDataFileChooser = new JFileChooser2 (new File (fnpFontDataFileName));
fnpFontDataFileChooser.setMultiSelectionEnabled (false); //複数選択不可
fnpFontDataFileChooser.setFileFilter (new javax.swing.filechooser.FileFilter () { //java.io.FileFilterと紛らわしい
@Override public boolean accept (File file) {
return (file.isDirectory () || //ディレクトリまたは
(file.isFile () && //ファイルで
fnpIsFontDataFileLength (file.length ()) && //フォントデータファイルの長さで
file.getName ().toLowerCase ().endsWith (fnpGetExtension ()))); //拡張子が合っている
}
@Override public String getDescription () {
return fnpGetDescription ();
}
});
}
}
//fnpOpenLoadFontDataFileChooser ()
// フォントデータファイルチューザーを開いて選択されたフォントデータファイルを読み込む
public void fnpOpenLoadFontDataFileChooser () {
fnpMakeFontDataFileChooser ();
if (fnpFontDataFileChooser.showOpenDialog (null) == JFileChooser.APPROVE_OPTION) {
File file = fnpFontDataFileChooser.getSelectedFile ();
if (fnpLoadFontDataFile (file)) { //ロードできたら
fnpFontDataFileName = file.getPath (); //最後に使ったファイル
fnpFontDataFileChooser.addHistory (file); //ヒストリに加える
}
}
}
//success = fnpLoadFontDataFiles (names)
// 列挙されたフォントデータファイルを読み込む
// 1個読み込めた時点で終了する
public boolean fnpLoadFontDataFiles (String names) {
boolean previousReady = fnpReady;
fnpReady = false; //一旦not readyにする
for (String name : names.split (",")) { //ファイル名を","で区切って先頭から順に
name = name.trim (); //前後の空白を削除して
if (!(name.length () == 0 || name.equalsIgnoreCase ("none"))) { //""または"none"でなければ
fnpLoadFontDataFile (new File (name)); //読み込む
if (fnpReady) { //読み込めたら
if (!previousReady) {
System.out.println (Multilingual.mlnJapanese ? fnpNameJa + " フォントの準備ができました" :
fnpNameEn + " font is ready");
previousReady = true; //フォントデータが有効
}
return true; //終わり
}
System.out.println (Multilingual.mlnJapanese ?
name + " を読み込めません" :
"Cannot read " + name);
}
}
fnpReady = previousReady;
return false; //1個も読み込めなかった
}
//success = fnpLoadFontDataFile (file)
// フォントデータファイルを読み込む
public boolean fnpLoadFontDataFile (File file) {
if (file.isFile () && //ファイルがある
(long) fnpMinimumFontDataFileLength <= file.length () && //短すぎない
file.length () <= (long) fnpMaximumFontDataFileLength) { //長すぎない
try (BufferedInputStream bis = new BufferedInputStream (new FileInputStream (file))) {
byte[] array = new byte[fnpMaximumFontDataFileLength];
int length = 0; //読み込んだ長さ
while (length < fnpMaximumFontDataFileLength) {
int t = bis.read (array, length, fnpMaximumFontDataFileLength - length);
if (t < 0) {
break;
}
length += t;
}
if (fnpIsFontDataFileLength ((long) length) && //長さが合っている
fnpLoadFontDataArray (array, 0, length)) { //読み込めた
return true;
}
} catch (IOException ioe) {
}
}
return false;
}
//yes = fnpIsFontDataFileLength (longLength)
// フォントデータファイルの長さか
// 半角と全角は半角+全角を受け付ける
public boolean fnpIsFontDataFileLength (long longLength) {
return longLength == (long) fnpBinaryBytes;
}
//success = fnpLoadFontDataArray (array)
public boolean fnpLoadFontDataArray (byte[] array) {
return fnpLoadFontDataArray (array, 0, array.length);
}
//success = fnpLoadFontDataArray (array, start, length)
// フォントデータファイルを配列から読み込む
// 半角と全角は半角+全角を受け付ける
public boolean fnpLoadFontDataArray (byte[] array, int start, int length) {
if (length == fnpBinaryBytes) {
System.arraycopy (array, start, fnpBinaryArray, 0, length); //配列からバイナリへコピーする
fnpBinaryToImage (); //バイナリをイメージに変換する
fnpBinaryToMemory (); //バイナリをメモリに変換する
if (!fnpReady) {
System.out.println (Multilingual.mlnJapanese ? fnpNameJa + " フォントの準備ができました" :
fnpNameEn + " font is ready");
fnpReady = true; //フォントデータが有効
}
return true; //成功
}
return false; //失敗
}
//fnpOpenSaveFontDataFileChooser ()
// フォントデータファイルチューザーを開いて選択されたフォントデータファイルに書き出す
public void fnpOpenSaveFontDataFileChooser () {
fnpMakeFontDataFileChooser ();
if (fnpFontDataFileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION) {
File file = fnpFontDataFileChooser.getSelectedFile ();
if (fnpSaveFontDataFile (file)) { //書き出せた
fnpFontDataFileName = file.getPath (); //最後に使ったファイル
fnpFontDataFileChooser.addHistory (file); //ヒストリに加える
fnpEditted = false; //編集なし
}
}
}
//success = fnpSaveFontDataFile (file)
// フォントデータファイルに書き出す
public boolean fnpSaveFontDataFile (File file) {
String path = file.getAbsolutePath (); //ファイル名
file = new File (path);
String pathBak = path + ".bak"; //バックアップファイル名
String pathTmp = path + ".tmp"; //テンポラリファイル名
File fileBak = new File (pathBak); //バックアップファイル
File fileTmp = new File (pathTmp); //テンポラリファイル
if (file.exists ()) { //ファイルがある
//上書きの確認
if (JOptionPane.showConfirmDialog (
null,
Multilingual.mlnJapanese ? path + " に上書きしますか?" : "Do you want to overwrite " + path + " ?",
Multilingual.mlnJapanese ? "上書きの確認" : "Overwrite confirmation",
JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION) { //上書きが許可されなかった
return false;
}
}
if (fileTmp.isFile ()) { //テンポラリファイルがある
//テンポラリファイルを削除する。ゴミが残っていた場合
if (!fileTmp.delete ()) { //テンポラリファイルを削除できない
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? pathTmp + " を削除できません" : "Cannot delete " + pathTmp);
return false;
}
}
//テンポラリファイルに書き出す
byte[] array = fnpSaveFontDataArray ();
try (BufferedOutputStream bos = new BufferedOutputStream (new FileOutputStream (fileTmp))) {
bos.write (array, 0, array.length);
} catch (IOException ioe) {
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? pathTmp + " に書き出せません" : "Cannot write " + pathTmp);
return false;
}
if (file.exists ()) { //ファイルがある
if (fileBak.isFile ()) { //バックアップファイルがある
//バックアップファイルを削除する
// リネームは上書きしないので明示的に削除しなければならない
if (!fileBak.delete ()) { //バックアップファイルを削除できない
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? pathBak + " を削除できません" : "Cannot delete " + pathBak);
return false;
}
}
//ファイルをバックアップファイルにリネームする
if (!file.renameTo (fileBak)) { //ファイルをバックアップファイルにリネームできない
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? path + " を " + pathBak + " にリネームできません" : "Cannot rename " + path + " to " + pathBak);
return false;
}
}
//テンポラリファイルをファイルにリネームする
if (!fileTmp.renameTo (file)) { //テンポラリファイルをファイルにリネームできない
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? pathTmp + " を " + path + " にリネームできません" : "Cannot rename " + pathTmp + " to " + path);
return false;
}
return true;
}
//array = fnpSaveFontDataArray ()
// フォントデータファイルの内容の配列を返す
// 全角は半角+全角を出力する
public byte[] fnpSaveFontDataArray () {
return fnpBinaryArray;
}
//fnpZeroClear ()
// ゼロクリアする
// 設定ファイルに保存する必要のないフォントをゼロクリアすると設定ファイルが軽くなる
public void fnpZeroClear () {
if (JOptionPane.showConfirmDialog (
null,
Multilingual.mlnJapanese ? fnpNameJa + " をゼロクリアします" : "Zero clear " + fnpNameEn + " ?",
Multilingual.mlnJapanese ? "ゼロクリアの確認" : "Zero clear confirmation",
JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION) { //ゼロクリアが許可されなかった
return;
}
Arrays.fill (fnpBinaryArray, 0, fnpBinaryBytes, (byte) 0); //バイナリをゼロクリアする
fnpBinaryToImage (); //バイナリをイメージに変換する
fnpBinaryToMemory (); //バイナリをメモリに変換する
fnpReady = false; //フォントデータが無効
}
//d = fnpGetBinaryPixel (imageCol, imageRow, characterX, characterY)
// バイナリから1ピクセルゲットする
public int fnpGetBinaryPixel (int imageCol, int imageRow, int characterX, int characterY) {
int binaryIndex = (fnpCharacterBytes * (fnpImageCols * imageRow + imageCol) +
fnpCharacterHorizontalBytes * characterY + (characterX >> 3)); //バイナリのインデックス
int binaryBit = ~characterX & 7; //バイナリとメモリのビット番号
return (fnpBinaryArray[binaryIndex] >> binaryBit) & 1; //メモリからゲット
} //fnpGetBinaryPixel
//fnpSetBinaryPixel (imageCol, imageRow, characterX, characterY, d)
// バイナリに1ピクセルセットする
public void fnpSetBinaryPixel (int imageCol, int imageRow, int characterX, int characterY, int d) {
int binaryIndex = (fnpCharacterBytes * (fnpImageCols * imageRow + imageCol) +
fnpCharacterHorizontalBytes * characterY + (characterX >> 3)); //バイナリのインデックス
int binaryBit = ~characterX & 7; //バイナリとメモリのビット番号
fnpBinaryArray[binaryIndex] = (byte) ((fnpBinaryArray[binaryIndex] & ~(1 << binaryBit)) | ((d & 1) << binaryBit)); //バイナリにセット
} //fnpSetBinaryPixel
//string = fnpGetStatusText (imageX, imageY)
// ピクセルの情報を文字列で返す。範囲外のときは""を返す
public String fnpGetStatusText (int imageX, int imageY) {
if (!(0 <= imageX && imageX < fnpImageWidth &&
0 <= imageY && imageY < fnpImageHeight)) { //範囲外
return "";
}
StringBuilder sb = new StringBuilder ();
int imageCol = imageX / fnpCharacterWidth; //イメージとバイナリとメモリの桁
int imageRow = imageY / fnpCharacterHeight; //イメージとバイナリの行
int characterX = imageX - fnpCharacterWidth * imageCol; //1文字の中のx座標
int characterY = imageY - fnpCharacterHeight * imageRow; //1文字の中のy座標
int memoryRow = fnpImageRowToMemoryRow (imageRow); //メモリの行
if (memoryRow < 0) { //メモリがないか対応する行がない
sb.append ('(').append (imageCol).append (',').append (imageRow).append (')');
sb.append (' ');
sb.append ('(').append (characterX).append (',').append (characterY).append (')');
} else { //メモリがある
int memoryTopLeftIndex = (fnpMemoryAddress +
fnpCharacterBytes * (fnpImageCols * memoryRow + imageCol)); //文字の左上のメモリのインデックス
int memoryIndex = (memoryTopLeftIndex + fnpCharacterHorizontalBytes * characterY + (characterX >> 3)); //メモリのインデックス
int binaryBit = ~characterX & 7; //バイナリとメモリのビット番号
XEiJ.fmtHex8 (sb.append ('(').append (imageCol).append (',').append (imageRow).append (")=$"), memoryTopLeftIndex);
XEiJ.fmtHex8 (sb.append ("-$"), memoryTopLeftIndex + fnpCharacterBytes - 1);
XEiJ.fmtHex8 (sb.append (" (").append (characterX).append (',').append (characterY).append (")=$"), memoryIndex);
sb.append (':').append (binaryBit);
}
return sb.toString ();
}
//fnpMakeFontImageFileChooser ()
// フォント画像ファイルチューザーを作る
public void fnpMakeFontImageFileChooser () {
if (fnpFontImageFileChooser == null) {
fnpFontImageFileChooser = new JFileChooser2 (new File (fnpFontImageFileName));
fnpFontImageFileChooser.setMultiSelectionEnabled (false); //複数選択不可
fnpFontImageFileChooser.setFileFilter (new javax.swing.filechooser.FileFilter () { //java.io.FileFilterと紛らわしい
@Override public boolean accept (File file) {
if (file.isFile ()) { //ファイル
String name = file.getName (); //ファイル名
int flag = 0;
int index = name.lastIndexOf ("."); //ファイルの拡張子の区切りの"."の位置
if (0 <= index) { //拡張子がある
String fileSuffix = name.substring (index + 1); //ファイルの拡張子
for (String readerSuffix : ImageIO.getReaderFileSuffixes ()) { //imageReaderの拡張子
if (fileSuffix.equalsIgnoreCase (readerSuffix)) {
flag |= 1; //ファイルの拡張子に対応するimageReaderがある
break;
}
}
for (String writerSuffix : ImageIO.getWriterFileSuffixes ()) { //imageWriterの拡張子
if (fileSuffix.equalsIgnoreCase (writerSuffix)) {
flag |= 2; //ファイルの拡張子に対応するimageWriterがある
break;
}
}
}
return flag == 3; //imageReaderとimageWriterが揃っている拡張子だけ有効。書けても読めないと困るので
}
if (file.isDirectory ()) { //ディレクトリ
return true;
}
return false;
}
@Override public String getDescription () {
return (Multilingual.mlnJapanese ?
"フォント画像ファイル" :
"Font image files");
}
});
}
}
//fnpOpenReadFontImageFileChooser ()
// フォント画像ファイルチューザーを開いて選択されたフォント画像ファイルを読み込む
public void fnpOpenReadFontImageFileChooser () {
fnpMakeFontImageFileChooser ();
if (fnpFontImageFileChooser.showOpenDialog (null) == JFileChooser.APPROVE_OPTION) {
File file = fnpFontImageFileChooser.getSelectedFile ();
if (fnpReadFontImageFile (file)) { //ロードできたら
fnpFontImageFileName = file.getPath (); //最後に使ったファイル
fnpFontImageFileChooser.addHistory (file); //ヒストリに加える
} else {
JOptionPane.showMessageDialog (null, Multilingual.mlnJapanese ? "失敗しました" : "failed");
}
}
}
//success = fnpReadFontImageFile (file)
// フォント画像ファイルを読み込む
public boolean fnpReadFontImageFile (File file) {
BufferedImage image;
try {
image = ImageIO.read (file);
} catch (Exception e) {
return false;
}
return fnpInputImage (image);
}
//success = fnpInputImage (image)
// イメージを入力する
// イメージの幅と高さが合っていないとき失敗する
// 全角の高さは94区だが、77区のときも1区~8区,16区~84区として受け付ける
public boolean fnpInputImage (BufferedImage image) {
if (!(image.getWidth () == fnpImageWidth &&
image.getHeight () == fnpImageHeight)) { //イメージの幅と高さが合っていない
return false; //失敗
}
//画像をビットマップに変換する
// r,g,bがすべて0xc0以上のとき1、さもなくば0とみなす
int o = fnpBitmapRasterBytes;
byte[] m = fnpBitmapArray;
for (int y = 0; y < fnpImageHeight; y++) {
int x = 0;
for (; x + 3 < fnpImageWidth; x += 4) {
m[o * y + (x >> 2)] = (byte) (((image.getRGB (x , y) & 0x00c0c0c0) == 0x00c0c0c0 ? 0b10_00_00_00 : 0) |
((image.getRGB (x + 1, y) & 0x00c0c0c0) == 0x00c0c0c0 ? 0b00_10_00_00 : 0) |
((image.getRGB (x + 2, y) & 0x00c0c0c0) == 0x00c0c0c0 ? 0b00_00_10_00 : 0) |
((image.getRGB (x + 3, y) & 0x00c0c0c0) == 0x00c0c0c0 ? 0b00_00_00_10 : 0)); //ここでは市松模様にしない
}
for (; x < fnpImageWidth; x++) {
m[o * y + (x >> 2)] = (byte) (((image.getRGB (x , y) & 0x00c0c0c0) == 0x00c0c0c0 ? 0b10_00_00_00 : 0) |
(x + 1 < fnpImageWidth && (image.getRGB (x + 1, y) & 0x00c0c0c0) == 0x00c0c0c0 ? 0b00_10_00_00 : 0) |
(x + 2 < fnpImageWidth && (image.getRGB (x + 2, y) & 0x00c0c0c0) == 0x00c0c0c0 ? 0b00_00_10_00 : 0) |
(x + 3 < fnpImageWidth && (image.getRGB (x + 3, y) & 0x00c0c0c0) == 0x00c0c0c0 ? 0b00_00_00_10 : 0));
}
}
fnpImageToBinary (); //イメージをバイナリに変換する
fnpBinaryToImage (); //バイナリをイメージに変換する。ここで市松模様になる
fnpBinaryToMemory (); //バイナリをメモリに変換する
if (!fnpReady) {
System.out.println (Multilingual.mlnJapanese ? fnpNameJa + " フォントの準備ができました" :
fnpNameEn + " font is ready");
fnpReady = true; //フォントデータが有効
}
return true; //成功
}
//fnpOpenWriteFontImageFileChooser ()
// フォント画像ファイルチューザーを開いて選択されたフォント画像ファイルに書き出す
public void fnpOpenWriteFontImageFileChooser () {
fnpMakeFontImageFileChooser ();
if (fnpFontImageFileChooser.showSaveDialog (null) == JFileChooser.APPROVE_OPTION) {
File file = fnpFontImageFileChooser.getSelectedFile ();
if (fnpWriteFontImageFile (file)) { //書き出せた
fnpFontImageFileName = file.getPath (); //最後に使ったファイル
fnpFontImageFileChooser.addHistory (file); //ヒストリに加える
fnpEditted = false; //編集なし
}
}
}
//success = fnpWriteFontImageFile (file)
// フォント画像ファイルに書き出す
public boolean fnpWriteFontImageFile (File file) {
String path = file.getAbsolutePath (); //ファイル名
file = new File (path);
String pathBak = path + ".bak"; //バックアップファイル名
String pathTmp = path + ".tmp"; //テンポラリファイル名
File fileBak = new File (pathBak); //バックアップファイル
File fileTmp = new File (pathTmp); //テンポラリファイル
//形式を決める
ImageWriter imageWriter = null;
{
int index = path.lastIndexOf (".");
if (0 <= index) { //拡張子がある
Iterator<ImageWriter> iterator = ImageIO.getImageWritersBySuffix (path.substring (index + 1)); //拡張子に対応するImageWriterのIterator
if (iterator.hasNext ()) { //拡張子に対応するImageWriterがある
imageWriter = iterator.next (); //拡張子に対応するImageWriter
}
}
}
if (imageWriter == null) { //拡張子がないか、拡張子に対応するImageWriterがない
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? path + " の形式が不明です" : "Unknown format of " + path);
return false;
}
if (file.exists ()) { //ファイルがある
//上書きの確認
if (JOptionPane.showConfirmDialog (
null,
Multilingual.mlnJapanese ? path + " に上書きします" : "Overwrite " + path + " ?",
Multilingual.mlnJapanese ? "上書きの確認" : "Overwrite confirmation",
JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION) { //上書きが許可されなかった
return false;
}
}
if (fileTmp.isFile ()) { //テンポラリファイルがある
//テンポラリファイルを削除する。ゴミが残っていた場合
if (!fileTmp.delete ()) { //テンポラリファイルを削除できない
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? pathTmp + " を削除できません" : "Cannot delete " + pathTmp);
return false;
}
}
//テンポラリファイルに書き出す
ImageWriteParam imageWriteParam = imageWriter.getDefaultWriteParam ();
if (imageWriteParam.canWriteCompressed ()) {
imageWriteParam.setCompressionMode (ImageWriteParam.MODE_EXPLICIT);
imageWriteParam.setCompressionQuality (1.0F);
}
try (ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream (fileTmp)) {
imageWriter.setOutput (imageOutputStream);
imageWriter.write (null, new IIOImage (fnpImageObject, null, null), imageWriteParam);
} catch (Exception e) {
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? pathTmp + " に書き出せません" : "Cannot write " + pathTmp);
return false;
}
if (file.exists ()) { //ファイルがある
if (fileBak.isFile ()) { //バックアップファイルがある
//バックアップファイルを削除する
// リネームは上書きしないので明示的に削除しなければならない
if (!fileBak.delete ()) { //バックアップファイルを削除できない
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? pathBak + " を削除できません" : "Cannot delete " + pathBak);
return false;
}
}
//ファイルをバックアップファイルにリネームする
if (!file.renameTo (fileBak)) { //ファイルをバックアップファイルにリネームできない
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? path + " を " + pathBak + " にリネームできません" : "Cannot rename " + path + " to " + pathBak);
return false;
}
}
//テンポラリファイルをファイルにリネームする
if (!fileTmp.renameTo (file)) { //テンポラリファイルをファイルにリネームできない
JOptionPane.showMessageDialog (
null, Multilingual.mlnJapanese ? pathTmp + " を " + path + " にリネームできません" : "Cannot rename " + pathTmp + " to " + path);
return false;
}
return true;
}
/*
//d = fnpGetMemoryPixel (imageCol, memoryRow, characterX, characterY)
// メモリから1ピクセルゲットする。メモリがないときは0を返す
public int fnpGetMemoryPixel (int imageCol, int memoryRow, int characterX, int characterY) {
if (fnpMemoryArray == null) {
return 0;
}
int memoryIndex = (fnpMemoryAddress +
fnpCharacterBytes * (fnpImageCols * memoryRow + imageCol) +
fnpCharacterHorizontalBytes * characterY + (characterX >> 3)); //メモリのインデックス
int binaryBit = ~characterX & 7; //バイナリとメモリのビット番号
return (fnpMemoryArray[memoryIndex] >> binaryBit) & 1; //メモリからゲット
} //fnpGetMemoryPixel
//fnpSetMemoryPixel (imageCol, memoryRow, characterX, characterY, d)
// メモリに1ピクセルセットする。メモリがないときは何もしない
public void fnpSetMemoryPixel (int imageCol, int memoryRow, int characterX, int characterY, int d) {
if (fnpMemoryArray == null) {
return;
}
int memoryIndex = (fnpMemoryAddress +
fnpCharacterBytes * (fnpImageCols * memoryRow + imageCol) +
fnpCharacterHorizontalBytes * characterY + (characterX >> 3)); //メモリのインデックス
int binaryBit = ~characterX & 7; //バイナリとメモリのビット番号
fnpMemoryArray[memoryIndex] = (byte) ((fnpMemoryArray[memoryIndex] & ~(1 << binaryBit)) | ((d & 1) << binaryBit)); //メモリにセット
} //fnpSetMemoryPixel
*/
//class FontPage.Yon
// 1/4角ANK。16桁×16行
public static final class Yon extends FontPage {
//コントロールコード
//public static final char[] CONTROL_BASE = (
// //0 1 2 3 4 5 6 7 8 9 a b c d e f
// " SHSXEXETEQAKBLBSHTLFVTFFCRSOSI" + //0
// "DED1D2D3D4NKSNEBCNEMSBEC " //1
// ).toCharArray ();
//全角フォントから作る文字
// 0x82のU+00A6 BROKEN BARはJIS X 0213:2000以降で9区の0x8544に割り当てられているが、X68000のCGROMには9区が存在しない
// CGROM由来の漢字フォントからANKフォントを作るときはBROKEN BARを描かなければならない
public static final char[] FULL_BASE = (
//0 1 2 3 4 5 6 7 8 9 a b c d e f
" " + //0
" →←↑↓" + //1
" !”#$%&’()*+,-./" + //2
"0123456789:;<=>?" + //3
"@ABCDEFGHIJKLMNO" + //4
"PQRSTUVWXYZ[¥]^_" + //5
"`abcdefghijklmno" + //6
"pqrstuvwxyz{|} ̄ " + //7
"\~¦ をぁぃぅぇぉゃゅょっ" + //8
" あいうえおかきくけこさしすせそ" + //9
" 。「」、・ヲァィゥェォャュョッ" + //a
"ーアイウエオカキクケコサシスセソ" + //b
"タチツテトナニヌネノハヒフヘホマ" + //c
"ミムメモヤユヨラリルレロワン゛゜" + //d
"たちつてとなにぬねのはひふへほま" + //e
"みむめもやゆよらりるれろわん " //f
).toCharArray ();
public Yon (int characterWidth, int characterHeight, String nameEn, String nameJa, String dataName, String imageName) {
this (characterWidth, characterHeight, nameEn, nameJa, dataName, imageName, null, 0);
}
public Yon (int characterWidth, int characterHeight, String nameEn, String nameJa, String dataName, String imageName,
byte[] memoryArray, int memoryAddress) {
super (characterWidth, characterHeight, nameEn, nameJa, dataName, imageName,
16, 16, 16,
memoryArray, memoryAddress,
new char[][] { FULL_BASE });
}
} //class FontPage.Yon
//class FontPage.Han
// 半角ANK。16桁×16行
public static final class Han extends FontPage {
//半角フォントから作る文字
// 0x5cは¥マークなので\u00a5
public static final char[] HALF_BASE = (
//123456789abcdef
" " + //0
" " + //1
" !\"#$%&'()*+,-./" + //2
"0123456789:;<=>?" + //3
"@ABCDEFGHIJKLMNO" + //4
"PQRSTUVWXYZ[\u00a5]^_" + //5
"`abcdefghijklmno" + //6
"pqrstuvwxyz{|} " + //7
" \u007e\u00a6 " + //8
" " + //9
" 。「」、・ヲァィゥェォャュョッ" + //a
"ーアイウエオカキクケコサシスセソ" + //b
"タチツテトナニヌネノハヒフヘホマ" + //c
"ミムメモヤユヨラリルレロワン゙゚" + //d
" " + //e
" " //f
).toCharArray ();
//全角フォントから作る文字
// 全角ひらがなを潰して半角ひらがなを作る
// 矢印は半角フォントが潰れてしまうことがあるので全角フォントを使う
// OVERLINEは半角フォントが極端に短いことがあるので全角フォントを使う
// REVERSE SOLIDUSは日本語環境だと半角フォントが¥マークになってしまうので全角フォントを使う
// でもあまり綺麗に表示できないので斜線を描いたほうが良いかも
public static final char[] FULL_BASE = (
//0 1 2 3 4 5 6 7 8 9 a b c d e f
" " + //0
" →←↑↓" + //1
" " + //2
" " + //3
" " + //4
" " + //5
" " + //6
"  ̄ " + //7
"\ をぁぃぅぇぉゃゅょっ" + //8
" あいうえおかきくけこさしすせそ" + //9
" " + //a
" " + //b
" " + //c
" " + //d
"たちつてとなにぬねのはひふへほま" + //e
"みむめもやゆよらりるれろわん " //f
).toCharArray ();
public FontPage.Zen fnpZenPage; //対応する全角フォントのページ
public Han (int characterWidth, int characterHeight, String nameEn, String nameJa, String dataName, String imageName) {
this (characterWidth, characterHeight, nameEn, nameJa, dataName, imageName, null, 0);
}
public Han (int characterWidth, int characterHeight, String nameEn, String nameJa, String dataName, String imageName,
byte[] memoryArray, int memoryAddress) {
super (characterWidth, characterHeight, nameEn, nameJa, dataName, imageName,
16, 16, 16,
memoryArray, memoryAddress,
new char[][] { HALF_BASE, FULL_BASE });
}
//setZenPage (zenPage)
// 対応する全角フォントのページを設定する
public void setZenPage (FontPage.Zen zenPage) {
fnpZenPage = zenPage;
fnpMaximumFontDataFileLength = fnpBinaryBytes + zenPage.fnpBinaryBytes; //半角+全角
}
//yes = fnpIsFontDataFileLength (longLength)
// フォントデータファイルの長さか
// 半角と全角は半角+全角を受け付ける
@Override public boolean fnpIsFontDataFileLength (long longLength) {
return (longLength == (long) fnpBinaryBytes || //半角のみ
longLength == (long) (fnpBinaryBytes + fnpZenPage.fnpBinaryBytes)); //半角+全角
}
//success = fnpLoadFontDataArray (array, start, length)
// フォントデータファイルを配列から読み込む
// 半角と全角は半角+全角を受け付ける
@Override public boolean fnpLoadFontDataArray (byte[] array, int start, int length) {
if (length == fnpBinaryBytes || //半角のみ
length == fnpBinaryBytes + fnpZenPage.fnpBinaryBytes) { //半角+全角
System.arraycopy (array, start, fnpBinaryArray, 0, fnpBinaryBytes); //半角をコピーする
fnpBinaryToMemory ();
fnpBinaryToImage ();
if (!fnpReady) {
System.out.println (Multilingual.mlnJapanese ? fnpNameJa + " フォントの準備ができました" :
fnpNameEn + " font is ready");
fnpReady = true; //フォントデータが有効
}
return true;
}
return false;
}
//fnpGetExtension ()
// フォントデータファイルの拡張子を返す
// 全角と半角は.fonまたは.f<1文字の高さ>、それ以外は.dat
@Override public String fnpGetExtension () {
if (fnpExtension == null) {
fnpExtension = fnpCharacterHeight == 16 ? ".fon" : ".f" + fnpCharacterHeight;
}
return fnpExtension;
}
} //class FontPage.Han
//class FontPage.Zen
// 全角漢字。イメージとバイナリは94点×94区。メモリは94点×77区(1区~8区,16区~84区)
public static final class Zen extends FontPage {
//全角フォントから作る文字
public static final char[] FULL_BASE = (
" \0、\0。\0,\0.\0・\0:\0;\0?\0!\0゛\0゜\0´\0`\0¨\0^\0 ̄\0_\0ヽ\0ヾ\0ゝ\0ゞ\0〃\0仝\0々\0〆\0〇\0ー\0―\0-\0/\0\\0~\0‖\0|\0…\0‥\0‘\0’\0“\0”\0(\0)\0〔\0〕\0[\0]\0{\0}\0〈\0〉\0《\0》\0「\0」\0『\0』\0【\0】\0+\0-\0±\0×\0÷\0=\0≠\0<\0>\0≦\0≧\0∞\0∴\0♂\0♀\0°\0′\0″\0℃\0¥\0$\0¢\0£\0%\0#\0&\0*\0@\0§\0☆\0★\0○\0●\0◎\0◇\0" + //1区
"◆\0□\0■\0△\0▲\0▽\0▼\0※\0〒\0→\0←\0↑\0↓\0〓\0\uff07\0\uff02\0\uff0d\0\uff5e\0\u3033\0\u3034\0\u3035\0\u303b\0\u303c\0\u30ff\0\u309f\0∈\0∋\0⊆\0⊇\0⊂\0⊃\0∪\0∩\0\u2284\0\u2285\0\u228a\0\u228b\0\u2209\0\u2205\0\u2305\0\u2306\0∧\0∨\0¬\0⇒\0⇔\0∀\0∃\0\u2295\0\u2296\0\u2297\0\u2225\0\u2226\0\uff5f\0\uff60\0\u3018\0\u3019\0\u3016\0\u3017\0∠\0⊥\0⌒\0∂\0∇\0≡\0≒\0≪\0≫\0√\0∽\0∝\0∵\0∫\0∬\0\u2262\0\u2243\0\u2245\0\u2248\0\u2276\0\u2277\0\u2194\0Å\0‰\0♯\0♭\0♪\0†\0‡\0¶\0\u266e\0\u266b\0\u266c\0\u2669\0◯\0" + //2区
"\u25b7\0\u25b6\0\u25c1\0\u25c0\0\u2197\0\u2198\0\u2196\0\u2199\0\u21c4\0\u21e8\0\u21e6\0\u21e7\0\u21e9\0\u2934\0\u2935\00\01\02\03\04\05\06\07\08\09\0\u29bf\0\u25c9\0\u303d\0\ufe46\0\ufe45\0\u25e6\0\u2022\0A\0B\0C\0D\0E\0F\0G\0H\0I\0J\0K\0L\0M\0N\0O\0P\0Q\0R\0S\0T\0U\0V\0W\0X\0Y\0Z\0\u2213\0\u2135\0\u210f\0\u33cb\0\u2113\0\u2127\0a\0b\0c\0d\0e\0f\0g\0h\0i\0j\0k\0l\0m\0n\0o\0p\0q\0r\0s\0t\0u\0v\0w\0x\0y\0z\0\u30a0\0\u2013\0\u29fa\0\u29fb\0" + //3区
"ぁ\0あ\0ぃ\0い\0ぅ\0う\0ぇ\0え\0ぉ\0お\0か\0が\0き\0ぎ\0く\0ぐ\0け\0げ\0こ\0ご\0さ\0ざ\0し\0じ\0す\0ず\0せ\0ぜ\0そ\0ぞ\0た\0だ\0ち\0ぢ\0っ\0つ\0づ\0て\0で\0と\0ど\0な\0に\0ぬ\0ね\0の\0は\0ば\0ぱ\0ひ\0び\0ぴ\0ふ\0ぶ\0ぷ\0へ\0べ\0ぺ\0ほ\0ぼ\0ぽ\0ま\0み\0む\0め\0も\0ゃ\0や\0ゅ\0ゆ\0ょ\0よ\0ら\0り\0る\0れ\0ろ\0ゎ\0わ\0ゐ\0ゑ\0を\0ん\0\u3094\0\u3095\0\u3096\0\u304b\u309a\u304d\u309a\u304f\u309a\u3051\u309a\u3053\u309a\u3000\0\u3000\0\u3000\0" + //4区
"ァ\0ア\0ィ\0イ\0ゥ\0ウ\0ェ\0エ\0ォ\0オ\0カ\0ガ\0キ\0ギ\0ク\0グ\0ケ\0ゲ\0コ\0ゴ\0サ\0ザ\0シ\0ジ\0ス\0ズ\0セ\0ゼ\0ソ\0ゾ\0タ\0ダ\0チ\0ヂ\0ッ\0ツ\0ヅ\0テ\0デ\0ト\0ド\0ナ\0ニ\0ヌ\0ネ\0ノ\0ハ\0バ\0パ\0ヒ\0ビ\0ピ\0フ\0ブ\0プ\0ヘ\0ベ\0ペ\0ホ\0ボ\0ポ\0マ\0ミ\0ム\0メ\0モ\0ャ\0ヤ\0ュ\0ユ\0ョ\0ヨ\0ラ\0リ\0ル\0レ\0ロ\0ヮ\0ワ\0ヰ\0ヱ\0ヲ\0ン\0ヴ\0ヵ\0ヶ\0\u30ab\u309a\u30ad\u309a\u30af\u309a\u30b1\u309a\u30b3\u309a\u30bb\u309a\u30c4\u309a\u30c8\u309a" + //5区
"Α\0Β\0Γ\0Δ\0Ε\0Ζ\0Η\0Θ\0Ι\0Κ\0Λ\0Μ\0Ν\0Ξ\0Ο\0Π\0Ρ\0Σ\0Τ\0Υ\0Φ\0Χ\0Ψ\0Ω\0\u2664\0\u2660\0\u2662\0\u2666\0\u2661\0\u2665\0\u2667\0\u2663\0α\0β\0γ\0δ\0ε\0ζ\0η\0θ\0ι\0κ\0λ\0μ\0ν\0ξ\0ο\0π\0ρ\0σ\0τ\0υ\0φ\0χ\0ψ\0ω\0\u03c2\0\u24f5\0\u24f6\0\u24f7\0\u24f8\0\u24f9\0\u24fa\0\u24fb\0\u24fc\0\u24fd\0\u24fe\0\u2616\0\u2617\0\u3020\0\u260e\0\u2600\0\u2601\0\u2602\0\u2603\0\u2668\0\u25b1\0\u31f0\0\u31f1\0\u31f2\0\u31f3\0\u31f4\0\u31f5\0\u31f6\0\u31f7\0\u31f8\0\u31f9\0\u31f7\u309a\u31fa\0\u31fb\0\u31fc\0\u31fd\0\u31fe\0\u31ff\0" + //6区
"А\0Б\0В\0Г\0Д\0Е\0Ё\0Ж\0З\0И\0Й\0К\0Л\0М\0Н\0О\0П\0Р\0С\0Т\0У\0Ф\0Х\0Ц\0Ч\0Ш\0Щ\0Ъ\0Ы\0Ь\0Э\0Ю\0Я\0\u23be\0\u23bf\0\u23c0\0\u23c1\0\u23c2\0\u23c3\0\u23c4\0\u23c5\0\u23c6\0\u23c7\0\u23c8\0\u23c9\0\u23ca\0\u23cb\0\u23cc\0а\0б\0в\0г\0д\0е\0ё\0ж\0з\0и\0й\0к\0л\0м\0н\0о\0п\0р\0с\0т\0у\0ф\0х\0ц\0ч\0ш\0щ\0ъ\0ы\0ь\0э\0ю\0я\0\u30f7\0\u30f8\0\u30f9\0\u30fa\0\u22da\0\u22db\0\u2153\0\u2154\0\u2155\0\u2713\0\u2318\0\u2423\0\u23ce\0" + //7区
"─\0│\0┌\0┐\0┘\0└\0├\0┬\0┤\0┴\0┼\0━\0┃\0┏\0┓\0┛\0┗\0┣\0┳\0┫\0┻\0╋\0┠\0┯\0┨\0┷\0┿\0┝\0┰\0┥\0┸\0╂\0\u3251\0\u3252\0\u3253\0\u3254\0\u3255\0\u3256\0\u3257\0\u3258\0\u3259\0\u325a\0\u325b\0\u325c\0\u325d\0\u325e\0\u325f\0\u32b1\0\u32b2\0\u32b3\0\u32b4\0\u32b5\0\u32b6\0\u32b7\0\u32b8\0\u32b9\0\u32ba\0\u32bb\0\u32bc\0\u32bd\0\u32be\0\u32bf\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u25d0\0\u25d1\0\u25d2\0\u25d3\0\u203c\0\u2047\0\u2048\0\u2049\0\u01cd\0\u01ce\0\u01d0\0\u1e3e\0\u1e3f\0\u01f8\0\u01f9\0\u01d1\0\u01d2\0\u01d4\0\u01d6\0\u01d8\0\u01da\0\u01dc\0\u3000\0\u3000\0" + //8区
"\u20ac\0\u00a0\0\u00a1\0\u00a4\0\u00a6\0\u00a9\0\u00aa\0\u00ab\0\u00ad\0\u00ae\0\u00af\0\u00b2\0\u00b3\0\u00b7\0\u00b8\0\u00b9\0\u00ba\0\u00bb\0\u00bc\0\u00bd\0\u00be\0\u00bf\0\u00c0\0\u00c1\0\u00c2\0\u00c3\0\u00c4\0\u00c5\0\u00c6\0\u00c7\0\u00c8\0\u00c9\0\u00ca\0\u00cb\0\u00cc\0\u00cd\0\u00ce\0\u00cf\0\u00d0\0\u00d1\0\u00d2\0\u00d3\0\u00d4\0\u00d5\0\u00d6\0\u00d8\0\u00d9\0\u00da\0\u00db\0\u00dc\0\u00dd\0\u00de\0\u00df\0\u00e0\0\u00e1\0\u00e2\0\u00e3\0\u00e4\0\u00e5\0\u00e6\0\u00e7\0\u00e8\0\u00e9\0\u00ea\0\u00eb\0\u00ec\0\u00ed\0\u00ee\0\u00ef\0\u00f0\0\u00f1\0\u00f2\0\u00f3\0\u00f4\0\u00f5\0\u00f6\0\u00f8\0\u00f9\0\u00fa\0\u00fb\0\u00fc\0\u00fd\0\u00fe\0\u00ff\0\u0100\0\u012a\0\u016a\0\u0112\0\u014c\0\u0101\0\u012b\0\u016b\0\u0113\0\u014d\0" + //9区
"\u0104\0\u02d8\0\u0141\0\u013d\0\u015a\0\u0160\0\u015e\0\u0164\0\u0179\0\u017d\0\u017b\0\u0105\0\u02db\0\u0142\0\u013e\0\u015b\0\u02c7\0\u0161\0\u015f\0\u0165\0\u017a\0\u02dd\0\u017e\0\u017c\0\u0154\0\u0102\0\u0139\0\u0106\0\u010c\0\u0118\0\u011a\0\u010e\0\u0143\0\u0147\0\u0150\0\u0158\0\u016e\0\u0170\0\u0162\0\u0155\0\u0103\0\u013a\0\u0107\0\u010d\0\u0119\0\u011b\0\u010f\0\u0111\0\u0144\0\u0148\0\u0151\0\u0159\0\u016f\0\u0171\0\u0163\0\u02d9\0\u0108\0\u011c\0\u0124\0\u0134\0\u015c\0\u016c\0\u0109\0\u011d\0\u0125\0\u0135\0\u015d\0\u016d\0\u0271\0\u028b\0\u027e\0\u0283\0\u0292\0\u026c\0\u026e\0\u0279\0\u0288\0\u0256\0\u0273\0\u027d\0\u0282\0\u0290\0\u027b\0\u026d\0\u025f\0\u0272\0\u029d\0\u028e\0\u0261\0\u014b\0\u0270\0\u0281\0\u0127\0\u0295\0" + //10区
"\u0294\0\u0266\0\u0298\0\u01c2\0\u0253\0\u0257\0\u0284\0\u0260\0\u0193\0\u0153\0\u0152\0\u0268\0\u0289\0\u0258\0\u0275\0\u0259\0\u025c\0\u025e\0\u0250\0\u026f\0\u028a\0\u0264\0\u028c\0\u0254\0\u0251\0\u0252\0\u028d\0\u0265\0\u02a2\0\u02a1\0\u0255\0\u0291\0\u027a\0\u0267\0\u025a\0\u00e6\u0300\u01fd\0\u1f70\0\u1f71\0\u0254\u0300\u0254\u0301\u028c\u0300\u028c\u0301\u0259\u0300\u0259\u0301\u025a\u0300\u025a\u0301\u1f72\0\u1f73\0\u0361\0\u02c8\0\u02cc\0\u02d0\0\u02d1\0\u0306\0\u203f\0\u030b\0\u0301\0\u0304\0\u0300\0\u030f\0\u030c\0\u0302\0\u02e5\0\u02e6\0\u02e7\0\u02e8\0\u02e9\0\u02e9\u02e5\u02e5\u02e9\u0325\0\u032c\0\u0339\0\u031c\0\u031f\0\u0320\0\u0308\0\u033d\0\u0329\0\u032f\0\u02de\0\u0324\0\u0330\0\u033c\0\u0334\0\u031d\0\u031e\0\u0318\0\u0319\0\u032a\0\u033a\0\u033b\0\u0303\0\u031a\0" + //11区
"\u2776\0\u2777\0\u2778\0\u2779\0\u277a\0\u277b\0\u277c\0\u277d\0\u277e\0\u277f\0\u24eb\0\u24ec\0\u24ed\0\u24ee\0\u24ef\0\u24f0\0\u24f1\0\u24f2\0\u24f3\0\u24f4\0\u2170\0\u2171\0\u2172\0\u2173\0\u2174\0\u2175\0\u2176\0\u2177\0\u2178\0\u2179\0\u217a\0\u217b\0\u24d0\0\u24d1\0\u24d2\0\u24d3\0\u24d4\0\u24d5\0\u24d6\0\u24d7\0\u24d8\0\u24d9\0\u24da\0\u24db\0\u24dc\0\u24dd\0\u24de\0\u24df\0\u24e0\0\u24e1\0\u24e2\0\u24e3\0\u24e4\0\u24e5\0\u24e6\0\u24e7\0\u24e8\0\u24e9\0\u32d0\0\u32d1\0\u32d2\0\u32d3\0\u32d4\0\u32d5\0\u32d6\0\u32d7\0\u32d8\0\u32d9\0\u32da\0\u32db\0\u32dc\0\u32dd\0\u32de\0\u32df\0\u32e0\0\u32e1\0\u32e2\0\u32e3\0\u32fa\0\u32e9\0\u32e5\0\u32ed\0\u32ec\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u2051\0\u2042\0" + //12区
"\u2460\0\u2461\0\u2462\0\u2463\0\u2464\0\u2465\0\u2466\0\u2467\0\u2468\0\u2469\0\u246a\0\u246b\0\u246c\0\u246d\0\u246e\0\u246f\0\u2470\0\u2471\0\u2472\0\u2473\0\u2160\0\u2161\0\u2162\0\u2163\0\u2164\0\u2165\0\u2166\0\u2167\0\u2168\0\u2169\0\u216a\0\u3349\0\u3314\0\u3322\0\u334d\0\u3318\0\u3327\0\u3303\0\u3336\0\u3351\0\u3357\0\u330d\0\u3326\0\u3323\0\u332b\0\u334a\0\u333b\0\u339c\0\u339d\0\u339e\0\u338e\0\u338f\0\u33c4\0\u33a1\0\u216b\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u3000\0\u337b\0\u301d\0\u301f\0\u2116\0\u33cd\0\u2121\0\u32a4\0\u32a5\0\u32a6\0\u32a7\0\u32a8\0\u3231\0\u3232\0\u3239\0\u337e\0\u337d\0\u337c\0\u3000\0\u3000\0\u3000\0\u222e\0\u3000\0\u3000\0\u3000\0\u3000\0\u221f\0\u22bf\0\u3000\0\u3000\0\u3000\0\u2756\0\u261e\0" + //13区
"\u4ff1\0\u0076\u000b\u3402\0\u4e28\0\u4e2f\0\u4e30\0\u4e8d\0\u4ee1\0\u4efd\0\u4eff\0\u4f03\0\u4f0b\0\u4f60\0\u4f48\0\u4f49\0\u4f56\0\u4f5f\0\u4f6a\0\u4f6c\0\u4f7e\0\u4f8a\0\u4f94\0\u4f97\0\ufa30\0\u4fc9\0\u4fe0\0\u5001\0\u5002\0\u500e\0\u5018\0\u5027\0\u502e\0\u5040\0\u503b\0\u5041\0\u5094\0\u50cc\0\u50f2\0\u50d0\0\u50e6\0\ufa31\0\u5106\0\u5103\0\u510b\0\u511e\0\u5135\0\u514a\0\ufa32\0\u5155\0\u5157\0\u34b5\0\u519d\0\u51c3\0\u51ca\0\u51de\0\u51e2\0\u51ee\0\u5201\0\u34db\0\u5213\0\u5215\0\u5249\0\u5257\0\u5261\0\u5293\0\u52c8\0\ufa33\0\u52cc\0\u52d0\0\u52d6\0\u52db\0\ufa34\0\u52f0\0\u52fb\0\u5300\0\u5307\0\u531c\0\ufa35\0\u5361\0\u5363\0\u537d\0\u5393\0\u539d\0\u53b2\0\u5412\0\u5427\0\u544d\0\u549c\0\u546b\0\u5474\0\u547f\0\u5488\0\u5496\0\u54a1\0" + //14区
"\u54a9\0\u54c6\0\u54ff\0\u550e\0\u552b\0\u5535\0\u5550\0\u555e\0\u5581\0\u5586\0\u558e\0\ufa36\0\u55ad\0\u55ce\0\ufa37\0\u5608\0\u560e\0\u563b\0\u5649\0\u5676\0\u5666\0\ufa38\0\u566f\0\u5671\0\u5672\0\u5699\0\u569e\0\u56a9\0\u56ac\0\u56b3\0\u56c9\0\u56ca\0\u570a\0\u007a\u023d\u5721\0\u572f\0\u5733\0\u5734\0\u5770\0\u5777\0\u577c\0\u579c\0\ufa0f\0\u007a\u031b\u57b8\0\u57c7\0\u57c8\0\u57cf\0\u57e4\0\u57ed\0\u57f5\0\u57f6\0\u57ff\0\u5809\0\ufa10\0\u5861\0\u5864\0\ufa39\0\u587c\0\u5889\0\u589e\0\ufa3a\0\u58a9\0\u007b\u006e\u58d2\0\u58ce\0\u58d4\0\u58da\0\u58e0\0\u58e9\0\u590c\0\u8641\0\u595d\0\u596d\0\u598b\0\u5992\0\u59a4\0\u59c3\0\u59d2\0\u59dd\0\u5a13\0\u5a23\0\u5a67\0\u5a6d\0\u5a77\0\u5a7e\0\u5a84\0\u5a9e\0\u5aa7\0\u5ac4\0\u007c\u00bd\u5b19\0\u5b25\0\u525d\0" + //15区
"亜\0唖\0娃\0阿\0哀\0愛\0挨\0姶\0逢\0葵\0茜\0穐\0悪\0握\0渥\0旭\0葦\0芦\0鯵\0梓\0圧\0斡\0扱\0宛\0姐\0虻\0飴\0絢\0綾\0鮎\0或\0粟\0袷\0安\0庵\0按\0暗\0案\0闇\0鞍\0杏\0以\0伊\0位\0依\0偉\0囲\0夷\0委\0威\0尉\0惟\0意\0慰\0易\0椅\0為\0畏\0異\0移\0維\0緯\0胃\0萎\0衣\0謂\0違\0遺\0医\0井\0亥\0域\0育\0郁\0磯\0一\0壱\0溢\0逸\0稲\0茨\0芋\0鰯\0允\0印\0咽\0員\0因\0姻\0引\0飲\0淫\0胤\0蔭\0" + //16区
"院\0陰\0隠\0韻\0吋\0右\0宇\0烏\0羽\0迂\0雨\0卯\0鵜\0窺\0丑\0碓\0臼\0渦\0嘘\0唄\0欝\0蔚\0鰻\0姥\0厩\0浦\0瓜\0閏\0噂\0云\0運\0雲\0荏\0餌\0叡\0営\0嬰\0影\0映\0曳\0栄\0永\0泳\0洩\0瑛\0盈\0穎\0頴\0英\0衛\0詠\0鋭\0液\0疫\0益\0駅\0悦\0謁\0越\0閲\0榎\0厭\0円\0園\0堰\0奄\0宴\0延\0怨\0掩\0援\0沿\0演\0炎\0焔\0煙\0燕\0猿\0縁\0艶\0苑\0薗\0遠\0鉛\0鴛\0塩\0於\0汚\0甥\0凹\0央\0奥\0往\0応\0" + //17区
"押\0旺\0横\0欧\0殴\0王\0翁\0襖\0鴬\0鴎\0黄\0岡\0沖\0荻\0億\0屋\0憶\0臆\0桶\0牡\0乙\0俺\0卸\0恩\0温\0穏\0音\0下\0化\0仮\0何\0伽\0価\0佳\0加\0可\0嘉\0夏\0嫁\0家\0寡\0科\0暇\0果\0架\0歌\0河\0火\0珂\0禍\0禾\0稼\0箇\0花\0苛\0茄\0荷\0華\0菓\0蝦\0課\0嘩\0貨\0迦\0過\0霞\0蚊\0俄\0峨\0我\0牙\0画\0臥\0芽\0蛾\0賀\0雅\0餓\0駕\0介\0会\0解\0回\0塊\0壊\0廻\0快\0怪\0悔\0恢\0懐\0戒\0拐\0改\0" + //18区
"魁\0晦\0械\0海\0灰\0界\0皆\0絵\0芥\0蟹\0開\0階\0貝\0凱\0劾\0外\0咳\0害\0崖\0慨\0概\0涯\0碍\0蓋\0街\0該\0鎧\0骸\0浬\0馨\0蛙\0垣\0柿\0蛎\0鈎\0劃\0嚇\0各\0廓\0拡\0撹\0格\0核\0殻\0獲\0確\0穫\0覚\0角\0赫\0較\0郭\0閣\0隔\0革\0学\0岳\0楽\0額\0顎\0掛\0笠\0樫\0橿\0梶\0鰍\0潟\0割\0喝\0恰\0括\0活\0渇\0滑\0葛\0褐\0轄\0且\0鰹\0叶\0椛\0樺\0鞄\0株\0兜\0竃\0蒲\0釜\0鎌\0噛\0鴨\0栢\0茅\0萱\0" + //19区
"粥\0刈\0苅\0瓦\0乾\0侃\0冠\0寒\0刊\0勘\0勧\0巻\0喚\0堪\0姦\0完\0官\0寛\0干\0幹\0患\0感\0慣\0憾\0換\0敢\0柑\0桓\0棺\0款\0歓\0汗\0漢\0澗\0潅\0環\0甘\0監\0看\0竿\0管\0簡\0緩\0缶\0翰\0肝\0艦\0莞\0観\0諌\0貫\0還\0鑑\0間\0閑\0関\0陥\0韓\0館\0舘\0丸\0含\0岸\0巌\0玩\0癌\0眼\0岩\0翫\0贋\0雁\0頑\0顔\0願\0企\0伎\0危\0喜\0器\0基\0奇\0嬉\0寄\0岐\0希\0幾\0忌\0揮\0机\0旗\0既\0期\0棋\0棄\0" + //20区
"機\0帰\0毅\0気\0汽\0畿\0祈\0季\0稀\0紀\0徽\0規\0記\0貴\0起\0軌\0輝\0飢\0騎\0鬼\0亀\0偽\0儀\0妓\0宜\0戯\0技\0擬\0欺\0犠\0疑\0祇\0義\0蟻\0誼\0議\0掬\0菊\0鞠\0吉\0吃\0喫\0桔\0橘\0詰\0砧\0杵\0黍\0却\0客\0脚\0虐\0逆\0丘\0久\0仇\0休\0及\0吸\0宮\0弓\0急\0救\0朽\0求\0汲\0泣\0灸\0球\0究\0窮\0笈\0級\0糾\0給\0旧\0牛\0去\0居\0巨\0拒\0拠\0挙\0渠\0虚\0許\0距\0鋸\0漁\0禦\0魚\0亨\0享\0京\0" + //21区
"供\0侠\0僑\0兇\0競\0共\0凶\0協\0匡\0卿\0叫\0喬\0境\0峡\0強\0彊\0怯\0恐\0恭\0挟\0教\0橋\0況\0狂\0狭\0矯\0胸\0脅\0興\0蕎\0郷\0鏡\0響\0饗\0驚\0仰\0凝\0尭\0暁\0業\0局\0曲\0極\0玉\0桐\0粁\0僅\0勤\0均\0巾\0錦\0斤\0欣\0欽\0琴\0禁\0禽\0筋\0緊\0芹\0菌\0衿\0襟\0謹\0近\0金\0吟\0銀\0九\0倶\0句\0区\0狗\0玖\0矩\0苦\0躯\0駆\0駈\0駒\0具\0愚\0虞\0喰\0空\0偶\0寓\0遇\0隅\0串\0櫛\0釧\0屑\0屈\0" + //22区
"掘\0窟\0沓\0靴\0轡\0窪\0熊\0隈\0粂\0栗\0繰\0桑\0鍬\0勲\0君\0薫\0訓\0群\0軍\0郡\0卦\0袈\0祁\0係\0傾\0刑\0兄\0啓\0圭\0珪\0型\0契\0形\0径\0恵\0慶\0慧\0憩\0掲\0携\0敬\0景\0桂\0渓\0畦\0稽\0系\0経\0継\0繋\0罫\0茎\0荊\0蛍\0計\0詣\0警\0軽\0頚\0鶏\0芸\0迎\0鯨\0劇\0戟\0撃\0激\0隙\0桁\0傑\0欠\0決\0潔\0穴\0結\0血\0訣\0月\0件\0倹\0倦\0健\0兼\0券\0剣\0喧\0圏\0堅\0嫌\0建\0憲\0懸\0拳\0捲\0" + //23区
"検\0権\0牽\0犬\0献\0研\0硯\0絹\0県\0肩\0見\0謙\0賢\0軒\0遣\0鍵\0険\0顕\0験\0鹸\0元\0原\0厳\0幻\0弦\0減\0源\0玄\0現\0絃\0舷\0言\0諺\0限\0乎\0個\0古\0呼\0固\0姑\0孤\0己\0庫\0弧\0戸\0故\0枯\0湖\0狐\0糊\0袴\0股\0胡\0菰\0虎\0誇\0跨\0鈷\0雇\0顧\0鼓\0五\0互\0伍\0午\0呉\0吾\0娯\0後\0御\0悟\0梧\0檎\0瑚\0碁\0語\0誤\0護\0醐\0乞\0鯉\0交\0佼\0侯\0候\0倖\0光\0公\0功\0効\0勾\0厚\0口\0向\0" + //24区
"后\0喉\0坑\0垢\0好\0孔\0孝\0宏\0工\0巧\0巷\0幸\0広\0庚\0康\0弘\0恒\0慌\0抗\0拘\0控\0攻\0昂\0晃\0更\0杭\0校\0梗\0構\0江\0洪\0浩\0港\0溝\0甲\0皇\0硬\0稿\0糠\0紅\0紘\0絞\0綱\0耕\0考\0肯\0肱\0腔\0膏\0航\0荒\0行\0衡\0講\0貢\0購\0郊\0酵\0鉱\0砿\0鋼\0閤\0降\0項\0香\0高\0鴻\0剛\0劫\0号\0合\0壕\0拷\0濠\0豪\0轟\0麹\0克\0刻\0告\0国\0穀\0酷\0鵠\0黒\0獄\0漉\0腰\0甑\0忽\0惚\0骨\0狛\0込\0" + //25区
"此\0頃\0今\0困\0坤\0墾\0婚\0恨\0懇\0昏\0昆\0根\0梱\0混\0痕\0紺\0艮\0魂\0些\0佐\0叉\0唆\0嵯\0左\0差\0査\0沙\0瑳\0砂\0詐\0鎖\0裟\0坐\0座\0挫\0債\0催\0再\0最\0哉\0塞\0妻\0宰\0彩\0才\0採\0栽\0歳\0済\0災\0采\0犀\0砕\0砦\0祭\0斎\0細\0菜\0裁\0載\0際\0剤\0在\0材\0罪\0財\0冴\0坂\0阪\0堺\0榊\0肴\0咲\0崎\0埼\0碕\0鷺\0作\0削\0咋\0搾\0昨\0朔\0柵\0窄\0策\0索\0錯\0桜\0鮭\0笹\0匙\0冊\0刷\0" + //26区
"察\0拶\0撮\0擦\0札\0殺\0薩\0雑\0皐\0鯖\0捌\0錆\0鮫\0皿\0晒\0三\0傘\0参\0山\0惨\0撒\0散\0桟\0燦\0珊\0産\0算\0纂\0蚕\0讃\0賛\0酸\0餐\0斬\0暫\0残\0仕\0仔\0伺\0使\0刺\0司\0史\0嗣\0四\0士\0始\0姉\0姿\0子\0屍\0市\0師\0志\0思\0指\0支\0孜\0斯\0施\0旨\0枝\0止\0死\0氏\0獅\0祉\0私\0糸\0紙\0紫\0肢\0脂\0至\0視\0詞\0詩\0試\0誌\0諮\0資\0賜\0雌\0飼\0歯\0事\0似\0侍\0児\0字\0寺\0慈\0持\0時\0" + //27区
"次\0滋\0治\0爾\0璽\0痔\0磁\0示\0而\0耳\0自\0蒔\0辞\0汐\0鹿\0式\0識\0鴫\0竺\0軸\0宍\0雫\0七\0叱\0執\0失\0嫉\0室\0悉\0湿\0漆\0疾\0質\0実\0蔀\0篠\0偲\0柴\0芝\0屡\0蕊\0縞\0舎\0写\0射\0捨\0赦\0斜\0煮\0社\0紗\0者\0謝\0車\0遮\0蛇\0邪\0借\0勺\0尺\0杓\0灼\0爵\0酌\0釈\0錫\0若\0寂\0弱\0惹\0主\0取\0守\0手\0朱\0殊\0狩\0珠\0種\0腫\0趣\0酒\0首\0儒\0受\0呪\0寿\0授\0樹\0綬\0需\0囚\0収\0周\0" + //28区
"宗\0就\0州\0修\0愁\0拾\0洲\0秀\0秋\0終\0繍\0習\0臭\0舟\0蒐\0衆\0襲\0讐\0蹴\0輯\0週\0酋\0酬\0集\0醜\0什\0住\0充\0十\0従\0戎\0柔\0汁\0渋\0獣\0縦\0重\0銃\0叔\0夙\0宿\0淑\0祝\0縮\0粛\0塾\0熟\0出\0術\0述\0俊\0峻\0春\0瞬\0竣\0舜\0駿\0准\0循\0旬\0楯\0殉\0淳\0準\0潤\0盾\0純\0巡\0遵\0醇\0順\0処\0初\0所\0暑\0曙\0渚\0庶\0緒\0署\0書\0薯\0藷\0諸\0助\0叙\0女\0序\0徐\0恕\0鋤\0除\0傷\0償\0" + //29区
"勝\0匠\0升\0召\0哨\0商\0唱\0嘗\0奨\0妾\0娼\0宵\0将\0小\0少\0尚\0庄\0床\0廠\0彰\0承\0抄\0招\0掌\0捷\0昇\0昌\0昭\0晶\0松\0梢\0樟\0樵\0沼\0消\0渉\0湘\0焼\0焦\0照\0症\0省\0硝\0礁\0祥\0称\0章\0笑\0粧\0紹\0肖\0菖\0蒋\0蕉\0衝\0裳\0訟\0証\0詔\0詳\0象\0賞\0醤\0鉦\0鍾\0鐘\0障\0鞘\0上\0丈\0丞\0乗\0冗\0剰\0城\0場\0壌\0嬢\0常\0情\0擾\0条\0杖\0浄\0状\0畳\0穣\0蒸\0譲\0醸\0錠\0嘱\0埴\0飾\0" + //30区
"拭\0植\0殖\0燭\0織\0職\0色\0触\0食\0蝕\0辱\0尻\0伸\0信\0侵\0唇\0娠\0寝\0審\0心\0慎\0振\0新\0晋\0森\0榛\0浸\0深\0申\0疹\0真\0神\0秦\0紳\0臣\0芯\0薪\0親\0診\0身\0辛\0進\0針\0震\0人\0仁\0刃\0塵\0壬\0尋\0甚\0尽\0腎\0訊\0迅\0陣\0靭\0笥\0諏\0須\0酢\0図\0厨\0逗\0吹\0垂\0帥\0推\0水\0炊\0睡\0粋\0翠\0衰\0遂\0酔\0錐\0錘\0随\0瑞\0髄\0崇\0嵩\0数\0枢\0趨\0雛\0据\0杉\0椙\0菅\0頗\0雀\0裾\0" + //31区
"澄\0摺\0寸\0世\0瀬\0畝\0是\0凄\0制\0勢\0姓\0征\0性\0成\0政\0整\0星\0晴\0棲\0栖\0正\0清\0牲\0生\0盛\0精\0聖\0声\0製\0西\0誠\0誓\0請\0逝\0醒\0青\0静\0斉\0税\0脆\0隻\0席\0惜\0戚\0斥\0昔\0析\0石\0積\0籍\0績\0脊\0責\0赤\0跡\0蹟\0碩\0切\0拙\0接\0摂\0折\0設\0窃\0節\0説\0雪\0絶\0舌\0蝉\0仙\0先\0千\0占\0宣\0専\0尖\0川\0戦\0扇\0撰\0栓\0栴\0泉\0浅\0洗\0染\0潜\0煎\0煽\0旋\0穿\0箭\0線\0" + //32区
"繊\0羨\0腺\0舛\0船\0薦\0詮\0賎\0践\0選\0遷\0銭\0銑\0閃\0鮮\0前\0善\0漸\0然\0全\0禅\0繕\0膳\0糎\0噌\0塑\0岨\0措\0曾\0曽\0楚\0狙\0疏\0疎\0礎\0祖\0租\0粗\0素\0組\0蘇\0訴\0阻\0遡\0鼠\0僧\0創\0双\0叢\0倉\0喪\0壮\0奏\0爽\0宋\0層\0匝\0惣\0想\0捜\0掃\0挿\0掻\0操\0早\0曹\0巣\0槍\0槽\0漕\0燥\0争\0痩\0相\0窓\0糟\0総\0綜\0聡\0草\0荘\0葬\0蒼\0藻\0装\0走\0送\0遭\0鎗\0霜\0騒\0像\0増\0憎\0" + //33区
"臓\0蔵\0贈\0造\0促\0側\0則\0即\0息\0捉\0束\0測\0足\0速\0俗\0属\0賊\0族\0続\0卒\0袖\0其\0揃\0存\0孫\0尊\0損\0村\0遜\0他\0多\0太\0汰\0詑\0唾\0堕\0妥\0惰\0打\0柁\0舵\0楕\0陀\0駄\0騨\0体\0堆\0対\0耐\0岱\0帯\0待\0怠\0態\0戴\0替\0泰\0滞\0胎\0腿\0苔\0袋\0貸\0退\0逮\0隊\0黛\0鯛\0代\0台\0大\0第\0醍\0題\0鷹\0滝\0瀧\0卓\0啄\0宅\0托\0択\0拓\0沢\0濯\0琢\0託\0鐸\0濁\0諾\0茸\0凧\0蛸\0只\0" + //34区
"叩\0但\0達\0辰\0奪\0脱\0巽\0竪\0辿\0棚\0谷\0狸\0鱈\0樽\0誰\0丹\0単\0嘆\0坦\0担\0探\0旦\0歎\0淡\0湛\0炭\0短\0端\0箪\0綻\0耽\0胆\0蛋\0誕\0鍛\0団\0壇\0弾\0断\0暖\0檀\0段\0男\0談\0値\0知\0地\0弛\0恥\0智\0池\0痴\0稚\0置\0致\0蜘\0遅\0馳\0築\0畜\0竹\0筑\0蓄\0逐\0秩\0窒\0茶\0嫡\0着\0中\0仲\0宙\0忠\0抽\0昼\0柱\0注\0虫\0衷\0註\0酎\0鋳\0駐\0樗\0瀦\0猪\0苧\0著\0貯\0丁\0兆\0凋\0喋\0寵\0" + //35区
"帖\0帳\0庁\0弔\0張\0彫\0徴\0懲\0挑\0暢\0朝\0潮\0牒\0町\0眺\0聴\0脹\0腸\0蝶\0調\0諜\0超\0跳\0銚\0長\0頂\0鳥\0勅\0捗\0直\0朕\0沈\0珍\0賃\0鎮\0陳\0津\0墜\0椎\0槌\0追\0鎚\0痛\0通\0塚\0栂\0掴\0槻\0佃\0漬\0柘\0辻\0蔦\0綴\0鍔\0椿\0潰\0坪\0壷\0嬬\0紬\0爪\0吊\0釣\0鶴\0亭\0低\0停\0偵\0剃\0貞\0呈\0堤\0定\0帝\0底\0庭\0廷\0弟\0悌\0抵\0挺\0提\0梯\0汀\0碇\0禎\0程\0締\0艇\0訂\0諦\0蹄\0逓\0" + //36区
"邸\0鄭\0釘\0鼎\0泥\0摘\0擢\0敵\0滴\0的\0笛\0適\0鏑\0溺\0哲\0徹\0撤\0轍\0迭\0鉄\0典\0填\0天\0展\0店\0添\0纏\0甜\0貼\0転\0顛\0点\0伝\0殿\0澱\0田\0電\0兎\0吐\0堵\0塗\0妬\0屠\0徒\0斗\0杜\0渡\0登\0菟\0賭\0途\0都\0鍍\0砥\0砺\0努\0度\0土\0奴\0怒\0倒\0党\0冬\0凍\0刀\0唐\0塔\0塘\0套\0宕\0島\0嶋\0悼\0投\0搭\0東\0桃\0梼\0棟\0盗\0淘\0湯\0涛\0灯\0燈\0当\0痘\0祷\0等\0答\0筒\0糖\0統\0到\0" + //37区
"董\0蕩\0藤\0討\0謄\0豆\0踏\0逃\0透\0鐙\0陶\0頭\0騰\0闘\0働\0動\0同\0堂\0導\0憧\0撞\0洞\0瞳\0童\0胴\0萄\0道\0銅\0峠\0鴇\0匿\0得\0徳\0涜\0特\0督\0禿\0篤\0毒\0独\0読\0栃\0橡\0凸\0突\0椴\0届\0鳶\0苫\0寅\0酉\0瀞\0噸\0屯\0惇\0敦\0沌\0豚\0遁\0頓\0呑\0曇\0鈍\0奈\0那\0内\0乍\0凪\0薙\0謎\0灘\0捺\0鍋\0楢\0馴\0縄\0畷\0南\0楠\0軟\0難\0汝\0二\0尼\0弐\0迩\0匂\0賑\0肉\0虹\0廿\0日\0乳\0入\0" + //38区
"如\0尿\0韮\0任\0妊\0忍\0認\0濡\0禰\0祢\0寧\0葱\0猫\0熱\0年\0念\0捻\0撚\0燃\0粘\0乃\0廼\0之\0埜\0嚢\0悩\0濃\0納\0能\0脳\0膿\0農\0覗\0蚤\0巴\0把\0播\0覇\0杷\0波\0派\0琶\0破\0婆\0罵\0芭\0馬\0俳\0廃\0拝\0排\0敗\0杯\0盃\0牌\0背\0肺\0輩\0配\0倍\0培\0媒\0梅\0楳\0煤\0狽\0買\0売\0賠\0陪\0這\0蝿\0秤\0矧\0萩\0伯\0剥\0博\0拍\0柏\0泊\0白\0箔\0粕\0舶\0薄\0迫\0曝\0漠\0爆\0縛\0莫\0駁\0麦\0" + //39区
"函\0箱\0硲\0箸\0肇\0筈\0櫨\0幡\0肌\0畑\0畠\0八\0鉢\0溌\0発\0醗\0髪\0伐\0罰\0抜\0筏\0閥\0鳩\0噺\0塙\0蛤\0隼\0伴\0判\0半\0反\0叛\0帆\0搬\0斑\0板\0氾\0汎\0版\0犯\0班\0畔\0繁\0般\0藩\0販\0範\0釆\0煩\0頒\0飯\0挽\0晩\0番\0盤\0磐\0蕃\0蛮\0匪\0卑\0否\0妃\0庇\0彼\0悲\0扉\0批\0披\0斐\0比\0泌\0疲\0皮\0碑\0秘\0緋\0罷\0肥\0被\0誹\0費\0避\0非\0飛\0樋\0簸\0備\0尾\0微\0枇\0毘\0琵\0眉\0美\0" + //40区
"鼻\0柊\0稗\0匹\0疋\0髭\0彦\0膝\0菱\0肘\0弼\0必\0畢\0筆\0逼\0桧\0姫\0媛\0紐\0百\0謬\0俵\0彪\0標\0氷\0漂\0瓢\0票\0表\0評\0豹\0廟\0描\0病\0秒\0苗\0錨\0鋲\0蒜\0蛭\0鰭\0品\0彬\0斌\0浜\0瀕\0貧\0賓\0頻\0敏\0瓶\0不\0付\0埠\0夫\0婦\0富\0冨\0布\0府\0怖\0扶\0敷\0斧\0普\0浮\0父\0符\0腐\0膚\0芙\0譜\0負\0賦\0赴\0阜\0附\0侮\0撫\0武\0舞\0葡\0蕪\0部\0封\0楓\0風\0葺\0蕗\0伏\0副\0復\0幅\0服\0" + //41区
"福\0腹\0複\0覆\0淵\0弗\0払\0沸\0仏\0物\0鮒\0分\0吻\0噴\0墳\0憤\0扮\0焚\0奮\0粉\0糞\0紛\0雰\0文\0聞\0丙\0併\0兵\0塀\0幣\0平\0弊\0柄\0並\0蔽\0閉\0陛\0米\0頁\0僻\0壁\0癖\0碧\0別\0瞥\0蔑\0箆\0偏\0変\0片\0篇\0編\0辺\0返\0遍\0便\0勉\0娩\0弁\0鞭\0保\0舗\0鋪\0圃\0捕\0歩\0甫\0補\0輔\0穂\0募\0墓\0慕\0戊\0暮\0母\0簿\0菩\0倣\0俸\0包\0呆\0報\0奉\0宝\0峰\0峯\0崩\0庖\0抱\0捧\0放\0方\0朋\0" + //42区
"法\0泡\0烹\0砲\0縫\0胞\0芳\0萌\0蓬\0蜂\0褒\0訪\0豊\0邦\0鋒\0飽\0鳳\0鵬\0乏\0亡\0傍\0剖\0坊\0妨\0帽\0忘\0忙\0房\0暴\0望\0某\0棒\0冒\0紡\0肪\0膨\0謀\0貌\0貿\0鉾\0防\0吠\0頬\0北\0僕\0卜\0墨\0撲\0朴\0牧\0睦\0穆\0釦\0勃\0没\0殆\0堀\0幌\0奔\0本\0翻\0凡\0盆\0摩\0磨\0魔\0麻\0埋\0妹\0昧\0枚\0毎\0哩\0槙\0幕\0膜\0枕\0鮪\0柾\0鱒\0桝\0亦\0俣\0又\0抹\0末\0沫\0迄\0侭\0繭\0麿\0万\0慢\0満\0" + //43区
"漫\0蔓\0味\0未\0魅\0巳\0箕\0岬\0密\0蜜\0湊\0蓑\0稔\0脈\0妙\0粍\0民\0眠\0務\0夢\0無\0牟\0矛\0霧\0鵡\0椋\0婿\0娘\0冥\0名\0命\0明\0盟\0迷\0銘\0鳴\0姪\0牝\0滅\0免\0棉\0綿\0緬\0面\0麺\0摸\0模\0茂\0妄\0孟\0毛\0猛\0盲\0網\0耗\0蒙\0儲\0木\0黙\0目\0杢\0勿\0餅\0尤\0戻\0籾\0貰\0問\0悶\0紋\0門\0匁\0也\0冶\0夜\0爺\0耶\0野\0弥\0矢\0厄\0役\0約\0薬\0訳\0躍\0靖\0柳\0薮\0鑓\0愉\0愈\0油\0癒\0" + //44区
"諭\0輸\0唯\0佑\0優\0勇\0友\0宥\0幽\0悠\0憂\0揖\0有\0柚\0湧\0涌\0猶\0猷\0由\0祐\0裕\0誘\0遊\0邑\0郵\0雄\0融\0夕\0予\0余\0与\0誉\0輿\0預\0傭\0幼\0妖\0容\0庸\0揚\0揺\0擁\0曜\0楊\0様\0洋\0溶\0熔\0用\0窯\0羊\0耀\0葉\0蓉\0要\0謡\0踊\0遥\0陽\0養\0慾\0抑\0欲\0沃\0浴\0翌\0翼\0淀\0羅\0螺\0裸\0来\0莱\0頼\0雷\0洛\0絡\0落\0酪\0乱\0卵\0嵐\0欄\0濫\0藍\0蘭\0覧\0利\0吏\0履\0李\0梨\0理\0璃\0" + //45区
"痢\0裏\0裡\0里\0離\0陸\0律\0率\0立\0葎\0掠\0略\0劉\0流\0溜\0琉\0留\0硫\0粒\0隆\0竜\0龍\0侶\0慮\0旅\0虜\0了\0亮\0僚\0両\0凌\0寮\0料\0梁\0涼\0猟\0療\0瞭\0稜\0糧\0良\0諒\0遼\0量\0陵\0領\0力\0緑\0倫\0厘\0林\0淋\0燐\0琳\0臨\0輪\0隣\0鱗\0麟\0瑠\0塁\0涙\0累\0類\0令\0伶\0例\0冷\0励\0嶺\0怜\0玲\0礼\0苓\0鈴\0隷\0零\0霊\0麗\0齢\0暦\0歴\0列\0劣\0烈\0裂\0廉\0恋\0憐\0漣\0煉\0簾\0練\0聯\0" + //46区
"蓮\0連\0錬\0呂\0魯\0櫓\0炉\0賂\0路\0露\0労\0婁\0廊\0弄\0朗\0楼\0榔\0浪\0漏\0牢\0狼\0篭\0老\0聾\0蝋\0郎\0六\0麓\0禄\0肋\0録\0論\0倭\0和\0話\0歪\0賄\0脇\0惑\0枠\0鷲\0亙\0亘\0鰐\0詫\0藁\0蕨\0椀\0湾\0碗\0腕\0\u0078\u039f\u5b41\0\u5b56\0\u5b7d\0\u5b93\0\u5bd8\0\u5bec\0\u5c12\0\u5c1e\0\u5c23\0\u5c2b\0\u378d\0\u5c62\0\ufa3b\0\ufa3c\0\u007b\u02b4\u5c7a\0\u5c8f\0\u5c9f\0\u5ca3\0\u5caa\0\u5cba\0\u5ccb\0\u5cd0\0\u5cd2\0\u5cf4\0\u007d\u0234\u37e2\0\u5d0d\0\u5d27\0\ufa11\0\u5d46\0\u5d47\0\u5d53\0\u5d4a\0\u5d6d\0\u5d81\0\u5da0\0\u5da4\0\u5da7\0\u5db8\0\u5dcb\0\u541e\0" + //47区
"弌\0丐\0丕\0个\0丱\0丶\0丼\0丿\0乂\0乖\0乘\0亂\0亅\0豫\0亊\0舒\0弍\0于\0亞\0亟\0亠\0亢\0亰\0亳\0亶\0从\0仍\0仄\0仆\0仂\0仗\0仞\0仭\0仟\0价\0伉\0佚\0估\0佛\0佝\0佗\0佇\0佶\0侈\0侏\0侘\0佻\0佩\0佰\0侑\0佯\0來\0侖\0儘\0俔\0俟\0俎\0俘\0俛\0俑\0俚\0俐\0俤\0俥\0倚\0倨\0倔\0倪\0倥\0倅\0伜\0俶\0倡\0倩\0倬\0俾\0俯\0們\0倆\0偃\0假\0會\0偕\0偐\0偈\0做\0偖\0偬\0偸\0傀\0傚\0傅\0傴\0傲\0" + //48区
"僉\0僊\0傳\0僂\0僖\0僞\0僥\0僭\0僣\0僮\0價\0僵\0儉\0儁\0儂\0儖\0儕\0儔\0儚\0儡\0儺\0儷\0儼\0儻\0儿\0兀\0兒\0兌\0兔\0兢\0竸\0兩\0兪\0兮\0冀\0冂\0囘\0册\0冉\0冏\0冑\0冓\0冕\0冖\0冤\0冦\0冢\0冩\0冪\0冫\0决\0冱\0冲\0冰\0况\0冽\0凅\0凉\0凛\0几\0處\0凩\0凭\0凰\0凵\0凾\0刄\0刋\0刔\0刎\0刧\0刪\0刮\0刳\0刹\0剏\0剄\0剋\0剌\0剞\0剔\0剪\0剴\0剩\0剳\0剿\0剽\0劍\0劔\0劒\0剱\0劈\0劑\0辨\0" + //49区
"辧\0劬\0劭\0劼\0劵\0勁\0勍\0勗\0勞\0勣\0勦\0飭\0勠\0勳\0勵\0勸\0勹\0匆\0匈\0甸\0匍\0匐\0匏\0匕\0匚\0匣\0匯\0匱\0匳\0匸\0區\0卆\0卅\0丗\0卉\0卍\0凖\0卞\0卩\0卮\0夘\0卻\0卷\0厂\0厖\0厠\0厦\0厥\0厮\0厰\0厶\0參\0簒\0雙\0叟\0曼\0燮\0叮\0叨\0叭\0叺\0吁\0吽\0呀\0听\0吭\0吼\0吮\0吶\0吩\0吝\0呎\0咏\0呵\0咎\0呟\0呱\0呷\0呰\0咒\0呻\0咀\0呶\0咄\0咐\0咆\0哇\0咢\0咸\0咥\0咬\0哄\0哈\0咨\0" + //50区
"咫\0哂\0咤\0咾\0咼\0哘\0哥\0哦\0唏\0唔\0哽\0哮\0哭\0哺\0哢\0唹\0啀\0啣\0啌\0售\0啜\0啅\0啖\0啗\0唸\0唳\0啝\0喙\0喀\0咯\0喊\0喟\0啻\0啾\0喘\0喞\0單\0啼\0喃\0喩\0喇\0喨\0嗚\0嗅\0嗟\0嗄\0嗜\0嗤\0嗔\0嘔\0嗷\0嘖\0嗾\0嗽\0嘛\0嗹\0噎\0噐\0營\0嘴\0嘶\0嘲\0嘸\0噫\0噤\0嘯\0噬\0噪\0嚆\0嚀\0嚊\0嚠\0嚔\0嚏\0嚥\0嚮\0嚶\0嚴\0囂\0嚼\0囁\0囃\0囀\0囈\0囎\0囑\0囓\0囗\0囮\0囹\0圀\0囿\0圄\0圉\0" + //51区
"圈\0國\0圍\0圓\0團\0圖\0嗇\0圜\0圦\0圷\0圸\0坎\0圻\0址\0坏\0坩\0埀\0垈\0坡\0坿\0垉\0垓\0垠\0垳\0垤\0垪\0垰\0埃\0埆\0埔\0埒\0埓\0堊\0埖\0埣\0堋\0堙\0堝\0塲\0堡\0塢\0塋\0塰\0毀\0塒\0堽\0塹\0墅\0墹\0墟\0墫\0墺\0壞\0墻\0墸\0墮\0壅\0壓\0壑\0壗\0壙\0壘\0壥\0壜\0壤\0壟\0壯\0壺\0壹\0壻\0壼\0壽\0夂\0夊\0夐\0夛\0梦\0夥\0夬\0夭\0夲\0夸\0夾\0竒\0奕\0奐\0奎\0奚\0奘\0奢\0奠\0奧\0奬\0奩\0" + //52区
"奸\0妁\0妝\0佞\0侫\0妣\0妲\0姆\0姨\0姜\0妍\0姙\0姚\0娥\0娟\0娑\0娜\0娉\0娚\0婀\0婬\0婉\0娵\0娶\0婢\0婪\0媚\0媼\0媾\0嫋\0嫂\0媽\0嫣\0嫗\0嫦\0嫩\0嫖\0嫺\0嫻\0嬌\0嬋\0嬖\0嬲\0嫐\0嬪\0嬶\0嬾\0孃\0孅\0孀\0孑\0孕\0孚\0孛\0孥\0孩\0孰\0孳\0孵\0學\0斈\0孺\0宀\0它\0宦\0宸\0寃\0寇\0寉\0寔\0寐\0寤\0實\0寢\0寞\0寥\0寫\0寰\0寶\0寳\0尅\0將\0專\0對\0尓\0尠\0尢\0尨\0尸\0尹\0屁\0屆\0屎\0屓\0" + //53区
"屐\0屏\0孱\0屬\0屮\0乢\0屶\0屹\0岌\0岑\0岔\0妛\0岫\0岻\0岶\0岼\0岷\0峅\0岾\0峇\0峙\0峩\0峽\0峺\0峭\0嶌\0峪\0崋\0崕\0崗\0嵜\0崟\0崛\0崑\0崔\0崢\0崚\0崙\0崘\0嵌\0嵒\0嵎\0嵋\0嵬\0嵳\0嵶\0嶇\0嶄\0嶂\0嶢\0嶝\0嶬\0嶮\0嶽\0嶐\0嶷\0嶼\0巉\0巍\0巓\0巒\0巖\0巛\0巫\0已\0巵\0帋\0帚\0帙\0帑\0帛\0帶\0帷\0幄\0幃\0幀\0幎\0幗\0幔\0幟\0幢\0幤\0幇\0幵\0并\0幺\0麼\0广\0庠\0廁\0廂\0廈\0廐\0廏\0" + //54区
"廖\0廣\0廝\0廚\0廛\0廢\0廡\0廨\0廩\0廬\0廱\0廳\0廰\0廴\0廸\0廾\0弃\0弉\0彝\0彜\0弋\0弑\0弖\0弩\0弭\0弸\0彁\0彈\0彌\0彎\0弯\0彑\0彖\0彗\0彙\0彡\0彭\0彳\0彷\0徃\0徂\0彿\0徊\0很\0徑\0徇\0從\0徙\0徘\0徠\0徨\0徭\0徼\0忖\0忻\0忤\0忸\0忱\0忝\0悳\0忿\0怡\0恠\0怙\0怐\0怩\0怎\0怱\0怛\0怕\0怫\0怦\0怏\0怺\0恚\0恁\0恪\0恷\0恟\0恊\0恆\0恍\0恣\0恃\0恤\0恂\0恬\0恫\0恙\0悁\0悍\0惧\0悃\0悚\0" + //55区
"悄\0悛\0悖\0悗\0悒\0悧\0悋\0惡\0悸\0惠\0惓\0悴\0忰\0悽\0惆\0悵\0惘\0慍\0愕\0愆\0惶\0惷\0愀\0惴\0惺\0愃\0愡\0惻\0惱\0愍\0愎\0慇\0愾\0愨\0愧\0慊\0愿\0愼\0愬\0愴\0愽\0慂\0慄\0慳\0慷\0慘\0慙\0慚\0慫\0慴\0慯\0慥\0慱\0慟\0慝\0慓\0慵\0憙\0憖\0憇\0憬\0憔\0憚\0憊\0憑\0憫\0憮\0懌\0懊\0應\0懷\0懈\0懃\0懆\0憺\0懋\0罹\0懍\0懦\0懣\0懶\0懺\0懴\0懿\0懽\0懼\0懾\0戀\0戈\0戉\0戍\0戌\0戔\0戛\0" + //56区
"戞\0戡\0截\0戮\0戰\0戲\0戳\0扁\0扎\0扞\0扣\0扛\0扠\0扨\0扼\0抂\0抉\0找\0抒\0抓\0抖\0拔\0抃\0抔\0拗\0拑\0抻\0拏\0拿\0拆\0擔\0拈\0拜\0拌\0拊\0拂\0拇\0抛\0拉\0挌\0拮\0拱\0挧\0挂\0挈\0拯\0拵\0捐\0挾\0捍\0搜\0捏\0掖\0掎\0掀\0掫\0捶\0掣\0掏\0掉\0掟\0掵\0捫\0捩\0掾\0揩\0揀\0揆\0揣\0揉\0插\0揶\0揄\0搖\0搴\0搆\0搓\0搦\0搶\0攝\0搗\0搨\0搏\0摧\0摯\0摶\0摎\0攪\0撕\0撓\0撥\0撩\0撈\0撼\0" + //57区
"據\0擒\0擅\0擇\0撻\0擘\0擂\0擱\0擧\0舉\0擠\0擡\0抬\0擣\0擯\0攬\0擶\0擴\0擲\0擺\0攀\0擽\0攘\0攜\0攅\0攤\0攣\0攫\0攴\0攵\0攷\0收\0攸\0畋\0效\0敖\0敕\0敍\0敘\0敞\0敝\0敲\0數\0斂\0斃\0變\0斛\0斟\0斫\0斷\0旃\0旆\0旁\0旄\0旌\0旒\0旛\0旙\0无\0旡\0旱\0杲\0昊\0昃\0旻\0杳\0昵\0昶\0昴\0昜\0晏\0晄\0晉\0晁\0晞\0晝\0晤\0晧\0晨\0晟\0晢\0晰\0暃\0暈\0暎\0暉\0暄\0暘\0暝\0曁\0暹\0曉\0暾\0暼\0" + //58区
"曄\0暸\0曖\0曚\0曠\0昿\0曦\0曩\0曰\0曵\0曷\0朏\0朖\0朞\0朦\0朧\0霸\0朮\0朿\0朶\0杁\0朸\0朷\0杆\0杞\0杠\0杙\0杣\0杤\0枉\0杰\0枩\0杼\0杪\0枌\0枋\0枦\0枡\0枅\0枷\0柯\0枴\0柬\0枳\0柩\0枸\0柤\0柞\0柝\0柢\0柮\0枹\0柎\0柆\0柧\0檜\0栞\0框\0栩\0桀\0桍\0栲\0桎\0梳\0栫\0桙\0档\0桷\0桿\0梟\0梏\0梭\0梔\0條\0梛\0梃\0檮\0梹\0桴\0梵\0梠\0梺\0椏\0梍\0桾\0椁\0棊\0椈\0棘\0椢\0椦\0棡\0椌\0棍\0" + //59区
"棔\0棧\0棕\0椶\0椒\0椄\0棗\0棣\0椥\0棹\0棠\0棯\0椨\0椪\0椚\0椣\0椡\0棆\0楹\0楷\0楜\0楸\0楫\0楔\0楾\0楮\0椹\0楴\0椽\0楙\0椰\0楡\0楞\0楝\0榁\0楪\0榲\0榮\0槐\0榿\0槁\0槓\0榾\0槎\0寨\0槊\0槝\0榻\0槃\0榧\0樮\0榑\0榠\0榜\0榕\0榴\0槞\0槨\0樂\0樛\0槿\0權\0槹\0槲\0槧\0樅\0榱\0樞\0槭\0樔\0槫\0樊\0樒\0櫁\0樣\0樓\0橄\0樌\0橲\0樶\0橸\0橇\0橢\0橙\0橦\0橈\0樸\0樢\0檐\0檍\0檠\0檄\0檢\0檣\0" + //60区
"檗\0蘗\0檻\0櫃\0櫂\0檸\0檳\0檬\0櫞\0櫑\0櫟\0檪\0櫚\0櫪\0櫻\0欅\0蘖\0櫺\0欒\0欖\0鬱\0欟\0欸\0欷\0盜\0欹\0飮\0歇\0歃\0歉\0歐\0歙\0歔\0歛\0歟\0歡\0歸\0歹\0歿\0殀\0殄\0殃\0殍\0殘\0殕\0殞\0殤\0殪\0殫\0殯\0殲\0殱\0殳\0殷\0殼\0毆\0毋\0毓\0毟\0毬\0毫\0毳\0毯\0麾\0氈\0氓\0气\0氛\0氤\0氣\0汞\0汕\0汢\0汪\0沂\0沍\0沚\0沁\0沛\0汾\0汨\0汳\0沒\0沐\0泄\0泱\0泓\0沽\0泗\0泅\0泝\0沮\0沱\0沾\0" + //61区
"沺\0泛\0泯\0泙\0泪\0洟\0衍\0洶\0洫\0洽\0洸\0洙\0洵\0洳\0洒\0洌\0浣\0涓\0浤\0浚\0浹\0浙\0涎\0涕\0濤\0涅\0淹\0渕\0渊\0涵\0淇\0淦\0涸\0淆\0淬\0淞\0淌\0淨\0淒\0淅\0淺\0淙\0淤\0淕\0淪\0淮\0渭\0湮\0渮\0渙\0湲\0湟\0渾\0渣\0湫\0渫\0湶\0湍\0渟\0湃\0渺\0湎\0渤\0滿\0渝\0游\0溂\0溪\0溘\0滉\0溷\0滓\0溽\0溯\0滄\0溲\0滔\0滕\0溏\0溥\0滂\0溟\0潁\0漑\0灌\0滬\0滸\0滾\0漿\0滲\0漱\0滯\0漲\0滌\0" + //62区
"漾\0漓\0滷\0澆\0潺\0潸\0澁\0澀\0潯\0潛\0濳\0潭\0澂\0潼\0潘\0澎\0澑\0濂\0潦\0澳\0澣\0澡\0澤\0澹\0濆\0澪\0濟\0濕\0濬\0濔\0濘\0濱\0濮\0濛\0瀉\0瀋\0濺\0瀑\0瀁\0瀏\0濾\0瀛\0瀚\0潴\0瀝\0瀘\0瀟\0瀰\0瀾\0瀲\0灑\0灣\0炙\0炒\0炯\0烱\0炬\0炸\0炳\0炮\0烟\0烋\0烝\0烙\0焉\0烽\0焜\0焙\0煥\0煕\0熈\0煦\0煢\0煌\0煖\0煬\0熏\0燻\0熄\0熕\0熨\0熬\0燗\0熹\0熾\0燒\0燉\0燔\0燎\0燠\0燬\0燧\0燵\0燼\0" + //63区
"燹\0燿\0爍\0爐\0爛\0爨\0爭\0爬\0爰\0爲\0爻\0爼\0爿\0牀\0牆\0牋\0牘\0牴\0牾\0犂\0犁\0犇\0犒\0犖\0犢\0犧\0犹\0犲\0狃\0狆\0狄\0狎\0狒\0狢\0狠\0狡\0狹\0狷\0倏\0猗\0猊\0猜\0猖\0猝\0猴\0猯\0猩\0猥\0猾\0獎\0獏\0默\0獗\0獪\0獨\0獰\0獸\0獵\0獻\0獺\0珈\0玳\0珎\0玻\0珀\0珥\0珮\0珞\0璢\0琅\0瑯\0琥\0珸\0琲\0琺\0瑕\0琿\0瑟\0瑙\0瑁\0瑜\0瑩\0瑰\0瑣\0瑪\0瑶\0瑾\0璋\0璞\0璧\0瓊\0瓏\0瓔\0珱\0" + //64区
"瓠\0瓣\0瓧\0瓩\0瓮\0瓲\0瓰\0瓱\0瓸\0瓷\0甄\0甃\0甅\0甌\0甎\0甍\0甕\0甓\0甞\0甦\0甬\0甼\0畄\0畍\0畊\0畉\0畛\0畆\0畚\0畩\0畤\0畧\0畫\0畭\0畸\0當\0疆\0疇\0畴\0疊\0疉\0疂\0疔\0疚\0疝\0疥\0疣\0痂\0疳\0痃\0疵\0疽\0疸\0疼\0疱\0痍\0痊\0痒\0痙\0痣\0痞\0痾\0痿\0痼\0瘁\0痰\0痺\0痲\0痳\0瘋\0瘍\0瘉\0瘟\0瘧\0瘠\0瘡\0瘢\0瘤\0瘴\0瘰\0瘻\0癇\0癈\0癆\0癜\0癘\0癡\0癢\0癨\0癩\0癪\0癧\0癬\0癰\0" + //65区
"癲\0癶\0癸\0發\0皀\0皃\0皈\0皋\0皎\0皖\0皓\0皙\0皚\0皰\0皴\0皸\0皹\0皺\0盂\0盍\0盖\0盒\0盞\0盡\0盥\0盧\0盪\0蘯\0盻\0眈\0眇\0眄\0眩\0眤\0眞\0眥\0眦\0眛\0眷\0眸\0睇\0睚\0睨\0睫\0睛\0睥\0睿\0睾\0睹\0瞎\0瞋\0瞑\0瞠\0瞞\0瞰\0瞶\0瞹\0瞿\0瞼\0瞽\0瞻\0矇\0矍\0矗\0矚\0矜\0矣\0矮\0矼\0砌\0砒\0礦\0砠\0礪\0硅\0碎\0硴\0碆\0硼\0碚\0碌\0碣\0碵\0碪\0碯\0磑\0磆\0磋\0磔\0碾\0碼\0磅\0磊\0磬\0" + //66区
"磧\0磚\0磽\0磴\0礇\0礒\0礑\0礙\0礬\0礫\0祀\0祠\0祗\0祟\0祚\0祕\0祓\0祺\0祿\0禊\0禝\0禧\0齋\0禪\0禮\0禳\0禹\0禺\0秉\0秕\0秧\0秬\0秡\0秣\0稈\0稍\0稘\0稙\0稠\0稟\0禀\0稱\0稻\0稾\0稷\0穃\0穗\0穉\0穡\0穢\0穩\0龝\0穰\0穹\0穽\0窈\0窗\0窕\0窘\0窖\0窩\0竈\0窰\0窶\0竅\0竄\0窿\0邃\0竇\0竊\0竍\0竏\0竕\0竓\0站\0竚\0竝\0竡\0竢\0竦\0竭\0竰\0笂\0笏\0笊\0笆\0笳\0笘\0笙\0笞\0笵\0笨\0笶\0筐\0" + //67区
"筺\0笄\0筍\0笋\0筌\0筅\0筵\0筥\0筴\0筧\0筰\0筱\0筬\0筮\0箝\0箘\0箟\0箍\0箜\0箚\0箋\0箒\0箏\0筝\0箙\0篋\0篁\0篌\0篏\0箴\0篆\0篝\0篩\0簑\0簔\0篦\0篥\0籠\0簀\0簇\0簓\0篳\0篷\0簗\0簍\0篶\0簣\0簧\0簪\0簟\0簷\0簫\0簽\0籌\0籃\0籔\0籏\0籀\0籐\0籘\0籟\0籤\0籖\0籥\0籬\0籵\0粃\0粐\0粤\0粭\0粢\0粫\0粡\0粨\0粳\0粲\0粱\0粮\0粹\0粽\0糀\0糅\0糂\0糘\0糒\0糜\0糢\0鬻\0糯\0糲\0糴\0糶\0糺\0紆\0" + //68区
"紂\0紜\0紕\0紊\0絅\0絋\0紮\0紲\0紿\0紵\0絆\0絳\0絖\0絎\0絲\0絨\0絮\0絏\0絣\0經\0綉\0絛\0綏\0絽\0綛\0綺\0綮\0綣\0綵\0緇\0綽\0綫\0總\0綢\0綯\0緜\0綸\0綟\0綰\0緘\0緝\0緤\0緞\0緻\0緲\0緡\0縅\0縊\0縣\0縡\0縒\0縱\0縟\0縉\0縋\0縢\0繆\0繦\0縻\0縵\0縹\0繃\0縷\0縲\0縺\0繧\0繝\0繖\0繞\0繙\0繚\0繹\0繪\0繩\0繼\0繻\0纃\0緕\0繽\0辮\0繿\0纈\0纉\0續\0纒\0纐\0纓\0纔\0纖\0纎\0纛\0纜\0缸\0缺\0" + //69区
"罅\0罌\0罍\0罎\0罐\0网\0罕\0罔\0罘\0罟\0罠\0罨\0罩\0罧\0罸\0羂\0羆\0羃\0羈\0羇\0羌\0羔\0羞\0羝\0羚\0羣\0羯\0羲\0羹\0羮\0羶\0羸\0譱\0翅\0翆\0翊\0翕\0翔\0翡\0翦\0翩\0翳\0翹\0飜\0耆\0耄\0耋\0耒\0耘\0耙\0耜\0耡\0耨\0耿\0耻\0聊\0聆\0聒\0聘\0聚\0聟\0聢\0聨\0聳\0聲\0聰\0聶\0聹\0聽\0聿\0肄\0肆\0肅\0肛\0肓\0肚\0肭\0冐\0肬\0胛\0胥\0胙\0胝\0胄\0胚\0胖\0脉\0胯\0胱\0脛\0脩\0脣\0脯\0腋\0" + //70区
"隋\0腆\0脾\0腓\0腑\0胼\0腱\0腮\0腥\0腦\0腴\0膃\0膈\0膊\0膀\0膂\0膠\0膕\0膤\0膣\0腟\0膓\0膩\0膰\0膵\0膾\0膸\0膽\0臀\0臂\0膺\0臉\0臍\0臑\0臙\0臘\0臈\0臚\0臟\0臠\0臧\0臺\0臻\0臾\0舁\0舂\0舅\0與\0舊\0舍\0舐\0舖\0舩\0舫\0舸\0舳\0艀\0艙\0艘\0艝\0艚\0艟\0艤\0艢\0艨\0艪\0艫\0舮\0艱\0艷\0艸\0艾\0芍\0芒\0芫\0芟\0芻\0芬\0苡\0苣\0苟\0苒\0苴\0苳\0苺\0莓\0范\0苻\0苹\0苞\0茆\0苜\0茉\0苙\0" + //71区
"茵\0茴\0茖\0茲\0茱\0荀\0茹\0荐\0荅\0茯\0茫\0茗\0茘\0莅\0莚\0莪\0莟\0莢\0莖\0茣\0莎\0莇\0莊\0荼\0莵\0荳\0荵\0莠\0莉\0莨\0菴\0萓\0菫\0菎\0菽\0萃\0菘\0萋\0菁\0菷\0萇\0菠\0菲\0萍\0萢\0萠\0莽\0萸\0蔆\0菻\0葭\0萪\0萼\0蕚\0蒄\0葷\0葫\0蒭\0葮\0蒂\0葩\0葆\0萬\0葯\0葹\0萵\0蓊\0葢\0蒹\0蒿\0蒟\0蓙\0蓍\0蒻\0蓚\0蓐\0蓁\0蓆\0蓖\0蒡\0蔡\0蓿\0蓴\0蔗\0蔘\0蔬\0蔟\0蔕\0蔔\0蓼\0蕀\0蕣\0蕘\0蕈\0" + //72区
"蕁\0蘂\0蕋\0蕕\0薀\0薤\0薈\0薑\0薊\0薨\0蕭\0薔\0薛\0藪\0薇\0薜\0蕷\0蕾\0薐\0藉\0薺\0藏\0薹\0藐\0藕\0藝\0藥\0藜\0藹\0蘊\0蘓\0蘋\0藾\0藺\0蘆\0蘢\0蘚\0蘰\0蘿\0虍\0乕\0虔\0號\0虧\0虱\0蚓\0蚣\0蚩\0蚪\0蚋\0蚌\0蚶\0蚯\0蛄\0蛆\0蚰\0蛉\0蠣\0蚫\0蛔\0蛞\0蛩\0蛬\0蛟\0蛛\0蛯\0蜒\0蜆\0蜈\0蜀\0蜃\0蛻\0蜑\0蜉\0蜍\0蛹\0蜊\0蜴\0蜿\0蜷\0蜻\0蜥\0蜩\0蜚\0蝠\0蝟\0蝸\0蝌\0蝎\0蝴\0蝗\0蝨\0蝮\0蝙\0" + //73区
"蝓\0蝣\0蝪\0蠅\0螢\0螟\0螂\0螯\0蟋\0螽\0蟀\0蟐\0雖\0螫\0蟄\0螳\0蟇\0蟆\0螻\0蟯\0蟲\0蟠\0蠏\0蠍\0蟾\0蟶\0蟷\0蠎\0蟒\0蠑\0蠖\0蠕\0蠢\0蠡\0蠱\0蠶\0蠹\0蠧\0蠻\0衄\0衂\0衒\0衙\0衞\0衢\0衫\0袁\0衾\0袞\0衵\0衽\0袵\0衲\0袂\0袗\0袒\0袮\0袙\0袢\0袍\0袤\0袰\0袿\0袱\0裃\0裄\0裔\0裘\0裙\0裝\0裹\0褂\0裼\0裴\0裨\0裲\0褄\0褌\0褊\0褓\0襃\0褞\0褥\0褪\0褫\0襁\0襄\0褻\0褶\0褸\0襌\0褝\0襠\0襞\0" + //74区
"襦\0襤\0襭\0襪\0襯\0襴\0襷\0襾\0覃\0覈\0覊\0覓\0覘\0覡\0覩\0覦\0覬\0覯\0覲\0覺\0覽\0覿\0觀\0觚\0觜\0觝\0觧\0觴\0觸\0訃\0訖\0訐\0訌\0訛\0訝\0訥\0訶\0詁\0詛\0詒\0詆\0詈\0詼\0詭\0詬\0詢\0誅\0誂\0誄\0誨\0誡\0誑\0誥\0誦\0誚\0誣\0諄\0諍\0諂\0諚\0諫\0諳\0諧\0諤\0諱\0謔\0諠\0諢\0諷\0諞\0諛\0謌\0謇\0謚\0諡\0謖\0謐\0謗\0謠\0謳\0鞫\0謦\0謫\0謾\0謨\0譁\0譌\0譏\0譎\0證\0譖\0譛\0譚\0譫\0" + //75区
"譟\0譬\0譯\0譴\0譽\0讀\0讌\0讎\0讒\0讓\0讖\0讙\0讚\0谺\0豁\0谿\0豈\0豌\0豎\0豐\0豕\0豢\0豬\0豸\0豺\0貂\0貉\0貅\0貊\0貍\0貎\0貔\0豼\0貘\0戝\0貭\0貪\0貽\0貲\0貳\0貮\0貶\0賈\0賁\0賤\0賣\0賚\0賽\0賺\0賻\0贄\0贅\0贊\0贇\0贏\0贍\0贐\0齎\0贓\0賍\0贔\0贖\0赧\0赭\0赱\0赳\0趁\0趙\0跂\0趾\0趺\0跏\0跚\0跖\0跌\0跛\0跋\0跪\0跫\0跟\0跣\0跼\0踈\0踉\0跿\0踝\0踞\0踐\0踟\0蹂\0踵\0踰\0踴\0蹊\0" + //76区
"蹇\0蹉\0蹌\0蹐\0蹈\0蹙\0蹤\0蹠\0踪\0蹣\0蹕\0蹶\0蹲\0蹼\0躁\0躇\0躅\0躄\0躋\0躊\0躓\0躑\0躔\0躙\0躪\0躡\0躬\0躰\0軆\0躱\0躾\0軅\0軈\0軋\0軛\0軣\0軼\0軻\0軫\0軾\0輊\0輅\0輕\0輒\0輙\0輓\0輜\0輟\0輛\0輌\0輦\0輳\0輻\0輹\0轅\0轂\0輾\0轌\0轉\0轆\0轎\0轗\0轜\0轢\0轣\0轤\0辜\0辟\0辣\0辭\0辯\0辷\0迚\0迥\0迢\0迪\0迯\0邇\0迴\0逅\0迹\0迺\0逑\0逕\0逡\0逍\0逞\0逖\0逋\0逧\0逶\0逵\0逹\0迸\0" + //77区
"遏\0遐\0遑\0遒\0逎\0遉\0逾\0遖\0遘\0遞\0遨\0遯\0遶\0隨\0遲\0邂\0遽\0邁\0邀\0邊\0邉\0邏\0邨\0邯\0邱\0邵\0郢\0郤\0扈\0郛\0鄂\0鄒\0鄙\0鄲\0鄰\0酊\0酖\0酘\0酣\0酥\0酩\0酳\0酲\0醋\0醉\0醂\0醢\0醫\0醯\0醪\0醵\0醴\0醺\0釀\0釁\0釉\0釋\0釐\0釖\0釟\0釡\0釛\0釼\0釵\0釶\0鈞\0釿\0鈔\0鈬\0鈕\0鈑\0鉞\0鉗\0鉅\0鉉\0鉤\0鉈\0銕\0鈿\0鉋\0鉐\0銜\0銖\0銓\0銛\0鉚\0鋏\0銹\0銷\0鋩\0錏\0鋺\0鍄\0錮\0" + //78区
"錙\0錢\0錚\0錣\0錺\0錵\0錻\0鍜\0鍠\0鍼\0鍮\0鍖\0鎰\0鎬\0鎭\0鎔\0鎹\0鏖\0鏗\0鏨\0鏥\0鏘\0鏃\0鏝\0鏐\0鏈\0鏤\0鐚\0鐔\0鐓\0鐃\0鐇\0鐐\0鐶\0鐫\0鐵\0鐡\0鐺\0鑁\0鑒\0鑄\0鑛\0鑠\0鑢\0鑞\0鑪\0鈩\0鑰\0鑵\0鑷\0鑽\0鑚\0鑼\0鑾\0钁\0鑿\0閂\0閇\0閊\0閔\0閖\0閘\0閙\0閠\0閨\0閧\0閭\0閼\0閻\0閹\0閾\0闊\0濶\0闃\0闍\0闌\0闕\0闔\0闖\0關\0闡\0闥\0闢\0阡\0阨\0阮\0阯\0陂\0陌\0陏\0陋\0陷\0陜\0陞\0" + //79区
"陝\0陟\0陦\0陲\0陬\0隍\0隘\0隕\0隗\0險\0隧\0隱\0隲\0隰\0隴\0隶\0隸\0隹\0雎\0雋\0雉\0雍\0襍\0雜\0霍\0雕\0雹\0霄\0霆\0霈\0霓\0霎\0霑\0霏\0霖\0霙\0霤\0霪\0霰\0霹\0霽\0霾\0靄\0靆\0靈\0靂\0靉\0靜\0靠\0靤\0靦\0靨\0勒\0靫\0靱\0靹\0鞅\0靼\0鞁\0靺\0鞆\0鞋\0鞏\0鞐\0鞜\0鞨\0鞦\0鞣\0鞳\0鞴\0韃\0韆\0韈\0韋\0韜\0韭\0齏\0韲\0竟\0韶\0韵\0頏\0頌\0頸\0頤\0頡\0頷\0頽\0顆\0顏\0顋\0顫\0顯\0顰\0" + //80区
"顱\0顴\0顳\0颪\0颯\0颱\0颶\0飄\0飃\0飆\0飩\0飫\0餃\0餉\0餒\0餔\0餘\0餡\0餝\0餞\0餤\0餠\0餬\0餮\0餽\0餾\0饂\0饉\0饅\0饐\0饋\0饑\0饒\0饌\0饕\0馗\0馘\0馥\0馭\0馮\0馼\0駟\0駛\0駝\0駘\0駑\0駭\0駮\0駱\0駲\0駻\0駸\0騁\0騏\0騅\0駢\0騙\0騫\0騷\0驅\0驂\0驀\0驃\0騾\0驕\0驍\0驛\0驗\0驟\0驢\0驥\0驤\0驩\0驫\0驪\0骭\0骰\0骼\0髀\0髏\0髑\0髓\0體\0髞\0髟\0髢\0髣\0髦\0髯\0髫\0髮\0髴\0髱\0髷\0" + //81区
"髻\0鬆\0鬘\0鬚\0鬟\0鬢\0鬣\0鬥\0鬧\0鬨\0鬩\0鬪\0鬮\0鬯\0鬲\0魄\0魃\0魏\0魍\0魎\0魑\0魘\0魴\0鮓\0鮃\0鮑\0鮖\0鮗\0鮟\0鮠\0鮨\0鮴\0鯀\0鯊\0鮹\0鯆\0鯏\0鯑\0鯒\0鯣\0鯢\0鯤\0鯔\0鯡\0鰺\0鯲\0鯱\0鯰\0鰕\0鰔\0鰉\0鰓\0鰌\0鰆\0鰈\0鰒\0鰊\0鰄\0鰮\0鰛\0鰥\0鰤\0鰡\0鰰\0鱇\0鰲\0鱆\0鰾\0鱚\0鱠\0鱧\0鱶\0鱸\0鳧\0鳬\0鳰\0鴉\0鴈\0鳫\0鴃\0鴆\0鴪\0鴦\0鶯\0鴣\0鴟\0鵄\0鴕\0鴒\0鵁\0鴿\0鴾\0鵆\0鵈\0" + //82区
"鵝\0鵞\0鵤\0鵑\0鵐\0鵙\0鵲\0鶉\0鶇\0鶫\0鵯\0鵺\0鶚\0鶤\0鶩\0鶲\0鷄\0鷁\0鶻\0鶸\0鶺\0鷆\0鷏\0鷂\0鷙\0鷓\0鷸\0鷦\0鷭\0鷯\0鷽\0鸚\0鸛\0鸞\0鹵\0鹹\0鹽\0麁\0麈\0麋\0麌\0麒\0麕\0麑\0麝\0麥\0麩\0麸\0麪\0麭\0靡\0黌\0黎\0黏\0黐\0黔\0黜\0點\0黝\0黠\0黥\0黨\0黯\0黴\0黶\0黷\0黹\0黻\0黼\0黽\0鼇\0鼈\0皷\0鼕\0鼡\0鼬\0鼾\0齊\0齒\0齔\0齣\0齟\0齠\0齡\0齦\0齧\0齬\0齪\0齷\0齲\0齶\0龕\0龜\0龠\0" + //83区
"堯\0槇\0遙\0瑤\0\u51dc\0\u7199\0\u5653\0\u5de2\0\u5e14\0\u5e18\0\u5e58\0\u5e5e\0\u5ebe\0\uf928\0\u5ecb\0\u5ef9\0\u5f00\0\u5f02\0\u5f07\0\u5f1d\0\u5f23\0\u5f34\0\u5f36\0\u5f3d\0\u5f40\0\u5f45\0\u5f54\0\u5f58\0\u5f64\0\u5f67\0\u5f7d\0\u5f89\0\u5f9c\0\u5fa7\0\u5faf\0\u5fb5\0\u5fb7\0\u5fc9\0\u5fde\0\u5fe1\0\u5fe9\0\u600d\0\u6014\0\u6018\0\u6033\0\u6035\0\u6047\0\ufa3d\0\u609d\0\u609e\0\u60cb\0\u60d4\0\u60d5\0\u60dd\0\u60f8\0\u611c\0\u612b\0\u6130\0\u6137\0\ufa3e\0\u618d\0\ufa3f\0\u61bc\0\u61b9\0\ufa40\0\u6222\0\u623e\0\u6243\0\u6256\0\u625a\0\u626f\0\u6285\0\u62c4\0\u62d6\0\u62fc\0\u630a\0\u6318\0\u6339\0\u6343\0\u6365\0\u637c\0\u63e5\0\u63ed\0\u63f5\0\u6410\0\u6414\0\u6422\0\u6479\0\u6451\0\u6460\0\u646d\0\u64ce\0\u64be\0\u64bf\0" + //84区
"\u64c4\0\u64ca\0\u64d0\0\u64f7\0\u64fb\0\u6522\0\u6529\0\ufa41\0\u6567\0\u659d\0\ufa42\0\u6600\0\u6609\0\u6615\0\u661e\0\u663a\0\u6622\0\u6624\0\u662b\0\u6630\0\u6631\0\u6633\0\u66fb\0\u6648\0\u664c\0\u0082\u01c4\u6659\0\u665a\0\u6661\0\u6665\0\u6673\0\u6677\0\u6678\0\u668d\0\ufa43\0\u66a0\0\u66b2\0\u66bb\0\u66c6\0\u66c8\0\u3b22\0\u66db\0\u66e8\0\u66fa\0\u6713\0\uf929\0\u6733\0\u6766\0\u6747\0\u6748\0\u677b\0\u6781\0\u6793\0\u6798\0\u679b\0\u67bb\0\u67f9\0\u67c0\0\u67d7\0\u67fc\0\u6801\0\u6852\0\u681d\0\u682c\0\u6831\0\u685b\0\u6872\0\u6875\0\ufa44\0\u68a3\0\u68a5\0\u68b2\0\u68c8\0\u68d0\0\u68e8\0\u68ed\0\u68f0\0\u68f1\0\u68fc\0\u690a\0\u6949\0\u0083\u01c4\u6935\0\u6942\0\u6957\0\u6963\0\u6964\0\u6968\0\u6980\0\ufa14\0\u69a5\0\u69ad\0\u69cf\0\u3bb6\0" + //85区
"\u3bc3\0\u69e2\0\u69e9\0\u69ea\0\u69f5\0\u69f6\0\u6a0f\0\u6a15\0\u0083\u033f\u6a3b\0\u6a3e\0\u6a45\0\u6a50\0\u6a56\0\u6a5b\0\u6a6b\0\u6a73\0\u0083\u0363\u6a89\0\u6a94\0\u6a9d\0\u6a9e\0\u6aa5\0\u6ae4\0\u6ae7\0\u3c0f\0\uf91d\0\u6b1b\0\u6b1e\0\u6b2c\0\u6b35\0\u6b46\0\u6b56\0\u6b60\0\u6b65\0\u6b67\0\u6b77\0\u6b82\0\u6ba9\0\u6bad\0\uf970\0\u6bcf\0\u6bd6\0\u6bd7\0\u6bff\0\u6c05\0\u6c10\0\u6c33\0\u6c59\0\u6c5c\0\u6caa\0\u6c74\0\u6c76\0\u6c85\0\u6c86\0\u6c98\0\u6c9c\0\u6cfb\0\u6cc6\0\u6cd4\0\u6ce0\0\u6ceb\0\u6cee\0\u0085\u00fe\u6d04\0\u6d0e\0\u6d2e\0\u6d31\0\u6d39\0\u6d3f\0\u6d58\0\u6d65\0\ufa45\0\u6d82\0\u6d87\0\u6d89\0\u6d94\0\u6daa\0\u6dac\0\u6dbf\0\u6dc4\0\u6dd6\0\u6dda\0\u6ddb\0\u6ddd\0\u6dfc\0\ufa46\0\u6e34\0\u6e44\0\u6e5c\0\u6e5e\0\u6eab\0\u6eb1\0\u6ec1\0" + //86区
"\u6ec7\0\u6ece\0\u6f10\0\u6f1a\0\ufa47\0\u6f2a\0\u6f2f\0\u6f33\0\u6f51\0\u6f59\0\u6f5e\0\u6f61\0\u6f62\0\u6f7e\0\u6f88\0\u6f8c\0\u6f8d\0\u6f94\0\u6fa0\0\u6fa7\0\u6fb6\0\u6fbc\0\u6fc7\0\u6fca\0\u6ff9\0\u6ff0\0\u6ff5\0\u7005\0\u7006\0\u7028\0\u704a\0\u705d\0\u705e\0\u704e\0\u7064\0\u7075\0\u7085\0\u70a4\0\u70ab\0\u70b7\0\u70d4\0\u70d8\0\u70e4\0\u710f\0\u712b\0\u711e\0\u7120\0\u712e\0\u7130\0\u7146\0\u7147\0\u7151\0\ufa48\0\u7152\0\u715c\0\u7160\0\u7168\0\ufa15\0\u7185\0\u7187\0\u7192\0\u71c1\0\u71ba\0\u71c4\0\u71fe\0\u7200\0\u7215\0\u7255\0\u7256\0\u3e3f\0\u728d\0\u729b\0\u72be\0\u72c0\0\u72fb\0\u0087\u03f1\u7327\0\u7328\0\ufa16\0\u7350\0\u7366\0\u737c\0\u7395\0\u739f\0\u73a0\0\u73a2\0\u73a6\0\u73ab\0\u73c9\0\u73cf\0\u73d6\0\u73d9\0\u73e3\0\u73e9\0" + //87区
"\u7407\0\u740a\0\u741a\0\u741b\0\ufa4a\0\u7426\0\u7428\0\u742a\0\u742b\0\u742c\0\u742e\0\u742f\0\u7430\0\u7444\0\u7446\0\u7447\0\u744b\0\u7457\0\u7462\0\u746b\0\u746d\0\u7486\0\u7487\0\u7489\0\u7498\0\u749c\0\u749f\0\u74a3\0\u7490\0\u74a6\0\u74a8\0\u74a9\0\u74b5\0\u74bf\0\u74c8\0\u74c9\0\u74da\0\u74ff\0\u7501\0\u7517\0\u752f\0\u756f\0\u7579\0\u7592\0\u3f72\0\u75ce\0\u75e4\0\u7600\0\u7602\0\u7608\0\u7615\0\u7616\0\u7619\0\u761e\0\u762d\0\u7635\0\u7643\0\u764b\0\u7664\0\u7665\0\u766d\0\u766f\0\u7671\0\u7681\0\u769b\0\u769d\0\u769e\0\u76a6\0\u76aa\0\u76b6\0\u76c5\0\u76cc\0\u76ce\0\u76d4\0\u76e6\0\u76f1\0\u76fc\0\u770a\0\u7719\0\u7734\0\u7736\0\u7746\0\u774d\0\u774e\0\u775c\0\u775f\0\u7762\0\u777a\0\u7780\0\u7794\0\u77aa\0\u77e0\0\u782d\0\u008b\u008e" + //88区
"\u7843\0\u784e\0\u784f\0\u7851\0\u7868\0\u786e\0\ufa4b\0\u78b0\0\u008b\u010e\u78ad\0\u78e4\0\u78f2\0\u7900\0\u78f7\0\u791c\0\u792e\0\u7931\0\u7934\0\ufa4c\0\ufa4d\0\u7945\0\u7946\0\ufa4e\0\ufa4f\0\ufa50\0\u795c\0\ufa51\0\ufa19\0\ufa1a\0\u7979\0\ufa52\0\ufa53\0\ufa1b\0\u7998\0\u79b1\0\u79b8\0\u79c8\0\u79ca\0\u008b\u0371\u79d4\0\u79de\0\u79eb\0\u79ed\0\u7a03\0\ufa54\0\u7a39\0\u7a5d\0\u7a6d\0\ufa55\0\u7a85\0\u7aa0\0\u008c\u01c4\u7ab3\0\u7abb\0\u7ace\0\u7aeb\0\u7afd\0\u7b12\0\u7b2d\0\u7b3b\0\u7b47\0\u7b4e\0\u7b60\0\u7b6d\0\u7b6f\0\u7b72\0\u7b9e\0\ufa56\0\u7bd7\0\u7bd9\0\u7c01\0\u7c31\0\u7c1e\0\u7c20\0\u7c33\0\u7c36\0\u4264\0\u008d\u01a1\u7c59\0\u7c6d\0\u7c79\0\u7c8f\0\u7c94\0\u7ca0\0\u7cbc\0\u7cd5\0\u7cd9\0\u7cdd\0\u7d07\0\u7d08\0\u7d13\0\u7d1d\0\u7d23\0\u7d31\0" + //89区
"\u7d41\0\u7d48\0\u7d53\0\u7d5c\0\u7d7a\0\u7d83\0\u7d8b\0\u7da0\0\u7da6\0\u7dc2\0\u7dcc\0\u7dd6\0\u7de3\0\ufa57\0\u7e28\0\u7e08\0\u7e11\0\u7e15\0\ufa59\0\u7e47\0\u7e52\0\u7e61\0\u7e8a\0\u7e8d\0\u7f47\0\ufa5a\0\u7f91\0\u7f97\0\u7fbf\0\u7fce\0\u7fdb\0\u7fdf\0\u7fec\0\u7fee\0\u7ffa\0\ufa5b\0\u8014\0\u8026\0\u8035\0\u8037\0\u803c\0\u80ca\0\u80d7\0\u80e0\0\u80f3\0\u8118\0\u814a\0\u8160\0\u8167\0\u8168\0\u816d\0\u81bb\0\u81ca\0\u81cf\0\u81d7\0\ufa5c\0\u4453\0\u445b\0\u8260\0\u8274\0\u0090\u02ff\u828e\0\u82a1\0\u82a3\0\u82a4\0\u82a9\0\u82ae\0\u82b7\0\u82be\0\u82bf\0\u82c6\0\u82d5\0\u82fd\0\u82fe\0\u8300\0\u8301\0\u8362\0\u8322\0\u832d\0\u833a\0\u8343\0\u8347\0\u8351\0\u8355\0\u837d\0\u8386\0\u8392\0\u8398\0\u83a7\0\u83a9\0\u83bf\0\u83c0\0\u83c7\0\u83cf\0" + //90区
"\u83d1\0\u83e1\0\u83ea\0\u8401\0\u8406\0\u840a\0\ufa5f\0\u8448\0\u845f\0\u8470\0\u8473\0\u8485\0\u849e\0\u84af\0\u84b4\0\u84ba\0\u84c0\0\u84c2\0\u0091\u0240\u8532\0\u851e\0\u8523\0\u852f\0\u8559\0\u8564\0\ufa1f\0\u85ad\0\u857a\0\u858c\0\u858f\0\u85a2\0\u85b0\0\u85cb\0\u85ce\0\u85ed\0\u8612\0\u85ff\0\u8604\0\u8605\0\u8610\0\u0092\u00f4\u8618\0\u8629\0\u8638\0\u8657\0\u865b\0\uf936\0\u8662\0\u459d\0\u866c\0\u8675\0\u8698\0\u86b8\0\u86fa\0\u86fc\0\u86fd\0\u870b\0\u8771\0\u8787\0\u8788\0\u87ac\0\u87ad\0\u87b5\0\u45ea\0\u87d6\0\u87ec\0\u8806\0\u880a\0\u8810\0\u8814\0\u881f\0\u8898\0\u88aa\0\u88ca\0\u88ce\0\u0093\u0284\u88f5\0\u891c\0\ufa60\0\u8918\0\u8919\0\u891a\0\u8927\0\u8930\0\u8932\0\u8939\0\u8940\0\u8994\0\ufa61\0\u89d4\0\u89e5\0\u89f6\0\u8a12\0\u8a15\0" + //91区
"\u8a22\0\u8a37\0\u8a47\0\u8a4e\0\u8a5d\0\u8a61\0\u8a75\0\u8a79\0\u8aa7\0\u8ad0\0\u8adf\0\u8af4\0\u8af6\0\ufa22\0\ufa62\0\ufa63\0\u8b46\0\u8b54\0\u8b59\0\u8b69\0\u8b9d\0\u8c49\0\u8c68\0\ufa64\0\u8ce1\0\u8cf4\0\u8cf8\0\u8cfe\0\ufa65\0\u8d12\0\u8d1b\0\u8daf\0\u8dce\0\u8dd1\0\u8dd7\0\u8e20\0\u8e23\0\u8e3d\0\u8e70\0\u8e7b\0\u0096\u0277\u8ec0\0\u4844\0\u8efa\0\u8f1e\0\u8f2d\0\u8f36\0\u8f54\0\u0096\u03cd\u8fa6\0\u8fb5\0\u8fe4\0\u8fe8\0\u8fee\0\u9008\0\u902d\0\ufa67\0\u9088\0\u9095\0\u9097\0\u9099\0\u909b\0\u90a2\0\u90b3\0\u90be\0\u90c4\0\u90c5\0\u90c7\0\u90d7\0\u90dd\0\u90de\0\u90ef\0\u90f4\0\ufa26\0\u9114\0\u9115\0\u9116\0\u9122\0\u9123\0\u9127\0\u912f\0\u9131\0\u9134\0\u913d\0\u9148\0\u915b\0\u9183\0\u919e\0\u91ac\0\u91b1\0\u91bc\0\u91d7\0\u91fb\0\u91e4\0" + //92区
"\u91e5\0\u91ed\0\u91f1\0\u9207\0\u9210\0\u9238\0\u9239\0\u923a\0\u923c\0\u9240\0\u9243\0\u924f\0\u9278\0\u9288\0\u92c2\0\u92cb\0\u92cc\0\u92d3\0\u92e0\0\u92ff\0\u9304\0\u931f\0\u9321\0\u9325\0\u9348\0\u9349\0\u934a\0\u9364\0\u9365\0\u936a\0\u9370\0\u939b\0\u93a3\0\u93ba\0\u93c6\0\u93de\0\u93df\0\u9404\0\u93fd\0\u9433\0\u944a\0\u9463\0\u946b\0\u9471\0\u9472\0\u958e\0\u959f\0\u95a6\0\u95a9\0\u95ac\0\u95b6\0\u95bd\0\u95cb\0\u95d0\0\u95d3\0\u49b0\0\u95da\0\u95de\0\u9658\0\u9684\0\uf9dc\0\u969d\0\u96a4\0\u96a5\0\u96d2\0\u96de\0\ufa68\0\u96e9\0\u96ef\0\u9733\0\u973b\0\u974d\0\u974e\0\u974f\0\u975a\0\u976e\0\u9773\0\u9795\0\u97ae\0\u97ba\0\u97c1\0\u97c9\0\u97de\0\u97db\0\u97f4\0\ufa69\0\u980a\0\u981e\0\u982b\0\u9830\0\ufa6a\0\u9852\0\u9853\0\u9856\0" + //93区
"\u9857\0\u9859\0\u985a\0\uf9d0\0\u9865\0\u986c\0\u98ba\0\u98c8\0\u98e7\0\u9958\0\u999e\0\u9a02\0\u9a03\0\u9a24\0\u9a2d\0\u9a2e\0\u9a38\0\u9a4a\0\u9a4e\0\u9a52\0\u9ab6\0\u9ac1\0\u9ac3\0\u9ace\0\u9ad6\0\u9af9\0\u9b02\0\u9b08\0\u9b20\0\u4c17\0\u9b2d\0\u9b5e\0\u9b79\0\u9b66\0\u9b72\0\u9b75\0\u9b84\0\u9b8a\0\u9b8f\0\u9b9e\0\u9ba7\0\u9bc1\0\u9bce\0\u9be5\0\u9bf8\0\u9bfd\0\u9c00\0\u9c23\0\u9c41\0\u9c4f\0\u9c50\0\u9c53\0\u9c63\0\u9c65\0\u9c77\0\u9d1d\0\u9d1e\0\u9d43\0\u9d47\0\u9d52\0\u9d63\0\u9d70\0\u9d7c\0\u9d8a\0\u9d96\0\u9dc0\0\u9dac\0\u9dbc\0\u9dd7\0\u009e\u0190\u9de7\0\u9e07\0\u9e15\0\u9e7c\0\u9e9e\0\u9ea4\0\u9eac\0\u9eaf\0\u9eb4\0\u9eb5\0\u9ec3\0\u9ed1\0\u9f10\0\u9f39\0\u9f57\0\u9f90\0\u9f94\0\u9f97\0\u9fa2\0\u59f8\0\u5c5b\0\u5e77\0\u7626\0\u7e6b\0" //94区
).toCharArray ();
public FontPage.Han fnpHanPage; //対応する半角フォントのページ
public Zen (int characterWidth, int characterHeight, String nameEn, String nameJa, String dataName, String imageName) {
this (characterWidth, characterHeight, nameEn, nameJa, dataName, imageName, null, 0);
}
public Zen (int characterWidth, int characterHeight, String nameEn, String nameJa, String dataName, String imageName,
byte[] memoryArray, int memoryAddress) {
super (characterWidth, characterHeight, nameEn, nameJa, dataName, imageName,
94, 94, 77,
memoryArray, memoryAddress,
new char[][] { FULL_BASE });
}
//setHanPage (HanPage)
// 対応する半角フォントのページを設定する
public void setHanPage (FontPage.Han hanPage) {
fnpHanPage = hanPage;
fnpMaximumFontDataFileLength = hanPage.fnpBinaryBytes + fnpBinaryBytes; //半角+全角
}
//yes = fnpIsFontDataFileLength (longLength)
// フォントデータファイルの長さか
// 半角と全角は半角+全角を受け付ける
@Override public boolean fnpIsFontDataFileLength (long longLength) {
return (longLength == (long) fnpBinaryBytes || //全角のみ
longLength == (long) (fnpHanPage.fnpBinaryBytes + fnpBinaryBytes)); //半角+全角
}
//success = fnpLoadFontDataArray (array, start, length)
// フォントデータファイルを配列から読み込む
// 半角と全角は半角+全角を受け付ける
@Override public boolean fnpLoadFontDataArray (byte[] array, int start, int length) {
if (length == fnpCharacterBytes * 94 * 77) { //94点×77区
System.arraycopy (array, start, fnpBinaryArray, 0, fnpCharacterBytes * 94 * 8); //1区~8区
Arrays.fill (fnpBinaryArray, fnpCharacterBytes * 94 * 8, fnpCharacterBytes * 94 * 15, (byte) 0); //9区~15区
System.arraycopy (array, start + fnpCharacterBytes * 94 * 8, fnpBinaryArray, fnpCharacterBytes * 94 * 15, fnpCharacterBytes * 94 * 69); //16区~84区
Arrays.fill (fnpBinaryArray, fnpCharacterBytes * 94 * 84, fnpCharacterBytes * 94 * 94, (byte) 0); //85区~94区
} else if (length == fnpBinaryBytes) { //全角のみ
System.arraycopy (array, start, fnpBinaryArray, 0, fnpBinaryBytes); //全角をコピーする
} else if (length == fnpHanPage.fnpBinaryBytes + fnpBinaryBytes) { //半角+全角
System.arraycopy (array, start + fnpHanPage.fnpBinaryBytes, fnpBinaryArray, 0, fnpBinaryBytes); //全角をコピーする
} else {
return false;
}
fnpBinaryToMemory ();
fnpBinaryToImage ();
if (!fnpReady) {
System.out.println (Multilingual.mlnJapanese ? fnpNameJa + " フォントの準備ができました" :
fnpNameEn + " font is ready");
fnpReady = true; //フォントデータが有効
}
return true;
}
//array = fnpSaveFontDataArray ()
// フォントデータファイルを配列に書き出す
// 全角は半角+全角を出力する
@Override public byte[] fnpSaveFontDataArray () {
byte[] array = new byte[fnpHanPage.fnpBinaryBytes + fnpBinaryBytes]; //半角+全角
System.arraycopy (fnpHanPage.fnpBinaryArray, 0, array, 0, fnpHanPage.fnpBinaryBytes); //半角をコピーする
System.arraycopy (fnpBinaryArray, 0, array, fnpHanPage.fnpBinaryBytes, fnpBinaryBytes); //全角をコピーする
return array;
}
//fnpGetExtension ()
// フォントデータファイルの拡張子を返す
// 全角と半角は.fonまたは.f<1文字の高さ>、それ以外は.dat
@Override public String fnpGetExtension () {
if (fnpExtension == null) {
fnpExtension = fnpCharacterHeight == 16 ? ".fon" : ".f" + fnpCharacterHeight;
}
return fnpExtension;
}
//success = fnpInputImage (image)
// イメージを入力する
// イメージの幅と高さが合っていないとき失敗する
// 全角の高さは94区だが、77区のときも1区~8区,16区~84区として受け付ける
@Override public boolean fnpInputImage (BufferedImage image) {
if (image.getWidth () == fnpImageWidth &&
image.getHeight () == fnpCharacterHeight * 77) { //94点×77区のとき
Raster raster1to8 = image.getData (new Rectangle (0, 0, fnpImageWidth, fnpCharacterHeight * 8)); //1区~8区
Raster raster16to84 = image.getData (new Rectangle (0, fnpCharacterHeight * 8, fnpImageWidth, fnpCharacterHeight * 69)); //16区~84区
raster16to84 = raster16to84.createTranslatedChild (0, fnpCharacterHeight * 15);
BufferedImage newImage = new BufferedImage (fnpImageWidth, fnpImageHeight, BufferedImage.TYPE_INT_RGB); //不透明なので初期値は黒
newImage.setData (raster1to8); //1区~8区
newImage.setData (raster16to84); //16区~84区
image = newImage;
}
return super.fnpInputImage (image);
}
} //class FontPage.Zen
//class FontPage.Prn
// CZ-8PC4のANK。16桁×32行。前半256文字がカタカナ、後半256文字がひらがな
public static final class Prn extends FontPage {
//CZ-8PC4のANK文字テーブル
// 前半256文字がカタカナ、後半256文字がひらがなの512文字構成とする
//
// 特殊文字
// 7f π
// 80 ▁ U+2581 LOWER ONE EIGHTH BLOCK
// 81 ▂ U+2582 LOWER ONE QUARTER BLOCK
// 82 ▃ U+2583 LOWER THREE EIGHTHS BLOCK
// 83 ▄ U+2584 LOWER HALF BLOCK
// 84 ▅ U+2585 LOWER FIVE EIGHTHS BLOCK
// 85 ▆ U+2586 LOWER THREE QUARTERS BLOCK
// 86 ▇ U+2587 LOWER SEVEN EIGHTHS BLOCK
// 87 █ U+2588 FULL BLOCK
// 88 ▏ U+258F LEFT ONE EIGHTH BLOCK
// 89 ▎ U+258E LEFT ONE QUARTER BLOCK
// 8a ▍ U+258D LEFT THREE EIGHTHS BLOCK
// 8b ▌ U+258C LEFT HALF BLOCK
// 8c ▋ U+258B LEFT FIVE EIGHTHS BLOCK
// 8d ▊ U+258A LEFT THREE QUARTERS BLOCK
// 8e ▉ U+2589 LEFT SEVEN EIGHTHS BLOCK
// 8f ╱ U+2571 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
// 90 ─ U+2500 BOX DRAWINGS LIGHT HORIZONTAL
// 91 │ U+2502 BOX DRAWINGS LIGHT VERTICAL
// 92 ┴ U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL
// 93 ┬ U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
// 94 ┤ U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT
// 95 ├ U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT
// 96 ┼ U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
// 97 ┐ U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT
// 98 ┘ U+2518 BOX DRAWINGS LIGHT UP AND LEFT
// 99 └ U+2514 BOX DRAWINGS LIGHT UP AND RIGHT
// 9a ┌ U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT
// 9b ╮ U+256E BOX DRAWINGS LIGHT ARC DOWN AND LEFT
// 9c ╰ U+2570 BOX DRAWINGS LIGHT ARC UP AND RIGHT
// 9d ╯ U+256F BOX DRAWINGS LIGHT ARC UP AND LEFT
// 9e ╭ U+256D BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
// 9f ╲ U+2572 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
// e0 ● U+25CF BLACK CIRCLE
// e1 ○ U+25CB WHITE CIRCLE
// e2 ♠ U+2660 BLACK SPADE SUIT
// e3 ♥ U+2665 BLACK HEART SUIT
// e4 ♦ U+2666 BLACK DIAMOND SUIT
// e5 ♣ U+2663 BLACK CLUB SUIT
// e6 ◢ U+25E2 BLACK LOWER RIGHT TRIANGLE
// e7 ◣ U+25E3 BLACK LOWER LEFT TRIANGLE
// e8 ╳ U+2573 BOX DRAWINGS LIGHT DIAGONAL CROSS
// e9 \u2598 U+2598 QUADRANT UPPER LEFT
// ea \u2596 U+2596 QUADRANT LOWER LEFT
// eb \u259d U+259D QUADRANT UPPER RIGHT
// ec \u2597 U+2597 QUADRANT LOWER RIGHT
// ed \u259e U+259E QUADRANT UPPER RIGHT AND LOWER LEFT
// ee \u259a U+259A QUADRANT UPPER LEFT AND LOWER RIGHT
// ef □ U+25A1 WHITE SQUARE
// a0 ▓ U+2593 DARK SHADE
// a1 土
// a2 金
// a3 木
// a4 水
// a5 火
// a6 月
// a7 日
// a8 時
// a9 分
// aa 秒
// ab 年
// ac 円
// ad 人
// ae 生
// af 〒
//半角フォントから作る文字
public static final char[] HALF_BASE = (
//カタカナ
//123456789abcdef
" " + //00
" " + //01
" !\"#$%&'()*+,-./" + //02
"0123456789:;<=>?" + //03
"@ABCDEFGHIJKLMNO" + //04
"PQRSTUVWXYZ[\u00a5]^_" + //05
"`abcdefghijklmno" + //06
"pqrstuvwxyz{|}\u00af " + //07
"\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u258f\u258e\u258d\u258c\u258b\u258a\u2589\u2571" + //08
" \u256e\u2570\u256f\u256d\u2572" + //09
" 。「」、・ヲァィゥェォャュョッ" + //0a
"ーアイウエオカキクケコサシスセソ" + //0b
"タチツテトナニヌネノハヒフヘホマ" + //0c
"ミムメモヤユヨラリルレロワン゙゚" + //0d
" \u2660\u2665\u2666\u2663\u25e2\u25e3\u2573 " + //0e
"\u2593 " + //0f
//ひらがな
//123456789abcdef
" " + //10
" " + //11
" !\"#$%&'()*+,-./" + //12
"0123456789:;<=>?" + //13
"@ABCDEFGHIJKLMNO" + //14
"PQRSTUVWXYZ[\u00a5]^_" + //15
"`abcdefghijklmno" + //16
"pqrstuvwxyz{|}\u00af " + //17
"\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u258f\u258e\u258d\u258c\u258b\u258a\u2589\u2571" + //18
" \u256e\u2570\u256f\u256d\u2572" + //19
" " + //1a
" " + //1b
" " + //1c
" " + //1d
" \u2660\u2665\u2666\u2663\u25e2\u25e3\u2573 " + //1e
"\u2593 " //1f
).toCharArray ();
//全角フォントから作る文字
public static final char[] FULL_BASE = (
//カタカナ
//0 1 2 3 4 5 6 7 8 9 a b c d e f
" " + //00
" " + //01
" !”#$%&’()*+,-./" + //02
"0123456789:;<=>?" + //03
"@ABCDEFGHIJKLMNO" + //04
"PQRSTUVWXYZ[¥]^_" + //05
"`abcdefghijklmno" + //06
"pqrstuvwxyz{|} ̄π" + //07
" " + //08
"─│┴┬┤├┼┐┘└┌ " + //09
" " + //0a
" " + //0b
" " + //0c
" " + //0d
"●○ \u2598\u2596\u259d\u2597\u259e\u259a□" + //0e
" 土金木水火月日時分秒年円人生〒" + //0f
//ひらがな
//0 1 2 3 4 5 6 7 8 9 a b c d e f
" " + //10
" " + //11
" !”#$%&’()*+,-./" + //12
"0123456789:;<=>?" + //13
"@ABCDEFGHIJKLMNO" + //14
"PQRSTUVWXYZ[¥]^_" + //15
"`abcdefghijklmno" + //16
"pqrstuvwxyz{|} ̄π" + //17
" " + //18
"─│┴┬┤├┼┐┘└┌ " + //19
" 。「」、・をぁぃぅぇぉゃゅょっ" + //1a
"ーあいうえおかきくけこさしすせそ" + //1b
"たちつてとなにぬねのはひふへほま" + //1c
"みむめもやゆよらりるれろわん゛゜" + //1d
"●○ \u2598\u2596\u259d\u2597\u259e\u259a□" + //1e
" 土金木水火月日時分秒年円人生〒" //1f
).toCharArray ();
public Prn (int characterWidth, int characterHeight, String nameEn, String nameJa, String dataName, String imageName) {
super (characterWidth, characterHeight, nameEn, nameJa, dataName, imageName,
16, 32, 32,
null, 0,
new char[][] { FULL_BASE, HALF_BASE });
}
} //class FontPage.Prn
//class FontPage.Lcd
// LCDインジケータのANK。16桁×16行
public static final class Lcd extends FontPage {
public Lcd (int characterWidth, int characterHeight, String nameEn, String nameJa, String dataName, String imageName) {
super (characterWidth, characterHeight, nameEn, nameJa, dataName, imageName,
16, 16, 16,
null, 0,
new char[][] {});
if (characterHeight == 6) {
fnpLoadFontDataArray (LCD4X6_FONT, 0, LCD4X6_FONT.length);
} else if (characterHeight == 8) {
fnpLoadFontDataArray (LCD6X8_FONT, 0, LCD6X8_FONT.length);
}
}
/*
// Lcd4x6フォント
public static final byte[] LCD4X6_FONT = {
//0x00 NL
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x01 SH
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x02 SX
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x03 EX
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x04 ET
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x05 EQ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x06 AK
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x07 BL
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x08 BS
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x09 HT
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0a LF
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0b VT
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0c FF
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0d CR
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0e SO
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0f SI
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x10 DE
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x11 D1
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x12 D2
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x13 D3
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x14 D4
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x15 NK
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x16 SN
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x17 EB
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x18 CN
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x19 EM
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1a SB
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1b EC
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1c →
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1d ←
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1e ↑
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1f ↓
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x20
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x21 !
0b01000000,
0b01000000,
0b01000000,
0b00000000,
0b01000000,
0b00000000,
//0x22 ”
0b10100000,
0b10100000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x23 #
0b10100000,
0b11100000,
0b10100000,
0b11100000,
0b10100000,
0b00000000,
//0x24 $
0b01100000,
0b11000000,
0b01000000,
0b01100000,
0b11000000,
0b00000000,
//0x25 %
0b10100000,
0b11000000,
0b01000000,
0b01100000,
0b10100000,
0b00000000,
//0x26 &
0b11000000,
0b11000000,
0b01000000,
0b10100000,
0b11000000,
0b00000000,
//0x27 ’
0b01000000,
0b01000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x28 (
0b00100000,
0b01000000,
0b01000000,
0b01000000,
0b00100000,
0b00000000,
//0x29 )
0b10000000,
0b01000000,
0b01000000,
0b01000000,
0b10000000,
0b00000000,
//0x2a *
0b00000000,
0b10100000,
0b01000000,
0b10100000,
0b00000000,
0b00000000,
//0x2b +
0b00000000,
0b01000000,
0b11100000,
0b01000000,
0b00000000,
0b00000000,
//0x2c ,
0b00000000,
0b00000000,
0b00000000,
0b01000000,
0b01000000,
0b00000000,
//0x2d -
0b00000000,
0b00000000,
0b11100000,
0b00000000,
0b00000000,
0b00000000,
//0x2e .
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b01000000,
0b00000000,
//0x2f /
0b00000000,
0b00100000,
0b01000000,
0b10000000,
0b00000000,
0b00000000,
//0x30 0
0b11100000,
0b10100000,
0b10100000,
0b10100000,
0b11100000,
0b00000000,
//0x31 1
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b00000000,
//0x32 2
0b11100000,
0b00100000,
0b11100000,
0b10000000,
0b11100000,
0b00000000,
//0x33 3
0b11100000,
0b00100000,
0b11100000,
0b00100000,
0b11100000,
0b00000000,
//0x34 4
0b10100000,
0b10100000,
0b11100000,
0b00100000,
0b00100000,
0b00000000,
//0x35 5
0b11100000,
0b10000000,
0b11100000,
0b00100000,
0b11100000,
0b00000000,
//0x36 6
0b11100000,
0b10000000,
0b11100000,
0b10100000,
0b11100000,
0b00000000,
//0x37 7
0b11100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0x38 8
0b11100000,
0b10100000,
0b11100000,
0b10100000,
0b11100000,
0b00000000,
//0x39 9
0b11100000,
0b10100000,
0b11100000,
0b00100000,
0b11100000,
0b00000000,
//0x3a :
0b00000000,
0b01000000,
0b00000000,
0b01000000,
0b00000000,
0b00000000,
//0x3b ;
0b00000000,
0b01000000,
0b00000000,
0b01000000,
0b01000000,
0b00000000,
//0x3c <
0b00100000,
0b01000000,
0b10000000,
0b01000000,
0b00100000,
0b00000000,
//0x3d =
0b00000000,
0b11100000,
0b00000000,
0b11100000,
0b00000000,
0b00000000,
//0x3e >
0b10000000,
0b01000000,
0b00100000,
0b01000000,
0b10000000,
0b00000000,
//0x3f ?
0b11000000,
0b00100000,
0b01000000,
0b00000000,
0b01000000,
0b00000000,
//0x40 @
0b01000000,
0b10100000,
0b11100000,
0b10000000,
0b01100000,
0b00000000,
//0x41 A
0b01000000,
0b10100000,
0b11100000,
0b10100000,
0b10100000,
0b00000000,
//0x42 B
0b11000000,
0b10100000,
0b11000000,
0b10100000,
0b11000000,
0b00000000,
//0x43 C
0b01100000,
0b10000000,
0b10000000,
0b10000000,
0b01100000,
0b00000000,
//0x44 D
0b11000000,
0b10100000,
0b10100000,
0b10100000,
0b11000000,
0b00000000,
//0x45 E
0b11100000,
0b10000000,
0b11100000,
0b10000000,
0b11100000,
0b00000000,
//0x46 F
0b11100000,
0b10000000,
0b11100000,
0b10000000,
0b10000000,
0b00000000,
//0x47 G
0b01100000,
0b10000000,
0b10100000,
0b10100000,
0b01100000,
0b00000000,
//0x48 H
0b10100000,
0b10100000,
0b11100000,
0b10100000,
0b10100000,
0b00000000,
//0x49 I
0b11100000,
0b01000000,
0b01000000,
0b01000000,
0b11100000,
0b00000000,
//0x4a J
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b11000000,
0b00000000,
//0x4b K
0b10100000,
0b10100000,
0b11000000,
0b10100000,
0b10100000,
0b00000000,
//0x4c L
0b10000000,
0b10000000,
0b10000000,
0b10000000,
0b11100000,
0b00000000,
//0x4d M
0b10100000,
0b11100000,
0b11100000,
0b10100000,
0b10100000,
0b00000000,
//0x4e N
0b11000000,
0b10100000,
0b10100000,
0b10100000,
0b10100000,
0b00000000,
//0x4f O
0b01000000,
0b10100000,
0b10100000,
0b10100000,
0b01000000,
0b00000000,
//0x50 P
0b11000000,
0b10100000,
0b11000000,
0b10000000,
0b10000000,
0b00000000,
//0x51 Q
0b01000000,
0b10100000,
0b10100000,
0b11100000,
0b01100000,
0b00000000,
//0x52 R
0b11000000,
0b10100000,
0b11000000,
0b10100000,
0b10100000,
0b00000000,
//0x53 S
0b01100000,
0b10000000,
0b01000000,
0b00100000,
0b11000000,
0b00000000,
//0x54 T
0b11100000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b00000000,
//0x55 U
0b10100000,
0b10100000,
0b10100000,
0b10100000,
0b11100000,
0b00000000,
//0x56 V
0b10100000,
0b10100000,
0b10100000,
0b10100000,
0b01000000,
0b00000000,
//0x57 W
0b10100000,
0b10100000,
0b11100000,
0b11100000,
0b10100000,
0b00000000,
//0x58 X
0b10100000,
0b10100000,
0b01000000,
0b10100000,
0b10100000,
0b00000000,
//0x59 Y
0b10100000,
0b10100000,
0b01000000,
0b01000000,
0b01000000,
0b00000000,
//0x5a Z
0b11100000,
0b00100000,
0b01000000,
0b10000000,
0b11100000,
0b00000000,
//0x5b [
0b01100000,
0b01000000,
0b01000000,
0b01000000,
0b01100000,
0b00000000,
//0x5c ¥
0b00000000,
0b10000000,
0b01000000,
0b00100000,
0b00000000,
0b00000000,
//0x5d ]
0b11000000,
0b01000000,
0b01000000,
0b01000000,
0b11000000,
0b00000000,
//0x5e ^
0b01000000,
0b10100000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x5f _
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11100000,
0b00000000,
//0x60 `
0b01000000,
0b00100000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x61 a
0b00000000,
0b01100000,
0b10100000,
0b10100000,
0b01100000,
0b00000000,
//0x62 b
0b10000000,
0b11000000,
0b10100000,
0b10100000,
0b11000000,
0b00000000,
//0x63 c
0b00000000,
0b01100000,
0b10000000,
0b10000000,
0b01100000,
0b00000000,
//0x64 d
0b00100000,
0b01100000,
0b10100000,
0b10100000,
0b01100000,
0b00000000,
//0x65 e
0b00000000,
0b01100000,
0b10100000,
0b11000000,
0b01100000,
0b00000000,
//0x66 f
0b01100000,
0b11100000,
0b01000000,
0b01000000,
0b01000000,
0b00000000,
//0x67 g
0b01100000,
0b10100000,
0b11100000,
0b00100000,
0b11000000,
0b00000000,
//0x68 h
0b10000000,
0b11000000,
0b10100000,
0b10100000,
0b10100000,
0b00000000,
//0x69 i
0b01000000,
0b00000000,
0b01000000,
0b01000000,
0b01000000,
0b00000000,
//0x6a j
0b00100000,
0b00000000,
0b00100000,
0b00100000,
0b11000000,
0b00000000,
//0x6b k
0b10000000,
0b10100000,
0b11000000,
0b11000000,
0b10100000,
0b00000000,
//0x6c l
0b11000000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b00000000,
//0x6d m
0b00000000,
0b11000000,
0b11100000,
0b11100000,
0b10100000,
0b00000000,
//0x6e n
0b00000000,
0b11000000,
0b10100000,
0b10100000,
0b10100000,
0b00000000,
//0x6f o
0b00000000,
0b01000000,
0b10100000,
0b10100000,
0b01000000,
0b00000000,
//0x70 p
0b00000000,
0b11000000,
0b10100000,
0b11000000,
0b10000000,
0b00000000,
//0x71 q
0b00000000,
0b01100000,
0b10100000,
0b01100000,
0b00100000,
0b00000000,
//0x72 r
0b00000000,
0b01100000,
0b10000000,
0b10000000,
0b10000000,
0b00000000,
//0x73 s
0b00000000,
0b01100000,
0b01000000,
0b00100000,
0b11000000,
0b00000000,
//0x74 t
0b01000000,
0b11100000,
0b01000000,
0b01000000,
0b00100000,
0b00000000,
//0x75 u
0b00000000,
0b10100000,
0b10100000,
0b10100000,
0b01100000,
0b00000000,
//0x76 v
0b00000000,
0b10100000,
0b10100000,
0b10100000,
0b01000000,
0b00000000,
//0x77 w
0b00000000,
0b10100000,
0b11100000,
0b11100000,
0b01100000,
0b00000000,
//0x78 x
0b00000000,
0b10100000,
0b01000000,
0b01000000,
0b10100000,
0b00000000,
//0x79 y
0b00000000,
0b10100000,
0b10100000,
0b01000000,
0b10000000,
0b00000000,
//0x7a z
0b00000000,
0b11100000,
0b00100000,
0b01000000,
0b11100000,
0b00000000,
//0x7b {
0b00100000,
0b01000000,
0b11000000,
0b01000000,
0b00100000,
0b00000000,
//0x7c |
0b01000000,
0b01000000,
0b00000000,
0b01000000,
0b01000000,
0b00000000,
//0x7d }
0b10000000,
0b01000000,
0b01100000,
0b01000000,
0b10000000,
0b00000000,
//0x7e  ̄
0b11100000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x7f
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x80 \
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x81 ~
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x82 ¦
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x83
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x84
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x85
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x86 を
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x87 ぁ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x88 ぃ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x89 ぅ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8a ぇ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8b ぉ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8c ゃ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8d ゅ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8e ょ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8f っ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x90
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x91 あ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x92 い
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x93 う
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x94 え
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x95 お
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x96 か
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x97 き
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x98 く
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x99 け
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9a こ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9b さ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9c し
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9d す
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9e せ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9f そ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa0
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa1 。
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa2 「
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa3 」
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa4 、
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa5 ・
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa6 ヲ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa7 ァ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa8 ィ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa9 ゥ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xaa ェ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xab ォ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xac ャ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xad ュ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xae ョ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xaf ッ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb0 ー
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb1 ア
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb2 イ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb3 ウ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb4 エ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb5 オ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb6 カ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb7 キ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb8 ク
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb9 ケ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xba コ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xbb サ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xbc シ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xbd ス
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xbe セ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xbf ソ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xc0 タ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xc1 チ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xc2 ツ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xc3 テ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xc4 ト
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xc5 ナ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xc6 ニ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xc7 ヌ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xc8 ネ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xc9 ノ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xca ハ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xcb ヒ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xcc フ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xcd ヘ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xce ホ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xcf マ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xd0 ミ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xd1 ム
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xd2 メ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xd3 モ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xd4 ヤ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xd5 ユ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xd6 ヨ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xd7 ラ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xd8 リ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xd9 ル
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xda レ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xdb ロ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xdc ワ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xdd ン
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xde ゛
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xdf ゜
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe0 た
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe1 ち
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe2 つ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe3 て
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe4 と
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe5 な
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe6 に
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe7 ぬ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe8 ね
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe9 の
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xea は
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xeb ひ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xec ふ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xed へ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xee ほ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xef ま
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf0 み
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf1 む
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf2 め
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf3 も
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf4 や
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf5 ゆ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf6 よ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf7 ら
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf8 り
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf9 る
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xfa れ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xfb ろ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xfc わ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xfd ん
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xfe
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xff
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
} //LCD4X6_FONT
*/
// perl ../misc/itob.pl FontPage.java LCD4X6_FONT
public static final byte[] LCD4X6_FONT = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@@@\0@\0\240\240\0\0\0\0\240\340\240\340\240\0`\300@`\300\0\240\300@`\240\0\300\300@\240\300\0@@\0\0\0\0 @@@ \0\200@@@\200\0\0\240@\240\0\0\0@\340@\0\0\0\0\0@@\0\0\0\340\0\0\0\0\0\0\0@\0\0 @\200\0\0\340\240\240\240\340\0@@@@@\0\340 \340\200\340\0\340 \340 \340\0\240\240\340 \0\340\200\340 \340\0\340\200\340\240\340\0\340 \0\340\240\340\240\340\0\340\240\340 \340\0\0@\0@\0\0\0@\0@@\0 @\200@ \0\0\340\0\340\0\0\200@ @\200\0\300 @\0@\0@\240\340\200`\0@\240\340\240\240\0\300\240\300\240\300\0`\200\200\200`\0\300\240\240\240\300\0\340\200\340\200\340\0\340\200\340\200\200\0`\200\240\240`\0\240\240\340\240\240\0\340@@@\340\0 \300\0\240\240\300\240\240\0\200\200\200\200\340\0\240\340\340\240\240\0\300\240\240\240\240\0@\240\240\240@\0\300\240\300\200\200\0@\240\240\340`\0\300\240\300\240\240\0`\200@ \300\0\340@@@@\0\240\240\240\240\340\0\240\240\240\240@\0\240\240\340\340\240\0\240\240@\240\240\0\240\240@@@\0\340 @\200\340\0`@@@`\0\0\200@ \0\0\300@@@\300\0@\240\0\0\0\0\0\0\0\0\340\0@ \0\0\0\0\0`\240\240`\0\200\300\240\240\300\0\0`\200\200`\0 `\240\240`\0\0`\240\300`\0`\340@@@\0`\240\340 \300\0\200\300\240\240\240\0@\0@@@\0 \0 \300\0\200\240\300\300\240\0\300@@@@\0\0\300\340\340\240\0\0\300\240\240\240\0\0@\240\240@\0\0\300\240\300\200\0\0`\240` \0\0`\200\200\200\0\0`@ \300\0@\340@@ \0\0\240\240\240`\0\0\240\240\240@\0\0\240\340\340`\0\0\240@@\240\0\0\240\240@\200\0\0\340 @\340\0 @\300@ \0@@\0@@\0\200@`@\200\0\340\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0".getBytes (XEiJ.ISO_8859_1);
/*
// Lcd6x8フォント
public static final byte[] LCD6X8_FONT = {
//0x00 NL
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x01 SH
0b01100000,
0b10000000,
0b01101000,
0b00101000,
0b11111000,
0b00101000,
0b00101000,
0b00000000,
//0x02 SX
0b01100000,
0b10000000,
0b01101000,
0b00101000,
0b11010000,
0b00101000,
0b00101000,
0b00000000,
//0x03 EX
0b11100000,
0b10000000,
0b11100000,
0b10101000,
0b11110000,
0b00101000,
0b00101000,
0b00000000,
//0x04 ET
0b11100000,
0b10000000,
0b11111000,
0b10010000,
0b11110000,
0b00010000,
0b00010000,
0b00000000,
//0x05 EQ
0b11100000,
0b10000000,
0b11010000,
0b10101000,
0b11101000,
0b00110000,
0b00011000,
0b00000000,
//0x06 AK
0b01000000,
0b10100000,
0b11101000,
0b10101000,
0b10110000,
0b00101000,
0b00101000,
0b00000000,
//0x07 BL
0b11000000,
0b10100000,
0b11100000,
0b10100000,
0b11100000,
0b00100000,
0b00111000,
0b00000000,
//0x08 BS
0b11000000,
0b10100000,
0b11011000,
0b10100000,
0b11010000,
0b00001000,
0b00110000,
0b00000000,
//0x09 HT
0b10100000,
0b10100000,
0b11111000,
0b10110000,
0b10110000,
0b00010000,
0b00010000,
0b00000000,
//0x0a LF
0b10000000,
0b10000000,
0b10111000,
0b10100000,
0b11111000,
0b00100000,
0b00100000,
0b00000000,
//0x0b VT
0b10100000,
0b10100000,
0b10111000,
0b10110000,
0b01010000,
0b00010000,
0b00010000,
0b00000000,
//0x0c FF
0b11100000,
0b10000000,
0b11111000,
0b10100000,
0b10111000,
0b00100000,
0b00100000,
0b00000000,
//0x0d CR
0b01100000,
0b10000000,
0b10110000,
0b10101000,
0b01110000,
0b00101000,
0b00101000,
0b00000000,
//0x0e SO
0b01100000,
0b10000000,
0b01010000,
0b00101000,
0b11101000,
0b00101000,
0b00010000,
0b00000000,
//0x0f SI
0b01100000,
0b10000000,
0b01001000,
0b00101000,
0b11001000,
0b00001000,
0b00001000,
0b00000000,
//0x10 DE
0b11000000,
0b10100000,
0b10111000,
0b10100000,
0b11110000,
0b00100000,
0b00111000,
0b00000000,
//0x11 D1
0b11000000,
0b10100000,
0b10101000,
0b10101000,
0b11001000,
0b00001000,
0b00001000,
0b00000000,
//0x12 D2
0b11000000,
0b10100000,
0b10111000,
0b10101000,
0b11010000,
0b00100000,
0b00111000,
0b00000000,
//0x13 D3
0b11000000,
0b10100000,
0b10111000,
0b10101000,
0b11011000,
0b00001000,
0b00111000,
0b00000000,
//0x14 D4
0b11000000,
0b10100000,
0b10101000,
0b10101000,
0b11011000,
0b00001000,
0b00001000,
0b00000000,
//0x15 NK
0b11000000,
0b10100000,
0b10100000,
0b10101000,
0b10110000,
0b00101000,
0b00101000,
0b00000000,
//0x16 SN
0b01100000,
0b10000000,
0b01110000,
0b00101000,
0b11101000,
0b00101000,
0b00101000,
0b00000000,
//0x17 EB
0b11100000,
0b10000000,
0b11110000,
0b10101000,
0b11110000,
0b00101000,
0b00110000,
0b00000000,
//0x18 CN
0b01100000,
0b10000000,
0b10110000,
0b10101000,
0b01101000,
0b00101000,
0b00101000,
0b00000000,
//0x19 EM
0b11100000,
0b10000000,
0b11101000,
0b10111000,
0b11111000,
0b00101000,
0b00101000,
0b00000000,
//0x1a SB
0b01100000,
0b10000000,
0b01110000,
0b00101000,
0b11110000,
0b00101000,
0b00110000,
0b00000000,
//0x1b EC
0b11100000,
0b10000000,
0b11011000,
0b10100000,
0b11100000,
0b00100000,
0b00011000,
0b00000000,
//0x1c →
0b00000000,
0b00100000,
0b00010000,
0b11111000,
0b00010000,
0b00100000,
0b00000000,
0b00000000,
//0x1d ←
0b00000000,
0b00100000,
0b01000000,
0b11111000,
0b01000000,
0b00100000,
0b00000000,
0b00000000,
//0x1e ↑
0b00100000,
0b01110000,
0b10101000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0x1f ↓
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b10101000,
0b01110000,
0b00100000,
0b00000000,
//0x20
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x21 !
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
0b00000000,
0b00100000,
0b00000000,
//0x22 ”
0b01010000,
0b01010000,
0b01010000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x23 #
0b01010000,
0b01010000,
0b11111000,
0b01010000,
0b11111000,
0b01010000,
0b01010000,
0b00000000,
//0x24 $
0b00100000,
0b01111000,
0b10100000,
0b01110000,
0b00101000,
0b11110000,
0b00100000,
0b00000000,
//0x25 %
0b11000000,
0b11001000,
0b00010000,
0b00100000,
0b01000000,
0b10011000,
0b00011000,
0b00000000,
//0x26 &
0b01100000,
0b10010000,
0b10100000,
0b01000000,
0b10101000,
0b10010000,
0b01101000,
0b00000000,
//0x27 ’
0b01100000,
0b00100000,
0b01000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x28 (
0b00010000,
0b00100000,
0b01000000,
0b01000000,
0b01000000,
0b00100000,
0b00010000,
0b00000000,
//0x29 )
0b01000000,
0b00100000,
0b00010000,
0b00010000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
//0x2a *
0b00000000,
0b00100000,
0b10101000,
0b01110000,
0b10101000,
0b00100000,
0b00000000,
0b00000000,
//0x2b +
0b00000000,
0b00100000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b00000000,
0b00000000,
//0x2c ,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b01100000,
0b00100000,
0b01000000,
0b00000000,
//0x2d -
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x2e .
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b01100000,
0b01100000,
0b00000000,
//0x2f /
0b00000000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000,
0b00000000,
0b00000000,
//0x30 0
0b01110000,
0b10001000,
0b10011000,
0b10101000,
0b11001000,
0b10001000,
0b01110000,
0b00000000,
//0x31 1
0b00100000,
0b01100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
0b00000000,
//0x32 2
0b01110000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b11111000,
0b00000000,
//0x33 3
0b11111000,
0b00010000,
0b00100000,
0b00010000,
0b00001000,
0b10001000,
0b01110000,
0b00000000,
//0x34 4
0b00010000,
0b00110000,
0b01010000,
0b10010000,
0b11111000,
0b00010000,
0b00010000,
0b00000000,
//0x35 5
0b11111000,
0b10000000,
0b11110000,
0b00001000,
0b00001000,
0b10001000,
0b01110000,
0b00000000,
//0x36 6
0b00110000,
0b01000000,
0b10000000,
0b11110000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0x37 7
0b11111000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b01000000,
0b01000000,
0b00000000,
//0x38 8
0b01110000,
0b10001000,
0b10001000,
0b01110000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0x39 9
0b01110000,
0b10001000,
0b10001000,
0b01111000,
0b00001000,
0b00010000,
0b01100000,
0b00000000,
//0x3a :
0b00000000,
0b01100000,
0b01100000,
0b00000000,
0b01100000,
0b01100000,
0b00000000,
0b00000000,
//0x3b ;
0b00000000,
0b01100000,
0b01100000,
0b00000000,
0b01100000,
0b00100000,
0b01000000,
0b00000000,
//0x3c <
0b00010000,
0b00100000,
0b01000000,
0b10000000,
0b01000000,
0b00100000,
0b00010000,
0b00000000,
//0x3d =
0b00000000,
0b00000000,
0b11111000,
0b00000000,
0b11111000,
0b00000000,
0b00000000,
0b00000000,
//0x3e >
0b01000000,
0b00100000,
0b00010000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
//0x3f ?
0b01110000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
0b00100000,
0b00000000,
//0x40 @
0b01110000,
0b10001000,
0b00001000,
0b01101000,
0b10101000,
0b10101000,
0b01110000,
0b00000000,
//0x41 A
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b11111000,
0b10001000,
0b10001000,
0b00000000,
//0x42 B
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b00000000,
//0x43 C
0b01110000,
0b10001000,
0b10000000,
0b10000000,
0b10000000,
0b10001000,
0b01110000,
0b00000000,
//0x44 D
0b11100000,
0b10010000,
0b10001000,
0b10001000,
0b10001000,
0b10010000,
0b11100000,
0b00000000,
//0x45 E
0b11111000,
0b10000000,
0b10000000,
0b11110000,
0b10000000,
0b10000000,
0b11111000,
0b00000000,
//0x46 F
0b11111000,
0b10000000,
0b10000000,
0b11110000,
0b10000000,
0b10000000,
0b10000000,
0b00000000,
//0x47 G
0b01110000,
0b10001000,
0b10000000,
0b10111000,
0b10001000,
0b10001000,
0b01111000,
0b00000000,
//0x48 H
0b10001000,
0b10001000,
0b10001000,
0b11111000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0x49 I
0b01110000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
0b00000000,
//0x4a J
0b00111000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b10010000,
0b01100000,
0b00000000,
//0x4b K
0b10001000,
0b10010000,
0b10100000,
0b11000000,
0b10100000,
0b10010000,
0b10001000,
0b00000000,
//0x4c L
0b10000000,
0b10000000,
0b10000000,
0b10000000,
0b10000000,
0b10000000,
0b11111000,
0b00000000,
//0x4d M
0b10001000,
0b11011000,
0b10101000,
0b10101000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0x4e N
0b10001000,
0b10001000,
0b11001000,
0b10101000,
0b10011000,
0b10001000,
0b10001000,
0b00000000,
//0x4f O
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0x50 P
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b10000000,
0b10000000,
0b10000000,
0b00000000,
//0x51 Q
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b10101000,
0b10010000,
0b01101000,
0b00000000,
//0x52 R
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b10100000,
0b10010000,
0b10001000,
0b00000000,
//0x53 S
0b01111000,
0b10000000,
0b10000000,
0b01110000,
0b00001000,
0b00001000,
0b11110000,
0b00000000,
//0x54 T
0b11111000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0x55 U
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0x56 V
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b01010000,
0b00100000,
0b00000000,
//0x57 W
0b10001000,
0b10001000,
0b10001000,
0b10101000,
0b10101000,
0b10101000,
0b01010000,
0b00000000,
//0x58 X
0b10001000,
0b10001000,
0b01010000,
0b00100000,
0b01010000,
0b10001000,
0b10001000,
0b00000000,
//0x59 Y
0b10001000,
0b10001000,
0b10001000,
0b01010000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0x5a Z
0b11111000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000,
0b11111000,
0b00000000,
//0x5b [
0b01110000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01110000,
0b00000000,
//0x5c ¥
0b10001000,
0b01010000,
0b11111000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b00000000,
//0x5d ]
0b01110000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b01110000,
0b00000000,
//0x5e ^
0b00100000,
0b01010000,
0b10001000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x5f _
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00000000,
//0x60 `
0b01000000,
0b00100000,
0b00010000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x61 a
0b00000000,
0b00000000,
0b01110000,
0b00001000,
0b01111000,
0b10001000,
0b01111000,
0b00000000,
//0x62 b
0b10000000,
0b10000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b11110000,
0b00000000,
//0x63 c
0b00000000,
0b00000000,
0b01110000,
0b10000000,
0b10000000,
0b10001000,
0b01110000,
0b00000000,
//0x64 d
0b00001000,
0b00001000,
0b01101000,
0b10011000,
0b10001000,
0b10001000,
0b01111000,
0b00000000,
//0x65 e
0b00000000,
0b00000000,
0b01110000,
0b10001000,
0b11111000,
0b10000000,
0b01110000,
0b00000000,
//0x66 f
0b00110000,
0b01001000,
0b01000000,
0b11100000,
0b01000000,
0b01000000,
0b01000000,
0b00000000,
//0x67 g
0b00000000,
0b01111000,
0b10001000,
0b10001000,
0b01111000,
0b00001000,
0b01110000,
0b00000000,
//0x68 h
0b10000000,
0b10000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0x69 i
0b00100000,
0b00000000,
0b01100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
0b00000000,
//0x6a j
0b00010000,
0b00000000,
0b00110000,
0b00010000,
0b00010000,
0b10010000,
0b01100000,
0b00000000,
//0x6b k
0b10000000,
0b10000000,
0b10010000,
0b10100000,
0b11000000,
0b10100000,
0b10010000,
0b00000000,
//0x6c l
0b01100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
0b00000000,
//0x6d m
0b00000000,
0b00000000,
0b11010000,
0b10101000,
0b10101000,
0b10001000,
0b10001000,
0b00000000,
//0x6e n
0b00000000,
0b00000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0x6f o
0b00000000,
0b00000000,
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0x70 p
0b00000000,
0b00000000,
0b11110000,
0b10001000,
0b11110000,
0b10000000,
0b10000000,
0b00000000,
//0x71 q
0b00000000,
0b00000000,
0b01101000,
0b10011000,
0b01111000,
0b00001000,
0b00001000,
0b00000000,
//0x72 r
0b00000000,
0b00000000,
0b10110000,
0b11001000,
0b10000000,
0b10000000,
0b10000000,
0b00000000,
//0x73 s
0b00000000,
0b00000000,
0b01110000,
0b10000000,
0b01110000,
0b00001000,
0b11110000,
0b00000000,
//0x74 t
0b01000000,
0b01000000,
0b11100000,
0b01000000,
0b01000000,
0b01001000,
0b00110000,
0b00000000,
//0x75 u
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b10011000,
0b01101000,
0b00000000,
//0x76 v
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b01010000,
0b00100000,
0b00000000,
//0x77 w
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b10101000,
0b10101000,
0b01010000,
0b00000000,
//0x78 x
0b00000000,
0b00000000,
0b10001000,
0b01010000,
0b00100000,
0b01010000,
0b10001000,
0b00000000,
//0x79 y
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b01111000,
0b00001000,
0b01110000,
0b00000000,
//0x7a z
0b00000000,
0b00000000,
0b11111000,
0b00010000,
0b00100000,
0b01000000,
0b11111000,
0b00000000,
//0x7b {
0b00010000,
0b00100000,
0b00100000,
0b01000000,
0b00100000,
0b00100000,
0b00010000,
0b00000000,
//0x7c |
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0x7d }
0b01000000,
0b00100000,
0b00100000,
0b00010000,
0b00100000,
0b00100000,
0b01000000,
0b00000000,
//0x7e  ̄
0b11111000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x7f
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x80 \
0b00000000,
0b10000000,
0b01000000,
0b00100000,
0b00010000,
0b00001000,
0b00000000,
0b00000000,
//0x81 ~
0b01101000,
0b10010000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x82 ¦
0b00100000,
0b00100000,
0b00100000,
0b00000000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0x83
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x84
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x85
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x86 を
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x87 ぁ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x88 ぃ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x89 ぅ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8a ぇ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8b ぉ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8c ゃ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8d ゅ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8e ょ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8f っ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x90
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x91 あ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x92 い
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x93 う
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x94 え
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x95 お
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x96 か
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x97 き
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x98 く
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x99 け
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9a こ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9b さ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9c し
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9d す
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9e せ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9f そ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa0
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa1 。
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11100000,
0b10100000,
0b11100000,
0b00000000,
//0xa2 「
0b00111000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa3 」
0b00000000,
0b00000000,
0b00000000,
0b00100000,
0b00100000,
0b00100000,
0b11100000,
0b00000000,
//0xa4 、
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b10000000,
0b01000000,
0b00100000,
0b00000000,
//0xa5 ・
0b00000000,
0b00000000,
0b00000000,
0b01100000,
0b01100000,
0b00000000,
0b00000000,
0b00000000,
//0xa6 ヲ
0b00000000,
0b11111000,
0b00001000,
0b11111000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
//0xa7 ァ
0b00000000,
0b00000000,
0b11111000,
0b00001000,
0b00110000,
0b00100000,
0b01000000,
0b00000000,
//0xa8 ィ
0b00000000,
0b00000000,
0b00010000,
0b00100000,
0b01100000,
0b10100000,
0b00100000,
0b00000000,
//0xa9 ゥ
0b00000000,
0b00000000,
0b00100000,
0b11111000,
0b10001000,
0b00001000,
0b00110000,
0b00000000,
//0xaa ェ
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00100000,
0b00100000,
0b11111000,
0b00000000,
//0xab ォ
0b00000000,
0b00000000,
0b00010000,
0b11111000,
0b00110000,
0b01010000,
0b10010000,
0b00000000,
//0xac ャ
0b00000000,
0b00000000,
0b01000000,
0b11111000,
0b01001000,
0b01010000,
0b01000000,
0b00000000,
//0xad ュ
0b00000000,
0b00000000,
0b00000000,
0b01110000,
0b00010000,
0b00010000,
0b11111000,
0b00000000,
//0xae ョ
0b00000000,
0b00000000,
0b11110000,
0b00010000,
0b11110000,
0b00010000,
0b11110000,
0b00000000,
//0xaf ッ
0b00000000,
0b00000000,
0b00000000,
0b10101000,
0b10101000,
0b00001000,
0b00110000,
0b00000000,
//0xb0 ー
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb1 ア
0b11111000,
0b00001000,
0b00101000,
0b00110000,
0b00100000,
0b00100000,
0b01000000,
0b00000000,
//0xb2 イ
0b00001000,
0b00010000,
0b00100000,
0b01100000,
0b10100000,
0b00100000,
0b00100000,
0b00000000,
//0xb3 ウ
0b00100000,
0b11111000,
0b10001000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
//0xb4 エ
0b00000000,
0b11111000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b11111000,
0b00000000,
//0xb5 オ
0b00010000,
0b11111000,
0b00010000,
0b00110000,
0b01010000,
0b10010000,
0b00010000,
0b00000000,
//0xb6 カ
0b01000000,
0b11111000,
0b01001000,
0b01001000,
0b01001000,
0b01001000,
0b10010000,
0b00000000,
//0xb7 キ
0b00100000,
0b11111000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0xb8 ク
0b00000000,
0b01111000,
0b01001000,
0b10001000,
0b00001000,
0b00010000,
0b01100000,
0b00000000,
//0xb9 ケ
0b01000000,
0b01111000,
0b10010000,
0b00010000,
0b00010000,
0b00010000,
0b00100000,
0b00000000,
//0xba コ
0b00000000,
0b11111000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b11111000,
0b00000000,
//0xbb サ
0b01010000,
0b11111000,
0b01010000,
0b01010000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
//0xbc シ
0b00000000,
0b11000000,
0b00001000,
0b11001000,
0b00001000,
0b00010000,
0b11100000,
0b00000000,
//0xbd ス
0b00000000,
0b11111000,
0b00001000,
0b00010000,
0b00100000,
0b01010000,
0b10001000,
0b00000000,
//0xbe セ
0b01000000,
0b11111000,
0b01001000,
0b01010000,
0b01000000,
0b01000000,
0b00111000,
0b00000000,
//0xbf ソ
0b00000000,
0b10001000,
0b10001000,
0b01001000,
0b00001000,
0b00010000,
0b01100000,
0b00000000,
//0xc0 タ
0b00000000,
0b01111000,
0b01001000,
0b10101000,
0b00011000,
0b00010000,
0b01100000,
0b00000000,
//0xc1 チ
0b00010000,
0b11100000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b01000000,
0b00000000,
//0xc2 ツ
0b00000000,
0b10101000,
0b10101000,
0b10101000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
//0xc3 テ
0b01110000,
0b00000000,
0b11111000,
0b00100000,
0b00100000,
0b00100000,
0b01000000,
0b00000000,
//0xc4 ト
0b01000000,
0b01000000,
0b01000000,
0b01100000,
0b01010000,
0b01000000,
0b01000000,
0b00000000,
//0xc5 ナ
0b00100000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b01000000,
0b10000000,
0b00000000,
//0xc6 ニ
0b00000000,
0b01110000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00000000,
//0xc7 ヌ
0b00000000,
0b11111000,
0b00001000,
0b01010000,
0b00100000,
0b01010000,
0b10000000,
0b00000000,
//0xc8 ネ
0b00100000,
0b11111000,
0b00010000,
0b00100000,
0b01110000,
0b10101000,
0b00100000,
0b00000000,
//0xc9 ノ
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
//0xca ハ
0b00000000,
0b00100000,
0b00010000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0xcb ヒ
0b10000000,
0b10000000,
0b11111000,
0b10000000,
0b10000000,
0b10000000,
0b01111000,
0b00000000,
//0xcc フ
0b00000000,
0b11111000,
0b00001000,
0b00001000,
0b00001000,
0b00010000,
0b01100000,
0b00000000,
//0xcd ヘ
0b00000000,
0b01000000,
0b10100000,
0b00010000,
0b00001000,
0b00001000,
0b00000000,
0b00000000,
//0xce ホ
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b10101000,
0b10101000,
0b00100000,
0b00000000,
//0xcf マ
0b00000000,
0b11111000,
0b00001000,
0b00001000,
0b01010000,
0b00100000,
0b00010000,
0b00000000,
//0xd0 ミ
0b00000000,
0b01110000,
0b00000000,
0b01110000,
0b00000000,
0b01110000,
0b00001000,
0b00000000,
//0xd1 ム
0b00000000,
0b00100000,
0b01000000,
0b10000000,
0b10001000,
0b11111000,
0b00001000,
0b00000000,
//0xd2 メ
0b00000000,
0b00001000,
0b00001000,
0b01010000,
0b00100000,
0b01010000,
0b10000000,
0b00000000,
//0xd3 モ
0b00000000,
0b11111000,
0b01000000,
0b11111000,
0b01000000,
0b01000000,
0b00111000,
0b00000000,
//0xd4 ヤ
0b01000000,
0b01000000,
0b11111000,
0b01001000,
0b01010000,
0b01000000,
0b01000000,
0b00000000,
//0xd5 ユ
0b00000000,
0b01110000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b11111000,
0b00000000,
//0xd6 ヨ
0b00000000,
0b11111000,
0b00001000,
0b11111000,
0b00001000,
0b00001000,
0b11111000,
0b00000000,
//0xd7 ラ
0b01110000,
0b00000000,
0b11111000,
0b00001000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
//0xd8 リ
0b10010000,
0b10010000,
0b10010000,
0b10010000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
//0xd9 ル
0b00000000,
0b00100000,
0b10100000,
0b10100000,
0b10101000,
0b10101000,
0b10110000,
0b00000000,
//0xda レ
0b00000000,
0b10000000,
0b10000000,
0b10001000,
0b10010000,
0b10100000,
0b11000000,
0b00000000,
//0xdb ロ
0b00000000,
0b11111000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b11111000,
0b00000000,
//0xdc ワ
0b00000000,
0b11111000,
0b10001000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
//0xdd ン
0b00000000,
0b11000000,
0b00000000,
0b00001000,
0b00001000,
0b00010000,
0b11100000,
0b00000000,
//0xde ゛
0b00100000,
0b10010000,
0b01000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xdf ゜
0b11100000,
0b10100000,
0b11100000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe0 た
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe1 ち
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe2 つ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe3 て
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe4 と
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe5 な
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe6 に
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe7 ぬ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe8 ね
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe9 の
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xea は
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xeb ひ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xec ふ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xed へ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xee ほ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xef ま
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf0 み
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf1 む
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf2 め
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf3 も
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf4 や
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf5 ゆ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf6 よ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf7 ら
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf8 り
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xf9 る
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xfa れ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xfb ろ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xfc わ
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xfd ん
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xfe
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xff
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
};
*/
// perl misc/itob.pl xeij/FontPage.java LCD6X8_FONT
public static final byte[] LCD6X8_FONT = "\0\0\0\0\0\0\0\0`\200h(\370((\0`\200h(\320((\0\340\200\340\250\360((\0\340\200\370\220\360\20\20\0\340\200\320\250\3500\30\0@\240\350\250\260((\0\300\240\340\240\340 8\0\300\240\330\240\320\b0\0\240\240\370\260\260\20\20\0\200\200\270\240\370 \0\240\240\270\260P\20\20\0\340\200\370\240\270 \0`\200\260\250p((\0`\200P(\350(\20\0`\200H(\310\b\b\0\300\240\270\240\360 8\0\300\240\250\250\310\b\b\0\300\240\270\250\320 8\0\300\240\270\250\330\b8\0\300\240\250\250\330\b\b\0\300\240\240\250\260((\0`\200p(\350((\0\340\200\360\250\360(0\0`\200\260\250h((\0\340\200\350\270\370((\0`\200p(\360(0\0\340\200\330\240\340 \30\0\0 \20\370\20 \0\0\0 @\370@ \0\0 p\250 \0 \250p \0\0\0\0\0\0\0\0\0 \0\0 \0PPP\0\0\0\0\0PP\370P\370PP\0 x\240p(\360 \0\300\310\20 @\230\30\0`\220\240@\250\220h\0` @\0\0\0\0\0\20 @@@ \20\0@ \20\20\20 @\0\0 \250p\250 \0\0\0 \370 \0\0\0\0\0\0` @\0\0\0\0\370\0\0\0\0\0\0\0\0\0``\0\0\b\20 @\200\0\0p\210\230\250\310\210p\0 ` p\0p\210\b\20 @\370\0\370\20 \20\b\210p\0\0200P\220\370\20\20\0\370\200\360\b\b\210p\0000@\200\360\210\210p\0\370\b\20 @@@\0p\210\210p\210\210p\0p\210\210x\b\20`\0\0``\0``\0\0\0``\0` @\0\20 @\200@ \20\0\0\0\370\0\370\0\0\0@ \20\b\20 @\0p\210\b\20 \0 \0p\210\bh\250\250p\0p\210\210\210\370\210\210\0\360\210\210\360\210\210\360\0p\210\200\200\200\210p\0\340\220\210\210\210\220\340\0\370\200\200\360\200\200\370\0\370\200\200\360\200\200\200\0p\210\200\270\210\210x\0\210\210\210\370\210\210\210\0p p\08\20\20\20\20\220`\0\210\220\240\300\240\220\210\0\200\200\200\200\200\200\370\0\210\330\250\250\210\210\210\0\210\210\310\250\230\210\210\0p\210\210\210\210\210p\0\360\210\210\360\200\200\200\0p\210\210\210\250\220h\0\360\210\210\360\240\220\210\0x\200\200p\b\b\360\0\370 \0\210\210\210\210\210\210p\0\210\210\210\210\210P \0\210\210\210\250\250\250P\0\210\210P P\210\210\0\210\210\210P \0\370\b\20 @\200\370\0p@@@@@p\0\210P\370 \370 \0p\20\20\20\20\20p\0 P\210\0\0\0\0\0\0\0\0\0\0\0\370\0@ \20\0\0\0\0\0\0\0p\bx\210x\0\200\200\260\310\210\210\360\0\0\0p\200\200\210p\0\b\bh\230\210\210x\0\0\0p\210\370\200p\0000H@\340@@@\0\0x\210\210x\bp\0\200\200\260\310\210\210\210\0 \0` p\0\20\0000\20\20\220`\0\200\200\220\240\300\240\220\0` p\0\0\0\320\250\250\210\210\0\0\0\260\310\210\210\210\0\0\0p\210\210\210p\0\0\0\360\210\360\200\200\0\0\0h\230x\b\b\0\0\0\260\310\200\200\200\0\0\0p\200p\b\360\0@@\340@@H0\0\0\0\210\210\210\230h\0\0\0\210\210\210P \0\0\0\210\210\250\250P\0\0\0\210P P\210\0\0\0\210\210x\bp\0\0\0\370\20 @\370\0\20 @ \20\0 \0@ \20 @\0\370\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\200@ \20\b\0\0h\220\0\0\0\0\0\0 \0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\340\240\340\08 \0\0\0\0\0\0\0 \340\0\0\0\0\0\200@ \0\0\0\0``\0\0\0\0\370\b\370\b\20 \0\0\0\370\b0 @\0\0\0\20 `\240 \0\0\0 \370\210\b0\0\0\0\0\370 \370\0\0\0\20\3700P\220\0\0\0@\370HP@\0\0\0\0p\20\20\370\0\0\0\360\20\360\20\360\0\0\0\0\250\250\b0\0\0\0\0\370\0\0\0\0\370\b(0 @\0\b\20 `\240 \0 \370\210\210\b\20 \0\0\370 \370\0\20\370\0200P\220\20\0@\370HHHH\220\0 \370 \370 \0\0xH\210\b\20`\0@x\220\20\20\20 \0\0\370\b\b\b\b\370\0P\370PP\20 @\0\0\300\b\310\b\20\340\0\0\370\b\20 P\210\0@\370HP@@8\0\0\210\210H\b\20`\0\0xH\250\30\20`\0\20\340 \370 @\0\0\250\250\250\b\20 \0p\0\370 @\0@@@`P@@\0 \370 @\200\0\0p\0\0\0\0\370\0\0\370\bP P\200\0 \370\20 p\250 \0\20\20\20\20\20 @\0\0 \20\210\210\210\210\0\200\200\370\200\200\200x\0\0\370\b\b\b\20`\0\0@\240\20\b\b\0\0 \370 \250\250 \0\0\370\b\bP \20\0\0p\0p\0p\b\0\0 @\200\210\370\b\0\0\b\bP P\200\0\0\370@\370@@8\0@@\370HP@@\0\0p\20\20\20\20\370\0\0\370\b\370\b\b\370\0p\0\370\b\b\20 \0\220\220\220\220\20 @\0\0 \240\240\250\250\260\0\0\200\200\210\220\240\300\0\0\370\210\210\210\210\370\0\0\370\210\210\b\20 \0\0\300\0\b\b\20\340\0 \220@\0\0\0\0\0\340\240\340\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0".getBytes (XEiJ.ISO_8859_1);
} //class FontPage.Lcd
//class FontPage.Smk
// 白窓君(HD44780)のANK。16桁×32行。前半256文字が日本仕様、後半256文字が欧州仕様
public static final class Smk extends FontPage {
//半角フォントから作る文字
public static final char[] HALF_BASE = (
//日本仕様
//123456789abcdef
" " + //00
" " + //01
" !\"#$%&'()*+,-./" + //02
"0123456789:;<=>?" + //03
"@ABCDEFGHIJKLMNO" + //04
"PQRSTUVWXYZ[¥]^_" + //05
"`abcdefghijklmno" + //06
"pqrstuvwxyz{|} " + //07
" " + //08
" " + //09
" 。「」、・ヲァィゥェォャュョッ" + //0a
"ーアイウエオカキクケコサシスセソ" + //0b
"タチツテトナニヌネノハヒフヘホマ" + //0c
"ミムメモヤユヨラリルレロワン゙゚" + //0d
"αäβεμδρg j̽¢£ñö" + //0e
"pqθ ΩüΣπ y ÷ █" + //0f
//欧州仕様
//123456789abcdef
" " + //10
"▶◀ ↵ ≤≥ " + //11
" !\"#$%&'()*+,-./" + //12
"0123456789:;<=>?" + //13
"@ABCDEFGHIJKLMNO" + //14
"PQRSTUVWXYZ[ ]^_" + //15
"`abcdefghijklmno" + //16
"pqrstuvwxyz{|}~⌂" + //17
"БДЖЗИЙЛПУЦЧШЩЪЫЭ" + //18
"α ΓπΣσ♬τ\u237eΘΩδ ♥ε " + //19
" ¡¢£¤¥¦§ƒ©ª«ЮЯ® " + //1a
"°±²³₧µ¶·ω¹º»¼½¾¿" + //1b
"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ" + //1c
"ÐÑÒÓÔÕÖרÙÚÛÜÝÞß" + //1d
"àáâãäåæçèéêëìíîï" + //1e
"ðñòóôõö÷øùúûüýþÿ" //1f
).toCharArray ();
//全角フォントから作る文字
public static final char[] FULL_BASE = (
//日本仕様
//0 1 2 3 4 5 6 7 8 9 a b c d e f
" " + //00
" " + //01
" " + //02
" " + //03
" " + //04
" " + //05
" " + //06
" →←" + //07
" " + //08
" " + //09
" " + //0a
" " + //0b
" " + //0c
" " + //0d
" √ " + //0e
" ∞ 千万円 " + //0f
//欧州仕様
//0 1 2 3 4 5 6 7 8 9 a b c d e f
" " + //10
" “” ● ↑↓→← ▲▼" + //11
" " + //12
" " + //13
" " + //14
" \ " + //15
" " + //16
" " + //17
" " + //18
" ♪ ∞ ∩" + //19
" ‘" + //1a
" " + //1b
" " + //1c
" " + //1d
" " + //1e
" " //1f
).toCharArray ();
public Smk (int characterWidth, int characterHeight, String nameEn, String nameJa, String dataName, String imageName) {
super (characterWidth, characterHeight, nameEn, nameJa, dataName, imageName,
16, 32, 32,
null, 0,
new char[][] { FULL_BASE, HALF_BASE });
fnpLoadFontDataArray (SMK6X8_FONT, 0, SMK6X8_FONT.length);
}
// 白窓君のフォント
// CGROMに合わせて上位に寄せてある。取り出すとき右に3ビットシフトする
/*
public static final byte[] SMK6X8_FONT = {
//日本標準フォント(日本仕様)
//0x00
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x01
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x02
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x03
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x04
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x05
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x06
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x07
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x08
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x09
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0a
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0b
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0c
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0d
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0e
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0f
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x10
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x11
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x12
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x13
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x14
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x15
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x16
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x17
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x18
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x19
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1a
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1b
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1c
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1d
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1e
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x1f
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x20
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x21 !
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
0b00000000,
0b00100000,
0b00000000,
//0x22 "
0b01010000,
0b01010000,
0b01010000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x23 #
0b01010000,
0b01010000,
0b11111000,
0b01010000,
0b11111000,
0b01010000,
0b01010000,
0b00000000,
//0x24 $
0b00100000,
0b01111000,
0b10100000,
0b01110000,
0b00101000,
0b11110000,
0b00100000,
0b00000000,
//0x25 %
0b11000000,
0b11001000,
0b00010000,
0b00100000,
0b01000000,
0b10011000,
0b00011000,
0b00000000,
//0x26 &
0b01100000,
0b10010000,
0b10100000,
0b01000000,
0b10101000,
0b10010000,
0b01101000,
0b00000000,
//0x27 '
0b01100000,
0b00100000,
0b01000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x28 (
0b00010000,
0b00100000,
0b01000000,
0b01000000,
0b01000000,
0b00100000,
0b00010000,
0b00000000,
//0x29 )
0b01000000,
0b00100000,
0b00010000,
0b00010000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
//0x2a *
0b00000000,
0b00100000,
0b10101000,
0b01110000,
0b10101000,
0b00100000,
0b00000000,
0b00000000,
//0x2b +
0b00000000,
0b00100000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b00000000,
0b00000000,
//0x2c ,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b01100000,
0b00100000,
0b01000000,
0b00000000,
//0x2d -
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x2e .
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b01100000,
0b01100000,
0b00000000,
//0x2f /
0b00000000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000,
0b00000000,
0b00000000,
//0x30 0
0b01110000,
0b10001000,
0b10011000,
0b10101000,
0b11001000,
0b10001000,
0b01110000,
0b00000000,
//0x31 1
0b00100000,
0b01100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
0b00000000,
//0x32 2
0b01110000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b11111000,
0b00000000,
//0x33 3
0b11111000,
0b00010000,
0b00100000,
0b00010000,
0b00001000,
0b10001000,
0b01110000,
0b00000000,
//0x34 4
0b00010000,
0b00110000,
0b01010000,
0b10010000,
0b11111000,
0b00010000,
0b00010000,
0b00000000,
//0x35 5
0b11111000,
0b10000000,
0b11110000,
0b00001000,
0b00001000,
0b10001000,
0b01110000,
0b00000000,
//0x36 6
0b00110000,
0b01000000,
0b10000000,
0b11110000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0x37 7
0b11111000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b01000000,
0b01000000,
0b00000000,
//0x38 8
0b01110000,
0b10001000,
0b10001000,
0b01110000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0x39 9
0b01110000,
0b10001000,
0b10001000,
0b01111000,
0b00001000,
0b00010000,
0b01100000,
0b00000000,
//0x3a :
0b00000000,
0b01100000,
0b01100000,
0b00000000,
0b01100000,
0b01100000,
0b00000000,
0b00000000,
//0x3b ;
0b00000000,
0b01100000,
0b01100000,
0b00000000,
0b01100000,
0b00100000,
0b01000000,
0b00000000,
//0x3c <
0b00010000,
0b00100000,
0b01000000,
0b10000000,
0b01000000,
0b00100000,
0b00010000,
0b00000000,
//0x3d =
0b00000000,
0b00000000,
0b11111000,
0b00000000,
0b11111000,
0b00000000,
0b00000000,
0b00000000,
//0x3e >
0b01000000,
0b00100000,
0b00010000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
//0x3f ?
0b01110000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
0b00100000,
0b00000000,
//0x40 @
0b01110000,
0b10001000,
0b00001000,
0b01101000,
0b10101000,
0b10101000,
0b01110000,
0b00000000,
//0x41 A
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b11111000,
0b10001000,
0b10001000,
0b00000000,
//0x42 B
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b00000000,
//0x43 C
0b01110000,
0b10001000,
0b10000000,
0b10000000,
0b10000000,
0b10001000,
0b01110000,
0b00000000,
//0x44 D
0b11100000,
0b10010000,
0b10001000,
0b10001000,
0b10001000,
0b10010000,
0b11100000,
0b00000000,
//0x45 E
0b11111000,
0b10000000,
0b10000000,
0b11110000,
0b10000000,
0b10000000,
0b11111000,
0b00000000,
//0x46 F
0b11111000,
0b10000000,
0b10000000,
0b11110000,
0b10000000,
0b10000000,
0b10000000,
0b00000000,
//0x47 G
0b01110000,
0b10001000,
0b10000000,
0b10111000,
0b10001000,
0b10001000,
0b01111000,
0b00000000,
//0x48 H
0b10001000,
0b10001000,
0b10001000,
0b11111000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0x49 I
0b01110000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
0b00000000,
//0x4a J
0b00111000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b10010000,
0b01100000,
0b00000000,
//0x4b K
0b10001000,
0b10010000,
0b10100000,
0b11000000,
0b10100000,
0b10010000,
0b10001000,
0b00000000,
//0x4c L
0b10000000,
0b10000000,
0b10000000,
0b10000000,
0b10000000,
0b10000000,
0b11111000,
0b00000000,
//0x4d M
0b10001000,
0b11011000,
0b10101000,
0b10101000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0x4e N
0b10001000,
0b10001000,
0b11001000,
0b10101000,
0b10011000,
0b10001000,
0b10001000,
0b00000000,
//0x4f O
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0x50 P
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b10000000,
0b10000000,
0b10000000,
0b00000000,
//0x51 Q
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b10101000,
0b10010000,
0b01101000,
0b00000000,
//0x52 R
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b10100000,
0b10010000,
0b10001000,
0b00000000,
//0x53 S
0b01111000,
0b10000000,
0b10000000,
0b01110000,
0b00001000,
0b00001000,
0b11110000,
0b00000000,
//0x54 T
0b11111000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0x55 U
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0x56 V
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b01010000,
0b00100000,
0b00000000,
//0x57 W
0b10001000,
0b10001000,
0b10001000,
0b10101000,
0b10101000,
0b10101000,
0b01010000,
0b00000000,
//0x58 X
0b10001000,
0b10001000,
0b01010000,
0b00100000,
0b01010000,
0b10001000,
0b10001000,
0b00000000,
//0x59 Y
0b10001000,
0b10001000,
0b10001000,
0b01010000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0x5a Z
0b11111000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000,
0b11111000,
0b00000000,
//0x5b [
0b01110000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01110000,
0b00000000,
//0x5c \\
0b10001000,
0b01010000,
0b11111000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b00000000,
//0x5d ]
0b01110000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b01110000,
0b00000000,
//0x5e ^
0b00100000,
0b01010000,
0b10001000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x5f _
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00000000,
//0x60 `
0b01000000,
0b00100000,
0b00010000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x61 a
0b00000000,
0b00000000,
0b01110000,
0b00001000,
0b01111000,
0b10001000,
0b01111000,
0b00000000,
//0x62 b
0b10000000,
0b10000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b11110000,
0b00000000,
//0x63 c
0b00000000,
0b00000000,
0b01110000,
0b10000000,
0b10000000,
0b10001000,
0b01110000,
0b00000000,
//0x64 d
0b00001000,
0b00001000,
0b01101000,
0b10011000,
0b10001000,
0b10001000,
0b01111000,
0b00000000,
//0x65 e
0b00000000,
0b00000000,
0b01110000,
0b10001000,
0b11111000,
0b10000000,
0b01110000,
0b00000000,
//0x66 f
0b00110000,
0b01001000,
0b01000000,
0b11100000,
0b01000000,
0b01000000,
0b01000000,
0b00000000,
//0x67 g
0b00000000,
0b01111000,
0b10001000,
0b10001000,
0b01111000,
0b00001000,
0b01110000,
0b00000000,
//0x68 h
0b10000000,
0b10000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0x69 i
0b00100000,
0b00000000,
0b01100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
0b00000000,
//0x6a j
0b00010000,
0b00000000,
0b00110000,
0b00010000,
0b00010000,
0b10010000,
0b01100000,
0b00000000,
//0x6b k
0b10000000,
0b10000000,
0b10010000,
0b10100000,
0b11000000,
0b10100000,
0b10010000,
0b00000000,
//0x6c l
0b01100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
0b00000000,
//0x6d m
0b00000000,
0b00000000,
0b11010000,
0b10101000,
0b10101000,
0b10001000,
0b10001000,
0b00000000,
//0x6e n
0b00000000,
0b00000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0x6f o
0b00000000,
0b00000000,
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0x70 p
0b00000000,
0b00000000,
0b11110000,
0b10001000,
0b11110000,
0b10000000,
0b10000000,
0b00000000,
//0x71 q
0b00000000,
0b00000000,
0b01101000,
0b10011000,
0b01111000,
0b00001000,
0b00001000,
0b00000000,
//0x72 r
0b00000000,
0b00000000,
0b10110000,
0b11001000,
0b10000000,
0b10000000,
0b10000000,
0b00000000,
//0x73 s
0b00000000,
0b00000000,
0b01110000,
0b10000000,
0b01110000,
0b00001000,
0b11110000,
0b00000000,
//0x74 t
0b01000000,
0b01000000,
0b11100000,
0b01000000,
0b01000000,
0b01001000,
0b00110000,
0b00000000,
//0x75 u
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b10011000,
0b01101000,
0b00000000,
//0x76 v
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b01010000,
0b00100000,
0b00000000,
//0x77 w
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b10101000,
0b10101000,
0b01010000,
0b00000000,
//0x78 x
0b00000000,
0b00000000,
0b10001000,
0b01010000,
0b00100000,
0b01010000,
0b10001000,
0b00000000,
//0x79 y
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b01111000,
0b00001000,
0b01110000,
0b00000000,
//0x7a z
0b00000000,
0b00000000,
0b11111000,
0b00010000,
0b00100000,
0b01000000,
0b11111000,
0b00000000,
//0x7b {
0b00010000,
0b00100000,
0b00100000,
0b01000000,
0b00100000,
0b00100000,
0b00010000,
0b00000000,
//0x7c |
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0x7d }
0b01000000,
0b00100000,
0b00100000,
0b00010000,
0b00100000,
0b00100000,
0b01000000,
0b00000000,
//0x7e →
0b00000000,
0b00100000,
0b00010000,
0b11111000,
0b00010000,
0b00100000,
0b00000000,
0b00000000,
//0x7f ←
0b00000000,
0b00100000,
0b01000000,
0b11111000,
0b01000000,
0b00100000,
0b00000000,
0b00000000,
//0x80
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x81
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x82
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x83
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x84
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x85
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x86
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x87
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x88
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x89
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8a
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8b
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8c
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8d
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8e
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x8f
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x90
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x91
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x92
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x93
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x94
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x95
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x96
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x97
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x98
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x99
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9a
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9b
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9c
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9d
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9e
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x9f
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa0
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa1 。
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11100000,
0b10100000,
0b11100000,
0b00000000,
//0xa2 「
0b00111000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xa3 」
0b00000000,
0b00000000,
0b00000000,
0b00100000,
0b00100000,
0b00100000,
0b11100000,
0b00000000,
//0xa4 、
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b10000000,
0b01000000,
0b00100000,
0b00000000,
//0xa5 ・
0b00000000,
0b00000000,
0b00000000,
0b01100000,
0b01100000,
0b00000000,
0b00000000,
0b00000000,
//0xa6 ヲ
0b00000000,
0b11111000,
0b00001000,
0b11111000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
//0xa7 ァ
0b00000000,
0b00000000,
0b11111000,
0b00001000,
0b00110000,
0b00100000,
0b01000000,
0b00000000,
//0xa8 ィ
0b00000000,
0b00000000,
0b00010000,
0b00100000,
0b01100000,
0b10100000,
0b00100000,
0b00000000,
//0xa9 ゥ
0b00000000,
0b00000000,
0b00100000,
0b11111000,
0b10001000,
0b00001000,
0b00110000,
0b00000000,
//0xaa ェ
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00100000,
0b00100000,
0b11111000,
0b00000000,
//0xab ォ
0b00000000,
0b00000000,
0b00010000,
0b11111000,
0b00110000,
0b01010000,
0b10010000,
0b00000000,
//0xac ャ
0b00000000,
0b00000000,
0b01000000,
0b11111000,
0b01001000,
0b01010000,
0b01000000,
0b00000000,
//0xad ュ
0b00000000,
0b00000000,
0b00000000,
0b01110000,
0b00010000,
0b00010000,
0b11111000,
0b00000000,
//0xae ョ
0b00000000,
0b00000000,
0b11110000,
0b00010000,
0b11110000,
0b00010000,
0b11110000,
0b00000000,
//0xaf ッ
0b00000000,
0b00000000,
0b00000000,
0b10101000,
0b10101000,
0b00001000,
0b00110000,
0b00000000,
//0xb0 ー
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xb1 ア
0b11111000,
0b00001000,
0b00101000,
0b00110000,
0b00100000,
0b00100000,
0b01000000,
0b00000000,
//0xb2 イ
0b00001000,
0b00010000,
0b00100000,
0b01100000,
0b10100000,
0b00100000,
0b00100000,
0b00000000,
//0xb3 ウ
0b00100000,
0b11111000,
0b10001000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
//0xb4 エ
0b00000000,
0b11111000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b11111000,
0b00000000,
//0xb5 オ
0b00010000,
0b11111000,
0b00010000,
0b00110000,
0b01010000,
0b10010000,
0b00010000,
0b00000000,
//0xb6 カ
0b01000000,
0b11111000,
0b01001000,
0b01001000,
0b01001000,
0b01001000,
0b10010000,
0b00000000,
//0xb7 キ
0b00100000,
0b11111000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
//0xb8 ク
0b00000000,
0b01111000,
0b01001000,
0b10001000,
0b00001000,
0b00010000,
0b01100000,
0b00000000,
//0xb9 ケ
0b01000000,
0b01111000,
0b10010000,
0b00010000,
0b00010000,
0b00010000,
0b00100000,
0b00000000,
//0xba コ
0b00000000,
0b11111000,
0b00001000,
0b00001000,
0b00001000,
0b00001000,
0b11111000,
0b00000000,
//0xbb サ
0b01010000,
0b11111000,
0b01010000,
0b01010000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
//0xbc シ
0b00000000,
0b11000000,
0b00001000,
0b11001000,
0b00001000,
0b00010000,
0b11100000,
0b00000000,
//0xbd ス
0b00000000,
0b11111000,
0b00001000,
0b00010000,
0b00100000,
0b01010000,
0b10001000,
0b00000000,
//0xbe セ
0b01000000,
0b11111000,
0b01001000,
0b01010000,
0b01000000,
0b01000000,
0b00111000,
0b00000000,
//0xbf ソ
0b00000000,
0b10001000,
0b10001000,
0b01001000,
0b00001000,
0b00010000,
0b01100000,
0b00000000,
//0xc0 タ
0b00000000,
0b01111000,
0b01001000,
0b10101000,
0b00011000,
0b00010000,
0b01100000,
0b00000000,
//0xc1 チ
0b00010000,
0b11100000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b01000000,
0b00000000,
//0xc2 ツ
0b00000000,
0b10101000,
0b10101000,
0b10101000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
//0xc3 テ
0b01110000,
0b00000000,
0b11111000,
0b00100000,
0b00100000,
0b00100000,
0b01000000,
0b00000000,
//0xc4 ト
0b01000000,
0b01000000,
0b01000000,
0b01100000,
0b01010000,
0b01000000,
0b01000000,
0b00000000,
//0xc5 ナ
0b00100000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b01000000,
0b10000000,
0b00000000,
//0xc6 ニ
0b00000000,
0b01110000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00000000,
//0xc7 ヌ
0b00000000,
0b11111000,
0b00001000,
0b01010000,
0b00100000,
0b01010000,
0b10000000,
0b00000000,
//0xc8 ネ
0b00100000,
0b11111000,
0b00010000,
0b00100000,
0b01110000,
0b10101000,
0b00100000,
0b00000000,
//0xc9 ノ
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
//0xca ハ
0b00000000,
0b00100000,
0b00010000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0xcb ヒ
0b10000000,
0b10000000,
0b11111000,
0b10000000,
0b10000000,
0b10000000,
0b01111000,
0b00000000,
//0xcc フ
0b00000000,
0b11111000,
0b00001000,
0b00001000,
0b00001000,
0b00010000,
0b01100000,
0b00000000,
//0xcd ヘ
0b00000000,
0b01000000,
0b10100000,
0b00010000,
0b00001000,
0b00001000,
0b00000000,
0b00000000,
//0xce ホ
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b10101000,
0b10101000,
0b00100000,
0b00000000,
//0xcf マ
0b00000000,
0b11111000,
0b00001000,
0b00001000,
0b01010000,
0b00100000,
0b00010000,
0b00000000,
//0xd0 ミ
0b00000000,
0b01110000,
0b00000000,
0b01110000,
0b00000000,
0b01110000,
0b00001000,
0b00000000,
//0xd1 ム
0b00000000,
0b00100000,
0b01000000,
0b10000000,
0b10001000,
0b11111000,
0b00001000,
0b00000000,
//0xd2 メ
0b00000000,
0b00001000,
0b00001000,
0b01010000,
0b00100000,
0b01010000,
0b10000000,
0b00000000,
//0xd3 モ
0b00000000,
0b11111000,
0b01000000,
0b11111000,
0b01000000,
0b01000000,
0b00111000,
0b00000000,
//0xd4 ヤ
0b01000000,
0b01000000,
0b11111000,
0b01001000,
0b01010000,
0b01000000,
0b01000000,
0b00000000,
//0xd5 ユ
0b00000000,
0b01110000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b11111000,
0b00000000,
//0xd6 ヨ
0b00000000,
0b11111000,
0b00001000,
0b11111000,
0b00001000,
0b00001000,
0b11111000,
0b00000000,
//0xd7 ラ
0b01110000,
0b00000000,
0b11111000,
0b00001000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
//0xd8 リ
0b10010000,
0b10010000,
0b10010000,
0b10010000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
//0xd9 ル
0b00000000,
0b00100000,
0b10100000,
0b10100000,
0b10101000,
0b10101000,
0b10110000,
0b00000000,
//0xda レ
0b00000000,
0b10000000,
0b10000000,
0b10001000,
0b10010000,
0b10100000,
0b11000000,
0b00000000,
//0xdb ロ
0b00000000,
0b11111000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b11111000,
0b00000000,
//0xdc ワ
0b00000000,
0b11111000,
0b10001000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
//0xdd ン
0b00000000,
0b11000000,
0b00000000,
0b00001000,
0b00001000,
0b00010000,
0b11100000,
0b00000000,
//0xde ゛
0b00100000,
0b10010000,
0b01000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xdf ゜
0b11100000,
0b10100000,
0b11100000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xe0 α
0b00000000,
0b00000000,
0b01001000,
0b10101000,
0b10010000,
0b10010000,
0b01101000,
0b00000000,
//0xe1 ä
0b01010000,
0b00000000,
0b01110000,
0b00001000,
0b01111000,
0b10001000,
0b01111000,
0b00000000,
//0xe2 β
0b00000000,
0b00000000,
0b01110000,
0b10001000,
0b11110000,
0b10001000,
0b11110000,
0b10000000,
//0xe3 ε
0b00000000,
0b00000000,
0b01110000,
0b10000000,
0b01100000,
0b10001000,
0b01110000,
0b00000000,
//0xe4 μ
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b10011000,
0b11101000,
0b10000000,
//0xe5 δ
0b00000000,
0b00000000,
0b01111000,
0b10100000,
0b10010000,
0b10001000,
0b01110000,
0b00000000,
//0xe6 ρ
0b00000000,
0b00000000,
0b00110000,
0b01001000,
0b10001000,
0b10001000,
0b11110000,
0b10000000,
//0xe7 g
0b00000000,
0b00000000,
0b01111000,
0b10001000,
0b10001000,
0b10001000,
0b01111000,
0b00001000,
//0xe8 √
0b00000000,
0b00000000,
0b00111000,
0b00100000,
0b00100000,
0b10100000,
0b01000000,
0b00000000,
//0xe9
0b00000000,
0b00010000,
0b11010000,
0b00010000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xea j
0b00010000,
0b00000000,
0b00110000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
//0xeb
0b00000000,
0b10100000,
0b01000000,
0b10100000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xec ¢
0b00000000,
0b00100000,
0b01110000,
0b10100000,
0b10101000,
0b01110000,
0b00100000,
0b00000000,
//0xed
0b01000000,
0b01000000,
0b11100000,
0b01000000,
0b11100000,
0b01000000,
0b01111000,
0b00000000,
//0xee
0b01110000,
0b00000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b10001000,
0b00000000,
//0xef
0b01010000,
0b00000000,
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0xf0 p
0b00000000,
0b00000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b11110000,
0b10000000,
//0xf1 q
0b00000000,
0b01100000,
0b10011000,
0b10001000,
0b10001000,
0b01111000,
0b00001000,
0b00001000,
//0xf2 θ
0b00000000,
0b01110000,
0b10001000,
0b11111000,
0b10001000,
0b10001000,
0b01110000,
0b00000000,
//0xf3 ∞
0b00000000,
0b00000000,
0b00000000,
0b01011000,
0b10101000,
0b11010000,
0b00000000,
0b00000000,
//0xf4 Ω
0b00000000,
0b00000000,
0b01110000,
0b10001000,
0b10001000,
0b01010000,
0b11011000,
0b00000000,
//0xf5
0b01010000,
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10011000,
0b01101000,
//0xf6 Σ
0b11111000,
0b10000000,
0b01000000,
0b00100000,
0b01000000,
0b10000000,
0b11111000,
0b00000000,
//0xf7 π
0b00000000,
0b00000000,
0b11111000,
0b01010000,
0b01010000,
0b01010000,
0b10011000,
0b00000000,
//0xf8
0b11111000,
0b00000000,
0b10001000,
0b01010000,
0b00100000,
0b01010000,
0b10001000,
0b00000000,
//0xf9 y
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b01111000,
0b00001000,
//0xfa 千
0b00000000,
0b00001000,
0b11110000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b00000000,
//0xfb 万
0b00000000,
0b00000000,
0b11111000,
0b01000000,
0b01111000,
0b01001000,
0b10001000,
0b00000000,
//0xfc 円
0b00000000,
0b00000000,
0b11111000,
0b10101000,
0b11111000,
0b10001000,
0b10001000,
0b00000000,
//0xfd ÷
0b00000000,
0b00100000,
0b00000000,
0b11111000,
0b00000000,
0b00100000,
0b00000000,
0b00000000,
//0xfe
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0xff
0b11111000,
0b11111000,
0b11111000,
0b11111000,
0b11111000,
0b11111000,
0b11111000,
0b11111000,
//欧州標準フォント(欧州仕様)
// 日本標準フォントと異なり、下に寄っている
//0x00
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x01
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x02
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x03
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x04
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x05
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x06
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x07
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x08
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x09
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0a
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0b
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0c
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0d
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0e
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x0f
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x10
0b00000000,
0b01000000,
0b01100000,
0b01110000,
0b01111000,
0b01110000,
0b01100000,
0b01000000,
//0x11
0b00000000,
0b00010000,
0b00110000,
0b01110000,
0b11110000,
0b01110000,
0b00110000,
0b00010000,
//0x12
0b00000000,
0b01001000,
0b10010000,
0b11011000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x13
0b00000000,
0b11011000,
0b01001000,
0b10010000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x14
0b00000000,
0b00100000,
0b01110000,
0b11111000,
0b00000000,
0b00100000,
0b01110000,
0b11111000,
//0x15
0b00000000,
0b11111000,
0b01110000,
0b00100000,
0b00000000,
0b11111000,
0b01110000,
0b00100000,
//0x16
0b00000000,
0b00000000,
0b01110000,
0b11111000,
0b11111000,
0b11111000,
0b01110000,
0b00000000,
//0x17
0b00000000,
0b00001000,
0b00001000,
0b00101000,
0b01001000,
0b11111000,
0b01000000,
0b00100000,
//0x18
0b00000000,
0b00100000,
0b01110000,
0b10101000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
//0x19
0b00000000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b10101000,
0b01110000,
0b00100000,
//0x1a
0b00000000,
0b00000000,
0b00100000,
0b00010000,
0b11111000,
0b00010000,
0b00100000,
0b00000000,
//0x1b
0b00000000,
0b00000000,
0b00100000,
0b01000000,
0b11111000,
0b01000000,
0b00100000,
0b00000000,
//0x1c
0b00000000,
0b00010000,
0b00100000,
0b01000000,
0b00100000,
0b00010000,
0b00000000,
0b11111000,
//0x1d
0b00000000,
0b01000000,
0b00100000,
0b00010000,
0b00100000,
0b01000000,
0b00000000,
0b11111000,
//0x1e
0b00000000,
0b00000000,
0b00100000,
0b00100000,
0b01110000,
0b01110000,
0b11111000,
0b00000000,
//0x1f
0b00000000,
0b00000000,
0b11111000,
0b01110000,
0b01110000,
0b00100000,
0b00100000,
0b00000000,
//0x20
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x21
0b00000000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00000000,
0b00000000,
0b00100000,
//0x22
0b00000000,
0b01010000,
0b01010000,
0b01010000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x23
0b00000000,
0b01010000,
0b01010000,
0b11111000,
0b01010000,
0b11111000,
0b01010000,
0b01010000,
//0x24
0b00000000,
0b00100000,
0b01111000,
0b10100000,
0b01110000,
0b00101000,
0b11110000,
0b00100000,
//0x25
0b00000000,
0b11000000,
0b11001000,
0b00010000,
0b00100000,
0b01000000,
0b10011000,
0b00011000,
//0x26
0b00000000,
0b01100000,
0b10010000,
0b10100000,
0b01000000,
0b10101000,
0b10010000,
0b01101000,
//0x27
0b00000000,
0b01100000,
0b00100000,
0b01000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x28
0b00000000,
0b00010000,
0b00100000,
0b01000000,
0b01000000,
0b01000000,
0b00100000,
0b00010000,
//0x29
0b00000000,
0b01000000,
0b00100000,
0b00010000,
0b00010000,
0b00010000,
0b00100000,
0b01000000,
//0x2a
0b00000000,
0b00000000,
0b00100000,
0b10101000,
0b01110000,
0b10101000,
0b00100000,
0b00000000,
//0x2b
0b00000000,
0b00000000,
0b00100000,
0b00100000,
0b11111000,
0b00100000,
0b00100000,
0b00000000,
//0x2c
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b01100000,
0b00100000,
0b01000000,
//0x2d
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00000000,
0b00000000,
0b00000000,
//0x2e
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b01100000,
0b01100000,
//0x2f
0b00000000,
0b00000000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000,
0b00000000,
//0x30
0b00000000,
0b01110000,
0b10001000,
0b10011000,
0b10101000,
0b11001000,
0b10001000,
0b01110000,
//0x31
0b00000000,
0b00100000,
0b01100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
//0x32
0b00000000,
0b01110000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b11111000,
//0x33
0b00000000,
0b11111000,
0b00010000,
0b00100000,
0b00010000,
0b00001000,
0b10001000,
0b01110000,
//0x34
0b00000000,
0b00010000,
0b00110000,
0b01010000,
0b10010000,
0b11111000,
0b00010000,
0b00010000,
//0x35
0b00000000,
0b11111000,
0b10000000,
0b11110000,
0b00001000,
0b00001000,
0b10001000,
0b01110000,
//0x36
0b00000000,
0b00110000,
0b01000000,
0b10000000,
0b11110000,
0b10001000,
0b10001000,
0b01110000,
//0x37
0b00000000,
0b11111000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b00100000,
0b00100000,
//0x38
0b00000000,
0b01110000,
0b10001000,
0b10001000,
0b01110000,
0b10001000,
0b10001000,
0b01110000,
//0x39
0b00000000,
0b01110000,
0b10001000,
0b10001000,
0b01111000,
0b00001000,
0b00010000,
0b01100000,
//0x3a
0b00000000,
0b00000000,
0b01100000,
0b01100000,
0b00000000,
0b01100000,
0b01100000,
0b00000000,
//0x3b
0b00000000,
0b00000000,
0b01100000,
0b01100000,
0b00000000,
0b01100000,
0b00100000,
0b01000000,
//0x3c
0b00000000,
0b00010000,
0b00100000,
0b01000000,
0b10000000,
0b01000000,
0b00100000,
0b00010000,
//0x3d
0b00000000,
0b00000000,
0b00000000,
0b11111000,
0b00000000,
0b11111000,
0b00000000,
0b00000000,
//0x3e
0b00000000,
0b01000000,
0b00100000,
0b00010000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
//0x3f
0b00000000,
0b01110000,
0b10001000,
0b00001000,
0b00010000,
0b00100000,
0b00000000,
0b00100000,
//0x40
0b00000000,
0b01110000,
0b10001000,
0b00001000,
0b01101000,
0b10101000,
0b10101000,
0b01110000,
//0x41
0b00000000,
0b00100000,
0b01010000,
0b10001000,
0b10001000,
0b11111000,
0b10001000,
0b10001000,
//0x42
0b00000000,
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b10001000,
0b10001000,
0b11110000,
//0x43
0b00000000,
0b01110000,
0b10001000,
0b10000000,
0b10000000,
0b10000000,
0b10001000,
0b01110000,
//0x44
0b00000000,
0b11100000,
0b10010000,
0b10001000,
0b10001000,
0b10001000,
0b10010000,
0b11100000,
//0x45
0b00000000,
0b11111000,
0b10000000,
0b10000000,
0b11110000,
0b10000000,
0b10000000,
0b11111000,
//0x46
0b00000000,
0b11111000,
0b10000000,
0b10000000,
0b11110000,
0b10000000,
0b10000000,
0b10000000,
//0x47
0b00000000,
0b01110000,
0b10001000,
0b10000000,
0b10111000,
0b10001000,
0b10001000,
0b01111000,
//0x48
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b11111000,
0b10001000,
0b10001000,
0b10001000,
//0x49
0b00000000,
0b01110000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
//0x4a
0b00000000,
0b00111000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b10010000,
0b01100000,
//0x4b
0b00000000,
0b10001000,
0b10010000,
0b10100000,
0b11000000,
0b10100000,
0b10010000,
0b10001000,
//0x4c
0b00000000,
0b10000000,
0b10000000,
0b10000000,
0b10000000,
0b10000000,
0b10000000,
0b11111000,
//0x4d
0b00000000,
0b10001000,
0b11011000,
0b10101000,
0b10101000,
0b10001000,
0b10001000,
0b10001000,
//0x4e
0b00000000,
0b10001000,
0b10001000,
0b11001000,
0b10101000,
0b10011000,
0b10001000,
0b10001000,
//0x4f
0b00000000,
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b01110000,
//0x50
0b00000000,
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b10000000,
0b10000000,
0b10000000,
//0x51
0b00000000,
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b10101000,
0b10010000,
0b01101000,
//0x52
0b00000000,
0b11110000,
0b10001000,
0b10001000,
0b11110000,
0b10100000,
0b10010000,
0b10001000,
//0x53
0b00000000,
0b01110000,
0b10001000,
0b10000000,
0b01110000,
0b00001000,
0b10001000,
0b01110000,
//0x54
0b00000000,
0b11111000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
//0x55
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b01110000,
//0x56
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b10001000,
0b01010000,
0b00100000,
//0x57
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b10101000,
0b10101000,
0b10101000,
0b01010000,
//0x58
0b00000000,
0b10001000,
0b10001000,
0b01010000,
0b00100000,
0b01010000,
0b10001000,
0b10001000,
//0x59
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b01010000,
0b00100000,
0b00100000,
0b00100000,
//0x5a
0b00000000,
0b11111000,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000,
0b11111000,
//0x5b
0b00000000,
0b01110000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01000000,
0b01110000,
//0x5c
0b00000000,
0b00000000,
0b10000000,
0b01000000,
0b00100000,
0b00010000,
0b00001000,
0b00000000,
//0x5d
0b00000000,
0b01110000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b01110000,
//0x5e
0b00000000,
0b00100000,
0b01010000,
0b10001000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x5f
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11111000,
//0x60
0b00000000,
0b01000000,
0b00100000,
0b00010000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
//0x61
0b00000000,
0b00000000,
0b00000000,
0b01110000,
0b00001000,
0b01111000,
0b10001000,
0b01111000,
//0x62
0b00000000,
0b10000000,
0b10000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b11110000,
//0x63
0b00000000,
0b00000000,
0b00000000,
0b01110000,
0b10000000,
0b10000000,
0b10001000,
0b01110000,
//0x64
0b00000000,
0b00001000,
0b00001000,
0b01101000,
0b10011000,
0b10001000,
0b10001000,
0b01111000,
//0x65
0b00000000,
0b00000000,
0b00000000,
0b01110000,
0b10001000,
0b11111000,
0b10000000,
0b01110000,
//0x66
0b00000000,
0b00110000,
0b01001000,
0b01000000,
0b11100000,
0b01000000,
0b01000000,
0b01000000,
//0x67
0b00000000,
0b00000000,
0b00000000,
0b01111000,
0b10001000,
0b01111000,
0b00001000,
0b01110000,
//0x68
0b00000000,
0b10000000,
0b10000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b10001000,
//0x69
0b00000000,
0b00100000,
0b00000000,
0b00100000,
0b01100000,
0b00100000,
0b00100000,
0b01110000,
//0x6a
0b00000000,
0b00010000,
0b00000000,
0b00110000,
0b00010000,
0b00010000,
0b10010000,
0b01100000,
//0x6b
0b00000000,
0b10000000,
0b10000000,
0b10010000,
0b10100000,
0b11000000,
0b10100000,
0b10010000,
//0x6c
0b00000000,
0b01100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b00100000,
0b01110000,
//0x6d
0b00000000,
0b00000000,
0b00000000,
0b11010000,
0b10101000,
0b10101000,
0b10101000,
0b10101000,
//0x6e
0b00000000,
0b00000000,
0b00000000,
0b10110000,
0b11001000,
0b10001000,
0b10001000,
0b10001000,
//0x6f
0b00000000,
0b00000000,
0b00000000,
0b01110000,
0b10001000,
0b10001000,
0b10001000,
0b01110000,
//0x70
0b00000000,
0b00000000,
0b00000000,
0b11110000,
0b10001000,
0b11110000,
0b10000000,
0b10000000,
//0x71
0b00000000,
0b00000000,
0b00000000,
0b01101000,
0b10011000,
0b01111000,
0b00001000,
0b00001000,
//0x72
0b00000000,
0b00000000,
0b00000000,
0b10110000,
0b11001000,
0b10000000,
0b10000000,
0b10000000,
//0x73
0b00000000,
0b00000000,
0b00000000,
0b01110000,
0b10000000,
0b01110000,
0b00001000,
0b11110000,
//0x74
0b00000000,
0b01000000,
0b01000000,
0b11100000,
0b01000000,
0b01000000,
0b01001000,
0b00110000,
//0x75
0b00000000,
0b00000000,
0b00000000,
0b10001000,
0b10001000,
0b10001000,
0b10011000,
0b01101000,
//0x76
0b00000000,
0b00000000,
0b00000000,
0b10001000,
0b10001000,