Brunobkr/llama.cpp_AlgMor24_github
ΩFFFΣLLIa • llama.cpp • AlgMor24 ██████╗ ███████╗███████╗███████╗██╗ ██╗ ██╗ █████╗ ██╔═══██╗██╔════╝██╔════╝██╔════╝██║ ██║ ██║██╔══██╗ ██║ ██║█████╗ █████╗ █████╗ ██║ ██║ ██║███████║ ██║ ██║██╔══╝ ██╔══╝ ██╔══╝ ██║ ██║ ██║██╔══██║ ╚██████╔╝██║ ██║ ███████╗███████╗███████╗██║██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝ High-Performance LLM / VLM Inference & Autonomous Agentic Ecosystem… See the full description on the dataset page: https://huggingface.co/datasets/Brunobkr/llama.cpp_AlgMor24_github.
03.1k
1class CharInfoWord(object):2 def __init__(self, word):3 b1, b2, b3, b4 = (word >> 24,4 (word & 0xff0000) >> 16,5 (word & 0xff00) >> 8,6 word & 0xff)7 8 self.width_index = b19 self.height_index = b2 >> 410 self.depth_index = b2 & 0x0f11 self.italic_index = (b3 & 0b11111100) >> 212 self.tag = b3 & 0b1113 self.remainder = b414 15 def has_ligkern(self):16 return self.tag == 117 18 def ligkern_start(self):19 return self.remainder20 21 22class LigKernProgram(object):23 def __init__(self, program):24 self.program = program25 26 def execute(self, start, next_char):27 curr_instruction = start28 while True:29 instruction = self.program[curr_instruction]30 (skip, inst_next_char, op, remainder) = instruction31 32 if inst_next_char == next_char:33 if op < 128:34 # Don't worry about ligatures for now, we only need kerns35 return None36 else:37 return 256 * (op - 128) + remainder38 elif skip >= 128:39 return None40 else:41 curr_instruction += 1 + skip42 43 44class TfmCharMetrics(object):45 def __init__(self, width, height, depth, italic, kern_table):46 self.width = width47 self.height = height48 self.depth = depth49 self.italic_correction = italic50 self.kern_table = kern_table51 52 53class TfmFile(object):54 def __init__(self, start_char, end_char, char_info, width_table,55 height_table, depth_table, italic_table, ligkern_table,56 kern_table):57 self.start_char = start_char58 self.end_char = end_char59 self.char_info = char_info60 self.width_table = width_table61 self.height_table = height_table62 self.depth_table = depth_table63 self.italic_table = italic_table64 self.ligkern_program = LigKernProgram(ligkern_table)65 self.kern_table = kern_table66 67 def get_char_metrics(self, char_num, fix_rsfs=False):68 """Return glyph metrics for a unicode code point.69 70 Arguments:71 char_num: a unicode code point72 fix_rsfs: adjust for rsfs10.tfm's different indexing system73 """74 if char_num < self.start_char or char_num > self.end_char:75 raise RuntimeError("Invalid character number")76 77 if fix_rsfs:78 # all of the char_nums contained start from zero in rsfs10.tfm79 info = self.char_info[char_num - self.start_char]80 else:81 info = self.char_info[char_num + self.start_char]82 83 char_kern_table = {}84 if info.has_ligkern():85 for char in range(self.start_char, self.end_char + 1):86 kern = self.ligkern_program.execute(info.ligkern_start(), char)87 if kern:88 char_kern_table[char] = self.kern_table[kern]89 90 return TfmCharMetrics(91 self.width_table[info.width_index],92 self.height_table[info.height_index],93 self.depth_table[info.depth_index],94 self.italic_table[info.italic_index],95 char_kern_table)96 97 98class TfmReader(object):99 def __init__(self, f):100 self.f = f101 102 def read_byte(self):103 return ord(self.f.read(1))104 105 def read_halfword(self):106 b1 = self.read_byte()107 b2 = self.read_byte()108 return (b1 << 8) | b2109 110 def read_word(self):111 b1 = self.read_byte()112 b2 = self.read_byte()113 b3 = self.read_byte()114 b4 = self.read_byte()115 return (b1 << 24) | (b2 << 16) | (b3 << 8) | b4116 117 def read_fixword(self):118 word = self.read_word()119 120 neg = False121 if word & 0x80000000:122 neg = True123 word = (-word & 0xffffffff)124 125 return (-1 if neg else 1) * word / float(1 << 20)126 127 def read_bcpl(self, length):128 str_length = self.read_byte()129 data = self.f.read(length - 1)130 return data[:str_length]131 132 133def read_tfm_file(file_name):134 with open(file_name, 'rb') as f:135 reader = TfmReader(f)136 137 # file_size138 reader.read_halfword()139 header_size = reader.read_halfword()140 141 start_char = reader.read_halfword()142 end_char = reader.read_halfword()143 144 width_table_size = reader.read_halfword()145 height_table_size = reader.read_halfword()146 depth_table_size = reader.read_halfword()147 italic_table_size = reader.read_halfword()148 149 ligkern_table_size = reader.read_halfword()150 kern_table_size = reader.read_halfword()151 152 # extensible_table_size153 reader.read_halfword()154 # parameter_table_size155 reader.read_halfword()156 157 # checksum158 reader.read_word()159 # design_size160 reader.read_fixword()161 162 if header_size > 2:163 # coding_scheme164 reader.read_bcpl(40)165 166 if header_size > 12:167 # font_family168 reader.read_bcpl(20)169 170 for i in range(header_size - 17):171 reader.read_word()172 173 char_info = []174 for i in range(start_char, end_char + 1):175 char_info.append(CharInfoWord(reader.read_word()))176 177 width_table = []178 for i in range(width_table_size):179 width_table.append(reader.read_fixword())180 181 height_table = []182 for i in range(height_table_size):183 height_table.append(reader.read_fixword())184 185 depth_table = []186 for i in range(depth_table_size):187 depth_table.append(reader.read_fixword())188 189 italic_table = []190 for i in range(italic_table_size):191 italic_table.append(reader.read_fixword())192 193 ligkern_table = []194 for i in range(ligkern_table_size):195 skip = reader.read_byte()196 next_char = reader.read_byte()197 op = reader.read_byte()198 remainder = reader.read_byte()199 200 ligkern_table.append((skip, next_char, op, remainder))201 202 kern_table = []203 for i in range(kern_table_size):204 kern_table.append(reader.read_fixword())205 206 # There is more information, like the ligkern, kern, extensible, and207 # param table, but we don't need these for now208 209 return TfmFile(start_char, end_char, char_info, width_table,210 height_table, depth_table, italic_table,211 ligkern_table, kern_table)212 