| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import os
- from PIL import Image, ImageDraw, ImageFont
- def generate_c_data(font_size, char_width, char_height, data_name):
- try:
- font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf", font_size)
- except:
- font = ImageFont.load_default()
- chars = [chr(i) for i in range(32, 127)]
- c_data = f"const unsigned char ArkFontRobotoBold_{data_name}[] = {{\n "
-
- vals = []
- for c in chars:
- img = Image.new('L', (char_width, char_height), color=0)
- draw = ImageDraw.Draw(img)
- # Use a fixed baseline
- x = char_width * 0.1
- y = char_height * 0.8
- draw.text((x, y), c, font=font, anchor="ls", fill=255)
-
- for py in range(char_height):
- for px in range(char_width):
- pixel = img.getpixel((px, py))
- vals.append(str(pixel))
-
- # Format array
- c_data += ", ".join(vals)
- c_data += "\n};\n"
- return c_data
- c_out = ""
- c_out += generate_c_data(28, 32, 36, "data")
- c_out += "\n"
- c_out += generate_c_data(56, 64, 72, "data2x")
- c_out += "\n"
- c_out += generate_c_data(84, 96, 108, "data3x")
- c_out += "\n"
- c_out += generate_c_data(112, 128, 144, "data4x")
- c_out += "\n"
- c_out += generate_c_data(168, 192, 216, "data6x")
- with open("frameworks/ArkGraphics/ArkFontRobotoBoldData.c", "w") as f:
- f.write(c_out)
- swift_out = """//
- // Copyright 2026 Aarav
- //
- @_silgen_name("ArkFontRobotoBold_data") public var ArkFontRobotoBold_data_sym: UInt8
- @_silgen_name("ArkFontRobotoBold_data2x") public var ArkFontRobotoBold_data2x_sym: UInt8
- @_silgen_name("ArkFontRobotoBold_data3x") public var ArkFontRobotoBold_data3x_sym: UInt8
- @_silgen_name("ArkFontRobotoBold_data4x") public var ArkFontRobotoBold_data4x_sym: UInt8
- @_silgen_name("ArkFontRobotoBold_data6x") public var ArkFontRobotoBold_data6x_sym: UInt8
- public struct ArkFontRobotoBold {
- public static let charWidth = 32
- public static let charHeight = 36
- public static let charWidth2x = 64
- public static let charHeight2x = 72
- public static let charWidth3x = 96
- public static let charHeight3x = 108
- public static let charWidth4x = 128
- public static let charHeight4x = 144
- public static let charWidth6x = 192
- public static let charHeight6x = 216
- public static var data: UnsafePointer<UInt8> {
- return withUnsafePointer(to: &ArkFontRobotoBold_data_sym) { $0 }
- }
- public static var data2x: UnsafePointer<UInt8> {
- return withUnsafePointer(to: &ArkFontRobotoBold_data2x_sym) { $0 }
- }
- public static var data3x: UnsafePointer<UInt8> {
- return withUnsafePointer(to: &ArkFontRobotoBold_data3x_sym) { $0 }
- }
- public static var data4x: UnsafePointer<UInt8> {
- return withUnsafePointer(to: &ArkFontRobotoBold_data4x_sym) { $0 }
- }
- public static var data6x: UnsafePointer<UInt8> {
- return withUnsafePointer(to: &ArkFontRobotoBold_data6x_sym) { $0 }
- }
- }
- """
- with open("frameworks/ArkGraphics/ArkFontRobotoBold.swift", "w") as f:
- f.write(swift_out)
- print("Generated frameworks/ArkGraphics/ArkFontRobotoBold.swift and ArkFontRobotoBoldData.c successfully!")
|