4.2inch e-Paper HAT (C) made by WAVESHARE
Dependents: ePD_4R2inch_test_program_on_nRF52
Fonts/font_creator/font_creator.py@1:b1aa1d6a96bc, 2019-08-28 (annotated)
- Committer:
- kenjiArai
- Date:
- Wed Aug 28 23:35:01 2019 +0000
- Revision:
- 1:b1aa1d6a96bc
for 4.2inch e-Paper
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 1:b1aa1d6a96bc | 1 | """ |
kenjiArai | 1:b1aa1d6a96bc | 2 | /* |
kenjiArai | 1:b1aa1d6a96bc | 3 | * Font converter |
kenjiArai | 1:b1aa1d6a96bc | 4 | * |
kenjiArai | 1:b1aa1d6a96bc | 5 | * Copyright (c) 2018 Kenji Arai / JH1PJL |
kenjiArai | 1:b1aa1d6a96bc | 6 | * http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 1:b1aa1d6a96bc | 7 | * https://os.mbed.com/users/kenjiArai/ |
kenjiArai | 1:b1aa1d6a96bc | 8 | * Created: May 4th, 2018 |
kenjiArai | 1:b1aa1d6a96bc | 9 | * Revised: May 14th, 2018 |
kenjiArai | 1:b1aa1d6a96bc | 10 | */ |
kenjiArai | 1:b1aa1d6a96bc | 11 | """ |
kenjiArai | 1:b1aa1d6a96bc | 12 | import numpy as np |
kenjiArai | 1:b1aa1d6a96bc | 13 | import datetime |
kenjiArai | 1:b1aa1d6a96bc | 14 | import os |
kenjiArai | 1:b1aa1d6a96bc | 15 | |
kenjiArai | 1:b1aa1d6a96bc | 16 | |
kenjiArai | 1:b1aa1d6a96bc | 17 | ## -------- USER MODIFICATION ARE ------------------------------------ |
kenjiArai | 1:b1aa1d6a96bc | 18 | # modify your condition below |
kenjiArai | 1:b1aa1d6a96bc | 19 | font_num = 8 |
kenjiArai | 1:b1aa1d6a96bc | 20 | |
kenjiArai | 1:b1aa1d6a96bc | 21 | if font_num==0: |
kenjiArai | 1:b1aa1d6a96bc | 22 | file_name = "IPAexGothicB13x14" |
kenjiArai | 1:b1aa1d6a96bc | 23 | width_bit = 13 |
kenjiArai | 1:b1aa1d6a96bc | 24 | height_bit = 14 |
kenjiArai | 1:b1aa1d6a96bc | 25 | org_bit_x = 13 |
kenjiArai | 1:b1aa1d6a96bc | 26 | org_byte_x = 2 |
kenjiArai | 1:b1aa1d6a96bc | 27 | new_byte_x = 2 |
kenjiArai | 1:b1aa1d6a96bc | 28 | new_bit_y = 16 |
kenjiArai | 1:b1aa1d6a96bc | 29 | elif font_num==1: |
kenjiArai | 1:b1aa1d6a96bc | 30 | file_name = "IPAexGothicB16x16" |
kenjiArai | 1:b1aa1d6a96bc | 31 | width_bit = 16 |
kenjiArai | 1:b1aa1d6a96bc | 32 | height_bit = 16 |
kenjiArai | 1:b1aa1d6a96bc | 33 | org_bit_x = 16 |
kenjiArai | 1:b1aa1d6a96bc | 34 | org_byte_x = 2 |
kenjiArai | 1:b1aa1d6a96bc | 35 | new_byte_x = 2 |
kenjiArai | 1:b1aa1d6a96bc | 36 | new_bit_y = 16 |
kenjiArai | 1:b1aa1d6a96bc | 37 | elif font_num==2: |
kenjiArai | 1:b1aa1d6a96bc | 38 | file_name = "IPAexGothicB21x21" |
kenjiArai | 1:b1aa1d6a96bc | 39 | width_bit = 21 |
kenjiArai | 1:b1aa1d6a96bc | 40 | height_bit = 21 |
kenjiArai | 1:b1aa1d6a96bc | 41 | org_bit_x = 21 |
kenjiArai | 1:b1aa1d6a96bc | 42 | org_byte_x = 3 |
kenjiArai | 1:b1aa1d6a96bc | 43 | new_byte_x = 3 |
kenjiArai | 1:b1aa1d6a96bc | 44 | new_bit_y = 24 |
kenjiArai | 1:b1aa1d6a96bc | 45 | elif font_num==3: |
kenjiArai | 1:b1aa1d6a96bc | 46 | file_name = "IPAexGothicB24x24" |
kenjiArai | 1:b1aa1d6a96bc | 47 | width_bit = 24 |
kenjiArai | 1:b1aa1d6a96bc | 48 | height_bit = 24 |
kenjiArai | 1:b1aa1d6a96bc | 49 | org_bit_x = 24 |
kenjiArai | 1:b1aa1d6a96bc | 50 | org_byte_x = 3 |
kenjiArai | 1:b1aa1d6a96bc | 51 | new_byte_x = 3 |
kenjiArai | 1:b1aa1d6a96bc | 52 | new_bit_y = 24 |
kenjiArai | 1:b1aa1d6a96bc | 53 | elif font_num==4: |
kenjiArai | 1:b1aa1d6a96bc | 54 | file_name = "IPAexGothicB28x29" |
kenjiArai | 1:b1aa1d6a96bc | 55 | width_bit = 28 |
kenjiArai | 1:b1aa1d6a96bc | 56 | height_bit = 29 |
kenjiArai | 1:b1aa1d6a96bc | 57 | org_bit_x = 28 |
kenjiArai | 1:b1aa1d6a96bc | 58 | org_byte_x = 4 |
kenjiArai | 1:b1aa1d6a96bc | 59 | new_byte_x = 4 |
kenjiArai | 1:b1aa1d6a96bc | 60 | new_bit_y = 32 |
kenjiArai | 1:b1aa1d6a96bc | 61 | elif font_num==5: |
kenjiArai | 1:b1aa1d6a96bc | 62 | file_name = "IPAexGothicB33x35" |
kenjiArai | 1:b1aa1d6a96bc | 63 | width_bit = 33 |
kenjiArai | 1:b1aa1d6a96bc | 64 | height_bit = 35 |
kenjiArai | 1:b1aa1d6a96bc | 65 | org_bit_x = 33 |
kenjiArai | 1:b1aa1d6a96bc | 66 | org_byte_x = 5 |
kenjiArai | 1:b1aa1d6a96bc | 67 | new_byte_x = 5 |
kenjiArai | 1:b1aa1d6a96bc | 68 | new_bit_y = 40 |
kenjiArai | 1:b1aa1d6a96bc | 69 | elif font_num==6: |
kenjiArai | 1:b1aa1d6a96bc | 70 | file_name = "IPAexGothicB38x40" |
kenjiArai | 1:b1aa1d6a96bc | 71 | width_bit = 38 |
kenjiArai | 1:b1aa1d6a96bc | 72 | height_bit = 40 |
kenjiArai | 1:b1aa1d6a96bc | 73 | org_bit_x = 38 |
kenjiArai | 1:b1aa1d6a96bc | 74 | org_byte_x = 5 |
kenjiArai | 1:b1aa1d6a96bc | 75 | new_byte_x = 5 |
kenjiArai | 1:b1aa1d6a96bc | 76 | new_bit_y = 40 |
kenjiArai | 1:b1aa1d6a96bc | 77 | elif font_num==7: |
kenjiArai | 1:b1aa1d6a96bc | 78 | file_name = "IPAexGothicB48x48" |
kenjiArai | 1:b1aa1d6a96bc | 79 | width_bit = 48 |
kenjiArai | 1:b1aa1d6a96bc | 80 | height_bit = 48 |
kenjiArai | 1:b1aa1d6a96bc | 81 | org_bit_x = 48 |
kenjiArai | 1:b1aa1d6a96bc | 82 | org_byte_x = 6 |
kenjiArai | 1:b1aa1d6a96bc | 83 | new_byte_x = 6 |
kenjiArai | 1:b1aa1d6a96bc | 84 | new_bit_y = 48 |
kenjiArai | 1:b1aa1d6a96bc | 85 | elif font_num==8: |
kenjiArai | 1:b1aa1d6a96bc | 86 | file_name = "IPAexGothicB96x96" |
kenjiArai | 1:b1aa1d6a96bc | 87 | width_bit = 96 |
kenjiArai | 1:b1aa1d6a96bc | 88 | height_bit = 96 |
kenjiArai | 1:b1aa1d6a96bc | 89 | org_bit_x = 96 |
kenjiArai | 1:b1aa1d6a96bc | 90 | org_byte_x = 12 |
kenjiArai | 1:b1aa1d6a96bc | 91 | new_byte_x = 12 |
kenjiArai | 1:b1aa1d6a96bc | 92 | new_bit_y = 96 |
kenjiArai | 1:b1aa1d6a96bc | 93 | |
kenjiArai | 1:b1aa1d6a96bc | 94 | |
kenjiArai | 1:b1aa1d6a96bc | 95 | ## ----- YOU DON'T NEED ANY MODIFICATION FROM HERE TO END ---------- |
kenjiArai | 1:b1aa1d6a96bc | 96 | src_file_name = file_name + ".txt" |
kenjiArai | 1:b1aa1d6a96bc | 97 | out_file_name = file_name + "_converted.txt" |
kenjiArai | 1:b1aa1d6a96bc | 98 | #wxh_name = str(width_bit) + str(height_bit) |
kenjiArai | 1:b1aa1d6a96bc | 99 | wh_name = str(width_bit) + str(height_bit) |
kenjiArai | 1:b1aa1d6a96bc | 100 | output_font_file_name = "Font" + wh_name + ".c" |
kenjiArai | 1:b1aa1d6a96bc | 101 | now = datetime.datetime.now() |
kenjiArai | 1:b1aa1d6a96bc | 102 | print(src_file_name) |
kenjiArai | 1:b1aa1d6a96bc | 103 | print(out_file_name) |
kenjiArai | 1:b1aa1d6a96bc | 104 | print(output_font_file_name) |
kenjiArai | 1:b1aa1d6a96bc | 105 | print(now) |
kenjiArai | 1:b1aa1d6a96bc | 106 | |
kenjiArai | 1:b1aa1d6a96bc | 107 | ## Step 1 ------- Read Font file ------------------------------------- |
kenjiArai | 1:b1aa1d6a96bc | 108 | ## step11 -> only get num & length |
kenjiArai | 1:b1aa1d6a96bc | 109 | print("###### Read a file into Array ######"); |
kenjiArai | 1:b1aa1d6a96bc | 110 | file = open(src_file_name,'r') |
kenjiArai | 1:b1aa1d6a96bc | 111 | string = file.readline() |
kenjiArai | 1:b1aa1d6a96bc | 112 | while string: |
kenjiArai | 1:b1aa1d6a96bc | 113 | #print(string) |
kenjiArai | 1:b1aa1d6a96bc | 114 | string = file.readline() |
kenjiArai | 1:b1aa1d6a96bc | 115 | if string.find('{') != -1: |
kenjiArai | 1:b1aa1d6a96bc | 116 | break |
kenjiArai | 1:b1aa1d6a96bc | 117 | num=0 |
kenjiArai | 1:b1aa1d6a96bc | 118 | while string: |
kenjiArai | 1:b1aa1d6a96bc | 119 | string = file.readline() |
kenjiArai | 1:b1aa1d6a96bc | 120 | #print(string) |
kenjiArai | 1:b1aa1d6a96bc | 121 | if string.find('}') != -1: |
kenjiArai | 1:b1aa1d6a96bc | 122 | break |
kenjiArai | 1:b1aa1d6a96bc | 123 | font_data = string.split() |
kenjiArai | 1:b1aa1d6a96bc | 124 | font_data.pop(0) |
kenjiArai | 1:b1aa1d6a96bc | 125 | font_data.remove('//') |
kenjiArai | 1:b1aa1d6a96bc | 126 | font_data.remove('Code') |
kenjiArai | 1:b1aa1d6a96bc | 127 | font_data.remove('for') |
kenjiArai | 1:b1aa1d6a96bc | 128 | font_data.remove('char') |
kenjiArai | 1:b1aa1d6a96bc | 129 | last = font_data.pop() |
kenjiArai | 1:b1aa1d6a96bc | 130 | if last == '0x00,': |
kenjiArai | 1:b1aa1d6a96bc | 131 | font_data.append('0x00,') |
kenjiArai | 1:b1aa1d6a96bc | 132 | length = len(font_data) |
kenjiArai | 1:b1aa1d6a96bc | 133 | num = num+1 |
kenjiArai | 1:b1aa1d6a96bc | 134 | print("num=", num, "length=", length) |
kenjiArai | 1:b1aa1d6a96bc | 135 | file.close() |
kenjiArai | 1:b1aa1d6a96bc | 136 | # step12 -> Data into array |
kenjiArai | 1:b1aa1d6a96bc | 137 | temp_data=np.zeros((num,length)) |
kenjiArai | 1:b1aa1d6a96bc | 138 | temp_comment=np.chararray((num,2),itemsize=20) |
kenjiArai | 1:b1aa1d6a96bc | 139 | file = open(src_file_name,'r') |
kenjiArai | 1:b1aa1d6a96bc | 140 | string = file.readline() |
kenjiArai | 1:b1aa1d6a96bc | 141 | while string: |
kenjiArai | 1:b1aa1d6a96bc | 142 | #print(string) |
kenjiArai | 1:b1aa1d6a96bc | 143 | string = file.readline() |
kenjiArai | 1:b1aa1d6a96bc | 144 | if string.find('{') != -1: |
kenjiArai | 1:b1aa1d6a96bc | 145 | break |
kenjiArai | 1:b1aa1d6a96bc | 146 | num=0 |
kenjiArai | 1:b1aa1d6a96bc | 147 | length=0 |
kenjiArai | 1:b1aa1d6a96bc | 148 | while string: |
kenjiArai | 1:b1aa1d6a96bc | 149 | string = file.readline() |
kenjiArai | 1:b1aa1d6a96bc | 150 | #print(string) |
kenjiArai | 1:b1aa1d6a96bc | 151 | if string.find('}') != -1: |
kenjiArai | 1:b1aa1d6a96bc | 152 | break |
kenjiArai | 1:b1aa1d6a96bc | 153 | font_data = string.split() |
kenjiArai | 1:b1aa1d6a96bc | 154 | temp_comment[num][0]=font_data.pop(0) |
kenjiArai | 1:b1aa1d6a96bc | 155 | font_data.remove('//') |
kenjiArai | 1:b1aa1d6a96bc | 156 | font_data.remove('Code') |
kenjiArai | 1:b1aa1d6a96bc | 157 | font_data.remove('for') |
kenjiArai | 1:b1aa1d6a96bc | 158 | font_data.remove('char') |
kenjiArai | 1:b1aa1d6a96bc | 159 | last = font_data.pop() |
kenjiArai | 1:b1aa1d6a96bc | 160 | if last == '0x00,': |
kenjiArai | 1:b1aa1d6a96bc | 161 | temp_comment[num][1]="NONE" |
kenjiArai | 1:b1aa1d6a96bc | 162 | font_data.append('0x00,') |
kenjiArai | 1:b1aa1d6a96bc | 163 | else: |
kenjiArai | 1:b1aa1d6a96bc | 164 | temp_comment[num][1]=last |
kenjiArai | 1:b1aa1d6a96bc | 165 | length = len(font_data) |
kenjiArai | 1:b1aa1d6a96bc | 166 | #print(length) |
kenjiArai | 1:b1aa1d6a96bc | 167 | for n in range(length): |
kenjiArai | 1:b1aa1d6a96bc | 168 | temp_data[num][n] = float(int(font_data[n].replace(',', ''),16)) |
kenjiArai | 1:b1aa1d6a96bc | 169 | num = num+1 |
kenjiArai | 1:b1aa1d6a96bc | 170 | print("num=", num, "length=", length) |
kenjiArai | 1:b1aa1d6a96bc | 171 | print("Shape of temp_data ",temp_data.shape) |
kenjiArai | 1:b1aa1d6a96bc | 172 | map(str, temp_comment) |
kenjiArai | 1:b1aa1d6a96bc | 173 | #print(temp_comment) |
kenjiArai | 1:b1aa1d6a96bc | 174 | #np.savetxt("temp0.txt",temp_data,fmt="%.0f",delimiter=",") |
kenjiArai | 1:b1aa1d6a96bc | 175 | file.close() |
kenjiArai | 1:b1aa1d6a96bc | 176 | print("###### Finsh ########") |
kenjiArai | 1:b1aa1d6a96bc | 177 | |
kenjiArai | 1:b1aa1d6a96bc | 178 | |
kenjiArai | 1:b1aa1d6a96bc | 179 | ## Step 2 ------- Make temporary file -------------------------------- |
kenjiArai | 1:b1aa1d6a96bc | 180 | ## step21 -> Preparation |
kenjiArai | 1:b1aa1d6a96bc | 181 | array = num |
kenjiArai | 1:b1aa1d6a96bc | 182 | axis_x = width_bit |
kenjiArai | 1:b1aa1d6a96bc | 183 | axis_y = height_bit |
kenjiArai | 1:b1aa1d6a96bc | 184 | # step22 -> Make temporary file |
kenjiArai | 1:b1aa1d6a96bc | 185 | temp_array = np.zeros((array,new_byte_x*new_bit_y)) # not original size but new size |
kenjiArai | 1:b1aa1d6a96bc | 186 | print("###### Start convertion ########"); |
kenjiArai | 1:b1aa1d6a96bc | 187 | for n in range(array): |
kenjiArai | 1:b1aa1d6a96bc | 188 | for i in range(new_byte_x): |
kenjiArai | 1:b1aa1d6a96bc | 189 | for j in range(new_bit_y): |
kenjiArai | 1:b1aa1d6a96bc | 190 | if j < org_bit_x: |
kenjiArai | 1:b1aa1d6a96bc | 191 | temp_array[n][i*new_bit_y+j] = temp_data[n][i+org_byte_x*j] |
kenjiArai | 1:b1aa1d6a96bc | 192 | else: |
kenjiArai | 1:b1aa1d6a96bc | 193 | temp_array[n][i*new_bit_y+j] = 0 |
kenjiArai | 1:b1aa1d6a96bc | 194 | print("--- Original ------------") |
kenjiArai | 1:b1aa1d6a96bc | 195 | print(temp_data) |
kenjiArai | 1:b1aa1d6a96bc | 196 | print("--- Converted -----------") |
kenjiArai | 1:b1aa1d6a96bc | 197 | print(temp_array) |
kenjiArai | 1:b1aa1d6a96bc | 198 | #np.savetxt("temp1.txt", temp_array, fmt="%.0f", delimiter=",") |
kenjiArai | 1:b1aa1d6a96bc | 199 | print("###### Finsh ########") |
kenjiArai | 1:b1aa1d6a96bc | 200 | |
kenjiArai | 1:b1aa1d6a96bc | 201 | |
kenjiArai | 1:b1aa1d6a96bc | 202 | ## Step 3 ------- Change row & column and make ----------------------- |
kenjiArai | 1:b1aa1d6a96bc | 203 | final_array = np.zeros((array,new_byte_x*new_bit_y)) |
kenjiArai | 1:b1aa1d6a96bc | 204 | print("###### Change row & column ######") |
kenjiArai | 1:b1aa1d6a96bc | 205 | for n in range(array): |
kenjiArai | 1:b1aa1d6a96bc | 206 | for i in range(int(new_bit_y/8)): |
kenjiArai | 1:b1aa1d6a96bc | 207 | for j in range(new_byte_x): |
kenjiArai | 1:b1aa1d6a96bc | 208 | k = i*new_byte_x*8+j*8 |
kenjiArai | 1:b1aa1d6a96bc | 209 | m = i*new_byte_x*8+j |
kenjiArai | 1:b1aa1d6a96bc | 210 | final_array[n][0*new_byte_x+m] = ((int(temp_array[n][0+k]) & 0x01) << 7) + ((int(temp_array[n][1+k]) & 0x01) << 6) +\ |
kenjiArai | 1:b1aa1d6a96bc | 211 | ((int(temp_array[n][2+k]) & 0x01) << 5) + ((int(temp_array[n][3+k]) & 0x01) << 4) +\ |
kenjiArai | 1:b1aa1d6a96bc | 212 | ((int(temp_array[n][4+k]) & 0x01) << 3) + ((int(temp_array[n][5+k]) & 0x01) << 2) +\ |
kenjiArai | 1:b1aa1d6a96bc | 213 | ((int(temp_array[n][6+k]) & 0x01) << 1) + ((int(temp_array[n][7+k]) & 0x01) << 0) |
kenjiArai | 1:b1aa1d6a96bc | 214 | final_array[n][1*new_byte_x+m] = ((int(temp_array[n][0+k]) & 0x02) << 6) + ((int(temp_array[n][1+k]) & 0x02) << 5) +\ |
kenjiArai | 1:b1aa1d6a96bc | 215 | ((int(temp_array[n][2+k]) & 0x02) << 4) + ((int(temp_array[n][3+k]) & 0x02) << 3) +\ |
kenjiArai | 1:b1aa1d6a96bc | 216 | ((int(temp_array[n][4+k]) & 0x02) << 2) + ((int(temp_array[n][5+k]) & 0x02) << 1) +\ |
kenjiArai | 1:b1aa1d6a96bc | 217 | ((int(temp_array[n][6+k]) & 0x02) << 0) + ((int(temp_array[n][7+k]) & 0x02) >> 1) |
kenjiArai | 1:b1aa1d6a96bc | 218 | final_array[n][2*new_byte_x+m] = ((int(temp_array[n][0+k]) & 0x04) << 5) + ((int(temp_array[n][1+k]) & 0x04) << 4) +\ |
kenjiArai | 1:b1aa1d6a96bc | 219 | ((int(temp_array[n][2+k]) & 0x04) << 3) + ((int(temp_array[n][3+k]) & 0x04) << 2) +\ |
kenjiArai | 1:b1aa1d6a96bc | 220 | ((int(temp_array[n][4+k]) & 0x04) << 1) + ((int(temp_array[n][5+k]) & 0x04) << 0) +\ |
kenjiArai | 1:b1aa1d6a96bc | 221 | ((int(temp_array[n][6+k]) & 0x04) >> 1) + ((int(temp_array[n][7+k]) & 0x04) >> 2) |
kenjiArai | 1:b1aa1d6a96bc | 222 | final_array[n][3*new_byte_x+m] = ((int(temp_array[n][0+k]) & 0x08) << 4) + ((int(temp_array[n][1+k]) & 0x08) << 3) +\ |
kenjiArai | 1:b1aa1d6a96bc | 223 | ((int(temp_array[n][2+k]) & 0x08) << 2) + ((int(temp_array[n][3+k]) & 0x08) << 1) +\ |
kenjiArai | 1:b1aa1d6a96bc | 224 | ((int(temp_array[n][4+k]) & 0x08) << 0) + ((int(temp_array[n][5+k]) & 0x08) >> 1) +\ |
kenjiArai | 1:b1aa1d6a96bc | 225 | ((int(temp_array[n][6+k]) & 0x08) >> 2) + ((int(temp_array[n][7+k]) & 0x08) >> 3) |
kenjiArai | 1:b1aa1d6a96bc | 226 | final_array[n][4*new_byte_x+m] = ((int(temp_array[n][0+k]) & 0x10) << 3) + ((int(temp_array[n][1+k]) & 0x10) << 2) +\ |
kenjiArai | 1:b1aa1d6a96bc | 227 | ((int(temp_array[n][2+k]) & 0x10) << 1) + ((int(temp_array[n][3+k]) & 0x10) << 0) +\ |
kenjiArai | 1:b1aa1d6a96bc | 228 | ((int(temp_array[n][4+k]) & 0x10) >> 1) + ((int(temp_array[n][5+k]) & 0x10) >> 2) +\ |
kenjiArai | 1:b1aa1d6a96bc | 229 | ((int(temp_array[n][6+k]) & 0x10) >> 3) + ((int(temp_array[n][7+k]) & 0x10) >> 4) |
kenjiArai | 1:b1aa1d6a96bc | 230 | final_array[n][5*new_byte_x+m]= ((int(temp_array[n][0+k]) & 0x20) << 2) + ((int(temp_array[n][1+k]) & 0x20) << 1) +\ |
kenjiArai | 1:b1aa1d6a96bc | 231 | ((int(temp_array[n][2+k]) & 0x20) << 0) + ((int(temp_array[n][3+k]) & 0x20) >> 1) +\ |
kenjiArai | 1:b1aa1d6a96bc | 232 | ((int(temp_array[n][4+k]) & 0x20) >> 2) + ((int(temp_array[n][5+k]) & 0x20) >> 3) +\ |
kenjiArai | 1:b1aa1d6a96bc | 233 | ((int(temp_array[n][6+k]) & 0x20) >> 4) + ((int(temp_array[n][7+k]) & 0x20) >> 5) |
kenjiArai | 1:b1aa1d6a96bc | 234 | final_array[n][6*new_byte_x+m]= ((int(temp_array[n][0+k]) & 0x40) << 1) + ((int(temp_array[n][1+k]) & 0x40) << 0) +\ |
kenjiArai | 1:b1aa1d6a96bc | 235 | ((int(temp_array[n][2+k]) & 0x40) >> 1) + ((int(temp_array[n][3+k]) & 0x40) >> 2) +\ |
kenjiArai | 1:b1aa1d6a96bc | 236 | ((int(temp_array[n][4+k]) & 0x40) >> 3) + ((int(temp_array[n][5+k]) & 0x40) >> 4) +\ |
kenjiArai | 1:b1aa1d6a96bc | 237 | ((int(temp_array[n][6+k]) & 0x40) >> 5) + ((int(temp_array[n][7+k]) & 0x40) >> 6) |
kenjiArai | 1:b1aa1d6a96bc | 238 | final_array[n][7*new_byte_x+m]= ((int(temp_array[n][0+k]) & 0x80) >> 0) + ((int(temp_array[n][1+k]) & 0x80) >> 1) +\ |
kenjiArai | 1:b1aa1d6a96bc | 239 | ((int(temp_array[n][2+k]) & 0x80) >> 2) + ((int(temp_array[n][3+k]) & 0x80) >> 3) +\ |
kenjiArai | 1:b1aa1d6a96bc | 240 | ((int(temp_array[n][4+k]) & 0x80) >> 4) + ((int(temp_array[n][5+k]) & 0x80) >> 5) +\ |
kenjiArai | 1:b1aa1d6a96bc | 241 | ((int(temp_array[n][6+k]) & 0x80) >> 6) + ((int(temp_array[n][7+k]) & 0x80) >> 7) |
kenjiArai | 1:b1aa1d6a96bc | 242 | print(temp_array) |
kenjiArai | 1:b1aa1d6a96bc | 243 | print(final_array) |
kenjiArai | 1:b1aa1d6a96bc | 244 | print("###### Finsh ########") |
kenjiArai | 1:b1aa1d6a96bc | 245 | print("###### Created ", out_file_name, " file ######") |
kenjiArai | 1:b1aa1d6a96bc | 246 | np.savetxt(out_file_name, final_array, fmt="%.0f", delimiter=",") |
kenjiArai | 1:b1aa1d6a96bc | 247 | |
kenjiArai | 1:b1aa1d6a96bc | 248 | |
kenjiArai | 1:b1aa1d6a96bc | 249 | ## Step 4------- Format for C source code ---------------------------- |
kenjiArai | 1:b1aa1d6a96bc | 250 | print("###### Start Formatting ########"); |
kenjiArai | 1:b1aa1d6a96bc | 251 | file_r = open(out_file_name,'r') |
kenjiArai | 1:b1aa1d6a96bc | 252 | file_w = open(output_font_file_name,'a') |
kenjiArai | 1:b1aa1d6a96bc | 253 | file_w.write("//---------------------------------------------------------------\n") |
kenjiArai | 1:b1aa1d6a96bc | 254 | file_w.write("// This is Font file created by JH1PJL\n//\n") |
kenjiArai | 1:b1aa1d6a96bc | 255 | comment = "// created on " + str(now) + "\n//\n" |
kenjiArai | 1:b1aa1d6a96bc | 256 | file_w.write(comment) |
kenjiArai | 1:b1aa1d6a96bc | 257 | comment = "// Oroginal Font file = " + file_name + "\n// IPAex Font (IPAexGothic) ipaexg00301.zip\n" |
kenjiArai | 1:b1aa1d6a96bc | 258 | file_w.write(comment) |
kenjiArai | 1:b1aa1d6a96bc | 259 | file_w.write("// https://ja.osdn.net/projects/ipafonts/releases/47610\n//\n") |
kenjiArai | 1:b1aa1d6a96bc | 260 | file_w.write("// Convert by GLCD Font Creator\n") |
kenjiArai | 1:b1aa1d6a96bc | 261 | file_w.write("// https://www.mikroe.com/glcd-font-creator\n") |
kenjiArai | 1:b1aa1d6a96bc | 262 | file_w.write("//---------------------------------------------------------------\n\n") |
kenjiArai | 1:b1aa1d6a96bc | 263 | comment = "#include \"fonts.h\"" + "\n\n" |
kenjiArai | 1:b1aa1d6a96bc | 264 | file_w.write(comment) |
kenjiArai | 1:b1aa1d6a96bc | 265 | comment = "const uint8_t Font" + wh_name + "_Table[] = \n" |
kenjiArai | 1:b1aa1d6a96bc | 266 | file_w.write(comment) |
kenjiArai | 1:b1aa1d6a96bc | 267 | file_w.write("{\n") |
kenjiArai | 1:b1aa1d6a96bc | 268 | n=0 |
kenjiArai | 1:b1aa1d6a96bc | 269 | string = file_r.readline() |
kenjiArai | 1:b1aa1d6a96bc | 270 | data_common = ',' + ' ' + '/' + '/' |
kenjiArai | 1:b1aa1d6a96bc | 271 | data_cr = '\n' |
kenjiArai | 1:b1aa1d6a96bc | 272 | while string: |
kenjiArai | 1:b1aa1d6a96bc | 273 | string = string + ',' |
kenjiArai | 1:b1aa1d6a96bc | 274 | file_w.write(string) |
kenjiArai | 1:b1aa1d6a96bc | 275 | string = file_r.readline() |
kenjiArai | 1:b1aa1d6a96bc | 276 | n=n+1 |
kenjiArai | 1:b1aa1d6a96bc | 277 | file_w.write("};\n") |
kenjiArai | 1:b1aa1d6a96bc | 278 | file_w.write(" \n") |
kenjiArai | 1:b1aa1d6a96bc | 279 | comment = "sFONT Font" + wh_name + " = {\n" |
kenjiArai | 1:b1aa1d6a96bc | 280 | file_w.write(comment) |
kenjiArai | 1:b1aa1d6a96bc | 281 | comment = " Font" + wh_name + "_Table,\n" |
kenjiArai | 1:b1aa1d6a96bc | 282 | file_w.write(comment) |
kenjiArai | 1:b1aa1d6a96bc | 283 | comment = " " + str(org_bit_x) + ", // width \n" |
kenjiArai | 1:b1aa1d6a96bc | 284 | file_w.write(comment) |
kenjiArai | 1:b1aa1d6a96bc | 285 | comment = " " + str(new_bit_y) + " // Height\n" |
kenjiArai | 1:b1aa1d6a96bc | 286 | file_w.write(comment) |
kenjiArai | 1:b1aa1d6a96bc | 287 | file_w.write("};\n") |
kenjiArai | 1:b1aa1d6a96bc | 288 | file_w.close() |
kenjiArai | 1:b1aa1d6a96bc | 289 | file_r.close() |
kenjiArai | 1:b1aa1d6a96bc | 290 | print("###### Finsh ########") |
kenjiArai | 1:b1aa1d6a96bc | 291 | print("###### Created ", output_font_file_name," file ######") |
kenjiArai | 1:b1aa1d6a96bc | 292 | os.remove(out_file_name) |