summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
m---------tools/Tecate-bitmap-fonts0
-rwxr-xr-xtools/analyze_heap_dump.py57
m---------tools/bitmap_font0
-rwxr-xr-xtools/build_adafruit_bins.py77
-rw-r--r--tools/build_board_info.py163
-rw-r--r--tools/build_memory_info.py19
-rwxr-xr-xtools/build_release_files.py89
-rw-r--r--tools/check_translations.py4
-rw-r--r--tools/ci_new_boards_check.py51
-rwxr-xr-xtools/codestats.sh2
-rw-r--r--tools/convert_release_notes.py65
-rw-r--r--tools/cpboard.py357
-rw-r--r--[-rwxr-xr-x]tools/dfu.py84
-rw-r--r--tools/extract_pyi.py83
-rw-r--r--tools/fixup_translations.py85
-rw-r--r--tools/fonts/ter-u12n.bdf25240
-rw-r--r--tools/gc_activity.md2
-rw-r--r--tools/gc_activity_between_collects.py141
-rw-r--r--tools/gen_display_resources.py199
-rwxr-xr-xtools/gen_ld_files.py60
-rw-r--r--tools/gen_usb_descriptor.py355
-rwxr-xr-xtools/git-checkout-latest-tag.sh3
-rw-r--r--tools/hid_report_descriptors.py467
-rw-r--r--tools/join_bins.py20
-rw-r--r--tools/output_gc_until_repl.txt15
-rwxr-xr-xtools/preprocess_frozen_modules.py6
-rwxr-xr-xtools/print_status.py15
-rwxr-xr-xtools/tinytest-codegen.py8
m---------tools/uf20
m---------tools/usb_descriptor0
30 files changed, 27013 insertions, 654 deletions
diff --git a/tools/Tecate-bitmap-fonts b/tools/Tecate-bitmap-fonts
new file mode 160000
+Subproject 6f52a7ca0838967cc57e9a44d76c6e1f60e6284
diff --git a/tools/analyze_heap_dump.py b/tools/analyze_heap_dump.py
index 31202c23e..b8f2bd011 100755
--- a/tools/analyze_heap_dump.py
+++ b/tools/analyze_heap_dump.py
@@ -162,7 +162,31 @@ def do_all_the_things(ram_filename, bin_filename, map_filename, print_block_cont
def load_pointer(address):
return struct.unpack("<I", load(address))[0]
- heap_start, heap_size = symbols["heap"]
+ if "heap" in symbols:
+ heap_start, heap_size = symbols["heap"]
+ else:
+ print("no static heap")
+ allocations_start, allocations_size = symbols["allocations"]
+ allocations = load(allocations_start, allocations_size)
+ first_zero = True
+ potential_heap = None
+ # The heap is the last left hand allocated section that should span all the way to the
+ # right side list.
+ for address, size in struct.iter_unpack("<II", allocations):
+ print(address, size)
+ if address == 0 and first_zero:
+ first_zero = False
+ if first_zero:
+ potential_heap = (address, size)
+
+ if not first_zero and address != 0:
+ if address != potential_heap[0] + potential_heap[1]:
+ print("no active heap")
+ return
+ else:
+ heap_start, heap_size = potential_heap
+ break
+ print("found heap", heap_start, heap_size)
heap = load(heap_start, heap_size)
total_byte_len = len(heap)
@@ -170,16 +194,18 @@ def do_all_the_things(ram_filename, bin_filename, map_filename, print_block_cont
mp_state_ctx = symbols["mp_state_ctx"][0]
manual_symbol_map["mp_state_ctx+20"] = "mp_state_ctx.vm.last_pool"
last_pool = load_pointer(mp_state_ctx + 20) # (gdb) p &mp_state_ctx.vm.last_pool
- manual_symbol_map["mp_state_ctx+104"] = "mp_state_ctx.vm.dict_main.map.table"
- dict_main_table = load_pointer(mp_state_ctx + 104) # (gdb) p &mp_state_ctx.vm.dict_main.map.table
+ manual_symbol_map["mp_state_ctx+108"] = "mp_state_ctx.vm.dict_main.map.table"
+ dict_main_table = load_pointer(mp_state_ctx + 108) # (gdb) p &mp_state_ctx.vm.dict_main.map.table
manual_symbol_map["mp_state_ctx+84"] = "mp_state_ctx.vm.mp_loaded_modules_dict.map.table"
imports_table = load_pointer(mp_state_ctx + 84) # (gdb) p &mp_state_ctx.vm.mp_loaded_modules_dict.map.table
- manual_symbol_map["mp_state_ctx+120"] = "mp_state_ctx.vm.mp_sys_path_obj.items"
- manual_symbol_map["mp_state_ctx+136"] = "mp_state_ctx.vm.mp_sys_argv_obj.items"
+ manual_symbol_map["mp_state_ctx+124"] = "mp_state_ctx.vm.mp_sys_path_obj.items"
+ manual_symbol_map["mp_state_ctx+140"] = "mp_state_ctx.vm.mp_sys_argv_obj.items"
+ manual_symbol_map["mp_state_ctx+96"] = "mp_state_ctx.vm.dict_main"
+ manual_symbol_map["0x200015e0"] = "mp_state_ctx.vm.dict_main"
for i in range(READLINE_HIST_SIZE):
- manual_symbol_map["mp_state_ctx+{}".format(144 + i * 4)] = "mp_state_ctx.vm.readline_hist[{}]".format(i)
+ manual_symbol_map["mp_state_ctx+{}".format(148 + i * 4)] = "mp_state_ctx.vm.readline_hist[{}]".format(i)
tuple_type = symbols["mp_type_tuple"][0]
type_type = symbols["mp_type_type"][0]
@@ -192,6 +218,8 @@ def do_all_the_things(ram_filename, bin_filename, map_filename, print_block_cont
dynamic_type = 0x40000000 # placeholder, doesn't match any memory
+ long_lived_start = load_pointer(mp_state_ctx + 272) # (gdb) p &mp_state_ctx.mem.gc_lowest_long_lived_ptr
+
type_colors = {
dict_type: "red",
property_type: "yellow",
@@ -252,9 +280,14 @@ def do_all_the_things(ram_filename, bin_filename, map_filename, print_block_cont
table = "<<table bgcolor=\"gray\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\"><tr><td colspan=\"4\" port=\"0\" height=\"18\" width=\"80\">0x{:08x}</td></tr>{}</table>>".format(address, rows)
ownership_graph.add_node(address, label=table, style="invisible", shape="plaintext")
+ print("add 0x{:08x}".format(address))
potential_type = None
node = ownership_graph.get_node(address)
node.attr["height"] = 0.25 * current_allocation
+ if address >= long_lived_start:
+ node.attr["fontcolor"] = "hotpink"
+ else:
+ node.attr["fontcolor"] = "black"
block_data[address] = data
for k in range(len(data) // 4):
word = struct.unpack_from("<I", data, offset=(k * 4))[0]
@@ -270,6 +303,7 @@ def do_all_the_things(ram_filename, bin_filename, map_filename, print_block_cont
bgcolor = type_colors[potential_type]
elif print_unknown_types:
print("unknown type", hex(potential_type))
+
node.attr["label"] = "<" + node.attr["label"].replace("\"gray\"", "\"" + bgcolor + "\"") + ">"
if potential_type == str_type and k == 3:
@@ -285,7 +319,7 @@ def do_all_the_things(ram_filename, bin_filename, map_filename, print_block_cont
if k < 4:
port = 0
ownership_graph.add_edge(address, word, tailport=str(port)+":_")
- #print(" 0x{:08x}".format(word))
+ print(" 0x{:08x}".format(word))
if address in qstr_pools:
if k > 0:
qstr_chunks.append(word)
@@ -421,6 +455,7 @@ def do_all_the_things(ram_filename, bin_filename, map_filename, print_block_cont
node.attr["label"] = "<<table bgcolor=\"gold\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\"><tr><td colspan=\"2\">0x{:08x}</td></tr>{}</table>>".format(block, rows)
for node, degree in ownership_graph.in_degree_iter():
+ print(node, degree)
if degree == 0:
address_bytes = struct.pack("<I", int(node))
location = -1
@@ -434,6 +469,8 @@ def do_all_the_things(ram_filename, bin_filename, map_filename, print_block_cont
source = manual_symbol_map[source]
if "readline_hist" in source:
string_blocks.append(int(node))
+ if pointer_location > heap_start + heap_size:
+ source = "stack " + source
ownership_graph.add_edge(source, node)
for block in string_blocks:
@@ -517,7 +554,11 @@ def do_all_the_things(ram_filename, bin_filename, map_filename, print_block_cont
wrapped.append(html.escape(printable_qstrs[i:i+16]))
node = ownership_graph.get_node(block)
node.attr["label"] = "<<table border=\"1\" cellspacing=\"0\" bgcolor=\"lightsalmon\" width=\"80\"><tr><td height=\"18\" >0x{:08x}</td></tr><tr><td height=\"{}\" >{}</td></tr></table>>".format(block, 18 * (len(wrapped) - 1), "<br/>".join(wrapped))
- node.attr["fontname"] = "FiraCode-Medium"
+ node.attr["fontname"] = "FiraCode-Bold"
+ if block >= long_lived_start:
+ node.attr["fontcolor"] = "hotpink"
+ else:
+ node.attr["fontcolor"] = "black"
node.attr["fontpath"] = "/Users/tannewt/Library/Fonts/"
node.attr["fontsize"] = 8
diff --git a/tools/bitmap_font b/tools/bitmap_font
new file mode 160000
+Subproject 62dd78abdd0b823824fe15d1bab0611246145c2
diff --git a/tools/build_adafruit_bins.py b/tools/build_adafruit_bins.py
deleted file mode 100755
index 94c31ad33..000000000
--- a/tools/build_adafruit_bins.py
+++ /dev/null
@@ -1,77 +0,0 @@
-import os
-from sh import rm
-from sh import make
-import sys
-import subprocess
-import shutil
-import build_board_info as build_info
-import time
-
-for port in build_info.SUPPORTED_PORTS:
- rm("-rf", "../ports/{}/build*".format(port))
-
-ROSIE_SETUPS = ["rosie-ci"]
-rosie_ok = {}
-for rosie in ROSIE_SETUPS:
- rosie_ok[rosie] = True
-
-PARALLEL = "-j 5"
-travis = False
-if "TRAVIS" in os.environ and os.environ["TRAVIS"] == "true":
- PARALLEL="-j 2"
- travis = True
-
-all_boards = build_info.get_board_mapping()
-build_boards = list(all_boards.keys())
-if "TRAVIS_BOARDS" in os.environ:
- build_boards = os.environ["TRAVIS_BOARDS"].split()
-
-sha, version = build_info.get_version_info()
-
-languages = build_info.get_languages()
-exit_status = 0
-for board in build_boards:
- bin_directory = "../bin/{}/".format(board)
- os.makedirs(bin_directory, exist_ok=True)
- board_info = all_boards[board]
-
- for language in languages:
- start_time = time.monotonic()
- make_result = subprocess.run("make -C ../ports/" + board_info["port"] + " TRANSLATION=" + language + " BOARD=" + board, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- build_duration = time.monotonic() - start_time
- success = "\033[32msucceeded\033[0m"
- if make_result.returncode != 0:
- exit_status = make_result.returncode
- success = "\033[31mfailed\033[0m"
-
- other_output = ""
-
- for extension in board_info["extensions"]:
- temp_filename = "../ports/{port}/build-{board}/firmware.{extension}".format(port=board_info["port"], board=board, extension=extension)
- final_filename = "adafruit-circuitpython-{board}-{language}-{version}.{extension}".format(board=board, language=language, version=version, extension=extension)
- final_filename = os.path.join(bin_directory, final_filename)
- try:
- shutil.copyfile(temp_filename, final_filename)
- except FileNotFoundError:
- other_output = "Cannot find file {}".format(temp_filename)
- if exit_status == 0:
- exit_status = 1
-
- if travis:
- print('travis_fold:start:adafruit-bins-{}-{}\\r'.format(language, board))
- print("Build {} for {} took {:.2f}s and {}".format(board, language, build_duration, success))
- print(make_result.stdout.decode("utf-8"))
- print(other_output)
- # Only upload to Rosie if its a pull request.
- if travis:
- for rosie in ROSIE_SETUPS:
- if not rosie_ok[rosie]:
- break
- print("Uploading to https://{rosie}.ngrok.io/upload/{sha}".format(rosie=rosie, sha=sha))
- #curl -F "file=@$final_filename" https://$rosie.ngrok.io/upload/$sha
- if travis:
- print('travis_fold:end:adafruit-bins-{}-{}\\r'.format(language, board))
-
- print()
-
-sys.exit(exit_status)
diff --git a/tools/build_board_info.py b/tools/build_board_info.py
index 0e9389a02..443302330 100644
--- a/tools/build_board_info.py
+++ b/tools/build_board_info.py
@@ -12,30 +12,59 @@ from sh.contrib import git
sys.path.append("adabot")
import adabot.github_requests as github
-SUPPORTED_PORTS = ["nrf", "esp8266", "atmel-samd"]
+SUPPORTED_PORTS = ["atmel-samd", "cxd56", "esp32s2", "litex", "mimxrt10xx", "nrf", "stm"]
BIN = ('bin',)
UF2 = ('uf2',)
BIN_UF2 = ('bin', 'uf2')
HEX = ('hex',)
+HEX_UF2 = ('hex', 'uf2')
+SPK = ('spk',)
+DFU = ('dfu',)
+BIN_DFU = ('bin', 'dfu')
+
+# Example:
+# https://downloads.circuitpython.org/bin/trinket_m0/en_US/adafruit-circuitpython-trinket_m0-en_US-5.0.0-rc.0.uf2
+DOWNLOAD_BASE_URL = "https://downloads.circuitpython.org/bin"
# Default extensions
extension_by_port = {
- "nrf": BIN,
- "esp8266": BIN,
+ "nrf": UF2,
"atmel-samd": UF2,
+ "stm": BIN,
+ "cxd56": SPK,
+ "mimxrt10xx": HEX_UF2,
+ "litex": DFU,
+ "esp32s2": BIN
}
# Per board overrides
extension_by_board = {
- "feather_nrf52832": BIN,
- "arduino_mkr1300": BIN,
- "arduino_zero": BIN,
+ # samd
+ "arduino_mkr1300": BIN_UF2,
+ "arduino_mkrzero": BIN_UF2,
+ "arduino_nano_33_iot": BIN_UF2,
+ "arduino_zero": BIN_UF2,
"feather_m0_adalogger": BIN_UF2,
"feather_m0_basic": BIN_UF2,
- "feather_m0_rfm69": BIN,
- "feather_m0_rfm9x": BIN,
- "makerdiary_nrf52840_mdk": HEX
+ "feather_m0_rfm69": BIN_UF2,
+ "feather_m0_rfm9x": BIN_UF2,
+ "uchip": BIN_UF2,
+
+ # nRF52840 dev kits that may not have UF2 bootloaders,
+ "makerdiary_nrf52840_mdk": HEX,
+ "makerdiary_nrf52840_mdk_usb_dongle": HEX_UF2,
+ "pca10056": BIN_UF2,
+ "pca10059": BIN_UF2,
+ "electronut_labs_blip": HEX
+}
+
+aliases_by_board = {
+ "circuitplayground_express": ["circuitplayground_express_4h", "circuitplayground_express_digikey_pycon2019"],
+ "pybadge": ["edgebadge"],
+ "pyportal": ["pyportal_pynt"],
+ "gemma_m0": ["gemma_m0_pycon2018"],
+ "pewpew10": ["pewpew13"]
}
def get_languages():
@@ -55,22 +84,30 @@ def get_board_mapping():
board_id = board_path.name
extensions = extension_by_port[port]
extensions = extension_by_board.get(board_path.name, extensions)
- boards[board_id] = {"port": port, "extensions": extensions, "download_count": 0}
+ aliases = aliases_by_board.get(board_path.name, [])
+ boards[board_id] = {"port": port,
+ "extensions": extensions,
+ "download_count": 0,
+ "aliases": aliases}
+ for alias in aliases:
+ boards[alias] = {"port": port,
+ "extensions": extensions,
+ "download_count": 0,
+ "alias": True,
+ "aliases": []}
return boards
def get_version_info():
version = None
sha = git("rev-parse", "--short", "HEAD").stdout.decode("utf-8")
try:
- version = git("describe", "--tags", "--exact-match").stdout.decode("utf-8")
+ version = git("describe", "--tags", "--exact-match").stdout.decode("utf-8").strip()
except sh.ErrorReturnCode_128:
# No exact match
pass
- if "TRAVIS" in os.environ and os.environ["TRAVIS"] == "true":
- sha = os.environ["TRAVIS_COMMIT"]
- if os.environ["TRAVIS_PULL_REQUEST"] != "false":
- sha = os.environ["TRAVIS_PULL_REQUEST_SHA"]
+ if "GITHUB_SHA" in os.environ:
+ sha = os.environ["GITHUB_SHA"]
if not version:
version="{}-{}".format(date.today().strftime("%Y%m%d"), sha[:7])
@@ -92,14 +129,26 @@ def get_current_info():
response = response.json()
git_info = commit_sha, response["sha"]
- return git_info, json.loads(base64.b64decode(response["content"]).decode("utf-8"))
+ current_list = json.loads(base64.b64decode(response["content"]).decode("utf-8"))
+ current_info = {}
+ for info in current_list:
+ current_info[info["id"]] = info
+ return git_info, current_info
-def create_pr(changes, updated, git_info):
+def create_pr(changes, updated, git_info, user):
commit_sha, original_blob_sha = git_info
branch_name = "new_release_" + changes["new_release"]
- updated = json.dumps(updated, sort_keys=True, indent=4).encode("utf-8") + b"\n"
- print(updated.decode("utf-8"))
+ # Convert the dictionary to a list of boards. Liquid templates only handle arrays.
+ updated_list = []
+ all_ids = sorted(updated.keys())
+ for id in all_ids:
+ info = updated[id]
+ info["id"] = id
+ updated_list.append(info)
+
+ updated = json.dumps(updated_list, sort_keys=True, indent=4).encode("utf-8") + b"\n"
+ #print(updated.decode("utf-8"))
pr_title = "Automated website update for release {}".format(changes["new_release"])
boards = ""
if changes["new_boards"]:
@@ -107,7 +156,7 @@ def create_pr(changes, updated, git_info):
languages = ""
if changes["new_languages"]:
languages = "New languages:\n* " + "\n* ".join(changes["new_languages"])
- message = "Automated website update for release {} by AdaBot.\n\n{}\n\n{}\n".format(
+ message = "Automated website update for release {} by Blinka.\n\n{}\n\n{}\n".format(
changes["new_release"],
boards,
languages
@@ -117,7 +166,7 @@ def create_pr(changes, updated, git_info):
"ref": "refs/heads/" + branch_name,
"sha": commit_sha
}
- response = github.post("/repos/adafruit-adabot/circuitpython-org/git/refs", json=create_branch)
+ response = github.post("/repos/{}/circuitpython-org/git/refs".format(user), json=create_branch)
if not response.ok and response.json()["message"] != "Reference already exists":
print("unable to create branch")
print(response.text)
@@ -130,14 +179,14 @@ def create_pr(changes, updated, git_info):
"branch": branch_name
}
- response = github.put("/repos/adafruit-adabot/circuitpython-org/contents/_data/files.json", json=update_file)
+ response = github.put("/repos/{}/circuitpython-org/contents/_data/files.json".format(user), json=update_file)
if not response.ok:
print("unable to post new file")
print(response.text)
return
pr_info = {
"title": pr_title,
- "head": "adafruit-adabot:" + branch_name,
+ "head": user + ":" + branch_name,
"base": "master",
"body": message,
"maintainer_can_modify": True
@@ -158,21 +207,27 @@ def update_downloads(boards, release):
assets = response.json()["assets"]
for asset in assets:
- boards[asset["name"].split("-")[2]]["download_count"] += asset["download_count"]
+ board_name = asset["name"].split("-")[2]
+ if board_name not in boards:
+ continue
+ boards[board_name]["download_count"] += asset["download_count"]
def print_active_user():
response = github.get("/user")
if response.ok:
- print("Logged in as {}".format(response.json()["login"]))
+ user = response.json()["login"]
+ print("Logged in as {}".format(user))
+ return user
else:
print("Not logged in")
+ return None
def generate_download_info():
boards = {}
errors = []
- new_tag = os.environ["TRAVIS_TAG"]
+ new_tag = os.environ["RELEASE_TAG"]
changes = {
"new_release": new_tag,
@@ -180,7 +235,7 @@ def generate_download_info():
"new_languages": []
}
- print_active_user()
+ user = print_active_user()
sha, this_version = get_version_info()
@@ -204,7 +259,6 @@ def generate_download_info():
board_mapping = get_board_mapping()
- print(previous_releases)
for release in previous_releases:
update_downloads(board_mapping, release)
@@ -212,35 +266,46 @@ def generate_download_info():
board_path = os.path.join("../ports", port, "boards")
for board_path in os.scandir(board_path):
if board_path.is_dir():
- board_files = os.listdir(board_path)
+ board_files = os.listdir(board_path.path)
board_id = board_path.name
board_info = board_mapping[board_id]
- if board_id not in current_info:
- changes["new_boards"].append(board_id)
- current_info[board_id] = {"downloads": 0,
- "versions": []}
-
- new_version = {
- "stable": new_stable,
- "version": new_tag,
- "files": {}
- }
- for language in languages:
- files = []
- new_version["files"][language] = files
- for extension in board_info["extensions"]:
- files.append("https://github.com/adafruit/circuitpython/releases/download/{tag}/adafruit-circuitpython-{board}-{language}-{tag}.{extension}".format(tag=new_tag, board=board_id, language=language, extension=extension))
- current_info[board_id]["downloads"] = board_info["download_count"]
- current_info[board_id]["versions"].append(new_version)
+ for alias in [board_id] + board_info["aliases"]:
+ alias_info = board_mapping[alias]
+ if alias not in current_info:
+ changes["new_boards"].append(alias)
+ current_info[alias] = {"downloads": 0,
+ "versions": []}
+
+ new_version = {
+ "stable": new_stable,
+ "version": new_tag,
+ "files": {}
+ }
+ for language in languages:
+ files = []
+ new_version["files"][language] = files
+ for extension in board_info["extensions"]:
+ files.append(
+ "{base_url}/{alias}/{language}/adafruit-circuitpython-{alias}-{language}-{tag}.{extension}"
+ .format(
+ base_url=DOWNLOAD_BASE_URL,
+ tag=new_tag,
+ alias=alias,
+ language=language,
+ extension=extension))
+ current_info[alias]["downloads"] = alias_info["download_count"]
+ current_info[alias]["versions"].append(new_version)
changes["new_languages"] = set(languages) - previous_languages
- if changes["new_languages"]:
- create_pr(changes, current_info, git_info)
+ if changes["new_release"] and user:
+ create_pr(changes, current_info, git_info, user)
+ else:
+ print("No new release to update")
if __name__ == "__main__":
- if "TRAVIS_TAG" in os.environ and os.environ["TRAVIS_TAG"]:
+ if "RELEASE_TAG" in os.environ and os.environ["RELEASE_TAG"]:
generate_download_info()
else:
print("skipping website update because this isn't a tag")
diff --git a/tools/build_memory_info.py b/tools/build_memory_info.py
index a8f84bbb6..808b70bd2 100644
--- a/tools/build_memory_info.py
+++ b/tools/build_memory_info.py
@@ -41,6 +41,8 @@ data = 0
bss = 0
# stdin is the linker output.
for line in sys.stdin:
+ # Uncomment to see linker output.
+ # print(line)
line = line.strip()
if not line.startswith("text"):
text, data, bss = map(int, line.split()[:3])
@@ -50,7 +52,7 @@ regions = {}
with open(sys.argv[1], "r") as f:
for line in f:
line = line.strip()
- if line.startswith(("FLASH", "RAM")):
+ if line.startswith(("FLASH_FIRMWARE", "RAM")):
regions[line.split()[0]] = line.split("=")[-1]
for region in regions:
@@ -59,12 +61,17 @@ for region in regions:
space = space.split("/*")[0]
space = K_PATTERN.sub(K_REPLACE, space)
space = M_PATTERN.sub(M_REPLACE, space)
- regions[region] = eval(space)
+ regions[region] = int(eval(space))
-free_flash = regions["FLASH"] - text - data
-free_ram = regions["RAM"] - data - bss
-print(free_flash, "bytes free in flash out of", regions["FLASH"], "bytes (", regions["FLASH"] / 1024, "kb ).")
-print(free_ram, "bytes free in ram for stack out of", regions["RAM"], "bytes (", regions["RAM"] / 1024, "kb ).")
+firmware_region = regions["FLASH_FIRMWARE"]
+ram_region = regions["RAM"]
+
+used_flash = data + text
+free_flash = firmware_region - used_flash
+used_ram = data + bss
+free_ram = ram_region - used_ram
+print("{} bytes used, {} bytes free in flash firmware space out of {} bytes ({}kB).".format(used_flash, free_flash, firmware_region, firmware_region / 1024))
+print("{} bytes used, {} bytes free in ram for stack and heap out of {} bytes ({}kB).".format(used_ram, free_ram, ram_region, ram_region / 1024))
print()
# Check that we have free flash space. GCC doesn't fail when the text + data
diff --git a/tools/build_release_files.py b/tools/build_release_files.py
new file mode 100755
index 000000000..09133e51f
--- /dev/null
+++ b/tools/build_release_files.py
@@ -0,0 +1,89 @@
+#! /usr/bin/env python3
+
+import os
+import sys
+import subprocess
+import shutil
+import build_board_info as build_info
+import time
+
+for port in build_info.SUPPORTED_PORTS:
+ result = subprocess.run("rm -rf ../ports/{port}/build*".format(port=port), shell=True)
+
+PARALLEL = "-j 5"
+if "GITHUB_ACTION" in os.environ:
+ PARALLEL="-j 2"
+
+all_boards = build_info.get_board_mapping()
+build_boards = list(all_boards.keys())
+if "BOARDS" in os.environ:
+ build_boards = os.environ["BOARDS"].split()
+
+sha, version = build_info.get_version_info()
+
+languages = build_info.get_languages()
+exit_status = 0
+for board in build_boards:
+ bin_directory = "../bin/{}/".format(board)
+ os.makedirs(bin_directory, exist_ok=True)
+ board_info = all_boards[board]
+
+ for language in languages:
+ bin_directory = "../bin/{board}/{language}".format(board=board, language=language)
+ os.makedirs(bin_directory, exist_ok=True)
+ start_time = time.monotonic()
+
+ # Normally different language builds are all done based on the same set of compiled sources.
+ # But sometimes a particular language needs to be built from scratch, if, for instance,
+ # CFLAGS_INLINE_LIMIT is set for a particular language to make it fit.
+ clean_build_check_result = subprocess.run(
+ "make -C ../ports/{port} TRANSLATION={language} BOARD={board} check-release-needs-clean-build | fgrep 'RELEASE_NEEDS_CLEAN_BUILD = 1'".format(
+ port = board_info["port"], language=language, board=board),
+ shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ clean_build = clean_build_check_result.returncode == 0
+
+ build_dir = "build-{board}".format(board=board)
+ if clean_build:
+ build_dir += "-{language}".format(language=language)
+
+ make_result = subprocess.run(
+ "make -C ../ports/{port} TRANSLATION={language} BOARD={board} BUILD={build}".format(
+ port = board_info["port"], language=language, board=board, build=build_dir),
+ shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+
+ build_duration = time.monotonic() - start_time
+ success = "\033[32msucceeded\033[0m"
+ if make_result.returncode != 0:
+ exit_status = make_result.returncode
+ success = "\033[31mfailed\033[0m"
+
+ other_output = ""
+
+ for extension in board_info["extensions"]:
+ temp_filename = "../ports/{port}/{build}/firmware.{extension}".format(
+ port=board_info["port"], build=build_dir, extension=extension)
+ for alias in board_info["aliases"] + [board]:
+ bin_directory = "../bin/{alias}/{language}".format(
+ alias=alias, language=language)
+ os.makedirs(bin_directory, exist_ok=True)
+ final_filename = "adafruit-circuitpython-{alias}-{language}-{version}.{extension}".format(
+ alias=alias, language=language, version=version, extension=extension)
+ final_filename = os.path.join(bin_directory, final_filename)
+ try:
+ shutil.copyfile(temp_filename, final_filename)
+ except FileNotFoundError:
+ other_output = "Cannot find file {}".format(temp_filename)
+ if exit_status == 0:
+ exit_status = 1
+
+ print("Build {board} for {language}{clean_build} took {build_duration:.2f}s and {success}".format(
+ board=board, language=language, clean_build=(" (clean_build)" if clean_build else ""),
+ build_duration=build_duration, success=success))
+
+ print(make_result.stdout.decode("utf-8"))
+ print(other_output)
+
+ # Flush so we will see something before 10 minutes has passed.
+ print(flush=True)
+
+sys.exit(exit_status)
diff --git a/tools/check_translations.py b/tools/check_translations.py
index 4bea040bf..7c008d3da 100644
--- a/tools/check_translations.py
+++ b/tools/check_translations.py
@@ -16,8 +16,10 @@ for po_filename in po_filenames:
po_file = polib.pofile(po_filename)
po_ids = set([x.msgid for x in po_file])
- if all_ids - po_ids:
+ missing = all_ids - po_ids
+ if missing:
print("Missing message id. Please run `make translate`")
+ print(missing)
sys.exit(-1)
else:
print("ok")
diff --git a/tools/ci_new_boards_check.py b/tools/ci_new_boards_check.py
new file mode 100644
index 000000000..8bb8876fb
--- /dev/null
+++ b/tools/ci_new_boards_check.py
@@ -0,0 +1,51 @@
+#! /usr/bin/env python3
+
+import sys
+import os
+import json
+import yaml
+
+import build_board_info
+
+workflow_file = '.github/workflows/build.yml'
+
+# Get boards in json format
+boards_info_json = build_board_info.get_board_mapping()
+
+# Get all the boards out of the json format
+info_boards = [board for board in boards_info_json.keys() if not boards_info_json[board].get("alias", False)]
+
+# We need to know the path of the workflow file
+base_path = os.path.dirname(__file__)
+yml_path = os.path.abspath(os.path.join(base_path, '..', workflow_file))
+
+# Loading board list based on build jobs in the workflow file.
+ci_boards = []
+with open(yml_path, "r") as f:
+ workflow = yaml.safe_load(f)
+
+ok = True
+for job in workflow["jobs"]:
+ if not job.startswith("build"):
+ continue
+ job_boards = workflow["jobs"][job]["strategy"]["matrix"]["board"]
+ if job_boards != sorted(job_boards):
+ print("Boards for job \"{}\" not sorted. Must be:".format(job))
+ print(" - \"" + "\"\n - \"".join(sorted(job_boards)) + "\"")
+ ok = False
+ ci_boards.extend(job_boards)
+
+# All the travis_boards elements must be on info_boards
+info_boards.sort()
+ci_boards.sort()
+
+missing_boards = set(info_boards) - set(ci_boards)
+
+if missing_boards:
+ ok = False
+ print('Boards missing in {}:'.format(workflow_file))
+ for board in missing_boards:
+ print(board)
+
+if not ok:
+ sys.exit(1)
diff --git a/tools/codestats.sh b/tools/codestats.sh
index 09284a30d..d33db973b 100755
--- a/tools/codestats.sh
+++ b/tools/codestats.sh
@@ -116,7 +116,7 @@ index 77d2945..dae0644 100644
@@ -55,10 +55,8 @@ void msec_sleep_tv(struct timeval *tv) {
#define MP_CLOCKS_PER_SEC CLOCKS_PER_SEC
#endif
-
+
-#if defined(MP_CLOCKS_PER_SEC) && (MP_CLOCKS_PER_SEC == 1000000) // POSIX
-#define CLOCK_DIV 1000.0
-#elif defined(MP_CLOCKS_PER_SEC) && (MP_CLOCKS_PER_SEC == 1000) // WIN32
diff --git a/tools/convert_release_notes.py b/tools/convert_release_notes.py
new file mode 100644
index 000000000..649184102
--- /dev/null
+++ b/tools/convert_release_notes.py
@@ -0,0 +1,65 @@
+import sys
+import mistune
+
+print(sys.argv[1])
+
+with open(sys.argv[1], "r") as source_file:
+ source = source_file.read()
+
+html = mistune.Markdown()
+
+print()
+print("HTML")
+print("=====================================")
+print("From the <a href=\"\">GitHub release page</a>:\n<blockquote>")
+print(html(source))
+print("</blockquote>")
+
+class AdafruitBBCodeRenderer:
+ def __init__(self, **kwargs):
+ self.options = kwargs
+
+ def placeholder(self):
+ return ''
+
+ def paragraph(self, text):
+ return text + "\n\n"
+
+ def text(self, text):
+ return text
+
+ def link(self, link, title, text):
+ return "[url={}]{}[/url]".format(link, text)
+
+ def autolink(self, link, is_email):
+ if not is_email:
+ return "[url={}]{}[/url]".format(link, link)
+ return link
+
+ def header(self, text, level, raw):
+ return "[b][size=150]{}[/size][/b]\n".format(text)
+
+ def codespan(self, text):
+ return "[color=#E74C3C][size=95]{}[/size][/color]".format(text)
+
+ def list_item(self, text):
+ return "[*]{}[/*]\n".format(text.strip())
+
+ def list(self, body, ordered=True):
+ ordered_indicator = "=" if ordered else ""
+ return "[list{}]\n{}[/list]".format(ordered_indicator, body)
+
+ def double_emphasis(self, text):
+ return "[b]{}[/b]".format(text)
+
+ def emphasis(self, text):
+ return "[b]{}[/b]".format(text)
+
+bbcode = mistune.Markdown(renderer=AdafruitBBCodeRenderer())
+
+print()
+print("BBCode")
+print("=====================================")
+print("From the [url=]GitHub release page[/url]:\n[quote]")
+print(bbcode(source))
+print("[/quote]")
diff --git a/tools/cpboard.py b/tools/cpboard.py
index 0b9c43c61..7769cb4f4 100644
--- a/tools/cpboard.py
+++ b/tools/cpboard.py
@@ -39,27 +39,34 @@ import serial.tools.list_ports
import sh
import shutil
+
class CPboardError(BaseException):
pass
+
# supervisor/messages/default.h:
MSG_NEWLINE = b"\r\n"
MSG_SAFE_MODE_CRASH = b"Looks like our core CircuitPython code crashed hard. Whoops!"
-MSG_SAFE_MODE_BROWN_OUT_LINE_1 = b"The microcontroller's power dipped. Please make sure your power supply provides"
-MSG_SAFE_MODE_BROWN_OUT_LINE_2 = b"enough power for the whole circuit and press reset (after ejecting CIRCUITPY)."
+MSG_SAFE_MODE_BROWN_OUT_LINE_1 = (
+ b"The microcontroller's power dipped. Please make sure your power supply provides"
+)
+MSG_SAFE_MODE_BROWN_OUT_LINE_2 = (
+ b"enough power for the whole circuit and press reset (after ejecting CIRCUITPY)."
+)
MSG_WAIT_BEFORE_REPL = b"Press any key to enter the REPL. Use CTRL-D to reload."
+
class REPL:
- CHAR_CTRL_A = b'\x01'
- CHAR_CTRL_B = b'\x02'
- CHAR_CTRL_C = b'\x03'
- CHAR_CTRL_D = b'\x04'
+ CHAR_CTRL_A = b"\x01"
+ CHAR_CTRL_B = b"\x02"
+ CHAR_CTRL_C = b"\x03"
+ CHAR_CTRL_D = b"\x04"
def __init__(self, board):
self.board = board
self.write_chunk_size = 32
self.safe_mode = False
- self.session = b''
+ self.session = b""
def __enter__(self):
self.reset()
@@ -73,20 +80,20 @@ class REPL:
return self.board.serial
def read(self):
- if self.serial.inWaiting():
- data = self.serial.read(self.serial.inWaiting())
+ if self.serial.in_waiting:
+ data = self.serial.read(self.serial.in_waiting)
else:
- data = b''
+ data = b""
self.session += data
return data
def read_until(self, ending, timeout=10):
- data = b''
+ data = b""
timeout_count = 0
while True:
if data.endswith(ending):
break
- elif self.serial.inWaiting() > 0:
+ elif self.serial.in_waiting > 0:
new_data = self.serial.read(1)
data += new_data
self.session += new_data
@@ -102,10 +109,10 @@ class REPL:
if chunk_size is None:
chunk_size = self.write_chunk_size
if not isinstance(data, bytes):
- data = bytes(data, encoding='utf8')
+ data = bytes(data, encoding="utf8")
for i in range(0, len(data), chunk_size):
- chunk = data[i:min(i + chunk_size, len(data))]
+ chunk = data[i : min(i + chunk_size, len(data))]
self.session += chunk
self.serial.write(chunk)
time.sleep(0.01)
@@ -113,28 +120,30 @@ class REPL:
def reset(self):
# Use read() since serial.reset_input_buffer() fails with termios.error now and then
self.read()
- self.session = b''
- self.write(b'\r' + REPL.CHAR_CTRL_C + REPL.CHAR_CTRL_C) # interrupt any running program
- self.write(b'\r' + REPL.CHAR_CTRL_B) # enter or reset friendly repl
- data = self.read_until(b'>>> ')
+ self.session = b""
+ self.write(
+ b"\r" + REPL.CHAR_CTRL_C + REPL.CHAR_CTRL_C
+ ) # interrupt any running program
+ self.write(b"\r" + REPL.CHAR_CTRL_B) # enter or reset friendly repl
+ data = self.read_until(b">>> ")
- def execute(self, code, timeout=10, async=False):
- self.read() # Throw away
+ def execute(self, code, timeout=10, wait_for_response=True):
+ self.read() # Throw away
self.write(REPL.CHAR_CTRL_A)
- self.read_until(b'\r\n>')
+ self.read_until(b"\r\n>")
self.write(code)
self.write(REPL.CHAR_CTRL_D)
- if async:
- return b'', b''
- self.read_until(b'OK')
+ if not wait_for_response:
+ return b"", b""
+ self.read_until(b"OK")
- output = self.read_until(b'\x04', timeout=timeout)
+ output = self.read_until(b"\x04", timeout=timeout)
output = output[:-1]
- error = self.read_until(b'\x04')
+ error = self.read_until(b"\x04")
error = error[:-1]
return output, error
@@ -146,8 +155,8 @@ class REPL:
self.reset()
self.write(REPL.CHAR_CTRL_D)
- data = self.read_until(b' output:\r\n')
- if b'Running in safe mode' in data:
+ data = self.read_until(b" output:\r\n")
+ if b"Running in safe mode" in data:
self.safe_mode = True
raise RuntimeError("Can't run in safe mode")
@@ -159,7 +168,7 @@ class REPL:
data = data.split(marker)[0]
# Haven't found out why we have to strip off this...
- if data.endswith(b'\r\n\r\n'):
+ if data.endswith(b"\r\n\r\n"):
data = data[:-4]
return data
@@ -168,9 +177,13 @@ class Disk:
def __init__(self, dev):
self.dev = os.path.realpath(dev)
self.mountpoint = None
- with open('/etc/mtab', 'r') as f:
+ with open("/etc/mtab", "r") as f:
mtab = f.read()
- mount = [mount.split(' ') for mount in mtab.splitlines() if mount.startswith(self.dev)]
+ mount = [
+ mount.split(" ")
+ for mount in mtab.splitlines()
+ if mount.startswith(self.dev)
+ ]
if mount:
self._path = mount[0][1]
else:
@@ -245,22 +258,22 @@ class Firmware:
@property
def info(self):
with self.disk as disk:
- fname = os.path.join(disk.path, 'INFO_UF2.TXT')
- with open(fname, 'r') as f:
+ fname = os.path.join(disk.path, "INFO_UF2.TXT")
+ with open(fname, "r") as f:
info = f.read()
lines = info.splitlines()
res = {}
- res['header'] = lines[0]
+ res["header"] = lines[0]
for line in lines[1:]:
- k, _, v = line.partition(':')
- res[k.replace(':', '')] = v.strip()
+ k, _, v = line.partition(":")
+ res[k.replace(":", "")] = v.strip()
return res
def upload(self, fw):
- with open(fw, 'rb') as f:
+ with open(fw, "rb") as f:
header = f.read(32)
- if header[0:4] != b'UF2\n':
- raise ValueError('Only UF2 files are supported')
+ if header[0:4] != b"UF2\n":
+ raise ValueError("Only UF2 files are supported")
self.board.close()
with self.disk as disk:
disk.copy(fw, sync=False)
@@ -274,35 +287,37 @@ class CPboard:
except ValueError:
pass
- vendor, _, product = name.partition(':')
+ vendor, _, product = name.partition(":")
if vendor and product:
- return CPboard.from_usb(**kwargs, idVendor=int(vendor, 16), idProduct=int(product, 16))
+ return CPboard.from_usb(
+ **kwargs, idVendor=int(vendor, 16), idProduct=int(product, 16)
+ )
return CPboard(name, **kwargs)
@classmethod
def from_build_name(cls, name, **kwargs):
boards = {
- #'arduino_zero'
- 'circuitplayground_express' : (0x239a, 0x8019),
- #'feather_m0_adalogger' : (0x239a, ),
- #'feather_m0_basic' : (0x239a, ),
- 'feather_m0_express' : (0x239a, 0x8023),
- #'feather_m0_rfm69' : (0x239a, ),
- #'feather_m0_rfm9x' : (0x239a, ),
- #'feather_m0_supersized' : (0x239a, ),
- #'feather_m4_express' : (0x239a, ),
- #'gemma_m0' : (0x239a, ),
- #'itsybitsy_m0_express' : (0x239a, ),
- #'itsybitsy_m4_express' : (0x239a, ),
- 'metro_m0_express' : (0x239a, 0x8014),
- 'metro_m4_express' : (0x239a, 0x8021),
- #'metro_m4_express_revb' : (0x239a, ),
- #'pirkey_m0' : (0x239a, ),
- #'trinket_m0' : (0x239a, ),
- #'trinket_m0_haxpress' : (0x239a, ),
- #'ugame10'
- }
+ #'arduino_zero'
+ "circuitplayground_express": (0x239A, 0x8019),
+ #'feather_m0_adalogger' : (0x239a, ),
+ #'feather_m0_basic' : (0x239a, ),
+ "feather_m0_express": (0x239A, 0x8023),
+ #'feather_m0_rfm69' : (0x239a, ),
+ #'feather_m0_rfm9x' : (0x239a, ),
+ #'feather_m0_supersized' : (0x239a, ),
+ #'feather_m4_express' : (0x239a, ),
+ #'gemma_m0' : (0x239a, ),
+ #'itsybitsy_m0_express' : (0x239a, ),
+ "itsybitsy_m4_express": (0x239A, 0x802C),
+ "metro_m0_express": (0x239A, 0x8014),
+ "metro_m4_express": (0x239A, 0x8021),
+ #'metro_m4_express_revb' : (0x239a, ),
+ #'pirkey_m0' : (0x239a, ),
+ #'trinket_m0' : (0x239a, ),
+ #'trinket_m0_haxpress' : (0x239a, ),
+ #'ugame10'
+ }
try:
vendor, product = boards[name]
@@ -314,26 +329,26 @@ class CPboard:
@classmethod
def from_build_name_bootloader(cls, name, **kwargs):
boards = {
- #'arduino_zero'
- #'circuitplayground_express' : (0x239a, ),
- #'feather_m0_adalogger' : (0x239a, ),
- #'feather_m0_basic' : (0x239a, ),
- 'feather_m0_express' : (0x239a, 0x001b),
- #'feather_m0_rfm69' : (0x239a, ),
- #'feather_m0_rfm9x' : (0x239a, ),
- #'feather_m0_supersized' : (0x239a, ),
- #'feather_m4_express' : (0x239a, ),
- #'gemma_m0' : (0x239a, ),
- #'itsybitsy_m0_express' : (0x239a, ),
- #'itsybitsy_m4_express' : (0x239a, ),
- #'metro_m0_express' : (0x239a, 0x8014),
- 'metro_m4_express' : (0x239a, 0x0021),
- #'metro_m4_express_revb' : (0x239a, ),
- #'pirkey_m0' : (0x239a, ),
- #'trinket_m0' : (0x239a, ),
- #'trinket_m0_haxpress' : (0x239a, ),
- #'ugame10'
- }
+ #'arduino_zero'
+ #'circuitplayground_express' : (0x239a, ),
+ #'feather_m0_adalogger' : (0x239a, ),
+ #'feather_m0_basic' : (0x239a, ),
+ "feather_m0_express": (0x239A, 0x001B),
+ #'feather_m0_rfm69' : (0x239a, ),
+ #'feather_m0_rfm9x' : (0x239a, ),
+ #'feather_m0_supersized' : (0x239a, ),
+ #'feather_m4_express' : (0x239a, ),
+ #'gemma_m0' : (0x239a, ),
+ #'itsybitsy_m0_express' : (0x239a, ),
+ "itsybitsy_m4_express": (0x239A, 0x002B),
+ #'metro_m0_express' : (0x239a, 0x8014),
+ "metro_m4_express": (0x239A, 0x0021),
+ #'metro_m4_express_revb' : (0x239a, ),
+ #'pirkey_m0' : (0x239a, ),
+ #'trinket_m0' : (0x239a, ),
+ #'trinket_m0_haxpress' : (0x239a, ),
+ #'ugame10'
+ }
try:
vendor, product = boards[name]
@@ -347,16 +362,17 @@ class CPboard:
@classmethod
def from_usb(cls, baudrate=115200, wait=0, timeout=10, **kwargs):
import usb.core
+
dev = usb.core.find(**kwargs)
if not dev:
s = "Can't find USB device: "
args = []
for x in kwargs.items():
try:
- args.append('%s=0x%x' % x)
+ args.append("%s=0x%x" % x)
except:
- args.append('%s = %s' % x)
- raise RuntimeError("Can't find USB device: " + ', '.join(args))
+ args.append("%s = %s" % x)
+ raise RuntimeError("Can't find USB device: " + ", ".join(args))
return cls(dev, baudrate=baudrate, wait=wait, timeout=timeout)
def __init__(self, device, baudrate=115200, wait=0, timeout=10):
@@ -364,11 +380,15 @@ class CPboard:
self.usb_dev = None
try:
# Is it a usb.core.Device?
- portstr = ':' + '.'.join(map(str, device.port_numbers)) + ':'
+ portstr = ":" + ".".join(map(str, device.port_numbers)) + ":"
except:
pass
else:
- serials = [serial for serial in os.listdir("/dev/serial/by-path") if portstr in serial]
+ serials = [
+ serial
+ for serial in os.listdir("/dev/serial/by-path")
+ if portstr in serial
+ ]
if len(serials) != 1:
raise RuntimeError("Can't find excatly one matching usb serial device")
self.device = os.path.realpath("/dev/serial/by-path/" + serials[0])
@@ -401,62 +421,75 @@ class CPboard:
delayed = False
for attempt in range(wait + 1):
try:
- self.serial = serial.Serial(self.device, baudrate=self.baudrate, timeout=self.timeout, write_timeout=self.timeout, interCharTimeout=1)
+ self.serial = serial.Serial(
+ self.device,
+ baudrate=self.baudrate,
+ timeout=self.timeout,
+ inter_byte_timeout=10,
+ write_timeout=self.timeout,
+ )
break
- except (OSError, IOError): # Py2 and Py3 have different errors
+ except (OSError, IOError): # Py2 and Py3 have different errors
if wait == 0:
continue
if attempt == 0:
- sys.stdout.write('Waiting {} seconds for board '.format(wait))
+ sys.stdout.write("Waiting {} seconds for board ".format(wait))
delayed = True
time.sleep(1)
- sys.stdout.write('.')
+ sys.stdout.write(".")
sys.stdout.flush()
else:
if delayed:
- print('')
- raise CPboardError('failed to access ' + self.device)
+ print("")
+ raise CPboardError("failed to access " + self.device)
if delayed:
- print('')
+ print("")
def close(self):
if self.serial:
self.serial.close()
self.serial = None
- def exec(self, command, timeout=10, async=False):
+ def exec(self, command, timeout=10, wait_for_response=True):
with self.repl as repl:
try:
- output, error = repl.execute(command, timeout=timeout, async=async)
+ output, error = repl.execute(
+ command, timeout=timeout, wait_for_response=wait_for_response
+ )
except OSError as e:
if self.debug:
- print('exec: session: ', self.repl.session)
- raise CPboardError('timeout', e)
+ print("exec: session: ", self.repl.session)
+ raise CPboardError("timeout", e)
if error:
- raise CPboardError('exception', output, error)
+ raise CPboardError("exception", output, error)
return output
def eval(self, expression, timeout=10):
- command = 'print({})'.format(expression)
+ command = "print({})".format(expression)
with self.repl as repl:
output, error = repl.execute(command, timeout=timeout)
if error:
- raise CPboardError('exception', output, error)
+ raise CPboardError("exception", output, error)
try:
- res = eval(str(output, encoding='utf8'))
+ res = eval(str(output, encoding="utf8"))
except:
- raise CPboardError('failed to eval: %s' % output)
+ raise CPboardError("failed to eval: %s" % output)
return res
- def _reset(self, mode='NORMAL'):
- self.exec("import microcontroller;microcontroller.on_next_reset(microcontroller.RunMode.%s)" % mode)
+ def _reset(self, mode="NORMAL"):
+ self.exec(
+ "import microcontroller;microcontroller.on_next_reset(microcontroller.RunMode.%s)"
+ % mode
+ )
try:
- self.exec("import microcontroller;microcontroller.reset()", async=True)
+ self.exec(
+ "import microcontroller;microcontroller.reset()", wait_for_response=False
+ )
except OSError:
pass
def reset(self, safe_mode=False, delay=5, wait=10):
- self._reset('SAFE_MODE' if safe_mode else 'NORMAL')
+ self._reset("SAFE_MODE" if safe_mode else "NORMAL")
self.close()
time.sleep(delay)
self.open(wait)
@@ -464,7 +497,7 @@ class CPboard:
def reset_to_bootloader(self, repl=False):
if repl:
- self._reset('BOOTLOADER')
+ self._reset("BOOTLOADER")
self.close()
else:
self.close()
@@ -481,7 +514,7 @@ class CPboard:
@property
def serial_number(self):
- try: # Permissions are needed to read the value
+ try: # Permissions are needed to read the value
return self.usb_dev.serial_number
except:
pass
@@ -490,18 +523,26 @@ class CPboard:
def get_disks(self):
if self.usb_dev:
- portstr = ':' + '.'.join(map(str, self.usb_dev.port_numbers)) + ':'
- return ["/dev/disk/by-path/" + disk for disk in os.listdir("/dev/disk/by-path") if portstr in disk]
+ portstr = ":" + ".".join(map(str, self.usb_dev.port_numbers)) + ":"
+ return [
+ "/dev/disk/by-path/" + disk
+ for disk in os.listdir("/dev/disk/by-path")
+ if portstr in disk
+ ]
serial = self.serial_number
if not serial:
raise RuntimeError("Serial number not found for: " + self.device)
- return ["/dev/disk/by-id/" + disk for disk in os.listdir("/dev/disk/by-id") if serial in disk]
+ return [
+ "/dev/disk/by-id/" + disk
+ for disk in os.listdir("/dev/disk/by-id")
+ if serial in disk
+ ]
@property
def disk(self):
disks = self.get_disks()
- part = [part for part in disks if 'part1' in part]
+ part = [part for part in disks if "part1" in part]
if not part:
raise RuntimeError("Disk not found for: " + self.device)
@@ -513,13 +554,13 @@ class CPboard:
def execfile_disk(self, filename):
with self.disk as disk:
- disk.copy(filename, 'code.py')
+ disk.copy(filename, "code.py")
with self.repl as repl:
try:
output = repl.run()
except OSError as e:
- raise CPboardError('timeout', e)
+ raise CPboardError("timeout", e)
except RuntimeError:
if self.repl.safe_mode:
raise PyboardError("Can't run in safe mode")
@@ -529,10 +570,10 @@ class CPboard:
return output
def execfile(self, filename, timeout=10):
- if os.environ.get('CPBOARD_EXEC_MODE') == 'disk':
+ if os.environ.get("CPBOARD_EXEC_MODE") == "disk":
return self.execfile_disk(filename)
else:
- with open(filename, 'rb') as f:
+ with open(filename, "rb") as f:
pyfile = f.read()
return self.exec(pyfile, timeout=timeout)
@@ -540,11 +581,14 @@ class CPboard:
# Implement just enough to make tests/run-tests work
PyboardError = CPboardError
+
class Pyboard:
- def __init__(self, device, baudrate=115200, user='micro', password='python', wait=0):
+ def __init__(
+ self, device, baudrate=115200, user="micro", password="python", wait=0
+ ):
self.board = CPboard.from_try_all(device, baudrate=baudrate, wait=wait)
with self.board.disk as disk:
- disk.copy('skip_if.py')
+ disk.copy("skip_if.py")
def close(self):
self.board.close()
@@ -558,12 +602,13 @@ class Pyboard:
def eval_namedtuple(board, command):
from collections import namedtuple
+
s = board.exec("print(%s)" % command)
s = s.decode().strip()
- items = [key.split('=') for key in s[1:-1].split(', ')]
+ items = [key.split("=") for key in s[1:-1].split(", ")]
keys = [item[0] for item in items]
vals = [item[1] for item in items]
- nt = namedtuple('eval', keys)
+ nt = namedtuple("eval", keys)
res = nt(*[eval(val) for val in vals])
return res
@@ -571,14 +616,16 @@ def eval_namedtuple(board, command):
def os_uname(board):
return eval_namedtuple(board, "__import__('os').uname()")
+
def print_verbose(cargs, *args, **kwargs):
if cargs.verbose:
print(*args, flush=True, **kwargs)
+
def upload(args):
try:
board = CPboard.from_build_name_bootloader(args.board)
- print_verbose(args, 'Board is already in the bootloader')
+ print_verbose(args, "Board is already in the bootloader")
except (ValueError, RuntimeError):
board = CPboard.from_try_all(args.board)
@@ -586,29 +633,32 @@ def upload(args):
if not (args.quiet or board.bootloader):
board.open()
- print('Current version:', os_uname(board).version, flush=True)
+ print("Current version:", os_uname(board).version, flush=True)
if not board.bootloader:
- print_verbose(args, 'Reset to bootloader...', end='')
- board.reset_to_bootloader(repl=True) # Feather M0 Express doesn't respond to 1200 baud
+ print_verbose(args, "Reset to bootloader...", end="")
+ board.reset_to_bootloader(
+ repl=True
+ ) # Feather M0 Express doesn't respond to 1200 baud
time.sleep(5)
- print_verbose(args, 'done')
+ print_verbose(args, "done")
- print_verbose(args, 'Bootloader:', board.firmware.info)
+ print_verbose(args, "Bootloader:", board.firmware.info)
- print_verbose(args, 'Upload firmware...', end='')
+ print_verbose(args, "Upload firmware...", end="")
board.firmware.upload(args.firmware)
- print_verbose(args, 'done')
+ print_verbose(args, "done")
- print_verbose(args, 'Wait for board...', end='')
+ print_verbose(args, "Wait for board...", end="")
time.sleep(5)
- print_verbose(args, 'done')
+ print_verbose(args, "done")
if not args.quiet:
if board.bootloader:
board = CPboard.from_try_all(args.board)
board.open(wait=10)
- print('New version:', os_uname(board).version, flush=True)
+ print("New version:", os_uname(board).version, flush=True)
+
def print_error_exit(args, e):
if args.debug:
@@ -617,16 +667,20 @@ def print_error_exit(args, e):
print(e, file=sys.stderr)
sys.exit(1)
+
def main():
import argparse
- cmd_parser = argparse.ArgumentParser(description='Circuit Python Board Tool')
- cmd_parser.add_argument('board', help='build_name, vid:pid or /dev/tty')
- cmd_parser.add_argument('-f', '--firmware', help='upload UF2 firmware file')
- cmd_parser.add_argument('-c', '--command', help='program passed in as string')
- cmd_parser.add_argument('--tty', action='store_true', help='print tty')
- cmd_parser.add_argument('--verbose', '-v', action='count', default=0, help='be verbose')
- cmd_parser.add_argument('-q', '--quiet', action='store_true', help='be quiet')
- cmd_parser.add_argument('--debug', action='store_true', help='raise exceptions')
+
+ cmd_parser = argparse.ArgumentParser(description="Circuit Python Board Tool")
+ cmd_parser.add_argument("board", help="build_name, vid:pid or /dev/tty")
+ cmd_parser.add_argument("-f", "--firmware", help="upload UF2 firmware file")
+ cmd_parser.add_argument("-c", "--command", help="program passed in as string")
+ cmd_parser.add_argument("--tty", action="store_true", help="print tty")
+ cmd_parser.add_argument(
+ "--verbose", "-v", action="count", default=0, help="be verbose"
+ )
+ cmd_parser.add_argument("-q", "--quiet", action="store_true", help="be quiet")
+ cmd_parser.add_argument("--debug", action="store_true", help="raise exceptions")
args = cmd_parser.parse_args()
if args.quiet:
@@ -648,9 +702,9 @@ def main():
raise
if args.verbose:
- exec_mode = os.environ.get('CPBOARD_EXEC_MODE')
+ exec_mode = os.environ.get("CPBOARD_EXEC_MODE")
if exec_mode:
- print('CPBOARD_EXEC_MODE =', exec_mode)
+ print("CPBOARD_EXEC_MODE =", exec_mode)
# Make sure we can open serial
try:
@@ -667,18 +721,21 @@ def main():
print(b.eval(args.command))
else:
with board as b:
- print('Device: ', end='')
+ print("Device: ", end="")
if b.usb_dev:
- print('%04x:%04x on ' % (b.usb_dev.idVendor, b.usb_dev.idProduct), end='')
+ print(
+ "%04x:%04x on " % (b.usb_dev.idVendor, b.usb_dev.idProduct), end=""
+ )
print(b.device)
- print('Serial number:', b.serial_number)
+ print("Serial number:", b.serial_number)
uname = os_uname(b)
- print('os.uname:')
- print(' sysname:', uname.sysname)
- print(' nodename:', uname.nodename)
- print(' release:', uname.release)
- print(' version:', uname.version)
- print(' machine:', uname.machine)
+ print("os.uname:")
+ print(" sysname:", uname.sysname)
+ print(" nodename:", uname.nodename)
+ print(" release:", uname.release)
+ print(" version:", uname.version)
+ print(" machine:", uname.machine)
+
if __name__ == "__main__":
main()
diff --git a/tools/dfu.py b/tools/dfu.py
index 54b602438..dd6019235 100755..100644
--- a/tools/dfu.py
+++ b/tools/dfu.py
@@ -1,6 +1,7 @@
#!/usr/bin/python
# Written by Antonio Galea - 2010/11/18
+# Updated for DFU 1.1 by Sean Cross - 2020/03/31
# Distributed under Gnu LGPL 3.0
# see http://www.gnu.org/licenses/lgpl-3.0.txt
@@ -23,30 +24,7 @@ def parse(file,dump_images=False):
print ('File: "%s"' % file)
data = open(file,'rb').read()
crc = compute_crc(data[:-4])
- prefix, data = consume('<5sBIB',data,'signature version size targets')
- print ('%(signature)s v%(version)d, image size: %(size)d, targets: %(targets)d' % prefix)
- for t in range(prefix['targets']):
- tprefix, data = consume('<6sBI255s2I',data,'signature altsetting named name size elements')
- tprefix['num'] = t
- if tprefix['named']:
- tprefix['name'] = cstring(tprefix['name'])
- else:
- tprefix['name'] = ''
- print ('%(signature)s %(num)d, alt setting: %(altsetting)s, name: "%(name)s", size: %(size)d, elements: %(elements)d' % tprefix)
- tsize = tprefix['size']
- target, data = data[:tsize], data[tsize:]
- for e in range(tprefix['elements']):
- eprefix, target = consume('<2I',target,'address size')
- eprefix['num'] = e
- print (' %(num)d, address: 0x%(address)08x, size: %(size)d' % eprefix)
- esize = eprefix['size']
- image, target = target[:esize], target[esize:]
- if dump_images:
- out = '%s.target%d.image%d.bin' % (file,t,e)
- open(out,'wb').write(image)
- print (' DUMPED IMAGE TO "%s"' % out)
- if len(target):
- print ("target %d: PARSE ERROR" % t)
+ data = data[len(data)-16:]
suffix = named(struct.unpack('<4H3sBI',data[:16]),'device product vendor dfu ufd len crc')
print ('usb: %(vendor)04x:%(product)04x, device: 0x%(device)04x, dfu: 0x%(dfu)04x, %(ufd)s, %(len)d, 0x%(crc)08x' % suffix)
if crc != suffix['crc']:
@@ -55,53 +33,49 @@ def parse(file,dump_images=False):
if data:
print ("PARSE ERROR")
-def build(file,targets,device=DEFAULT_DEVICE):
- data = b''
- for t,target in enumerate(targets):
- tdata = b''
- for image in target:
- tdata += struct.pack('<2I',image['address'],len(image['data']))+image['data']
- tdata = struct.pack('<6sBI255s2I',b'Target',0,1, b'ST...',len(tdata),len(target)) + tdata
- data += tdata
- data = struct.pack('<5sBIB',b'DfuSe',1,len(data)+11,len(targets)) + data
+def build(file,data,device=DEFAULT_DEVICE):
+ # Parse the VID and PID from the `device` argument
v,d=map(lambda x: int(x,0) & 0xFFFF, device.split(':',1))
- data += struct.pack('<4H3sB',0,d,v,0x011a,b'UFD',16)
+
+ # Generate the DFU suffix, consisting of these fields:
+ # Field name | Length | Description
+ # ================+=========+================================
+ # bcdDevice | 2 | The release number of this firmware (0xffff - don't care)
+ # idProduct | 2 | PID of this device
+ # idVendor | 2 | VID of this device
+ # bcdDFU | 2 | Version of this DFU spec (0x01 0x00)
+ # ucDfuSignature | 3 | The characters 'DFU', printed in reverse order
+ # bLength | 1 | The length of this suffix (16 bytes)
+ # dwCRC | 4 | A CRC32 of the data, including this suffix
+ data += struct.pack('<4H3sB',0xffff,d,v,0x0100,b'UFD',16)
crc = compute_crc(data)
+ # Append the CRC32 of the entire block
data += struct.pack('<I',crc)
open(file,'wb').write(data)
if __name__=="__main__":
usage = """
%prog [-d|--dump] infile.dfu
-%prog {-b|--build} address:file.bin [-b address:file.bin ...] [{-D|--device}=vendor:device] outfile.dfu"""
+%prog {-b|--build} file.bin [{-D|--device}=vendor:device] outfile.dfu"""
parser = OptionParser(usage=usage)
- parser.add_option("-b", "--build", action="append", dest="binfiles",
- help="build a DFU file from given BINFILES", metavar="BINFILES")
+ parser.add_option("-b", "--build", action="store", dest="binfile",
+ help="build a DFU file from given BINFILE", metavar="BINFILE")
parser.add_option("-D", "--device", action="store", dest="device",
help="build for DEVICE, defaults to %s" % DEFAULT_DEVICE, metavar="DEVICE")
parser.add_option("-d", "--dump", action="store_true", dest="dump_images",
default=False, help="dump contained images to current directory")
(options, args) = parser.parse_args()
- if options.binfiles and len(args)==1:
- target = []
- for arg in options.binfiles:
- try:
- address,binfile = arg.split(':',1)
- except ValueError:
- print ("Address:file couple '%s' invalid." % arg)
- sys.exit(1)
- try:
- address = int(address,0) & 0xFFFFFFFF
- except ValueError:
- print ("Address %s invalid." % address)
- sys.exit(1)
- if not os.path.isfile(binfile):
- print ("Unreadable file '%s'." % binfile)
- sys.exit(1)
- target.append({ 'address': address, 'data': open(binfile,'rb').read() })
+ if options.binfile and len(args)==1:
+ binfile = options.binfile
+ if not os.path.isfile(binfile):
+ print ("Unreadable file '%s'." % binfile)
+ sys.exit(1)
+ target = open(binfile,'rb').read()
outfile = args[0]
device = DEFAULT_DEVICE
+ # If a device is specified, parse the pair into a VID:PID pair
+ # in order to validate them.
if options.device:
device=options.device
try:
@@ -109,7 +83,7 @@ if __name__=="__main__":
except:
print ("Invalid device '%s'." % device)
sys.exit(1)
- build(outfile,[target],device)
+ build(outfile,target,device)
elif len(args)==1:
infile = args[0]
if not os.path.isfile(infile):
diff --git a/tools/extract_pyi.py b/tools/extract_pyi.py
new file mode 100644
index 000000000..d749d202b
--- /dev/null
+++ b/tools/extract_pyi.py
@@ -0,0 +1,83 @@
+import os
+import sys
+import astroid
+import traceback
+
+top_level = sys.argv[1].strip("/")
+stub_directory = sys.argv[2]
+
+def convert_folder(top_level, stub_directory):
+ ok = 0
+ total = 0
+ filenames = sorted(os.listdir(top_level))
+ pyi_lines = []
+ for filename in filenames:
+ full_path = os.path.join(top_level, filename)
+ file_lines = []
+ if os.path.isdir(full_path):
+ mok, mtotal = convert_folder(full_path, os.path.join(stub_directory, filename))
+ ok += mok
+ total += mtotal
+ elif filename.endswith(".c"):
+ with open(full_path, "r") as f:
+ for line in f:
+ if line.startswith("//|"):
+ if line[3] == " ":
+ line = line[4:]
+ elif line[3] == "\n":
+ line = line[3:]
+ else:
+ continue
+ file_lines.append(line)
+ elif filename.endswith(".pyi"):
+ with open(full_path, "r") as f:
+ file_lines.extend(f.readlines())
+
+ # Always put the contents from an __init__ first.
+ if filename.startswith("__init__."):
+ pyi_lines = file_lines + pyi_lines
+ else:
+ pyi_lines.extend(file_lines)
+
+ if not pyi_lines:
+ return ok, total
+
+ stub_filename = os.path.join(stub_directory, "__init__.pyi")
+ print(stub_filename)
+ stub_contents = "".join(pyi_lines)
+ os.makedirs(stub_directory, exist_ok=True)
+ with open(stub_filename, "w") as f:
+ f.write(stub_contents)
+
+ # Validate that the module is a parseable stub.
+ total += 1
+ try:
+ tree = astroid.parse(stub_contents)
+ for i in tree.body:
+ if 'name' in i.__dict__:
+ print(i.__dict__['name'])
+ for j in i.body:
+ if isinstance(j, astroid.scoped_nodes.FunctionDef):
+ if None in j.args.__dict__['annotations']:
+ print(f"Missing parameter type: {j.__dict__['name']} on line {j.__dict__['lineno']}\n")
+ if j.returns:
+ if 'Any' in j.returns.__dict__.values():
+ print(f"Missing return type: {j.__dict__['name']} on line {j.__dict__['lineno']}")
+ elif isinstance(j, astroid.node_classes.AnnAssign):
+ if 'name' in j.__dict__['annotation'].__dict__:
+ if j.__dict__['annotation'].__dict__['name'] == 'Any':
+ print(f"missing attribute type on line {j.__dict__['lineno']}")
+
+ ok += 1
+ except astroid.exceptions.AstroidSyntaxError as e:
+ e = e.__cause__
+ traceback.print_exception(type(e), e, e.__traceback__)
+ print()
+ return ok, total
+
+ok, total = convert_folder(top_level, stub_directory)
+
+print(f"{ok} ok out of {total}")
+
+if ok != total:
+ sys.exit(total - ok)
diff --git a/tools/fixup_translations.py b/tools/fixup_translations.py
new file mode 100644
index 000000000..6db7f1cc5
--- /dev/null
+++ b/tools/fixup_translations.py
@@ -0,0 +1,85 @@
+# Validate that all entries in the .pot are in every .po. Only the .pot is updated so we can detect
+# if a translation was added to the source but isn't in a .po. This ensures translators can grab
+# complete files to work on.
+
+import git
+import sys
+import polib
+
+po_filenames = sys.argv[1:]
+repo = git.Repo()
+
+NO_TRANSLATION_WHITELIST = ["ffi_prep_closure_loc"]
+
+bad_commits = {}
+for po_filename in po_filenames:
+ print("Checking", po_filename)
+
+ commits = repo.iter_commits(paths=po_filename, reverse=True, topo_order=True)
+ first_translations = None
+ fixed_ids = set()
+ for commit in commits:
+ try:
+ blob = commit.tree / po_filename
+ except KeyError:
+ continue
+ try:
+ current_file = polib.pofile(blob.data_stream.read().decode("utf-8"))
+ except OSError:
+ print("skipping invalid po in", commit)
+ continue
+ if not first_translations:
+ first_translations = current_file
+ continue
+ print(commit.authored_date, commit)
+ first_translations.metadata = current_file.metadata
+ first_translations.header = current_file.header
+ for entry in first_translations:
+ newer_entry = current_file.find(entry.msgid)
+
+ if newer_entry and entry.msgid == "":
+ entry.merge(newer_entry)
+ print(entry)
+ elif newer_entry and entry.msgstr != newer_entry.msgstr:
+ if newer_entry.msgstr != "" and (newer_entry.msgstr != entry.msgid or entry.msgid in NO_TRANSLATION_WHITELIST):
+ entry.merge(newer_entry)
+ entry.msgstr = newer_entry.msgstr
+ if "fuzzy" not in newer_entry.flags and "fuzzy" in entry.flags:
+ entry.flags.remove("fuzzy")
+ elif entry.msgid not in fixed_ids:
+ if commit not in bad_commits:
+ bad_commits[commit] = set()
+ bad_commits[commit].add(po_filename)
+ fixed_ids.add(entry.msgid)
+ #print(entry.msgid, "\"" + entry.msgstr + "\"", "\"" + newer_entry.msgstr + "\"",)
+ elif newer_entry and newer_entry.flags != entry.flags:
+ entry.flags = newer_entry.flags
+ elif newer_entry and newer_entry.obsolete != entry.obsolete:
+ entry.obsolete = newer_entry.obsolete
+ elif not newer_entry:
+ entry.obsolete = True
+
+ # Add new entries to the modified pofile.
+ for entry in current_file:
+ old_entry = first_translations.find(entry.msgid, include_obsolete_entries=True)
+ if old_entry:
+ continue
+ first_translations.append(entry)
+
+ # Remove obsolete translations. We can always use this script to revive them from the git history.
+ to_remove = []
+ for entry in first_translations:
+ if entry.obsolete:
+ to_remove.append(entry)
+
+ for remove in to_remove:
+ first_translations.remove(remove)
+
+ first_translations.save(po_filename)
+
+print()
+for commit in bad_commits:
+ files = bad_commits[commit]
+ print(commit)
+ for file in files:
+ print("\t",file)
diff --git a/tools/fonts/ter-u12n.bdf b/tools/fonts/ter-u12n.bdf
new file mode 100644
index 000000000..390d0a1e8
--- /dev/null
+++ b/tools/fonts/ter-u12n.bdf
@@ -0,0 +1,25240 @@
+STARTFONT 2.1
+FONT -xos4-Terminus-Medium-R-Normal--12-120-72-72-C-60-ISO10646-1
+SIZE 12 72 72
+FONTBOUNDINGBOX 6 12 0 -2
+STARTPROPERTIES 20
+FAMILY_NAME "Terminus"
+FOUNDRY "xos4"
+SETWIDTH_NAME "Normal"
+ADD_STYLE_NAME ""
+COPYRIGHT "Copyright (C) 2018 Dimitar Toshkov Zhekov"
+NOTICE "Licensed under the SIL Open Font License, Version 1.1"
+WEIGHT_NAME "Medium"
+SLANT "R"
+PIXEL_SIZE 12
+POINT_SIZE 120
+RESOLUTION_X 72
+RESOLUTION_Y 72
+SPACING "C"
+AVERAGE_WIDTH 60
+CHARSET_REGISTRY "ISO10646"
+CHARSET_ENCODING "1"
+MIN_SPACE 6
+FONT_ASCENT 10
+FONT_DESCENT 2
+DEFAULT_CHAR 65533
+ENDPROPERTIES
+CHARS 1326
+STARTCHAR char0
+ENCODING 0
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+D8
+88
+00
+88
+88
+00
+88
+D8
+00
+00
+ENDCHAR
+STARTCHAR space
+ENCODING 32
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR exclam
+ENCODING 33
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+20
+20
+20
+00
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR quotedbl
+ENCODING 34
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+50
+50
+50
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR numbersign
+ENCODING 35
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+F8
+50
+50
+F8
+50
+50
+00
+00
+ENDCHAR
+STARTCHAR dollar
+ENCODING 36
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+70
+A8
+A0
+70
+28
+A8
+70
+20
+00
+ENDCHAR
+STARTCHAR percent
+ENCODING 37
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+48
+A8
+50
+10
+20
+28
+54
+48
+00
+00
+ENDCHAR
+STARTCHAR ampersand
+ENCODING 38
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+50
+20
+68
+90
+90
+68
+00
+00
+ENDCHAR
+STARTCHAR quotesingle
+ENCODING 39
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+20
+20
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR parenleft
+ENCODING 40
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+40
+40
+40
+40
+20
+10
+00
+00
+ENDCHAR
+STARTCHAR parenright
+ENCODING 41
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+20
+10
+10
+10
+10
+20
+40
+00
+00
+ENDCHAR
+STARTCHAR asterisk
+ENCODING 42
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+50
+20
+F8
+20
+50
+00
+00
+00
+ENDCHAR
+STARTCHAR plus
+ENCODING 43
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+20
+20
+F8
+20
+20
+00
+00
+00
+ENDCHAR
+STARTCHAR comma
+ENCODING 44
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+40
+00
+ENDCHAR
+STARTCHAR hyphen
+ENCODING 45
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+F8
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR period
+ENCODING 46
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR slash
+ENCODING 47
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+08
+10
+10
+20
+20
+40
+40
+00
+00
+ENDCHAR
+STARTCHAR zero
+ENCODING 48
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+98
+A8
+C8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR one
+ENCODING 49
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+60
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR two
+ENCODING 50
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+08
+10
+20
+40
+F8
+00
+00
+ENDCHAR
+STARTCHAR three
+ENCODING 51
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+08
+30
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR four
+ENCODING 52
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+18
+28
+48
+88
+F8
+08
+08
+00
+00
+ENDCHAR
+STARTCHAR five
+ENCODING 53
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+80
+80
+F0
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR six
+ENCODING 54
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+80
+80
+F0
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR seven
+ENCODING 55
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+08
+08
+10
+10
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR eight
+ENCODING 56
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+70
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR nine
+ENCODING 57
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+78
+08
+08
+70
+00
+00
+ENDCHAR
+STARTCHAR colon
+ENCODING 58
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+20
+20
+00
+00
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR semicolon
+ENCODING 59
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+20
+20
+00
+00
+20
+20
+40
+00
+ENDCHAR
+STARTCHAR less
+ENCODING 60
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+10
+20
+40
+20
+10
+08
+00
+00
+ENDCHAR
+STARTCHAR equal
+ENCODING 61
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+00
+00
+F8
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR greater
+ENCODING 62
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+20
+10
+08
+10
+20
+40
+00
+00
+ENDCHAR
+STARTCHAR question
+ENCODING 63
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+10
+20
+00
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR at
+ENCODING 64
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+98
+A8
+A8
+98
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR A
+ENCODING 65
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR B
+ENCODING 66
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+88
+88
+F0
+88
+88
+88
+F0
+00
+00
+ENDCHAR
+STARTCHAR C
+ENCODING 67
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+80
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR D
+ENCODING 68
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+E0
+90
+88
+88
+88
+88
+90
+E0
+00
+00
+ENDCHAR
+STARTCHAR E
+ENCODING 69
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR F
+ENCODING 70
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+80
+80
+F0
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR G
+ENCODING 71
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+80
+B8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR H
+ENCODING 72
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+F8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR I
+ENCODING 73
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR J
+ENCODING 74
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+38
+10
+10
+10
+10
+90
+90
+60
+00
+00
+ENDCHAR
+STARTCHAR K
+ENCODING 75
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+90
+A0
+C0
+C0
+A0
+90
+88
+00
+00
+ENDCHAR
+STARTCHAR L
+ENCODING 76
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+80
+80
+80
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR M
+ENCODING 77
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+D8
+A8
+A8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR N
+ENCODING 78
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+C8
+A8
+98
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR O
+ENCODING 79
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR P
+ENCODING 80
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+88
+88
+88
+F0
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR Q
+ENCODING 81
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+A8
+70
+08
+00
+ENDCHAR
+STARTCHAR R
+ENCODING 82
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+88
+88
+88
+F0
+A0
+90
+88
+00
+00
+ENDCHAR
+STARTCHAR S
+ENCODING 83
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+70
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR T
+ENCODING 84
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+20
+20
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR U
+ENCODING 85
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR V
+ENCODING 86
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+50
+50
+50
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR W
+ENCODING 87
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+A8
+A8
+D8
+88
+00
+00
+ENDCHAR
+STARTCHAR X
+ENCODING 88
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+50
+20
+20
+50
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Y
+ENCODING 89
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+50
+50
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR Z
+ENCODING 90
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+08
+10
+20
+40
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR bracketleft
+ENCODING 91
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+40
+40
+40
+40
+40
+40
+70
+00
+00
+ENDCHAR
+STARTCHAR backslash
+ENCODING 92
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+40
+20
+20
+10
+10
+08
+08
+00
+00
+ENDCHAR
+STARTCHAR bracketright
+ENCODING 93
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+10
+10
+10
+10
+10
+10
+70
+00
+00
+ENDCHAR
+STARTCHAR asciicircum
+ENCODING 94
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+50
+88
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR underscore
+ENCODING 95
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+F8
+00
+ENDCHAR
+STARTCHAR grave
+ENCODING 96
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR a
+ENCODING 97
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR b
+ENCODING 98
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+80
+F0
+88
+88
+88
+88
+F0
+00
+00
+ENDCHAR
+STARTCHAR c
+ENCODING 99
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR d
+ENCODING 100
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+08
+78
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR e
+ENCODING 101
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR f
+ENCODING 102
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+18
+20
+70
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR g
+ENCODING 103
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR h
+ENCODING 104
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+80
+F0
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR i
+ENCODING 105
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+20
+00
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR j
+ENCODING 106
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+08
+08
+00
+18
+08
+08
+08
+08
+08
+48
+30
+ENDCHAR
+STARTCHAR k
+ENCODING 107
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+40
+48
+50
+60
+60
+50
+48
+00
+00
+ENDCHAR
+STARTCHAR l
+ENCODING 108
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+60
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR m
+ENCODING 109
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+A8
+A8
+A8
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR n
+ENCODING 110
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR o
+ENCODING 111
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR p
+ENCODING 112
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+88
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR q
+ENCODING 113
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+88
+88
+88
+88
+78
+08
+08
+ENDCHAR
+STARTCHAR r
+ENCODING 114
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+B8
+C0
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR s
+ENCODING 115
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+80
+70
+08
+08
+F0
+00
+00
+ENDCHAR
+STARTCHAR t
+ENCODING 116
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+70
+20
+20
+20
+20
+18
+00
+00
+ENDCHAR
+STARTCHAR u
+ENCODING 117
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR v
+ENCODING 118
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+50
+50
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR w
+ENCODING 119
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+A8
+A8
+A8
+70
+00
+00
+ENDCHAR
+STARTCHAR x
+ENCODING 120
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+50
+20
+20
+50
+88
+00
+00
+ENDCHAR
+STARTCHAR y
+ENCODING 121
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR z
+ENCODING 122
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+10
+20
+40
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR braceleft
+ENCODING 123
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+18
+20
+20
+40
+20
+20
+20
+18
+00
+00
+ENDCHAR
+STARTCHAR bar
+ENCODING 124
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+20
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR braceright
+ENCODING 125
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+60
+10
+10
+08
+10
+10
+10
+60
+00
+00
+ENDCHAR
+STARTCHAR asciitilde
+ENCODING 126
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+48
+A8
+90
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR nbspace
+ENCODING 160
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR exclamdown
+ENCODING 161
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+00
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR cent
+ENCODING 162
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+70
+A8
+A0
+A0
+A8
+70
+20
+00
+ENDCHAR
+STARTCHAR sterling
+ENCODING 163
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+30
+48
+40
+F0
+40
+40
+48
+F8
+00
+00
+ENDCHAR
+STARTCHAR currency
+ENCODING 164
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+30
+48
+48
+30
+48
+00
+00
+00
+ENDCHAR
+STARTCHAR yen
+ENCODING 165
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+50
+20
+70
+20
+70
+20
+00
+00
+ENDCHAR
+STARTCHAR brokenbar
+ENCODING 166
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+20
+00
+00
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR section
+ENCODING 167
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+30
+48
+20
+50
+48
+28
+10
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR dieresis
+ENCODING 168
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR copyright
+ENCODING 169
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+84
+B4
+A4
+A4
+B4
+84
+78
+00
+00
+ENDCHAR
+STARTCHAR ordfeminine
+ENCODING 170
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+08
+38
+48
+38
+00
+78
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR guillemotleft
+ENCODING 171
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+14
+28
+50
+A0
+50
+28
+14
+00
+00
+ENDCHAR
+STARTCHAR logicalnot
+ENCODING 172
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+08
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR softhyphen
+ENCODING 173
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+78
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR registered
+ENCODING 174
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+84
+B4
+AC
+B4
+AC
+84
+78
+00
+00
+ENDCHAR
+STARTCHAR macron
+ENCODING 175
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR degree
+ENCODING 176
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+50
+20
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR plusminus
+ENCODING 177
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+20
+F8
+20
+20
+00
+F8
+00
+00
+ENDCHAR
+STARTCHAR twosuperior
+ENCODING 178
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+30
+48
+10
+20
+78
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR threesuperior
+ENCODING 179
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+70
+08
+30
+08
+70
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR acute
+ENCODING 180
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR mu
+ENCODING 181
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+98
+E8
+80
+80
+ENDCHAR
+STARTCHAR paragraph
+ENCODING 182
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+A8
+A8
+A8
+68
+28
+28
+28
+00
+00
+ENDCHAR
+STARTCHAR periodcentered
+ENCODING 183
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+20
+20
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR cedilla
+ENCODING 184
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+40
+ENDCHAR
+STARTCHAR onesuperior
+ENCODING 185
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+10
+30
+10
+10
+38
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ordmasculine
+ENCODING 186
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+48
+48
+48
+30
+00
+78
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR guillemotright
+ENCODING 187
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+A0
+50
+28
+14
+28
+50
+A0
+00
+00
+ENDCHAR
+STARTCHAR onequarter
+ENCODING 188
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+C0
+44
+48
+50
+20
+48
+98
+28
+78
+08
+08
+ENDCHAR
+STARTCHAR onehalf
+ENCODING 189
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+C0
+44
+48
+50
+20
+40
+98
+24
+08
+10
+3C
+ENDCHAR
+STARTCHAR threequarters
+ENCODING 190
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+E0
+10
+60
+14
+E8
+10
+24
+4C
+94
+3C
+04
+04
+ENDCHAR
+STARTCHAR questiondown
+ENCODING 191
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+00
+20
+40
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Agrave
+ENCODING 192
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+20
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Aacute
+ENCODING 193
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Acircumflex
+ENCODING 194
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Atilde
+ENCODING 195
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Adieresis
+ENCODING 196
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Aring
+ENCODING 197
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR AE
+ENCODING 198
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+7C
+90
+90
+FC
+90
+90
+90
+9C
+00
+00
+ENDCHAR
+STARTCHAR Ccedilla
+ENCODING 199
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+80
+80
+80
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR Egrave
+ENCODING 200
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+20
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR Eacute
+ENCODING 201
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR Ecircumflex
+ENCODING 202
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR Edieresis
+ENCODING 203
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR Igrave
+ENCODING 204
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+20
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Iacute
+ENCODING 205
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Icircumflex
+ENCODING 206
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Idieresis
+ENCODING 207
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Eth
+ENCODING 208
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+E0
+90
+88
+E8
+88
+88
+90
+E0
+00
+00
+ENDCHAR
+STARTCHAR Ntilde
+ENCODING 209
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+88
+88
+C8
+A8
+98
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Ograve
+ENCODING 210
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+20
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Oacute
+ENCODING 211
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Ocircumflex
+ENCODING 212
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Otilde
+ENCODING 213
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Odieresis
+ENCODING 214
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR multiply
+ENCODING 215
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+50
+20
+50
+88
+00
+00
+00
+ENDCHAR
+STARTCHAR Oslash
+ENCODING 216
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+74
+88
+98
+A8
+C8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Ugrave
+ENCODING 217
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+20
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Uacute
+ENCODING 218
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Ucircumflex
+ENCODING 219
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Udieresis
+ENCODING 220
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Yacute
+ENCODING 221
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+88
+88
+50
+50
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR Thorn
+ENCODING 222
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+F0
+88
+88
+88
+F0
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR germandbls
+ENCODING 223
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+E0
+90
+90
+F0
+88
+88
+C8
+B0
+00
+00
+ENDCHAR
+STARTCHAR agrave
+ENCODING 224
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+20
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR aacute
+ENCODING 225
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR acircumflex
+ENCODING 226
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR atilde
+ENCODING 227
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+28
+50
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR adieresis
+ENCODING 228
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR aring
+ENCODING 229
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR ae
+ENCODING 230
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+28
+68
+B0
+A0
+78
+00
+00
+ENDCHAR
+STARTCHAR ccedilla
+ENCODING 231
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+80
+80
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR egrave
+ENCODING 232
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+20
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR eacute
+ENCODING 233
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR ecircumflex
+ENCODING 234
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR edieresis
+ENCODING 235
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR igrave
+ENCODING 236
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+20
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR iacute
+ENCODING 237
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR icircumflex
+ENCODING 238
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR idieresis
+ENCODING 239
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR eth
+ENCODING 240
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+A0
+40
+A0
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR ntilde
+ENCODING 241
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+28
+50
+F0
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR ograve
+ENCODING 242
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+20
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR oacute
+ENCODING 243
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR ocircumflex
+ENCODING 244
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR otilde
+ENCODING 245
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+28
+50
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR odieresis
+ENCODING 246
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR divide
+ENCODING 247
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+20
+00
+F8
+00
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR oslash
+ENCODING 248
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+74
+98
+A8
+C8
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR ugrave
+ENCODING 249
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+20
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR uacute
+ENCODING 250
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR ucircumflex
+ENCODING 251
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR udieresis
+ENCODING 252
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR yacute
+ENCODING 253
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR thorn
+ENCODING 254
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+80
+F0
+88
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR ydieresis
+ENCODING 255
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR Amacron
+ENCODING 256
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR amacron
+ENCODING 257
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+00
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR Abreve
+ENCODING 258
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR abreve
+ENCODING 259
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR Aogonek
+ENCODING 260
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+F8
+88
+88
+88
+10
+0C
+ENDCHAR
+STARTCHAR aogonek
+ENCODING 261
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+08
+78
+88
+88
+78
+10
+0C
+ENDCHAR
+STARTCHAR Cacute
+ENCODING 262
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+70
+88
+80
+80
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR cacute
+ENCODING 263
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+70
+88
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Ccircumflex
+ENCODING 264
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+70
+88
+80
+80
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR ccircumflex
+ENCODING 265
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+70
+88
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Cdotaccent
+ENCODING 266
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+70
+88
+80
+80
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR cdotaccent
+ENCODING 267
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+70
+88
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Ccaron
+ENCODING 268
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+88
+80
+80
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR ccaron
+ENCODING 269
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+70
+88
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Dcaron
+ENCODING 270
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+A0
+40
+E0
+90
+88
+88
+88
+88
+90
+E0
+00
+00
+ENDCHAR
+STARTCHAR dcaron
+ENCODING 271
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+08
+08
+78
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR Dcroat
+ENCODING 272
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+E0
+90
+88
+E8
+88
+88
+90
+E0
+00
+00
+ENDCHAR
+STARTCHAR dcroat
+ENCODING 273
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+3C
+08
+78
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR Emacron
+ENCODING 274
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR emacron
+ENCODING 275
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+00
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR Ebreve
+ENCODING 276
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR ebreve
+ENCODING 277
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR Edotaccent
+ENCODING 278
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR edotaccent
+ENCODING 279
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR Eogonek
+ENCODING 280
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+80
+80
+F0
+80
+80
+80
+F8
+10
+0C
+ENDCHAR
+STARTCHAR eogonek
+ENCODING 281
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+F8
+80
+80
+78
+20
+18
+ENDCHAR
+STARTCHAR Ecaron
+ENCODING 282
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR ecaron
+ENCODING 283
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR Gcircumflex
+ENCODING 284
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+70
+88
+80
+80
+B8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR gcircumflex
+ENCODING 285
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+78
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR Gbreve
+ENCODING 286
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+88
+80
+80
+B8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR gbreve
+ENCODING 287
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+78
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR Gdotaccent
+ENCODING 288
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+70
+88
+80
+80
+B8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR gdotaccent
+ENCODING 289
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+78
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR Gcommaaccent
+ENCODING 290
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+80
+B8
+88
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR gcommaaccent
+ENCODING 291
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+78
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR Hcircumflex
+ENCODING 292
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+88
+88
+88
+F8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR hcircumflex
+ENCODING 293
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+80
+80
+F0
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Hbar
+ENCODING 294
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+48
+FC
+48
+78
+48
+48
+48
+48
+00
+00
+ENDCHAR
+STARTCHAR hbar
+ENCODING 295
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+F0
+40
+70
+48
+48
+48
+48
+00
+00
+ENDCHAR
+STARTCHAR Itilde
+ENCODING 296
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR itilde
+ENCODING 297
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+28
+50
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Imacron
+ENCODING 298
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR imacron
+ENCODING 299
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+00
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Ibreve
+ENCODING 300
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR ibreve
+ENCODING 301
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Iogonek
+ENCODING 302
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+20
+20
+20
+20
+20
+20
+70
+20
+18
+ENDCHAR
+STARTCHAR iogonek
+ENCODING 303
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+20
+00
+60
+20
+20
+20
+20
+70
+20
+18
+ENDCHAR
+STARTCHAR Idotaccent
+ENCODING 304
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR dotlessi
+ENCODING 305
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR IJ
+ENCODING 306
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+88
+A8
+A8
+90
+00
+00
+ENDCHAR
+STARTCHAR ij
+ENCODING 307
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+88
+88
+00
+98
+88
+88
+88
+88
+88
+28
+10
+ENDCHAR
+STARTCHAR Jcircumflex
+ENCODING 308
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+28
+38
+10
+10
+10
+10
+90
+90
+60
+00
+00
+ENDCHAR
+STARTCHAR jcircumflex
+ENCODING 309
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+14
+18
+08
+08
+08
+08
+08
+48
+30
+ENDCHAR
+STARTCHAR Kcommaaccent
+ENCODING 310
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+90
+A0
+C0
+C0
+A0
+90
+A8
+20
+40
+ENDCHAR
+STARTCHAR kcommaaccent
+ENCODING 311
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+40
+48
+50
+60
+60
+50
+68
+20
+40
+ENDCHAR
+STARTCHAR kgreenlandic
+ENCODING 312
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+48
+50
+60
+60
+50
+48
+00
+00
+ENDCHAR
+STARTCHAR Lacute
+ENCODING 313
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+40
+80
+80
+80
+80
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR lacute
+ENCODING 314
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+60
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Lcommaaccent
+ENCODING 315
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+80
+80
+80
+80
+80
+80
+F8
+20
+40
+ENDCHAR
+STARTCHAR lcommaaccent
+ENCODING 316
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+60
+20
+20
+20
+20
+20
+20
+70
+20
+40
+ENDCHAR
+STARTCHAR Lcaron
+ENCODING 317
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+80
+80
+80
+80
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR lcaron
+ENCODING 318
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+60
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Ldot
+ENCODING 319
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+80
+80
+90
+90
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR ldot
+ENCODING 320
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+60
+20
+20
+24
+24
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Lslash
+ENCODING 321
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+40
+40
+60
+C0
+40
+40
+7C
+00
+00
+ENDCHAR
+STARTCHAR lslash
+ENCODING 322
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+60
+20
+20
+30
+60
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Nacute
+ENCODING 323
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+88
+88
+C8
+A8
+98
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR nacute
+ENCODING 324
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+F0
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Ncommaaccent
+ENCODING 325
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+C8
+A8
+98
+88
+88
+A8
+20
+40
+ENDCHAR
+STARTCHAR ncommaaccent
+ENCODING 326
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+88
+88
+88
+88
+A8
+20
+40
+ENDCHAR
+STARTCHAR Ncaron
+ENCODING 327
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+88
+88
+C8
+A8
+98
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR ncaron
+ENCODING 328
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+F0
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR napostrophe
+ENCODING 329
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+40
+40
+80
+F0
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Eng
+ENCODING 330
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+C8
+A8
+98
+88
+88
+88
+08
+10
+ENDCHAR
+STARTCHAR eng
+ENCODING 331
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+88
+88
+88
+88
+88
+08
+10
+ENDCHAR
+STARTCHAR Omacron
+ENCODING 332
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR omacron
+ENCODING 333
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+00
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Obreve
+ENCODING 334
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR obreve
+ENCODING 335
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Ohungarumlaut
+ENCODING 336
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR ohungarumlaut
+ENCODING 337
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+28
+50
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR OE
+ENCODING 338
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+7C
+90
+90
+9C
+90
+90
+90
+7C
+00
+00
+ENDCHAR
+STARTCHAR oe
+ENCODING 339
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+A8
+A8
+B0
+A0
+78
+00
+00
+ENDCHAR
+STARTCHAR Racute
+ENCODING 340
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+F0
+88
+88
+88
+F0
+A0
+90
+88
+00
+00
+ENDCHAR
+STARTCHAR racute
+ENCODING 341
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+B8
+C0
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR Rcommaaccent
+ENCODING 342
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+88
+88
+88
+F0
+A0
+90
+A8
+20
+40
+ENDCHAR
+STARTCHAR rcommaaccent
+ENCODING 343
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+B8
+C0
+80
+80
+80
+C0
+40
+80
+ENDCHAR
+STARTCHAR Rcaron
+ENCODING 344
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+F0
+88
+88
+88
+F0
+A0
+90
+88
+00
+00
+ENDCHAR
+STARTCHAR rcaron
+ENCODING 345
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+B8
+C0
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR Sacute
+ENCODING 346
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+70
+88
+80
+70
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR sacute
+ENCODING 347
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+78
+80
+70
+08
+08
+F0
+00
+00
+ENDCHAR
+STARTCHAR Scircumflex
+ENCODING 348
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+70
+88
+80
+70
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR scircumflex
+ENCODING 349
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+78
+80
+70
+08
+08
+F0
+00
+00
+ENDCHAR
+STARTCHAR Scedilla
+ENCODING 350
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+70
+08
+08
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR scedilla
+ENCODING 351
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+80
+70
+08
+08
+F0
+20
+40
+ENDCHAR
+STARTCHAR Scaron
+ENCODING 352
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+88
+80
+70
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR scaron
+ENCODING 353
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+78
+80
+70
+08
+08
+F0
+00
+00
+ENDCHAR
+STARTCHAR Tcedilla
+ENCODING 354
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+20
+20
+20
+20
+20
+20
+30
+10
+20
+ENDCHAR
+STARTCHAR tcedilla
+ENCODING 355
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+70
+20
+20
+20
+20
+18
+10
+20
+ENDCHAR
+STARTCHAR Tcaron
+ENCODING 356
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+F8
+20
+20
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR tcaron
+ENCODING 357
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+20
+20
+70
+20
+20
+20
+20
+18
+00
+00
+ENDCHAR
+STARTCHAR Tbar
+ENCODING 358
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+20
+20
+70
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR tbar
+ENCODING 359
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+70
+20
+70
+20
+20
+18
+00
+00
+ENDCHAR
+STARTCHAR Utilde
+ENCODING 360
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR utilde
+ENCODING 361
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+28
+50
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR Umacron
+ENCODING 362
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR umacron
+ENCODING 363
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+00
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR Ubreve
+ENCODING 364
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR ubreve
+ENCODING 365
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR Uring
+ENCODING 366
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+A8
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uring
+ENCODING 367
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+A8
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR Uhungarumlaut
+ENCODING 368
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uhungarumlaut
+ENCODING 369
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+28
+50
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR Uogonek
+ENCODING 370
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+88
+88
+88
+70
+20
+18
+ENDCHAR
+STARTCHAR uogonek
+ENCODING 371
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+88
+78
+10
+0C
+ENDCHAR
+STARTCHAR Wcircumflex
+ENCODING 372
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+88
+88
+88
+88
+A8
+A8
+D8
+88
+00
+00
+ENDCHAR
+STARTCHAR wcircumflex
+ENCODING 373
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+88
+88
+A8
+A8
+A8
+70
+00
+00
+ENDCHAR
+STARTCHAR Ycircumflex
+ENCODING 374
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+88
+88
+50
+50
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR ycircumflex
+ENCODING 375
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+50
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR Ydieresis
+ENCODING 376
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+88
+88
+50
+50
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR Zacute
+ENCODING 377
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+F8
+08
+10
+20
+40
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR zacute
+ENCODING 378
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+F8
+10
+20
+40
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR Zdotaccent
+ENCODING 379
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+F8
+08
+10
+20
+40
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR zdotaccent
+ENCODING 380
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+F8
+10
+20
+40
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR Zcaron
+ENCODING 381
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+F8
+08
+10
+20
+40
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR zcaron
+ENCODING 382
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+F8
+10
+20
+40
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR longs
+ENCODING 383
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+18
+20
+20
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR uni0186
+ENCODING 390
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+08
+08
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni018E
+ENCODING 398
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+08
+08
+78
+08
+08
+08
+F8
+00
+00
+ENDCHAR
+STARTCHAR Schwa
+ENCODING 399
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+08
+08
+F8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni0190
+ENCODING 400
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+60
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR florin
+ENCODING 402
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+28
+20
+70
+20
+20
+20
+20
+A0
+40
+ENDCHAR
+STARTCHAR uni019D
+ENCODING 413
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+C8
+A8
+98
+88
+88
+C8
+40
+80
+ENDCHAR
+STARTCHAR uni019E
+ENCODING 414
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+88
+88
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR uni01B5
+ENCODING 437
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+08
+10
+F8
+20
+40
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR uni01B6
+ENCODING 438
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+10
+78
+20
+40
+F8
+00
+00
+ENDCHAR
+STARTCHAR Ezh
+ENCODING 439
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+08
+10
+30
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni01CD
+ENCODING 461
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni01CE
+ENCODING 462
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR uni01CF
+ENCODING 463
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR uni01D0
+ENCODING 464
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR uni01D1
+ENCODING 465
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni01D2
+ENCODING 466
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni01D3
+ENCODING 467
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni01D4
+ENCODING 468
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+ENDCHAR
+STARTCHAR uni01DC
+ENCODING 476
+SWIDTH 1000 0
+DWIDTH 6 0
+BBX 5 10 0 0
+BITMAP
+40
+20
+88
+00
+88
+88
+88
+88
+88
+78
+ENDCHAR
+STARTCHAR uni01E2
+ENCODING 482
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+78
+00
+7C
+90
+90
+FC
+90
+90
+90
+9C
+00
+00
+ENDCHAR
+STARTCHAR uni01E3
+ENCODING 483
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+00
+70
+28
+68
+B0
+A0
+78
+00
+00
+ENDCHAR
+STARTCHAR uni01E4
+ENCODING 484
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+80
+80
+B8
+88
+9C
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni01E5
+ENCODING 485
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+88
+9C
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR Gcaron
+ENCODING 486
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+88
+80
+80
+B8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR gcaron
+ENCODING 487
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+78
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR uni01E8
+ENCODING 488
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+88
+90
+A0
+C0
+C0
+A0
+90
+88
+00
+00
+ENDCHAR
+STARTCHAR uni01E9
+ENCODING 489
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+40
+40
+48
+50
+60
+60
+50
+48
+00
+00
+ENDCHAR
+STARTCHAR uni01EA
+ENCODING 490
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+88
+70
+20
+18
+ENDCHAR
+STARTCHAR uni01EB
+ENCODING 491
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+88
+88
+88
+70
+20
+18
+ENDCHAR
+STARTCHAR uni01EC
+ENCODING 492
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+70
+88
+88
+88
+88
+88
+88
+70
+20
+18
+ENDCHAR
+STARTCHAR uni01ED
+ENCODING 493
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+00
+70
+88
+88
+88
+88
+70
+20
+18
+ENDCHAR
+STARTCHAR uni01EE
+ENCODING 494
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+F8
+08
+10
+30
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni01EF
+ENCODING 495
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+F8
+08
+10
+30
+08
+08
+88
+70
+ENDCHAR
+STARTCHAR uni01F0
+ENCODING 496
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+14
+08
+18
+08
+08
+08
+08
+08
+48
+30
+ENDCHAR
+STARTCHAR uni01F4
+ENCODING 500
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+70
+88
+80
+80
+B8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni01F5
+ENCODING 501
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+78
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR AEacute
+ENCODING 508
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+10
+7C
+90
+90
+FC
+90
+90
+90
+9C
+00
+00
+ENDCHAR
+STARTCHAR aeacute
+ENCODING 509
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+70
+28
+68
+B0
+A0
+78
+00
+00
+ENDCHAR
+STARTCHAR Oslashacute
+ENCODING 510
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+74
+88
+98
+A8
+C8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR oslashacute
+ENCODING 511
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+74
+98
+A8
+C8
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Scommaaccent
+ENCODING 536
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+70
+08
+08
+88
+70
+20
+40
+ENDCHAR
+STARTCHAR scommaaccent
+ENCODING 537
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+80
+70
+08
+08
+F0
+20
+40
+ENDCHAR
+STARTCHAR Tcommaaccent
+ENCODING 538
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+20
+20
+20
+20
+20
+20
+30
+10
+20
+ENDCHAR
+STARTCHAR tcommaaccent
+ENCODING 539
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+70
+20
+20
+20
+20
+18
+08
+10
+ENDCHAR
+STARTCHAR uni0232
+ENCODING 562
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+88
+88
+50
+50
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR uni0233
+ENCODING 563
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+00
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR dotlessj
+ENCODING 567
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+18
+08
+08
+08
+08
+08
+48
+30
+ENDCHAR
+STARTCHAR uni0254
+ENCODING 596
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni0258
+ENCODING 600
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+F8
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR schwa
+ENCODING 601
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+08
+F8
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni025B
+ENCODING 603
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+60
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni0272
+ENCODING 626
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+88
+88
+88
+88
+C8
+40
+80
+ENDCHAR
+STARTCHAR ezh
+ENCODING 658
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+08
+10
+30
+08
+08
+88
+70
+ENDCHAR
+STARTCHAR commaturnedmod
+ENCODING 699
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR afii57929
+ENCODING 700
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR afii64937
+ENCODING 701
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+10
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR circumflex
+ENCODING 710
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR caron
+ENCODING 711
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR breve
+ENCODING 728
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR dotaccent
+ENCODING 729
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ogonek
+ENCODING 731
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+10
+20
+18
+ENDCHAR
+STARTCHAR tilde
+ENCODING 732
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR hungarumlaut
+ENCODING 733
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR gravecomb
+ENCODING 768
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR acutecomb
+ENCODING 769
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni0302
+ENCODING 770
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR tildecomb
+ENCODING 771
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni0304
+ENCODING 772
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni0305
+ENCODING 773
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+F8
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni0306
+ENCODING 774
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni0307
+ENCODING 775
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni0308
+ENCODING 776
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni030A
+ENCODING 778
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+50
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni030B
+ENCODING 779
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni030C
+ENCODING 780
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni0329
+ENCODING 809
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+ENDCHAR
+STARTCHAR tonos
+ENCODING 900
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+80
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR dieresistonos
+ENCODING 901
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+50
+50
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR Alphatonos
+ENCODING 902
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+80
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR anoteleia
+ENCODING 903
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+20
+20
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR Epsilontonos
+ENCODING 904
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+80
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR Etatonos
+ENCODING 905
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+80
+88
+88
+88
+F8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Iotatonos
+ENCODING 906
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+80
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Omicrontonos
+ENCODING 908
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+80
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Upsilontonos
+ENCODING 910
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+80
+88
+88
+50
+50
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR Omegatonos
+ENCODING 911
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+80
+70
+88
+88
+88
+88
+88
+50
+D8
+00
+00
+ENDCHAR
+STARTCHAR iotadieresistonos
+ENCODING 912
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+50
+50
+60
+20
+20
+20
+20
+18
+00
+00
+ENDCHAR
+STARTCHAR Alpha
+ENCODING 913
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Beta
+ENCODING 914
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+88
+88
+F0
+88
+88
+88
+F0
+00
+00
+ENDCHAR
+STARTCHAR Gamma
+ENCODING 915
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+80
+80
+80
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR Delta
+ENCODING 916
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+50
+50
+88
+88
+88
+F8
+00
+00
+ENDCHAR
+STARTCHAR Epsilon
+ENCODING 917
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR Zeta
+ENCODING 918
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+08
+10
+20
+40
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR Eta
+ENCODING 919
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+F8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Theta
+ENCODING 920
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+A8
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Iota
+ENCODING 921
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Kappa
+ENCODING 922
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+90
+A0
+C0
+C0
+A0
+90
+88
+00
+00
+ENDCHAR
+STARTCHAR Lambda
+ENCODING 923
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+50
+50
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Mu
+ENCODING 924
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+D8
+A8
+A8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Nu
+ENCODING 925
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+C8
+A8
+98
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Xi
+ENCODING 926
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+00
+00
+70
+00
+00
+00
+F8
+00
+00
+ENDCHAR
+STARTCHAR Omicron
+ENCODING 927
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR Pi
+ENCODING 928
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+88
+88
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Rho
+ENCODING 929
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+88
+88
+88
+F0
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR Sigma
+ENCODING 931
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+40
+20
+10
+10
+20
+40
+F8
+00
+00
+ENDCHAR
+STARTCHAR Tau
+ENCODING 932
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+20
+20
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR Upsilon
+ENCODING 933
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+50
+50
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR Phi
+ENCODING 934
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+70
+A8
+A8
+A8
+A8
+70
+20
+00
+00
+ENDCHAR
+STARTCHAR Chi
+ENCODING 935
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+50
+20
+20
+50
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR Psi
+ENCODING 936
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+A8
+A8
+A8
+A8
+A8
+70
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR Omega
+ENCODING 937
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+50
+D8
+00
+00
+ENDCHAR
+STARTCHAR Iotadieresis
+ENCODING 938
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR Upsilondieresis
+ENCODING 939
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+88
+88
+50
+50
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR alphatonos
+ENCODING 940
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+68
+90
+90
+90
+90
+68
+00
+00
+ENDCHAR
+STARTCHAR epsilontonos
+ENCODING 941
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+70
+88
+60
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR etatonos
+ENCODING 942
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+F0
+88
+88
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR iotatonos
+ENCODING 943
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+60
+20
+20
+20
+20
+18
+00
+00
+ENDCHAR
+STARTCHAR upsilondieresistonos
+ENCODING 944
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+50
+50
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR alpha
+ENCODING 945
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+68
+90
+90
+90
+90
+68
+00
+00
+ENDCHAR
+STARTCHAR beta
+ENCODING 946
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+E0
+90
+90
+F0
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR gamma
+ENCODING 947
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+50
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR delta
+ENCODING 948
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+40
+20
+70
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR epsilon
+ENCODING 949
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+60
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR zeta
+ENCODING 950
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+10
+20
+40
+80
+80
+80
+70
+08
+10
+ENDCHAR
+STARTCHAR eta
+ENCODING 951
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+88
+88
+88
+88
+88
+08
+08
+ENDCHAR
+STARTCHAR theta
+ENCODING 952
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+30
+48
+48
+78
+48
+48
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR iota
+ENCODING 953
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+60
+20
+20
+20
+20
+18
+00
+00
+ENDCHAR
+STARTCHAR kappa
+ENCODING 954
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+48
+50
+60
+60
+50
+48
+00
+00
+ENDCHAR
+STARTCHAR lambda
+ENCODING 955
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+40
+20
+20
+50
+50
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR mugreek
+ENCODING 956
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+98
+E8
+80
+80
+ENDCHAR
+STARTCHAR nu
+ENCODING 957
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+50
+50
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR xi
+ENCODING 958
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+80
+80
+70
+80
+80
+80
+70
+08
+10
+ENDCHAR
+STARTCHAR omicron
+ENCODING 959
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR pi
+ENCODING 960
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR rho
+ENCODING 961
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR sigma1
+ENCODING 962
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+80
+80
+80
+70
+08
+10
+ENDCHAR
+STARTCHAR sigma
+ENCODING 963
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+90
+90
+90
+90
+60
+00
+00
+ENDCHAR
+STARTCHAR tau
+ENCODING 964
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+20
+20
+20
+20
+10
+00
+00
+ENDCHAR
+STARTCHAR upsilon
+ENCODING 965
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR phi
+ENCODING 966
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+90
+A8
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR chi
+ENCODING 967
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+50
+20
+20
+50
+88
+88
+ENDCHAR
+STARTCHAR psi
+ENCODING 968
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+A8
+A8
+A8
+A8
+A8
+70
+20
+20
+ENDCHAR
+STARTCHAR omega
+ENCODING 969
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+50
+88
+A8
+A8
+A8
+50
+00
+00
+ENDCHAR
+STARTCHAR iotadieresis
+ENCODING 970
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+60
+20
+20
+20
+20
+18
+00
+00
+ENDCHAR
+STARTCHAR upsilondieresis
+ENCODING 971
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR omicrontonos
+ENCODING 972
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR upsilontonos
+ENCODING 973
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR omegatonos
+ENCODING 974
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+50
+88
+A8
+A8
+A8
+50
+00
+00
+ENDCHAR
+STARTCHAR theta1
+ENCODING 977
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+30
+48
+48
+3C
+08
+C8
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR phi1
+ENCODING 981
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+70
+A8
+A8
+A8
+A8
+70
+20
+00
+ENDCHAR
+STARTCHAR uni03F0
+ENCODING 1008
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+C4
+28
+10
+20
+50
+8C
+00
+00
+ENDCHAR
+STARTCHAR uni03F1
+ENCODING 1009
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+88
+88
+88
+F0
+80
+70
+ENDCHAR
+STARTCHAR uni03F2
+ENCODING 1010
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni03F3
+ENCODING 1011
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+08
+08
+00
+18
+08
+08
+08
+08
+08
+48
+30
+ENDCHAR
+STARTCHAR uni03F4
+ENCODING 1012
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+F8
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni03F5
+ENCODING 1013
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+80
+F0
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR uni03F6
+ENCODING 1014
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+08
+78
+08
+08
+F0
+00
+00
+ENDCHAR
+STARTCHAR uni0400
+ENCODING 1024
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+20
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR afii10023
+ENCODING 1025
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR afii10051
+ENCODING 1026
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+E0
+40
+40
+70
+48
+48
+48
+48
+08
+10
+ENDCHAR
+STARTCHAR afii10052
+ENCODING 1027
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+F8
+80
+80
+80
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR afii10053
+ENCODING 1028
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+F0
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10054
+ENCODING 1029
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+70
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10055
+ENCODING 1030
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10056
+ENCODING 1031
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10057
+ENCODING 1032
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+38
+10
+10
+10
+10
+90
+90
+60
+00
+00
+ENDCHAR
+STARTCHAR afii10058
+ENCODING 1033
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+60
+A0
+B0
+A8
+A8
+A8
+A8
+B0
+00
+00
+ENDCHAR
+STARTCHAR afii10059
+ENCODING 1034
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+A0
+A0
+B0
+E8
+A8
+A8
+A8
+B0
+00
+00
+ENDCHAR
+STARTCHAR afii10060
+ENCODING 1035
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+E0
+40
+40
+70
+48
+48
+48
+48
+00
+00
+ENDCHAR
+STARTCHAR afii10061
+ENCODING 1036
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+20
+88
+90
+A0
+C0
+C0
+A0
+90
+88
+00
+00
+ENDCHAR
+STARTCHAR uni040D
+ENCODING 1037
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+20
+88
+88
+98
+A8
+C8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10062
+ENCODING 1038
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+88
+88
+88
+88
+78
+08
+08
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10145
+ENCODING 1039
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+88
+88
+88
+F8
+20
+20
+ENDCHAR
+STARTCHAR afii10017
+ENCODING 1040
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10018
+ENCODING 1041
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+80
+80
+F0
+88
+88
+88
+F0
+00
+00
+ENDCHAR
+STARTCHAR afii10019
+ENCODING 1042
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+88
+88
+F0
+88
+88
+88
+F0
+00
+00
+ENDCHAR
+STARTCHAR afii10020
+ENCODING 1043
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+80
+80
+80
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR afii10021
+ENCODING 1044
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+38
+48
+48
+48
+48
+48
+48
+FC
+84
+00
+ENDCHAR
+STARTCHAR afii10022
+ENCODING 1045
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR afii10024
+ENCODING 1046
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+A8
+A8
+A8
+70
+70
+A8
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR afii10025
+ENCODING 1047
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+08
+30
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10026
+ENCODING 1048
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+98
+A8
+C8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10027
+ENCODING 1049
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+88
+88
+98
+A8
+C8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10028
+ENCODING 1050
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+90
+A0
+C0
+C0
+A0
+90
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10029
+ENCODING 1051
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+38
+48
+48
+48
+48
+48
+48
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10030
+ENCODING 1052
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+D8
+A8
+A8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10031
+ENCODING 1053
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+F8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10032
+ENCODING 1054
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10033
+ENCODING 1055
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+88
+88
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10034
+ENCODING 1056
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+88
+88
+88
+F0
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR afii10035
+ENCODING 1057
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+80
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10036
+ENCODING 1058
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+20
+20
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR afii10037
+ENCODING 1059
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+78
+08
+08
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10038
+ENCODING 1060
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+70
+A8
+A8
+A8
+A8
+A8
+A8
+70
+20
+00
+ENDCHAR
+STARTCHAR afii10039
+ENCODING 1061
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+50
+20
+20
+50
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10040
+ENCODING 1062
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+88
+88
+88
+7C
+04
+04
+ENDCHAR
+STARTCHAR afii10041
+ENCODING 1063
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+78
+08
+08
+08
+00
+00
+ENDCHAR
+STARTCHAR afii10042
+ENCODING 1064
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+A8
+A8
+A8
+A8
+A8
+A8
+A8
+78
+00
+00
+ENDCHAR
+STARTCHAR afii10043
+ENCODING 1065
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+A8
+A8
+A8
+A8
+A8
+A8
+A8
+7C
+04
+04
+ENDCHAR
+STARTCHAR afii10044
+ENCODING 1066
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+C0
+40
+70
+48
+48
+48
+48
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10045
+ENCODING 1067
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+C8
+A8
+A8
+A8
+A8
+C8
+00
+00
+ENDCHAR
+STARTCHAR afii10046
+ENCODING 1068
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+40
+70
+48
+48
+48
+48
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10047
+ENCODING 1069
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+08
+38
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10048
+ENCODING 1070
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+90
+A8
+A8
+A8
+E8
+A8
+A8
+90
+00
+00
+ENDCHAR
+STARTCHAR afii10049
+ENCODING 1071
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+88
+88
+88
+78
+28
+48
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10065
+ENCODING 1072
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR afii10066
+ENCODING 1073
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+80
+F0
+88
+88
+88
+88
+F0
+00
+00
+ENDCHAR
+STARTCHAR afii10067
+ENCODING 1074
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+E0
+90
+90
+F0
+88
+88
+88
+F0
+00
+00
+ENDCHAR
+STARTCHAR afii10068
+ENCODING 1075
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+80
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR afii10069
+ENCODING 1076
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR afii10070
+ENCODING 1077
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR afii10072
+ENCODING 1078
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+A8
+A8
+70
+A8
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR afii10073
+ENCODING 1079
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+30
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10074
+ENCODING 1080
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR afii10075
+ENCODING 1081
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR afii10076
+ENCODING 1082
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+48
+50
+60
+60
+50
+48
+00
+00
+ENDCHAR
+STARTCHAR afii10077
+ENCODING 1083
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+38
+48
+48
+48
+48
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10078
+ENCODING 1084
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+D8
+A8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10079
+ENCODING 1085
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10080
+ENCODING 1086
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10081
+ENCODING 1087
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10082
+ENCODING 1088
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+88
+88
+88
+88
+F0
+80
+80
+ENDCHAR
+STARTCHAR afii10083
+ENCODING 1089
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+80
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10084
+ENCODING 1090
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR afii10085
+ENCODING 1091
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR afii10086
+ENCODING 1092
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+70
+A8
+A8
+A8
+A8
+70
+20
+00
+ENDCHAR
+STARTCHAR afii10087
+ENCODING 1093
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+50
+20
+20
+50
+88
+00
+00
+ENDCHAR
+STARTCHAR afii10088
+ENCODING 1094
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+88
+7C
+04
+04
+ENDCHAR
+STARTCHAR afii10089
+ENCODING 1095
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+78
+08
+08
+00
+00
+ENDCHAR
+STARTCHAR afii10090
+ENCODING 1096
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+A8
+A8
+A8
+A8
+A8
+78
+00
+00
+ENDCHAR
+STARTCHAR afii10091
+ENCODING 1097
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+A8
+A8
+A8
+A8
+A8
+7C
+04
+04
+ENDCHAR
+STARTCHAR afii10092
+ENCODING 1098
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+C0
+40
+70
+48
+48
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10093
+ENCODING 1099
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+C8
+A8
+A8
+C8
+00
+00
+ENDCHAR
+STARTCHAR afii10094
+ENCODING 1100
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+40
+40
+70
+48
+48
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10095
+ENCODING 1101
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+38
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10096
+ENCODING 1102
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+90
+A8
+A8
+E8
+A8
+90
+00
+00
+ENDCHAR
+STARTCHAR afii10097
+ENCODING 1103
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+88
+88
+78
+28
+48
+00
+00
+ENDCHAR
+STARTCHAR uni0450
+ENCODING 1104
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+20
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR afii10071
+ENCODING 1105
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR afii10099
+ENCODING 1106
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+F0
+40
+70
+48
+48
+48
+48
+08
+10
+ENDCHAR
+STARTCHAR afii10100
+ENCODING 1107
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+20
+F8
+80
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR afii10101
+ENCODING 1108
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+E0
+80
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10102
+ENCODING 1109
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+80
+70
+08
+08
+F0
+00
+00
+ENDCHAR
+STARTCHAR afii10103
+ENCODING 1110
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+20
+00
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10104
+ENCODING 1111
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10105
+ENCODING 1112
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+08
+08
+00
+18
+08
+08
+08
+08
+08
+48
+30
+ENDCHAR
+STARTCHAR afii10106
+ENCODING 1113
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+60
+A0
+B0
+A8
+A8
+B0
+00
+00
+ENDCHAR
+STARTCHAR afii10107
+ENCODING 1114
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+A0
+A0
+F0
+A8
+A8
+B0
+00
+00
+ENDCHAR
+STARTCHAR afii10108
+ENCODING 1115
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+F0
+40
+70
+48
+48
+48
+48
+00
+00
+ENDCHAR
+STARTCHAR afii10109
+ENCODING 1116
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+10
+48
+50
+60
+60
+50
+48
+00
+00
+ENDCHAR
+STARTCHAR uni045D
+ENCODING 1117
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+20
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR afii10110
+ENCODING 1118
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR afii10193
+ENCODING 1119
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+88
+F8
+20
+20
+ENDCHAR
+STARTCHAR afii10146
+ENCODING 1122
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+F0
+40
+70
+48
+48
+48
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10194
+ENCODING 1123
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+40
+E0
+40
+70
+48
+48
+70
+00
+00
+ENDCHAR
+STARTCHAR uni046A
+ENCODING 1130
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+88
+50
+20
+70
+A8
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR uni046B
+ENCODING 1131
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+50
+20
+70
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR afii10050
+ENCODING 1168
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+F8
+80
+80
+80
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR afii10098
+ENCODING 1169
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+08
+F8
+80
+80
+80
+80
+80
+00
+00
+ENDCHAR
+STARTCHAR uni0492
+ENCODING 1170
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+7C
+40
+40
+40
+F0
+40
+40
+40
+00
+00
+ENDCHAR
+STARTCHAR uni0493
+ENCODING 1171
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+40
+40
+F0
+40
+40
+00
+00
+ENDCHAR
+STARTCHAR uni0494
+ENCODING 1172
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+80
+80
+80
+F0
+88
+88
+88
+08
+10
+ENDCHAR
+STARTCHAR uni0495
+ENCODING 1173
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+80
+80
+E0
+90
+90
+10
+20
+ENDCHAR
+STARTCHAR uni0496
+ENCODING 1174
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+A8
+A8
+A8
+70
+70
+A8
+A8
+AC
+04
+04
+ENDCHAR
+STARTCHAR uni0497
+ENCODING 1175
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+A8
+A8
+70
+A8
+A8
+AC
+04
+04
+ENDCHAR
+STARTCHAR uni0498
+ENCODING 1176
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+08
+30
+08
+08
+88
+70
+20
+20
+ENDCHAR
+STARTCHAR uni0499
+ENCODING 1177
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+30
+08
+88
+70
+20
+20
+ENDCHAR
+STARTCHAR uni049A
+ENCODING 1178
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+90
+A0
+C0
+C0
+A0
+90
+8C
+04
+04
+ENDCHAR
+STARTCHAR uni049B
+ENCODING 1179
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+48
+50
+60
+60
+50
+4C
+04
+04
+ENDCHAR
+STARTCHAR uni049C
+ENCODING 1180
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+84
+A8
+B0
+E0
+E0
+B0
+A8
+84
+00
+00
+ENDCHAR
+STARTCHAR uni049D
+ENCODING 1181
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+A8
+B0
+E0
+E0
+B0
+A8
+00
+00
+ENDCHAR
+STARTCHAR uni04A0
+ENCODING 1184
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+C4
+48
+50
+60
+60
+50
+48
+44
+00
+00
+ENDCHAR
+STARTCHAR uni04A1
+ENCODING 1185
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+C8
+50
+60
+60
+50
+48
+00
+00
+ENDCHAR
+STARTCHAR uni04A2
+ENCODING 1186
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+F8
+88
+88
+88
+8C
+04
+04
+ENDCHAR
+STARTCHAR uni04A3
+ENCODING 1187
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+F8
+88
+88
+8C
+04
+04
+ENDCHAR
+STARTCHAR uni04A4
+ENCODING 1188
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+9C
+90
+90
+F0
+90
+90
+90
+90
+00
+00
+ENDCHAR
+STARTCHAR uni04A5
+ENCODING 1189
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+9C
+90
+F0
+90
+90
+90
+00
+00
+ENDCHAR
+STARTCHAR uni04AA
+ENCODING 1194
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+80
+80
+80
+80
+88
+70
+20
+20
+ENDCHAR
+STARTCHAR uni04AB
+ENCODING 1195
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+80
+80
+88
+70
+20
+20
+ENDCHAR
+STARTCHAR uni04AE
+ENCODING 1198
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+50
+50
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR uni04AF
+ENCODING 1199
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+50
+50
+20
+20
+20
+ENDCHAR
+STARTCHAR uni04B0
+ENCODING 1200
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+50
+50
+20
+70
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR uni04B1
+ENCODING 1201
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+50
+50
+20
+70
+20
+ENDCHAR
+STARTCHAR uni04B2
+ENCODING 1202
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+50
+20
+20
+50
+88
+8C
+04
+04
+ENDCHAR
+STARTCHAR uni04B3
+ENCODING 1203
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+50
+20
+20
+50
+8C
+04
+04
+ENDCHAR
+STARTCHAR uni04B6
+ENCODING 1206
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+78
+08
+08
+0C
+04
+04
+ENDCHAR
+STARTCHAR uni04B7
+ENCODING 1207
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+78
+08
+0C
+04
+04
+ENDCHAR
+STARTCHAR uni04B8
+ENCODING 1208
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+A8
+A8
+78
+28
+28
+08
+00
+00
+ENDCHAR
+STARTCHAR uni04B9
+ENCODING 1209
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+A8
+A8
+78
+28
+08
+00
+00
+ENDCHAR
+STARTCHAR uni04BA
+ENCODING 1210
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+80
+80
+F0
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni04BB
+ENCODING 1211
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+80
+80
+F0
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni04C0
+ENCODING 1216
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04C1
+ENCODING 1217
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+A8
+A8
+A8
+70
+70
+A8
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR uni04C2
+ENCODING 1218
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+A8
+A8
+70
+A8
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR uni04CF
+ENCODING 1231
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+60
+20
+20
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04D0
+ENCODING 1232
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni04D1
+ENCODING 1233
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR uni04D2
+ENCODING 1234
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+88
+88
+88
+F8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni04D3
+ENCODING 1235
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+70
+08
+78
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR uni04D4
+ENCODING 1236
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+7C
+90
+90
+FC
+90
+90
+90
+9C
+00
+00
+ENDCHAR
+STARTCHAR uni04D5
+ENCODING 1237
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+28
+68
+B0
+A0
+78
+00
+00
+ENDCHAR
+STARTCHAR uni04D6
+ENCODING 1238
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+20
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR uni04D7
+ENCODING 1239
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+20
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR uni04D8
+ENCODING 1240
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+08
+08
+F8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR afii10846
+ENCODING 1241
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+08
+F8
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04DA
+ENCODING 1242
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+88
+08
+08
+F8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04DB
+ENCODING 1243
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+70
+88
+08
+F8
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04DC
+ENCODING 1244
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+A8
+A8
+A8
+70
+70
+A8
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR uni04DD
+ENCODING 1245
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+A8
+A8
+70
+A8
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR uni04DE
+ENCODING 1246
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+88
+08
+30
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04DF
+ENCODING 1247
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+70
+88
+30
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04E2
+ENCODING 1250
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+88
+88
+98
+A8
+C8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni04E3
+ENCODING 1251
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+00
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR uni04E4
+ENCODING 1252
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+88
+88
+98
+A8
+C8
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni04E5
+ENCODING 1253
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+88
+88
+88
+88
+88
+78
+00
+00
+ENDCHAR
+STARTCHAR uni04E6
+ENCODING 1254
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04E7
+ENCODING 1255
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+70
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04E8
+ENCODING 1256
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+F8
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04E9
+ENCODING 1257
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+F8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04EA
+ENCODING 1258
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+88
+88
+88
+F8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04EB
+ENCODING 1259
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+70
+88
+F8
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04EC
+ENCODING 1260
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+70
+88
+08
+38
+08
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04ED
+ENCODING 1261
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+70
+88
+38
+08
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04EE
+ENCODING 1262
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+70
+00
+88
+88
+88
+88
+78
+08
+08
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04EF
+ENCODING 1263
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+00
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR uni04F0
+ENCODING 1264
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+88
+88
+88
+88
+78
+08
+08
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04F1
+ENCODING 1265
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR uni04F2
+ENCODING 1266
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+88
+88
+88
+88
+78
+08
+08
+70
+00
+00
+ENDCHAR
+STARTCHAR uni04F3
+ENCODING 1267
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+28
+50
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR uni04F4
+ENCODING 1268
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+88
+88
+88
+88
+78
+08
+08
+08
+00
+00
+ENDCHAR
+STARTCHAR uni04F5
+ENCODING 1269
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+88
+88
+88
+78
+08
+08
+00
+00
+ENDCHAR
+STARTCHAR uni04F8
+ENCODING 1272
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+88
+88
+C8
+A8
+A8
+A8
+A8
+C8
+00
+00
+ENDCHAR
+STARTCHAR uni04F9
+ENCODING 1273
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+88
+88
+C8
+A8
+A8
+C8
+00
+00
+ENDCHAR
+STARTCHAR uni1E0C
+ENCODING 7692
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+E0
+90
+88
+88
+88
+88
+90
+E0
+20
+20
+ENDCHAR
+STARTCHAR uni1E0D
+ENCODING 7693
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+08
+78
+88
+88
+88
+88
+78
+20
+20
+ENDCHAR
+STARTCHAR Klinebelow
+ENCODING 7732
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+90
+A0
+C0
+C0
+A0
+90
+88
+00
+70
+ENDCHAR
+STARTCHAR klinebelow
+ENCODING 7733
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+40
+48
+50
+60
+60
+50
+48
+00
+70
+ENDCHAR
+STARTCHAR uni1E36
+ENCODING 7734
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+80
+80
+80
+80
+80
+80
+F8
+20
+20
+ENDCHAR
+STARTCHAR uni1E37
+ENCODING 7735
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+60
+20
+20
+20
+20
+20
+20
+70
+20
+20
+ENDCHAR
+STARTCHAR uni1E40
+ENCODING 7744
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+88
+D8
+A8
+A8
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni1E41
+ENCODING 7745
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+F0
+A8
+A8
+A8
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR uni1E42
+ENCODING 7746
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+D8
+A8
+A8
+88
+88
+88
+88
+20
+20
+ENDCHAR
+STARTCHAR uni1E43
+ENCODING 7747
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+A8
+A8
+A8
+A8
+A8
+10
+10
+ENDCHAR
+STARTCHAR uni1E44
+ENCODING 7748
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+88
+88
+C8
+A8
+98
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni1E45
+ENCODING 7749
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+F0
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni1E46
+ENCODING 7750
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+C8
+A8
+98
+88
+88
+88
+20
+20
+ENDCHAR
+STARTCHAR uni1E47
+ENCODING 7751
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+88
+88
+88
+88
+88
+20
+20
+ENDCHAR
+STARTCHAR uni1E6C
+ENCODING 7788
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+20
+20
+20
+20
+20
+20
+20
+10
+10
+ENDCHAR
+STARTCHAR uni1E6D
+ENCODING 7789
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+70
+20
+20
+20
+20
+18
+10
+10
+ENDCHAR
+STARTCHAR Edotbelow
+ENCODING 7864
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+80
+80
+F0
+80
+80
+80
+F8
+20
+20
+ENDCHAR
+STARTCHAR edotbelow
+ENCODING 7865
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+F8
+80
+80
+78
+20
+20
+ENDCHAR
+STARTCHAR Etilde
+ENCODING 7868
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+F8
+80
+80
+F0
+80
+80
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR etilde
+ENCODING 7869
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+28
+50
+70
+88
+F8
+80
+80
+78
+00
+00
+ENDCHAR
+STARTCHAR uni1ECA
+ENCODING 7882
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+20
+20
+20
+20
+20
+20
+70
+20
+20
+ENDCHAR
+STARTCHAR uni1ECB
+ENCODING 7883
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+20
+00
+60
+20
+20
+20
+20
+70
+20
+20
+ENDCHAR
+STARTCHAR Odotbelow
+ENCODING 7884
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+88
+70
+20
+20
+ENDCHAR
+STARTCHAR odotbelow
+ENCODING 7885
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+88
+88
+88
+70
+20
+20
+ENDCHAR
+STARTCHAR uni1EE4
+ENCODING 7908
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+88
+88
+88
+70
+20
+20
+ENDCHAR
+STARTCHAR uni1EE5
+ENCODING 7909
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+88
+78
+20
+20
+ENDCHAR
+STARTCHAR Ytilde
+ENCODING 7928
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+28
+50
+88
+88
+50
+50
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR ytilde
+ENCODING 7929
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+28
+50
+88
+88
+88
+88
+88
+78
+08
+70
+ENDCHAR
+STARTCHAR uni2000
+ENCODING 8192
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2001
+ENCODING 8193
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR enspace
+ENCODING 8194
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2003
+ENCODING 8195
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2004
+ENCODING 8196
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2005
+ENCODING 8197
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2006
+ENCODING 8198
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2007
+ENCODING 8199
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2008
+ENCODING 8200
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2009
+ENCODING 8201
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni200A
+ENCODING 8202
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni200B
+ENCODING 8203
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR afii61664
+ENCODING 8204
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR afii301
+ENCODING 8205
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR afii299
+ENCODING 8206
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR afii300
+ENCODING 8207
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR hyphentwo
+ENCODING 8208
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+78
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2011
+ENCODING 8209
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+78
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR figuredash
+ENCODING 8210
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+F8
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR endash
+ENCODING 8211
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+F8
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR emdash
+ENCODING 8212
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+F8
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR afii00208
+ENCODING 8213
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+F8
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR dblverticalbar
+ENCODING 8214
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+50
+50
+50
+50
+50
+50
+00
+00
+ENDCHAR
+STARTCHAR underscoredbl
+ENCODING 8215
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+F8
+00
+F8
+ENDCHAR
+STARTCHAR quoteleft
+ENCODING 8216
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+10
+20
+20
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR quoteright
+ENCODING 8217
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+20
+40
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR quotesinglbase
+ENCODING 8218
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+20
+20
+40
+00
+ENDCHAR
+STARTCHAR quotereversed
+ENCODING 8219
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+20
+10
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR quotedblleft
+ENCODING 8220
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+28
+50
+50
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR quotedblright
+ENCODING 8221
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+28
+28
+50
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR quotedblbase
+ENCODING 8222
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+50
+50
+A0
+00
+ENDCHAR
+STARTCHAR uni201F
+ENCODING 8223
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+A0
+A0
+50
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR dagger
+ENCODING 8224
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+70
+20
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR daggerdbl
+ENCODING 8225
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+70
+20
+20
+20
+20
+70
+20
+00
+00
+ENDCHAR
+STARTCHAR bullet
+ENCODING 8226
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+30
+78
+78
+30
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR ellipsis
+ENCODING 8230
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR perthousand
+ENCODING 8240
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+44
+A8
+50
+20
+40
+A8
+54
+28
+00
+00
+ENDCHAR
+STARTCHAR minute
+ENCODING 8242
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+20
+20
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR second
+ENCODING 8243
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+50
+50
+50
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR guilsinglleft
+ENCODING 8249
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+10
+20
+40
+20
+10
+08
+00
+00
+ENDCHAR
+STARTCHAR guilsinglright
+ENCODING 8250
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+20
+10
+08
+10
+20
+40
+00
+00
+ENDCHAR
+STARTCHAR exclamdbl
+ENCODING 8252
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+50
+50
+50
+00
+50
+50
+00
+00
+ENDCHAR
+STARTCHAR overline
+ENCODING 8254
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+F8
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2070
+ENCODING 8304
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+30
+48
+48
+48
+30
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2071
+ENCODING 8305
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+00
+60
+20
+20
+70
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2074
+ENCODING 8308
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+08
+18
+28
+78
+08
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2075
+ENCODING 8309
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+70
+40
+70
+08
+70
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2076
+ENCODING 8310
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+30
+40
+70
+48
+30
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2077
+ENCODING 8311
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+78
+08
+10
+20
+20
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2078
+ENCODING 8312
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+30
+48
+30
+48
+30
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2079
+ENCODING 8313
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+30
+48
+38
+08
+30
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni207A
+ENCODING 8314
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+20
+F8
+20
+20
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni207B
+ENCODING 8315
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+78
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni207C
+ENCODING 8316
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+00
+78
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni207D
+ENCODING 8317
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+10
+20
+20
+20
+10
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni207E
+ENCODING 8318
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+20
+10
+10
+10
+20
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR nsuperior
+ENCODING 8319
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+70
+48
+48
+48
+48
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2080
+ENCODING 8320
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+30
+48
+48
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR uni2081
+ENCODING 8321
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+10
+30
+10
+10
+38
+00
+00
+ENDCHAR
+STARTCHAR uni2082
+ENCODING 8322
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+30
+48
+10
+20
+78
+00
+00
+ENDCHAR
+STARTCHAR uni2083
+ENCODING 8323
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+70
+08
+30
+08
+70
+00
+00
+ENDCHAR
+STARTCHAR uni2084
+ENCODING 8324
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+08
+18
+28
+78
+08
+00
+00
+ENDCHAR
+STARTCHAR uni2085
+ENCODING 8325
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+70
+40
+70
+08
+70
+00
+00
+ENDCHAR
+STARTCHAR uni2086
+ENCODING 8326
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+30
+40
+70
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR uni2087
+ENCODING 8327
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+78
+08
+10
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR uni2088
+ENCODING 8328
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+30
+48
+30
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR uni2089
+ENCODING 8329
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+30
+48
+38
+08
+30
+00
+00
+ENDCHAR
+STARTCHAR uni208A
+ENCODING 8330
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+20
+20
+F8
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR uni208B
+ENCODING 8331
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+78
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni208C
+ENCODING 8332
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+78
+00
+78
+00
+00
+00
+ENDCHAR
+STARTCHAR uni208D
+ENCODING 8333
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+10
+20
+20
+20
+10
+00
+00
+ENDCHAR
+STARTCHAR uni208E
+ENCODING 8334
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+20
+10
+10
+10
+20
+00
+00
+ENDCHAR
+STARTCHAR uni2090
+ENCODING 8336
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+30
+08
+38
+48
+38
+00
+00
+ENDCHAR
+STARTCHAR uni2091
+ENCODING 8337
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+30
+48
+78
+40
+38
+00
+00
+ENDCHAR
+STARTCHAR uni2092
+ENCODING 8338
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+30
+48
+48
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR uni2093
+ENCODING 8339
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+88
+50
+20
+50
+88
+00
+00
+ENDCHAR
+STARTCHAR uni2094
+ENCODING 8340
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+70
+08
+78
+48
+30
+00
+00
+ENDCHAR
+STARTCHAR uni2095
+ENCODING 8341
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+40
+70
+48
+48
+48
+48
+00
+00
+ENDCHAR
+STARTCHAR uni2096
+ENCODING 8342
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+40
+48
+50
+60
+50
+48
+00
+00
+ENDCHAR
+STARTCHAR uni2097
+ENCODING 8343
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+60
+20
+20
+20
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR uni2098
+ENCODING 8344
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+F0
+A8
+A8
+A8
+A8
+00
+00
+ENDCHAR
+STARTCHAR uni209A
+ENCODING 8346
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+70
+48
+48
+48
+70
+40
+40
+ENDCHAR
+STARTCHAR peseta
+ENCODING 8359
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+C0
+A0
+A0
+C8
+9C
+88
+88
+84
+00
+00
+ENDCHAR
+STARTCHAR Euro
+ENCODING 8364
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+38
+44
+F0
+40
+F0
+44
+38
+00
+00
+ENDCHAR
+STARTCHAR uni20AE
+ENCODING 8366
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+20
+30
+60
+30
+60
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR uni2102
+ENCODING 8450
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+A8
+A0
+A0
+A0
+A0
+A8
+70
+00
+00
+ENDCHAR
+STARTCHAR uni210E
+ENCODING 8462
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+80
+F0
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni210F
+ENCODING 8463
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+F0
+40
+70
+48
+48
+48
+48
+00
+00
+ENDCHAR
+STARTCHAR uni2115
+ENCODING 8469
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+C8
+A8
+D8
+A8
+98
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR afii61352
+ENCODING 8470
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+94
+94
+D0
+F0
+F0
+B4
+90
+94
+00
+00
+ENDCHAR
+STARTCHAR uni211A
+ENCODING 8474
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+C8
+A8
+A8
+A8
+A8
+A8
+70
+18
+00
+ENDCHAR
+STARTCHAR uni211D
+ENCODING 8477
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+A8
+A8
+A8
+B0
+B0
+A8
+E4
+00
+00
+ENDCHAR
+STARTCHAR trademark
+ENCODING 8482
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F4
+5C
+54
+54
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2124
+ENCODING 8484
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+18
+28
+50
+A0
+C0
+80
+F8
+00
+00
+ENDCHAR
+STARTCHAR Ohm
+ENCODING 8486
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+50
+D8
+00
+00
+ENDCHAR
+STARTCHAR aleph
+ENCODING 8501
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+48
+48
+24
+68
+90
+90
+88
+48
+00
+00
+ENDCHAR
+STARTCHAR arrowleft
+ENCODING 8592
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+60
+FC
+60
+20
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR arrowup
+ENCODING 8593
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+70
+F8
+20
+20
+20
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR arrowright
+ENCODING 8594
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+10
+18
+FC
+18
+10
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR arrowdown
+ENCODING 8595
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+20
+20
+20
+F8
+70
+20
+00
+00
+ENDCHAR
+STARTCHAR arrowboth
+ENCODING 8596
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+CC
+FC
+CC
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR arrowupdn
+ENCODING 8597
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+70
+F8
+20
+20
+F8
+70
+20
+00
+00
+ENDCHAR
+STARTCHAR uni21A4
+ENCODING 8612
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+24
+64
+FC
+64
+24
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni21A6
+ENCODING 8614
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+90
+98
+FC
+98
+90
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR arrowupdnbse
+ENCODING 8616
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+70
+F8
+20
+F8
+70
+20
+F8
+00
+00
+ENDCHAR
+STARTCHAR carriagereturn
+ENCODING 8629
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+08
+08
+28
+68
+F8
+60
+20
+00
+00
+ENDCHAR
+STARTCHAR uni21BB
+ENCODING 8635
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+30
+50
+94
+84
+84
+84
+78
+00
+00
+ENDCHAR
+STARTCHAR uni21CB
+ENCODING 8651
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+40
+FC
+00
+FC
+08
+10
+00
+00
+00
+ENDCHAR
+STARTCHAR uni21CC
+ENCODING 8652
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+08
+FC
+00
+FC
+40
+20
+00
+00
+00
+ENDCHAR
+STARTCHAR arrowdblleft
+ENCODING 8656
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+7C
+E0
+7C
+20
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR arrowdblup
+ENCODING 8657
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+70
+F8
+50
+50
+50
+50
+50
+00
+00
+ENDCHAR
+STARTCHAR arrowdblright
+ENCODING 8658
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+10
+F8
+1C
+F8
+10
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR arrowdbldown
+ENCODING 8659
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+50
+50
+50
+F8
+70
+20
+00
+00
+ENDCHAR
+STARTCHAR arrowdblboth
+ENCODING 8660
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+FC
+CC
+FC
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni21D5
+ENCODING 8661
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+70
+F8
+50
+50
+F8
+70
+20
+00
+00
+ENDCHAR
+STARTCHAR universal
+ENCODING 8704
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+F8
+50
+50
+50
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR existential
+ENCODING 8707
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+F8
+08
+08
+F8
+08
+08
+F8
+00
+00
+ENDCHAR
+STARTCHAR uni2204
+ENCODING 8708
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+F8
+28
+28
+F8
+48
+48
+F8
+80
+00
+ENDCHAR
+STARTCHAR emptyset
+ENCODING 8709
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+70
+98
+A8
+A8
+C8
+70
+80
+00
+00
+ENDCHAR
+STARTCHAR increment
+ENCODING 8710
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+50
+50
+88
+88
+88
+F8
+00
+00
+ENDCHAR
+STARTCHAR gradient
+ENCODING 8711
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+88
+88
+88
+50
+50
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR element
+ENCODING 8712
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+38
+40
+80
+F8
+80
+40
+38
+00
+00
+ENDCHAR
+STARTCHAR notelement
+ENCODING 8713
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+38
+50
+90
+F8
+A0
+60
+78
+40
+00
+ENDCHAR
+STARTCHAR uni220A
+ENCODING 8714
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+78
+80
+F8
+80
+78
+00
+00
+00
+ENDCHAR
+STARTCHAR suchthat
+ENCODING 8715
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+E0
+10
+08
+F8
+08
+10
+E0
+00
+00
+ENDCHAR
+STARTCHAR uni220C
+ENCODING 8716
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+80
+E0
+50
+48
+F8
+28
+30
+F0
+10
+00
+ENDCHAR
+STARTCHAR uni220D
+ENCODING 8717
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+08
+F8
+08
+F0
+00
+00
+00
+ENDCHAR
+STARTCHAR minus
+ENCODING 8722
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+F8
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2213
+ENCODING 8723
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+F8
+00
+20
+20
+F8
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR uni2214
+ENCODING 8724
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+00
+20
+20
+F8
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR uni2215
+ENCODING 8725
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+08
+10
+20
+40
+80
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2216
+ENCODING 8726
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+80
+40
+20
+10
+08
+00
+00
+00
+ENDCHAR
+STARTCHAR bulletoperator
+ENCODING 8729
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+30
+78
+30
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR radical
+ENCODING 8730
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+0C
+08
+08
+08
+88
+88
+48
+28
+18
+00
+00
+ENDCHAR
+STARTCHAR infinity
+ENCODING 8734
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+50
+A8
+A8
+A8
+50
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR orthogonal
+ENCODING 8735
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+80
+80
+80
+80
+F8
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2225
+ENCODING 8741
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+50
+50
+50
+50
+50
+50
+50
+50
+00
+00
+ENDCHAR
+STARTCHAR logicaland
+ENCODING 8743
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+20
+20
+50
+50
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR logicalor
+ENCODING 8744
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+50
+50
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR intersection
+ENCODING 8745
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+70
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR union
+ENCODING 8746
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR approxequal
+ENCODING 8776
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+68
+B0
+00
+68
+B0
+00
+00
+00
+ENDCHAR
+STARTCHAR notequal
+ENCODING 8800
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+F8
+20
+40
+F8
+80
+00
+00
+00
+ENDCHAR
+STARTCHAR equivalence
+ENCODING 8801
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+00
+F8
+00
+F8
+00
+00
+00
+ENDCHAR
+STARTCHAR lessequal
+ENCODING 8804
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+10
+20
+40
+80
+40
+20
+10
+00
+F8
+00
+00
+ENDCHAR
+STARTCHAR greaterequal
+ENCODING 8805
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+40
+20
+10
+08
+10
+20
+40
+00
+F8
+00
+00
+ENDCHAR
+STARTCHAR uni226A
+ENCODING 8810
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+14
+28
+50
+A0
+50
+28
+14
+00
+00
+ENDCHAR
+STARTCHAR uni226B
+ENCODING 8811
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+A0
+50
+28
+14
+28
+50
+A0
+00
+00
+ENDCHAR
+STARTCHAR propersubset
+ENCODING 8834
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+78
+80
+80
+80
+80
+78
+00
+00
+00
+ENDCHAR
+STARTCHAR propersuperset
+ENCODING 8835
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+F0
+08
+08
+08
+08
+F0
+00
+00
+00
+ENDCHAR
+STARTCHAR reflexsubset
+ENCODING 8838
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+80
+80
+80
+80
+78
+00
+F8
+00
+00
+ENDCHAR
+STARTCHAR reflexsuperset
+ENCODING 8839
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F0
+08
+08
+08
+08
+F0
+00
+F8
+00
+00
+ENDCHAR
+STARTCHAR perpendicular
+ENCODING 8869
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+20
+20
+20
+20
+20
+F8
+00
+00
+ENDCHAR
+STARTCHAR uni22C2
+ENCODING 8898
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+88
+88
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uni22C3
+ENCODING 8899
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+88
+88
+88
+88
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR uni2300
+ENCODING 8960
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+08
+70
+98
+A8
+A8
+C8
+70
+80
+00
+00
+ENDCHAR
+STARTCHAR house
+ENCODING 8962
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+20
+50
+88
+88
+88
+F8
+00
+00
+ENDCHAR
+STARTCHAR uni2308
+ENCODING 8968
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+40
+40
+40
+40
+40
+40
+40
+00
+00
+ENDCHAR
+STARTCHAR uni2309
+ENCODING 8969
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+10
+10
+10
+10
+10
+10
+10
+00
+00
+ENDCHAR
+STARTCHAR uni230A
+ENCODING 8970
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+40
+40
+40
+40
+40
+40
+40
+70
+00
+00
+ENDCHAR
+STARTCHAR uni230B
+ENCODING 8971
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+10
+10
+10
+10
+10
+10
+70
+00
+00
+ENDCHAR
+STARTCHAR revlogicalnot
+ENCODING 8976
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F8
+80
+80
+80
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2319
+ENCODING 8985
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+80
+80
+80
+F8
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR integraltp
+ENCODING 8992
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+10
+28
+28
+20
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR integralbt
+ENCODING 8993
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+A0
+A0
+40
+00
+00
+ENDCHAR
+STARTCHAR uni239B
+ENCODING 9115
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+10
+10
+20
+20
+20
+40
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR uni239C
+ENCODING 9116
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+40
+40
+40
+40
+40
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR uni239D
+ENCODING 9117
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+40
+40
+40
+40
+20
+20
+20
+10
+10
+08
+ENDCHAR
+STARTCHAR uni239E
+ENCODING 9118
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+20
+20
+10
+10
+10
+08
+08
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR uni239F
+ENCODING 9119
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+08
+08
+08
+08
+08
+08
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR uni23A0
+ENCODING 9120
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+08
+08
+08
+08
+10
+10
+10
+20
+20
+40
+ENDCHAR
+STARTCHAR uni23A1
+ENCODING 9121
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+78
+40
+40
+40
+40
+40
+40
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR uni23A2
+ENCODING 9122
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+40
+40
+40
+40
+40
+40
+40
+40
+40
+40
+ENDCHAR
+STARTCHAR uni23A3
+ENCODING 9123
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+40
+40
+40
+40
+40
+40
+40
+40
+40
+78
+ENDCHAR
+STARTCHAR uni23A4
+ENCODING 9124
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+78
+08
+08
+08
+08
+08
+08
+08
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR uni23A5
+ENCODING 9125
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+08
+08
+08
+08
+08
+08
+08
+08
+08
+08
+ENDCHAR
+STARTCHAR uni23A6
+ENCODING 9126
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+08
+08
+08
+08
+08
+08
+08
+08
+08
+78
+ENDCHAR
+STARTCHAR uni23A7
+ENCODING 9127
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+0C
+10
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni23A8
+ENCODING 9128
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+C0
+C0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni23A9
+ENCODING 9129
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+10
+0C
+ENDCHAR
+STARTCHAR uni23AB
+ENCODING 9131
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+C0
+20
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+ENDCHAR
+STARTCHAR uni23AC
+ENCODING 9132
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+10
+10
+10
+10
+0C
+0C
+10
+10
+10
+10
+10
+ENDCHAR
+STARTCHAR uni23AD
+ENCODING 9133
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+20
+C0
+ENDCHAR
+STARTCHAR uni23AE
+ENCODING 9134
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni23AF
+ENCODING 9135
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni23BA
+ENCODING 9146
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+FC
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni23BB
+ENCODING 9147
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+FC
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni23BC
+ENCODING 9148
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+FC
+00
+00
+00
+ENDCHAR
+STARTCHAR uni23BD
+ENCODING 9149
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+FC
+ENDCHAR
+STARTCHAR uni23D0
+ENCODING 9168
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2409
+ENCODING 9225
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+90
+90
+F0
+90
+90
+00
+7C
+10
+10
+10
+10
+00
+ENDCHAR
+STARTCHAR uni240A
+ENCODING 9226
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+80
+80
+80
+80
+F0
+00
+3C
+20
+38
+20
+20
+00
+ENDCHAR
+STARTCHAR uni240B
+ENCODING 9227
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+88
+88
+88
+50
+20
+00
+7C
+10
+10
+10
+10
+00
+ENDCHAR
+STARTCHAR uni240C
+ENCODING 9228
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+F0
+80
+E0
+80
+80
+00
+3C
+20
+38
+20
+20
+00
+ENDCHAR
+STARTCHAR uni240D
+ENCODING 9229
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+60
+90
+80
+90
+60
+00
+38
+24
+38
+28
+24
+00
+ENDCHAR
+STARTCHAR uni2424
+ENCODING 9252
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+90
+D0
+B0
+90
+90
+00
+20
+20
+20
+20
+3C
+00
+ENDCHAR
+STARTCHAR SF100000
+ENCODING 9472
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2501
+ENCODING 9473
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+FC
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF110000
+ENCODING 9474
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2503
+ENCODING 9475
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2508
+ENCODING 9480
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+A8
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2509
+ENCODING 9481
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+A8
+A8
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni250A
+ENCODING 9482
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+00
+20
+20
+00
+20
+20
+00
+20
+20
+00
+ENDCHAR
+STARTCHAR uni250B
+ENCODING 9483
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+00
+30
+30
+00
+30
+30
+00
+30
+30
+00
+ENDCHAR
+STARTCHAR SF010000
+ENCODING 9484
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+3C
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni250D
+ENCODING 9485
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+3C
+3C
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni250E
+ENCODING 9486
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+3C
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni250F
+ENCODING 9487
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+3C
+3C
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR SF030000
+ENCODING 9488
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+E0
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2511
+ENCODING 9489
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+E0
+E0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2512
+ENCODING 9490
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+F0
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2513
+ENCODING 9491
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+F0
+F0
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR SF020000
+ENCODING 9492
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+3C
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2515
+ENCODING 9493
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+3C
+3C
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2516
+ENCODING 9494
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+3C
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2517
+ENCODING 9495
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+3C
+3C
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF040000
+ENCODING 9496
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2519
+ENCODING 9497
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+E0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni251A
+ENCODING 9498
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni251B
+ENCODING 9499
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+F0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF080000
+ENCODING 9500
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+3C
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni251D
+ENCODING 9501
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+3C
+3C
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni251E
+ENCODING 9502
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+3C
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni251F
+ENCODING 9503
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+3C
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2520
+ENCODING 9504
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+3C
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2521
+ENCODING 9505
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+3C
+3C
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2522
+ENCODING 9506
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+3C
+3C
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2523
+ENCODING 9507
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+3C
+3C
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR SF090000
+ENCODING 9508
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2525
+ENCODING 9509
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+E0
+E0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2526
+ENCODING 9510
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2527
+ENCODING 9511
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+F0
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2528
+ENCODING 9512
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2529
+ENCODING 9513
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+F0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni252A
+ENCODING 9514
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+F0
+F0
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni252B
+ENCODING 9515
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+F0
+F0
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR SF060000
+ENCODING 9516
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni252D
+ENCODING 9517
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+E0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni252E
+ENCODING 9518
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+3C
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni252F
+ENCODING 9519
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+FC
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2530
+ENCODING 9520
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2531
+ENCODING 9521
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+F0
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2532
+ENCODING 9522
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+3C
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2533
+ENCODING 9523
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+FC
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR SF070000
+ENCODING 9524
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2535
+ENCODING 9525
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+E0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2536
+ENCODING 9526
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+3C
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2537
+ENCODING 9527
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+FC
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2538
+ENCODING 9528
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2539
+ENCODING 9529
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+F0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni253A
+ENCODING 9530
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+3C
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni253B
+ENCODING 9531
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+FC
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF050000
+ENCODING 9532
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni253D
+ENCODING 9533
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+E0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni253E
+ENCODING 9534
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+3C
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni253F
+ENCODING 9535
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+FC
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2540
+ENCODING 9536
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2541
+ENCODING 9537
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2542
+ENCODING 9538
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2543
+ENCODING 9539
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+E0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2544
+ENCODING 9540
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+3C
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2545
+ENCODING 9541
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+F0
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2546
+ENCODING 9542
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+3C
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2547
+ENCODING 9543
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+FC
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2548
+ENCODING 9544
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+FC
+FC
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni2549
+ENCODING 9545
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+F0
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni254A
+ENCODING 9546
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+3C
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni254B
+ENCODING 9547
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+FC
+FC
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR SF430000
+ENCODING 9552
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+FC
+00
+FC
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF240000
+ENCODING 9553
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+50
+50
+50
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF510000
+ENCODING 9554
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+3C
+20
+3C
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR SF520000
+ENCODING 9555
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+7C
+50
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF390000
+ENCODING 9556
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+7C
+40
+5C
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF220000
+ENCODING 9557
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+E0
+20
+E0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR SF210000
+ENCODING 9558
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+F0
+50
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF250000
+ENCODING 9559
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+F0
+10
+D0
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF500000
+ENCODING 9560
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+3C
+20
+3C
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF490000
+ENCODING 9561
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+50
+7C
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF380000
+ENCODING 9562
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+5C
+40
+7C
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF280000
+ENCODING 9563
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+E0
+20
+E0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF270000
+ENCODING 9564
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+50
+F0
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF260000
+ENCODING 9565
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+D0
+10
+F0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF360000
+ENCODING 9566
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+3C
+20
+3C
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR SF370000
+ENCODING 9567
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+50
+5C
+50
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF420000
+ENCODING 9568
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+5C
+40
+5C
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF190000
+ENCODING 9569
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+E0
+20
+E0
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR SF200000
+ENCODING 9570
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+50
+D0
+50
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF230000
+ENCODING 9571
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+D0
+10
+D0
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF470000
+ENCODING 9572
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+FC
+00
+FC
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR SF480000
+ENCODING 9573
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+50
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF410000
+ENCODING 9574
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+FC
+00
+DC
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF450000
+ENCODING 9575
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+FC
+00
+FC
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF460000
+ENCODING 9576
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+50
+FC
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF400000
+ENCODING 9577
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+DC
+00
+FC
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR SF540000
+ENCODING 9578
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+FC
+20
+FC
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR SF530000
+ENCODING 9579
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+50
+FC
+50
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR SF440000
+ENCODING 9580
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+50
+50
+50
+50
+DC
+00
+DC
+50
+50
+50
+50
+50
+ENDCHAR
+STARTCHAR uni256D
+ENCODING 9581
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+0C
+10
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni256E
+ENCODING 9582
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+80
+40
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni256F
+ENCODING 9583
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+40
+80
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2570
+ENCODING 9584
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+10
+0C
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2571
+ENCODING 9585
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+04
+04
+08
+08
+10
+10
+20
+20
+40
+40
+80
+80
+ENDCHAR
+STARTCHAR uni2572
+ENCODING 9586
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+80
+80
+40
+40
+20
+20
+10
+10
+08
+08
+04
+04
+ENDCHAR
+STARTCHAR uni2573
+ENCODING 9587
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+84
+84
+48
+48
+30
+30
+30
+30
+48
+48
+84
+84
+ENDCHAR
+STARTCHAR uni2574
+ENCODING 9588
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+E0
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2575
+ENCODING 9589
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+20
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2576
+ENCODING 9590
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+3C
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2577
+ENCODING 9591
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+20
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR uni2578
+ENCODING 9592
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+E0
+E0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2579
+ENCODING 9593
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni257A
+ENCODING 9594
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+3C
+3C
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni257B
+ENCODING 9595
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+30
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni257C
+ENCODING 9596
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+3C
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni257D
+ENCODING 9597
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+20
+20
+20
+20
+20
+30
+30
+30
+30
+30
+30
+30
+ENDCHAR
+STARTCHAR uni257E
+ENCODING 9598
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+E0
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni257F
+ENCODING 9599
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+30
+30
+30
+30
+30
+30
+20
+20
+20
+20
+20
+20
+ENDCHAR
+STARTCHAR upblock
+ENCODING 9600
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2581
+ENCODING 9601
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+FC
+ENDCHAR
+STARTCHAR uni2582
+ENCODING 9602
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR uni2583
+ENCODING 9603
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR dnblock
+ENCODING 9604
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR uni2585
+ENCODING 9605
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR uni2586
+ENCODING 9606
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR uni2587
+ENCODING 9607
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR block
+ENCODING 9608
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR uni2589
+ENCODING 9609
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+ENDCHAR
+STARTCHAR uni258A
+ENCODING 9610
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR uni258B
+ENCODING 9611
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+F0
+ENDCHAR
+STARTCHAR lfblock
+ENCODING 9612
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR uni258D
+ENCODING 9613
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+C0
+ENDCHAR
+STARTCHAR uni258E
+ENCODING 9614
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR uni258F
+ENCODING 9615
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR rtblock
+ENCODING 9616
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+1C
+1C
+1C
+1C
+1C
+1C
+1C
+1C
+1C
+1C
+1C
+1C
+ENDCHAR
+STARTCHAR ltshade
+ENCODING 9617
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+90
+24
+90
+24
+90
+24
+90
+24
+90
+24
+90
+24
+ENDCHAR
+STARTCHAR shade
+ENCODING 9618
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+A8
+54
+A8
+54
+A8
+54
+A8
+54
+A8
+54
+A8
+54
+ENDCHAR
+STARTCHAR dkshade
+ENCODING 9619
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+D8
+B4
+D8
+B4
+D8
+B4
+D8
+B4
+D8
+B4
+D8
+B4
+ENDCHAR
+STARTCHAR uni2596
+ENCODING 9622
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR uni2597
+ENCODING 9623
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+1C
+1C
+1C
+1C
+1C
+1C
+ENDCHAR
+STARTCHAR uni2598
+ENCODING 9624
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2599
+ENCODING 9625
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR uni259A
+ENCODING 9626
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+E0
+E0
+E0
+E0
+E0
+E0
+1C
+1C
+1C
+1C
+1C
+1C
+ENDCHAR
+STARTCHAR uni259B
+ENCODING 9627
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR uni259C
+ENCODING 9628
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+FC
+FC
+1C
+1C
+1C
+1C
+1C
+1C
+ENDCHAR
+STARTCHAR uni259D
+ENCODING 9629
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+1C
+1C
+1C
+1C
+1C
+1C
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni259E
+ENCODING 9630
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+1C
+1C
+1C
+1C
+1C
+1C
+E0
+E0
+E0
+E0
+E0
+E0
+ENDCHAR
+STARTCHAR uni259F
+ENCODING 9631
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+1C
+1C
+1C
+1C
+1C
+1C
+FC
+FC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR filledbox
+ENCODING 9632
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+78
+78
+78
+78
+78
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR filledrect
+ENCODING 9644
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+F8
+F8
+F8
+00
+00
+ENDCHAR
+STARTCHAR uni25AE
+ENCODING 9646
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+F8
+00
+00
+ENDCHAR
+STARTCHAR triagup
+ENCODING 9650
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+30
+30
+78
+78
+FC
+FC
+00
+00
+00
+ENDCHAR
+STARTCHAR uni25B6
+ENCODING 9654
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+C0
+F0
+FC
+FC
+F0
+C0
+00
+00
+00
+ENDCHAR
+STARTCHAR triagrt
+ENCODING 9658
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+C0
+F0
+FC
+FC
+F0
+C0
+00
+00
+00
+ENDCHAR
+STARTCHAR triagdn
+ENCODING 9660
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+FC
+FC
+78
+78
+30
+30
+00
+00
+00
+ENDCHAR
+STARTCHAR uni25C0
+ENCODING 9664
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+0C
+3C
+FC
+FC
+3C
+0C
+00
+00
+00
+ENDCHAR
+STARTCHAR triaglf
+ENCODING 9668
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+0C
+3C
+FC
+FC
+3C
+0C
+00
+00
+00
+ENDCHAR
+STARTCHAR blackdiamond
+ENCODING 9670
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+70
+F8
+70
+20
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR lozenge
+ENCODING 9674
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+50
+88
+50
+20
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR circle
+ENCODING 9675
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+30
+48
+48
+30
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR H18533
+ENCODING 9679
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+30
+78
+78
+30
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR invbullet
+ENCODING 9688
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+CC
+84
+84
+CC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR invcircle
+ENCODING 9689
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+FC
+FC
+FC
+FC
+CC
+B4
+B4
+CC
+FC
+FC
+FC
+FC
+ENDCHAR
+STARTCHAR smileface
+ENCODING 9786
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+84
+CC
+84
+B4
+B4
+84
+78
+00
+00
+ENDCHAR
+STARTCHAR invsmileface
+ENCODING 9787
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+FC
+B4
+FC
+84
+CC
+FC
+78
+00
+00
+ENDCHAR
+STARTCHAR sun
+ENCODING 9788
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+A8
+70
+D8
+70
+A8
+20
+00
+00
+ENDCHAR
+STARTCHAR female
+ENCODING 9792
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+70
+88
+88
+88
+70
+20
+F8
+20
+00
+00
+ENDCHAR
+STARTCHAR male
+ENCODING 9794
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+3C
+0C
+14
+70
+88
+88
+88
+70
+00
+00
+ENDCHAR
+STARTCHAR spade
+ENCODING 9824
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+20
+70
+F8
+F8
+70
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR club
+ENCODING 9827
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+20
+70
+20
+A8
+F8
+A8
+20
+70
+00
+00
+ENDCHAR
+STARTCHAR heart
+ENCODING 9829
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+50
+F8
+F8
+F8
+70
+70
+20
+00
+00
+ENDCHAR
+STARTCHAR diamond
+ENCODING 9830
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+20
+70
+F8
+70
+20
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR musicalnote
+ENCODING 9834
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+48
+78
+40
+40
+40
+40
+80
+00
+00
+ENDCHAR
+STARTCHAR musicalnotedbl
+ENCODING 9835
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+78
+48
+78
+48
+48
+48
+48
+50
+80
+00
+ENDCHAR
+STARTCHAR uni2713
+ENCODING 10003
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+04
+04
+08
+88
+90
+50
+20
+20
+00
+00
+ENDCHAR
+STARTCHAR uni2714
+ENCODING 10004
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+0C
+0C
+18
+D8
+F0
+70
+60
+60
+00
+00
+ENDCHAR
+STARTCHAR uni2717
+ENCODING 10007
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+48
+28
+10
+10
+28
+24
+40
+40
+00
+00
+ENDCHAR
+STARTCHAR uni2718
+ENCODING 10008
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+18
+D8
+70
+30
+78
+6C
+C0
+C0
+00
+00
+ENDCHAR
+STARTCHAR uni27E8
+ENCODING 10216
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+10
+10
+20
+20
+40
+20
+20
+10
+10
+00
+00
+ENDCHAR
+STARTCHAR uni27E9
+ENCODING 10217
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+40
+40
+20
+20
+10
+20
+20
+40
+40
+00
+00
+ENDCHAR
+STARTCHAR uni27EA
+ENCODING 10218
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+28
+28
+50
+50
+A0
+50
+50
+28
+28
+00
+00
+ENDCHAR
+STARTCHAR uni27EB
+ENCODING 10219
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+A0
+A0
+50
+50
+28
+50
+50
+A0
+A0
+00
+00
+ENDCHAR
+STARTCHAR uni2800
+ENCODING 10240
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2801
+ENCODING 10241
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2802
+ENCODING 10242
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2803
+ENCODING 10243
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2804
+ENCODING 10244
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2805
+ENCODING 10245
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2806
+ENCODING 10246
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2807
+ENCODING 10247
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2808
+ENCODING 10248
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2809
+ENCODING 10249
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni280A
+ENCODING 10250
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni280B
+ENCODING 10251
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni280C
+ENCODING 10252
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni280D
+ENCODING 10253
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni280E
+ENCODING 10254
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni280F
+ENCODING 10255
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2810
+ENCODING 10256
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2811
+ENCODING 10257
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2812
+ENCODING 10258
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2813
+ENCODING 10259
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2814
+ENCODING 10260
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2815
+ENCODING 10261
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2816
+ENCODING 10262
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2817
+ENCODING 10263
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2818
+ENCODING 10264
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2819
+ENCODING 10265
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni281A
+ENCODING 10266
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni281B
+ENCODING 10267
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+00
+00
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni281C
+ENCODING 10268
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni281D
+ENCODING 10269
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni281E
+ENCODING 10270
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni281F
+ENCODING 10271
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+40
+40
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2820
+ENCODING 10272
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2821
+ENCODING 10273
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2822
+ENCODING 10274
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2823
+ENCODING 10275
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2824
+ENCODING 10276
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2825
+ENCODING 10277
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2826
+ENCODING 10278
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2827
+ENCODING 10279
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2828
+ENCODING 10280
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2829
+ENCODING 10281
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni282A
+ENCODING 10282
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni282B
+ENCODING 10283
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni282C
+ENCODING 10284
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni282D
+ENCODING 10285
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni282E
+ENCODING 10286
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni282F
+ENCODING 10287
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2830
+ENCODING 10288
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2831
+ENCODING 10289
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2832
+ENCODING 10290
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2833
+ENCODING 10291
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2834
+ENCODING 10292
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2835
+ENCODING 10293
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2836
+ENCODING 10294
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2837
+ENCODING 10295
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2838
+ENCODING 10296
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2839
+ENCODING 10297
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni283A
+ENCODING 10298
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni283B
+ENCODING 10299
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+08
+08
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni283C
+ENCODING 10300
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni283D
+ENCODING 10301
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni283E
+ENCODING 10302
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni283F
+ENCODING 10303
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+48
+48
+00
+00
+00
+00
+ENDCHAR
+STARTCHAR uni2840
+ENCODING 10304
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2841
+ENCODING 10305
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2842
+ENCODING 10306
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2843
+ENCODING 10307
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2844
+ENCODING 10308
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2845
+ENCODING 10309
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2846
+ENCODING 10310
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2847
+ENCODING 10311
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2848
+ENCODING 10312
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2849
+ENCODING 10313
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni284A
+ENCODING 10314
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni284B
+ENCODING 10315
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni284C
+ENCODING 10316
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni284D
+ENCODING 10317
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni284E
+ENCODING 10318
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni284F
+ENCODING 10319
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2850
+ENCODING 10320
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2851
+ENCODING 10321
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2852
+ENCODING 10322
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2853
+ENCODING 10323
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2854
+ENCODING 10324
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2855
+ENCODING 10325
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2856
+ENCODING 10326
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2857
+ENCODING 10327
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2858
+ENCODING 10328
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2859
+ENCODING 10329
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni285A
+ENCODING 10330
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni285B
+ENCODING 10331
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+00
+00
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni285C
+ENCODING 10332
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni285D
+ENCODING 10333
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni285E
+ENCODING 10334
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni285F
+ENCODING 10335
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+40
+40
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2860
+ENCODING 10336
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2861
+ENCODING 10337
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2862
+ENCODING 10338
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2863
+ENCODING 10339
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2864
+ENCODING 10340
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2865
+ENCODING 10341
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2866
+ENCODING 10342
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2867
+ENCODING 10343
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2868
+ENCODING 10344
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2869
+ENCODING 10345
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni286A
+ENCODING 10346
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni286B
+ENCODING 10347
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni286C
+ENCODING 10348
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni286D
+ENCODING 10349
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni286E
+ENCODING 10350
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni286F
+ENCODING 10351
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2870
+ENCODING 10352
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2871
+ENCODING 10353
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2872
+ENCODING 10354
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2873
+ENCODING 10355
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2874
+ENCODING 10356
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2875
+ENCODING 10357
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2876
+ENCODING 10358
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2877
+ENCODING 10359
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2878
+ENCODING 10360
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2879
+ENCODING 10361
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni287A
+ENCODING 10362
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni287B
+ENCODING 10363
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+08
+08
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni287C
+ENCODING 10364
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni287D
+ENCODING 10365
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni287E
+ENCODING 10366
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni287F
+ENCODING 10367
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+48
+48
+00
+40
+40
+00
+ENDCHAR
+STARTCHAR uni2880
+ENCODING 10368
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2881
+ENCODING 10369
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2882
+ENCODING 10370
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2883
+ENCODING 10371
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2884
+ENCODING 10372
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2885
+ENCODING 10373
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2886
+ENCODING 10374
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2887
+ENCODING 10375
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2888
+ENCODING 10376
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2889
+ENCODING 10377
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni288A
+ENCODING 10378
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni288B
+ENCODING 10379
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni288C
+ENCODING 10380
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni288D
+ENCODING 10381
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni288E
+ENCODING 10382
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni288F
+ENCODING 10383
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2890
+ENCODING 10384
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2891
+ENCODING 10385
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2892
+ENCODING 10386
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2893
+ENCODING 10387
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2894
+ENCODING 10388
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2895
+ENCODING 10389
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2896
+ENCODING 10390
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2897
+ENCODING 10391
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2898
+ENCODING 10392
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni2899
+ENCODING 10393
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni289A
+ENCODING 10394
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni289B
+ENCODING 10395
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+00
+00
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni289C
+ENCODING 10396
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni289D
+ENCODING 10397
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni289E
+ENCODING 10398
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni289F
+ENCODING 10399
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+40
+40
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28A0
+ENCODING 10400
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28A1
+ENCODING 10401
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28A2
+ENCODING 10402
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28A3
+ENCODING 10403
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28A4
+ENCODING 10404
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28A5
+ENCODING 10405
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28A6
+ENCODING 10406
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28A7
+ENCODING 10407
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28A8
+ENCODING 10408
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28A9
+ENCODING 10409
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28AA
+ENCODING 10410
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28AB
+ENCODING 10411
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28AC
+ENCODING 10412
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28AD
+ENCODING 10413
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28AE
+ENCODING 10414
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28AF
+ENCODING 10415
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28B0
+ENCODING 10416
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28B1
+ENCODING 10417
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28B2
+ENCODING 10418
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28B3
+ENCODING 10419
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28B4
+ENCODING 10420
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28B5
+ENCODING 10421
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28B6
+ENCODING 10422
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28B7
+ENCODING 10423
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28B8
+ENCODING 10424
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28B9
+ENCODING 10425
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28BA
+ENCODING 10426
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28BB
+ENCODING 10427
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+08
+08
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28BC
+ENCODING 10428
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28BD
+ENCODING 10429
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28BE
+ENCODING 10430
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28BF
+ENCODING 10431
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+48
+48
+00
+08
+08
+00
+ENDCHAR
+STARTCHAR uni28C0
+ENCODING 10432
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28C1
+ENCODING 10433
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28C2
+ENCODING 10434
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28C3
+ENCODING 10435
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28C4
+ENCODING 10436
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28C5
+ENCODING 10437
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28C6
+ENCODING 10438
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28C7
+ENCODING 10439
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28C8
+ENCODING 10440
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28C9
+ENCODING 10441
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28CA
+ENCODING 10442
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28CB
+ENCODING 10443
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28CC
+ENCODING 10444
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28CD
+ENCODING 10445
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28CE
+ENCODING 10446
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28CF
+ENCODING 10447
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28D0
+ENCODING 10448
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28D1
+ENCODING 10449
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28D2
+ENCODING 10450
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28D3
+ENCODING 10451
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28D4
+ENCODING 10452
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28D5
+ENCODING 10453
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28D6
+ENCODING 10454
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28D7
+ENCODING 10455
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28D8
+ENCODING 10456
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28D9
+ENCODING 10457
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28DA
+ENCODING 10458
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28DB
+ENCODING 10459
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+00
+00
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28DC
+ENCODING 10460
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28DD
+ENCODING 10461
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28DE
+ENCODING 10462
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28DF
+ENCODING 10463
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+40
+40
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28E0
+ENCODING 10464
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28E1
+ENCODING 10465
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28E2
+ENCODING 10466
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28E3
+ENCODING 10467
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28E4
+ENCODING 10468
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+00
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28E5
+ENCODING 10469
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+00
+00
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28E6
+ENCODING 10470
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+40
+40
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28E7
+ENCODING 10471
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+40
+40
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28E8
+ENCODING 10472
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28E9
+ENCODING 10473
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28EA
+ENCODING 10474
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28EB
+ENCODING 10475
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28EC
+ENCODING 10476
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+00
+00
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28ED
+ENCODING 10477
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+00
+00
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28EE
+ENCODING 10478
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+40
+40
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28EF
+ENCODING 10479
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+40
+40
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28F0
+ENCODING 10480
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28F1
+ENCODING 10481
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28F2
+ENCODING 10482
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28F3
+ENCODING 10483
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28F4
+ENCODING 10484
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+08
+08
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28F5
+ENCODING 10485
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+08
+08
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28F6
+ENCODING 10486
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+48
+48
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28F7
+ENCODING 10487
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+40
+40
+00
+48
+48
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28F8
+ENCODING 10488
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28F9
+ENCODING 10489
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28FA
+ENCODING 10490
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28FB
+ENCODING 10491
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+08
+08
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28FC
+ENCODING 10492
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+08
+08
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28FD
+ENCODING 10493
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+08
+08
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28FE
+ENCODING 10494
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+08
+08
+00
+48
+48
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni28FF
+ENCODING 10495
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+48
+48
+00
+48
+48
+00
+48
+48
+00
+48
+48
+00
+ENDCHAR
+STARTCHAR uni2E2C
+ENCODING 11820
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+88
+88
+00
+00
+88
+88
+00
+00
+ENDCHAR
+STARTCHAR uniE0A0
+ENCODING 57504
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+80
+90
+B8
+90
+90
+90
+20
+40
+80
+80
+80
+80
+ENDCHAR
+STARTCHAR uniE0A1
+ENCODING 57505
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+80
+80
+80
+80
+F0
+00
+24
+34
+2C
+24
+24
+00
+ENDCHAR
+STARTCHAR uniE0A2
+ENCODING 57506
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+30
+48
+48
+48
+FC
+FC
+CC
+CC
+FC
+FC
+00
+ENDCHAR
+STARTCHAR uniE0B0
+ENCODING 57520
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+80
+C0
+E0
+F0
+F8
+FC
+FC
+F8
+F0
+E0
+C0
+80
+ENDCHAR
+STARTCHAR uniE0B1
+ENCODING 57521
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+80
+40
+20
+10
+08
+04
+04
+08
+10
+20
+40
+80
+ENDCHAR
+STARTCHAR uniE0B2
+ENCODING 57522
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+04
+0C
+1C
+3C
+7C
+FC
+FC
+7C
+3C
+1C
+0C
+04
+ENDCHAR
+STARTCHAR uniE0B3
+ENCODING 57523
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+04
+08
+10
+20
+40
+80
+80
+40
+20
+10
+08
+04
+ENDCHAR
+STARTCHAR uniF6BE
+ENCODING 63166
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+00
+00
+18
+08
+08
+08
+08
+08
+48
+30
+ENDCHAR
+STARTCHAR uniFFFD
+ENCODING 65533
+SWIDTH 500 0
+DWIDTH 6 0
+BBX 6 12 0 -2
+BITMAP
+00
+00
+F8
+88
+88
+88
+88
+88
+88
+F8
+00
+00
+ENDCHAR
+ENDFONT
diff --git a/tools/gc_activity.md b/tools/gc_activity.md
index d1a4c2803..686d9b6b7 100644
--- a/tools/gc_activity.md
+++ b/tools/gc_activity.md
@@ -13,7 +13,7 @@ correct port. GDB is usually :3333 and JLink is :2331.
Now, run gdb from your port directory:
```
-arm-none-eabi-gdb -x ../tools/output_gc_until_repl.txt build-metro_m0_express/firmware.elf
+arm-none-eabi-gdb -x ../../tools/output_gc_until_repl.txt build-metro_m0_express/firmware.elf
```
This will take a little time while it breaks, backtraces and continues for every
diff --git a/tools/gc_activity_between_collects.py b/tools/gc_activity_between_collects.py
new file mode 100644
index 000000000..c02c479f9
--- /dev/null
+++ b/tools/gc_activity_between_collects.py
@@ -0,0 +1,141 @@
+import sys
+import json
+
+# Map start block to current allocation info.
+current_heap = {}
+allocation_history = []
+root = {}
+
+def change_root(trace, size):
+ level = root
+ for frame in reversed(trace):
+ file_location = frame[1]
+ if file_location not in level:
+ level[file_location] = {"blocks": 0,
+ "file": file_location,
+ "function": frame[2],
+ "subcalls": {}}
+ level[file_location]["blocks"] += size
+ level = level[file_location]["subcalls"]
+
+total_actions = 0
+non_single_block_streak = 0
+max_nsbs = 0
+last_action = None
+last_total_actions = 0
+count = 0
+actions = {}
+last_ticks_ms = 0
+ticks_ms = 0
+block_sizes = {}
+allocation_sources = {}
+with open(sys.argv[1], "r") as f:
+ for line in f:
+ if not line.strip():
+ break
+ for line in f:
+ action = None
+ if line.startswith("Breakpoint 2"):
+ break
+ next(f) # throw away breakpoint code line
+ # print(next(f)) # first frame
+ block = 0
+ size = 0
+ trace = []
+ for line in f:
+ # print(line.strip())
+ if line[0] == "#":
+ frame = line.strip().split()
+ if frame[1].startswith("0x"):
+ trace.append((frame[1], frame[-1], frame[3]))
+ else:
+ trace.append(("0x0", frame[-1], frame[1]))
+ elif line[0] == "$":
+ #print(line.strip().split()[-1])
+ block = int(line.strip().split()[-1][2:], 16)
+ next_line = next(f)
+ size = int(next_line.strip().split()[-1][2:], 16)
+ # next_line = next(f)
+ # ticks_ms = int(next_line.strip().split()[-1][2:], 16)
+ if not line.strip():
+ break
+
+ action = "unknown"
+ if block not in current_heap:
+ current_heap[block] = {"start_block": block, "size": size, "start_trace": trace, "start_time": total_actions}
+ action = "alloc"
+ if size == 1:
+ max_nsbs = max(max_nsbs, non_single_block_streak)
+ non_single_block_streak = 0
+ else:
+ non_single_block_streak += 1
+ #change_root(trace, size)
+ if size not in block_sizes:
+ block_sizes[size] = 0
+ source = trace[-1][-1]
+ if source not in allocation_sources:
+ print(trace)
+ allocation_sources[source] = 0
+ allocation_sources[source] += 1
+ block_sizes[size] += 1
+ else:
+ alloc = current_heap[block]
+ alloc["end_trace"] = trace
+ alloc["end_time"] = total_actions
+ change_root(alloc["start_trace"], -1 * alloc["size"])
+ if size > 0:
+ action = "realloc"
+ current_heap[block] = {"start_block": block, "size": size, "start_trace": trace, "start_time": total_actions}
+ #change_root(trace, size)
+ else:
+ action = "free"
+ if trace[0][2] == "gc_sweep":
+ action = "sweep"
+ non_single_block_streak = 0
+ if (trace[3][2] == "py_gc_collect" or (trace[3][2] == "gc_deinit" and count > 1)) and last_action != "sweep":
+ print(ticks_ms - last_ticks_ms, total_actions - last_total_actions, "gc.collect", max_nsbs)
+ print(actions)
+ print(block_sizes)
+ print(allocation_sources)
+ actions = {}
+ block_sizes = {}
+ allocation_sources = {}
+ if count % 2 == 0:
+ print()
+ count += 1
+ last_total_actions = total_actions
+ last_ticks_ms = ticks_ms
+ max_nsbs = 0
+ del current_heap[block]
+ alloc["end_cause"] = action
+ allocation_history.append(alloc)
+ if action not in actions:
+ actions[action] = 0
+ actions[action] += 1
+ last_action = action
+ #print(total_actions, non_single_block_streak, action, block, size)
+ total_actions += 1
+print(actions)
+print(max_nsbs)
+print()
+
+for alloc in current_heap.values():
+ alloc["end_trace"] = ""
+ alloc["end_time"] = total_actions
+ allocation_history.append(alloc)
+
+def print_frame(frame, indent=0):
+ for key in sorted(frame):
+ if not frame[key]["blocks"] or key.startswith("../py/malloc.c") or key.startswith("../py/gc.c"):
+ continue
+ print(" " * (indent - 1), key, frame[key]["function"], frame[key]["blocks"], "blocks")
+ print_frame(frame[key]["subcalls"], indent + 2)
+
+# print_frame(root)
+# total_blocks = 0
+# for key in sorted(root):
+# total_blocks += root[key]["blocks"]
+# print(total_blocks, "total blocks")
+
+# with open("allocation_history.json", "w") as f:
+# json.dump(allocation_history, f)
diff --git a/tools/gen_display_resources.py b/tools/gen_display_resources.py
new file mode 100644
index 000000000..c08daf477
--- /dev/null
+++ b/tools/gen_display_resources.py
@@ -0,0 +1,199 @@
+import argparse
+
+import os
+import struct
+import sys
+
+sys.path.append("bitmap_font")
+sys.path.append("../../tools/bitmap_font")
+
+from adafruit_bitmap_font import bitmap_font
+
+parser = argparse.ArgumentParser(description='Generate USB descriptors.')
+parser.add_argument('--font', type=str,
+ help='Font path', required=True)
+parser.add_argument('--extra_characters', type=str,
+ help='Unicode string of extra characters')
+parser.add_argument('--sample_file', type=argparse.FileType('r'),
+ help='Text file that includes strings to support.')
+parser.add_argument('--output_c_file', type=argparse.FileType('w'), required=True)
+
+args = parser.parse_args()
+
+class BitmapStub:
+ def __init__(self, width, height, color_depth):
+ self.width = width
+ self.rows = [b''] * height
+
+ def _load_row(self, y, row):
+ self.rows[y] = bytes(row)
+
+f = bitmap_font.load_font(args.font, BitmapStub)
+
+# Load extra characters from the sample file.
+sample_characters = set()
+if args.sample_file:
+ for line in args.sample_file:
+ # Skip comments because we add additional characters in our huffman comments.
+ if line.startswith("//"):
+ continue
+ for c in line.strip():
+ sample_characters.add(c)
+
+# Merge visible ascii, sample characters and extra characters.
+visible_ascii = bytes(range(0x20, 0x7f)).decode("utf-8")
+all_characters = visible_ascii
+for c in sample_characters:
+ if c not in all_characters:
+ all_characters += c
+if args.extra_characters:
+ all_characters.extend(args.extra_characters)
+all_characters = "".join(sorted(set(all_characters)))
+filtered_characters = all_characters
+
+# Try to pre-load all of the glyphs. Misses will still be slow later.
+f.load_glyphs(set(ord(c) for c in all_characters))
+
+# Get each glyph.
+for c in set(all_characters):
+ if ord(c) not in f._glyphs:
+ print("Font missing character:", c, ord(c))
+ filtered_characters = filtered_characters.replace(c, "")
+ continue
+ g = f.get_glyph(ord(c))
+ if g["shift"][1] != 0:
+ raise RuntimeError("y shift")
+
+x, y, dx, dy = f.get_bounding_box()
+tile_x, tile_y = x - dx, y - dy
+total_bits = tile_x * len(all_characters)
+total_bits += 32 - total_bits % 32
+bytes_per_row = total_bits // 8
+b = bytearray(bytes_per_row * tile_y)
+
+for x, c in enumerate(filtered_characters):
+ g = f.get_glyph(ord(c))
+ start_bit = x * tile_x + g["bounds"][2]
+ start_y = (tile_y - 2) - (g["bounds"][1] + g["bounds"][3])
+ for y, row in enumerate(g["bitmap"].rows):
+ for i in range(g["bounds"][0]):
+ byte = i // 8
+ bit = i % 8
+ if row[byte] & (1 << (7-bit)) != 0:
+ overall_bit = start_bit + (start_y + y) * bytes_per_row * 8 + i
+ b[overall_bit // 8] |= 1 << (7 - (overall_bit % 8))
+
+
+extra_characters = ""
+for c in filtered_characters:
+ if c not in visible_ascii:
+ extra_characters += c
+
+c_file = args.output_c_file
+
+c_file.write("""\
+
+#include "shared-bindings/displayio/Palette.h"
+#include "supervisor/shared/display.h"
+
+""")
+
+c_file.write("""\
+_displayio_color_t terminal_colors[2] = {
+ {
+ .rgb888 = 0x000000,
+ .rgb565 = 0x0000,
+ .luma = 0x00,
+ .chroma = 0
+ },
+ {
+ .rgb888 = 0xffffff,
+ .rgb565 = 0xffff,
+ .luma = 0xff,
+ .chroma = 0
+ },
+};
+
+displayio_palette_t supervisor_terminal_color = {
+ .base = {.type = &displayio_palette_type },
+ .colors = terminal_colors,
+ .color_count = 2,
+ .needs_refresh = false
+};
+""")
+
+c_file.write("""\
+displayio_tilegrid_t supervisor_terminal_text_grid = {{
+ .base = {{ .type = &displayio_tilegrid_type }},
+ .bitmap = (displayio_bitmap_t*) &supervisor_terminal_font_bitmap,
+ .pixel_shader = &supervisor_terminal_color,
+ .x = 16,
+ .y = 0,
+ .pixel_width = {1},
+ .pixel_height = {2},
+ .bitmap_width_in_tiles = {0},
+ .tiles_in_bitmap = {0},
+ .width_in_tiles = 1,
+ .height_in_tiles = 1,
+ .tile_width = {1},
+ .tile_height = {2},
+ .tiles = NULL,
+ .partial_change = false,
+ .full_change = false,
+ .hidden = false,
+ .hidden_by_parent = false,
+ .moved = false,
+ .inline_tiles = false,
+ .in_group = true
+}};
+""".format(len(all_characters), tile_x, tile_y))
+
+c_file.write("""\
+const uint32_t font_bitmap_data[{}] = {{
+""".format(bytes_per_row * tile_y // 4))
+
+for i, word in enumerate(struct.iter_unpack(">I", b)):
+ c_file.write("0x{:08x}, ".format(word[0]))
+ if (i + 1) % (bytes_per_row // 4) == 0:
+ c_file.write("\n")
+
+c_file.write("""\
+};
+""")
+
+c_file.write("""\
+displayio_bitmap_t supervisor_terminal_font_bitmap = {{
+ .base = {{.type = &displayio_bitmap_type }},
+ .width = {},
+ .height = {},
+ .data = (size_t*) font_bitmap_data,
+ .stride = {},
+ .bits_per_value = 1,
+ .x_shift = 5,
+ .x_mask = 0x1f,
+ .bitmask = 0x1,
+ .read_only = true
+}};
+""".format(len(all_characters) * tile_x, tile_y, bytes_per_row / 4))
+
+
+c_file.write("""\
+const fontio_builtinfont_t supervisor_terminal_font = {{
+ .base = {{.type = &fontio_builtinfont_type }},
+ .bitmap = &supervisor_terminal_font_bitmap,
+ .width = {},
+ .height = {},
+ .unicode_characters = (const uint8_t*) "{}",
+ .unicode_characters_len = {}
+}};
+""".format(tile_x, tile_y, extra_characters, len(extra_characters.encode("utf-8"))))
+
+c_file.write("""\
+terminalio_terminal_obj_t supervisor_terminal = {
+ .base = { .type = &terminalio_terminal_type },
+ .font = &supervisor_terminal_font,
+ .cursor_x = 0,
+ .cursor_y = 0,
+ .tilegrid = &supervisor_terminal_text_grid
+};
+""")
diff --git a/tools/gen_ld_files.py b/tools/gen_ld_files.py
new file mode 100755
index 000000000..c2ac812bc
--- /dev/null
+++ b/tools/gen_ld_files.py
@@ -0,0 +1,60 @@
+#! /usr/bin/env python3
+import argparse
+
+import os
+import os.path
+import sys
+import re
+from string import Template
+
+parser = argparse.ArgumentParser(description='Apply #define values to .template.ld file.')
+parser.add_argument('template_files', metavar='TEMPLATE_FILE', type=argparse.FileType('r'),
+ nargs='+', help="template filename: <something>.template.ld")
+parser.add_argument('--defines', type=argparse.FileType('r'), required=True)
+parser.add_argument('--out_dir', required=True)
+
+args = parser.parse_args()
+
+defines = {}
+
+#
+REMOVE_UL_RE = re.compile('([0-9]+)UL')
+def remove_UL(s):
+ return REMOVE_UL_RE.sub(r'\1', s)
+
+# We skip all lines before
+# // START_LD_DEFINES
+# Then we look for lines like this:
+# /*NAME_OF_VALUE=*/ NAME_OF_VALUE;
+VALUE_LINE_RE = re.compile(r'^/\*\s*(\w+)\s*=\*/\s*(.*);\s*$')
+
+start_processing = False
+for line in args.defines:
+ line = line.strip()
+ if line == '// START_LD_DEFINES':
+ start_processing = True
+ continue
+ if start_processing:
+ match = VALUE_LINE_RE.match(line)
+ if match:
+ name = match.group(1)
+ value = match.group(2).strip()
+ defines[name] = remove_UL(value)
+
+fail = False
+
+for template_file in args.template_files:
+ ld_template_basename = os.path.basename(template_file.name)
+ ld_pathname = os.path.join(args.out_dir, ld_template_basename.replace('.template.ld', '.ld'))
+ with open(ld_pathname, 'w') as output:
+ for k,v in defines.items():
+ print('/*', k, '=', v, '*/', file=output)
+ print(file=output)
+ try:
+ output.write(Template(template_file.read()).substitute(defines))
+ except KeyError as e:
+ print("ERROR: {}: No #define for '{}'".format(ld_pathname, e.args[0]), file=sys.stderr)
+ fail = True
+
+if fail:
+ sys.exit(1)
diff --git a/tools/gen_usb_descriptor.py b/tools/gen_usb_descriptor.py
index 2cb06ec2f..5e25528f9 100644
--- a/tools/gen_usb_descriptor.py
+++ b/tools/gen_usb_descriptor.py
@@ -8,6 +8,16 @@ sys.path.append("../../tools/usb_descriptor")
from adafruit_usb_descriptor import audio, audio10, cdc, hid, midi, msc, standard, util
import hid_report_descriptors
+DEFAULT_INTERFACE_NAME = 'CircuitPython'
+ALL_DEVICES='CDC,MSC,AUDIO,HID'
+ALL_DEVICES_SET=frozenset(ALL_DEVICES.split(','))
+DEFAULT_DEVICES='CDC,MSC,AUDIO,HID'
+
+ALL_HID_DEVICES='KEYBOARD,MOUSE,CONSUMER,SYS_CONTROL,GAMEPAD,DIGITIZER,XAC_COMPATIBLE_GAMEPAD,RAW'
+ALL_HID_DEVICES_SET=frozenset(ALL_HID_DEVICES.split(','))
+# Digitizer works on Linux but conflicts with mouse, so omit it.
+DEFAULT_HID_DEVICES='KEYBOARD,MOUSE,CONSUMER,GAMEPAD'
+
parser = argparse.ArgumentParser(description='Generate USB descriptors.')
parser.add_argument('--manufacturer', type=str,
help='manufacturer of the device')
@@ -19,11 +29,75 @@ parser.add_argument('--pid', type=lambda x: int(x, 16),
help='product id')
parser.add_argument('--serial_number_length', type=int, default=32,
help='length needed for the serial number in digits')
+parser.add_argument('--devices', type=lambda l: tuple(l.split(',')), default=DEFAULT_DEVICES,
+ help='devices to include in descriptor (AUDIO includes MIDI support)')
+parser.add_argument('--hid_devices', type=lambda l: tuple(l.split(',')), default=DEFAULT_HID_DEVICES,
+ help='HID devices to include in HID report descriptor')
+parser.add_argument('--interface_name', type=str,
+ help='The name/prefix to use in the interface descriptions',
+ default=DEFAULT_INTERFACE_NAME)
+parser.add_argument('--msc_max_packet_size', type=int, default=64,
+ help='Max packet size for MSC')
+parser.add_argument('--no-renumber_endpoints', dest='renumber_endpoints', action='store_false',
+ help='use to not renumber endpoint')
+parser.add_argument('--cdc_ep_num_notification', type=int, default=0,
+ help='endpoint number of CDC NOTIFICATION')
+parser.add_argument('--cdc_ep_num_data_out', type=int, default=0,
+ help='endpoint number of CDC DATA OUT')
+parser.add_argument('--cdc_ep_num_data_in', type=int, default=0,
+ help='endpoint number of CDC DATA IN')
+parser.add_argument('--msc_ep_num_out', type=int, default=0,
+ help='endpoint number of MSC OUT')
+parser.add_argument('--msc_ep_num_in', type=int, default=0,
+ help='endpoint number of MSC IN')
+parser.add_argument('--hid_ep_num_out', type=int, default=0,
+ help='endpoint number of HID OUT')
+parser.add_argument('--hid_ep_num_in', type=int, default=0,
+ help='endpoint number of HID IN')
+parser.add_argument('--midi_ep_num_out', type=int, default=0,
+ help='endpoint number of MIDI OUT')
+parser.add_argument('--midi_ep_num_in', type=int, default=0,
+ help='endpoint number of MIDI IN')
parser.add_argument('--output_c_file', type=argparse.FileType('w'), required=True)
parser.add_argument('--output_h_file', type=argparse.FileType('w'), required=True)
args = parser.parse_args()
+unknown_devices = list(frozenset(args.devices) - ALL_DEVICES_SET)
+if unknown_devices:
+ raise ValueError("Unknown device(s)", unknown_devices)
+
+unknown_hid_devices = list(frozenset(args.hid_devices) - ALL_HID_DEVICES_SET)
+if unknown_hid_devices:
+ raise ValueError("Unknown HID devices(s)", unknown_hid_devices)
+
+if not args.renumber_endpoints:
+ if 'CDC' in args.devices:
+ if args.cdc_ep_num_notification == 0:
+ raise ValueError("CDC notification endpoint number must not be 0")
+ elif args.cdc_ep_num_data_out == 0:
+ raise ValueError("CDC data OUT endpoint number must not be 0")
+ elif args.cdc_ep_num_data_in == 0:
+ raise ValueError("CDC data IN endpoint number must not be 0")
+
+ if 'MSC' in args.devices:
+ if args.msc_ep_num_out == 0:
+ raise ValueError("MSC endpoint OUT number must not be 0")
+ elif args.msc_ep_num_in == 0:
+ raise ValueError("MSC endpoint IN number must not be 0")
+
+ if 'HID' in args.devices:
+ if args.args.hid_ep_num_out == 0:
+ raise ValueError("HID endpoint OUT number must not be 0")
+ elif args.hid_ep_num_in == 0:
+ raise ValueError("HID endpoint IN number must not be 0")
+
+ if 'AUDIO' in args.devices:
+ if args.args.midi_ep_num_out == 0:
+ raise ValueError("MIDI endpoint OUT number must not be 0")
+ elif args.midi_ep_num_in == 0:
+ raise ValueError("MIDI endpoint IN number must not be 0")
+
class StringIndex:
"""Assign a monotonically increasing index to each unique string. Start with 0."""
string_to_index = {}
@@ -81,7 +155,7 @@ cdc_comm_interface = standard.InterfaceDescriptor(
bInterfaceClass=cdc.CDC_CLASS_COMM, # Communications Device Class
bInterfaceSubClass=cdc.CDC_SUBCLASS_ACM, # Abstract control model
bInterfaceProtocol=cdc.CDC_PROTOCOL_NONE,
- iInterface=StringIndex.index("CircuitPython CDC control"),
+ iInterface=StringIndex.index("{} CDC control".format(args.interface_name)),
subdescriptors=[
cdc.Header(
description="CDC comm",
@@ -93,7 +167,7 @@ cdc_comm_interface = standard.InterfaceDescriptor(
cdc_union,
standard.EndpointDescriptor(
description="CDC comm in",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN,
+ bEndpointAddress=args.cdc_ep_num_notification | standard.EndpointDescriptor.DIRECTION_IN,
bmAttributes=standard.EndpointDescriptor.TYPE_INTERRUPT,
wMaxPacketSize=0x0040,
bInterval=0x10)
@@ -102,15 +176,15 @@ cdc_comm_interface = standard.InterfaceDescriptor(
cdc_data_interface = standard.InterfaceDescriptor(
description="CDC data",
bInterfaceClass=cdc.CDC_CLASS_DATA,
- iInterface=StringIndex.index("CircuitPython CDC data"),
+ iInterface=StringIndex.index("{} CDC data".format(args.interface_name)),
subdescriptors=[
standard.EndpointDescriptor(
description="CDC data out",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_OUT,
+ bEndpointAddress=args.cdc_ep_num_data_out | standard.EndpointDescriptor.DIRECTION_OUT,
bmAttributes=standard.EndpointDescriptor.TYPE_BULK),
standard.EndpointDescriptor(
description="CDC data in",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN,
+ bEndpointAddress=args.cdc_ep_num_data_in | standard.EndpointDescriptor.DIRECTION_IN,
bmAttributes=standard.EndpointDescriptor.TYPE_BULK),
])
@@ -122,42 +196,63 @@ msc_interfaces = [
bInterfaceClass=msc.MSC_CLASS,
bInterfaceSubClass=msc.MSC_SUBCLASS_TRANSPARENT,
bInterfaceProtocol=msc.MSC_PROTOCOL_BULK,
- iInterface=StringIndex.index("CircuitPython Mass Storage"),
+ iInterface=StringIndex.index("{} Mass Storage".format(args.interface_name)),
subdescriptors=[
standard.EndpointDescriptor(
description="MSC in",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN,
+ bEndpointAddress=args.msc_ep_num_in | standard.EndpointDescriptor.DIRECTION_IN,
bmAttributes=standard.EndpointDescriptor.TYPE_BULK,
- bInterval=0),
+ bInterval=0,
+ wMaxPacketSize=args.msc_max_packet_size),
standard.EndpointDescriptor(
description="MSC out",
- bEndpointAddress=0x1 | standard.EndpointDescriptor.DIRECTION_OUT,
+ bEndpointAddress=(args.msc_ep_num_out | standard.EndpointDescriptor.DIRECTION_OUT),
bmAttributes=standard.EndpointDescriptor.TYPE_BULK,
- bInterval=0)
+ bInterval=0,
+ wMaxPacketSize=args.msc_max_packet_size)
]
)
]
-# Include only these HID devices.
-# DIGITIZER works on Linux but conflicts with MOUSE, so leave it out for now.
-hid_devices = ("KEYBOARD", "MOUSE", "CONSUMER", "GAMEPAD")
-
-combined_hid_report_descriptor = hid.ReportDescriptor(
- description="MULTIDEVICE",
- report_descriptor=b''.join(
- hid_report_descriptors.REPORT_DESCRIPTORS[name].report_descriptor for name in hid_devices ))
-
-hid_report_ids_dict = { name: hid_report_descriptors.REPORT_IDS[name] for name in hid_devices }
-hid_report_lengths_dict = { name: hid_report_descriptors.REPORT_LENGTHS[name] for name in hid_devices }
-hid_max_report_length = max(hid_report_lengths_dict.values())
+# When there's only one hid_device, it shouldn't have a report id.
+# Otherwise, report ids are assigned sequentially:
+# args.hid_devices[0] has report_id 1
+# args.hid_devices[1] has report_id 2
+# etc.
+
+report_ids = {}
+
+if len(args.hid_devices) == 1:
+ name = args.hid_devices[0]
+ combined_hid_report_descriptor = hid.ReportDescriptor(
+ description=name,
+ report_descriptor=bytes(hid_report_descriptors.REPORT_DESCRIPTOR_FUNCTIONS[name](0)))
+ report_ids[name] = 0
+else:
+ report_id = 1
+ concatenated_descriptors = bytearray()
+ for name in args.hid_devices:
+ concatenated_descriptors.extend(
+ bytes(hid_report_descriptors.REPORT_DESCRIPTOR_FUNCTIONS[name](report_id)))
+ report_ids[name] = report_id
+ report_id += 1
+ combined_hid_report_descriptor = hid.ReportDescriptor(
+ description="MULTIDEVICE",
+ report_descriptor=bytes(concatenated_descriptors))
# ASF4 expects keyboard and generic devices to have both in and out endpoints,
# and will fail (possibly silently) if both are not supplied.
hid_endpoint_in_descriptor = standard.EndpointDescriptor(
description="HID in",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN,
+ bEndpointAddress=args.hid_ep_num_in | standard.EndpointDescriptor.DIRECTION_IN,
+ bmAttributes=standard.EndpointDescriptor.TYPE_INTERRUPT,
+ bInterval=8)
+
+hid_endpoint_out_descriptor = standard.EndpointDescriptor(
+ description="HID out",
+ bEndpointAddress=args.hid_ep_num_out | standard.EndpointDescriptor.DIRECTION_OUT,
bmAttributes=standard.EndpointDescriptor.TYPE_INTERRUPT,
- bInterval=10)
+ bInterval=8)
hid_interfaces = [
standard.InterfaceDescriptor(
@@ -165,54 +260,69 @@ hid_interfaces = [
bInterfaceClass=hid.HID_CLASS,
bInterfaceSubClass=hid.HID_SUBCLASS_NOBOOT,
bInterfaceProtocol=hid.HID_PROTOCOL_NONE,
- iInterface=StringIndex.index("CircuitPython HID"),
+ iInterface=StringIndex.index("{} HID".format(args.interface_name)),
subdescriptors=[
hid.HIDDescriptor(
description="HID",
wDescriptorLength=len(bytes(combined_hid_report_descriptor))),
hid_endpoint_in_descriptor,
+ hid_endpoint_out_descriptor,
]
),
]
# Audio!
-midi_in_jack = midi.InJackDescriptor(
- description="MIDI PC <- CircuitPython internals",
+# In and out here are relative to CircuitPython
+
+# USB OUT -> midi_in_jack_emb -> midi_out_jack_ext -> CircuitPython
+midi_in_jack_emb = midi.InJackDescriptor(
+ description="MIDI PC -> {}".format(args.interface_name),
bJackType=midi.JACK_TYPE_EMBEDDED,
- iJack=0)
-midi_out_jack = midi.OutJackDescriptor(
- description="MIDI PC -> CircuitPython internals",
+ iJack=StringIndex.index("{} usb_midi.ports[0]".format(args.interface_name)))
+midi_out_jack_ext = midi.OutJackDescriptor(
+ description="MIDI data out to user code.",
+ bJackType=midi.JACK_TYPE_EXTERNAL,
+ input_pins=[(midi_in_jack_emb, 1)],
+ iJack=0)
+
+# USB IN <- midi_out_jack_emb <- midi_in_jack_ext <- CircuitPython
+midi_in_jack_ext = midi.InJackDescriptor(
+ description="MIDI data in from user code.",
+ bJackType=midi.JACK_TYPE_EXTERNAL,
+ iJack=0)
+midi_out_jack_emb = midi.OutJackDescriptor(
+ description="MIDI PC <- {}".format(args.interface_name),
bJackType=midi.JACK_TYPE_EMBEDDED,
- iJack=0)
+ input_pins=[(midi_in_jack_ext, 1)],
+ iJack=StringIndex.index("{} usb_midi.ports[1]".format(args.interface_name)))
+
+
audio_midi_interface = standard.InterfaceDescriptor(
- description="All the audio",
+ description="Midi goodness",
bInterfaceClass=audio.AUDIO_CLASS_DEVICE,
bInterfaceSubClass=audio.AUDIO_SUBCLASS_MIDI_STREAMING,
bInterfaceProtocol=audio.AUDIO_PROTOCOL_V1,
- iInterface=StringIndex.index("CircuitPython MIDI"),
+ iInterface=StringIndex.index("{} MIDI".format(args.interface_name)),
subdescriptors=[
midi.Header(
jacks_and_elements=[
- midi_in_jack,
- midi.InJackDescriptor(
- description="MIDI data in from user code.",
- bJackType=midi.JACK_TYPE_EXTERNAL, iJack=0),
- midi_out_jack,
- midi.OutJackDescriptor(
- description="MIDI data out to user code.",
- bJackType=midi.JACK_TYPE_EXTERNAL, iJack=0),
- ]
+ midi_in_jack_emb,
+ midi_in_jack_ext,
+ midi_out_jack_emb,
+ midi_out_jack_ext
+ ],
),
standard.EndpointDescriptor(
- description="MIDI data out",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_OUT,
+ description="MIDI data out to {}".format(args.interface_name),
+ bEndpointAddress=args.midi_ep_num_out | standard.EndpointDescriptor.DIRECTION_OUT,
bmAttributes=standard.EndpointDescriptor.TYPE_BULK),
- midi.DataEndpointDescriptor(baAssocJack=[midi_out_jack]),
+ midi.DataEndpointDescriptor(baAssocJack=[midi_in_jack_emb]),
standard.EndpointDescriptor(
- description="MIDI data in",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN,
- bmAttributes=standard.EndpointDescriptor.TYPE_BULK),
- midi.DataEndpointDescriptor(baAssocJack=[midi_in_jack]),
+ description="MIDI data in from {}".format(args.interface_name),
+ bEndpointAddress=args.midi_ep_num_in | standard.EndpointDescriptor.DIRECTION_IN,
+ bmAttributes=standard.EndpointDescriptor.TYPE_BULK,
+ bInterval = 0x0),
+ midi.DataEndpointDescriptor(baAssocJack=[midi_out_jack_emb]),
])
cs_ac_interface = audio10.AudioControlInterface(
@@ -228,18 +338,32 @@ audio_control_interface = standard.InterfaceDescriptor(
bInterfaceClass=audio.AUDIO_CLASS_DEVICE,
bInterfaceSubClass=audio.AUDIO_SUBCLASS_CONTROL,
bInterfaceProtocol=audio.AUDIO_PROTOCOL_V1,
- iInterface=StringIndex.index("CircuitPython Audio"),
+ iInterface=StringIndex.index("{} Audio".format(args.interface_name)),
subdescriptors=[
cs_ac_interface,
])
# Audio streaming interfaces must occur before MIDI ones.
-# audio_interfaces = [audio_control_interface] + cs_ac_interface.audio_streaming_interfaces + cs_ac_interface.midi_streaming_interfaces
+audio_interfaces = [audio_control_interface] + cs_ac_interface.audio_streaming_interfaces + cs_ac_interface.midi_streaming_interfaces
+
+interfaces_to_join = []
+
+if 'CDC' in args.devices:
+ interfaces_to_join.append(cdc_interfaces)
+
+if 'MSC' in args.devices:
+ interfaces_to_join.append(msc_interfaces)
-# This will renumber the endpoints to make them unique across descriptors,
+if 'HID' in args.devices:
+ interfaces_to_join.append(hid_interfaces)
+
+if 'AUDIO' in args.devices:
+ interfaces_to_join.append(audio_interfaces)
+
+# util.join_interfaces() will renumber the endpoints to make them unique across descriptors,
# and renumber the interfaces in order. But we still need to fix up certain
# interface cross-references.
-interfaces = util.join_interfaces(cdc_interfaces, msc_interfaces, hid_interfaces)
+interfaces = util.join_interfaces(interfaces_to_join, renumber_endpoints=args.renumber_endpoints)
# Now adjust the CDC interface cross-references.
@@ -256,28 +380,30 @@ cdc_iad = standard.InterfaceAssociationDescriptor(
bFunctionSubClass=cdc.CDC_SUBCLASS_ACM, # Abstract control model
bFunctionProtocol=cdc.CDC_PROTOCOL_NONE)
-# audio_iad = standard.InterfaceAssociationDescriptor(
-# description="Audio IAD",
-# bFirstInterface=audio_control_interface.bInterfaceNumber,
-# bInterfaceCount=len(audio_interfaces),
-# bFunctionClass=audio.AUDIO_CLASS_DEVICE,
-# bFunctionSubClass=audio.AUDIO_SUBCLASS_UNKNOWN,
-# bFunctionProtocol=audio.AUDIO_PROTOCOL_V1)
+descriptor_list = []
+
+if 'CDC' in args.devices:
+ # Put the CDC IAD just before the CDC interfaces.
+ # There appears to be a bug in the Windows composite USB driver that requests the
+ # HID report descriptor with the wrong interface number if the HID interface is not given
+ # first. However, it still fetches the descriptor anyway. We could reorder the interfaces but
+ # the Windows 7 Adafruit_usbser.inf file thinks CDC is at Interface 0, so we'll leave it
+ # there for backwards compatibility.
+ descriptor_list.append(cdc_iad)
+ descriptor_list.extend(cdc_interfaces)
+if 'MSC' in args.devices:
+ descriptor_list.extend(msc_interfaces)
-descriptor_list = []
-descriptor_list.append(cdc_iad)
-# descriptor_list.append(audio_iad)
-descriptor_list.extend(cdc_interfaces)
-descriptor_list.extend(msc_interfaces)
-# descriptor_list.append(audio_control_interface)
-# Put the CDC IAD just before the CDC interfaces.
-# There appears to be a bug in the Windows composite USB driver that requests the
-# HID report descriptor with the wrong interface number if the HID interface is not given
-# first. However, it still fetches the descriptor anyway. We could reorder the interfaces but
-# the Windows 7 Adafruit_usbser.inf file thinks CDC is at Interface 0, so we'll leave it
-# there for backwards compatibility.
-descriptor_list.extend(hid_interfaces)
+if 'HID' in args.devices:
+ descriptor_list.extend(hid_interfaces)
+
+if 'AUDIO' in args.devices:
+ # Only add the control interface because other audio interfaces are managed by it to ensure the
+ # correct ordering.
+ descriptor_list.append(audio_control_interface)
+
+# Finally, build the composite descriptor.
configuration = standard.ConfigurationDescriptor(
description="Composite configuration",
@@ -296,6 +422,8 @@ h_file = args.output_h_file
c_file.write("""\
#include <stdint.h>
+#include "py/objtuple.h"
+#include "shared-bindings/usb_hid/Device.h"
#include "{H_FILE_NAME}"
""".format(H_FILE_NAME=h_file.name))
@@ -414,7 +542,9 @@ const uint8_t usb_desc_cfg[{configuration_length}];
uint16_t usb_serial_number[{serial_number_length}];
uint16_t const * const string_desc_arr [{string_descriptor_length}];
-const uint8_t hid_report_descriptor[{HID_REPORT_DESCRIPTOR_LENGTH}];
+const uint8_t hid_report_descriptor[{hid_report_descriptor_length}];
+
+#define USB_HID_NUM_DEVICES {hid_num_devices}
// Vendor name included in Inquiry response, max 8 bytes
#define CFG_TUD_MSC_VENDOR "{msc_vendor}"
@@ -428,36 +558,11 @@ const uint8_t hid_report_descriptor[{HID_REPORT_DESCRIPTOR_LENGTH}];
configuration_length=descriptor_length,
max_configuration_length=max(hid_descriptor_length, descriptor_length),
string_descriptor_length=len(pointers_to_strings),
- HID_REPORT_DESCRIPTOR_LENGTH=len(bytes(combined_hid_report_descriptor)),
+ hid_report_descriptor_length=len(bytes(combined_hid_report_descriptor)),
+ hid_num_devices=len(args.hid_devices),
msc_vendor=args.manufacturer[:8],
msc_product=args.product[:16]))
-# #define the report ID's used in the combined HID descriptor
-for name, id in hid_report_ids_dict.items():
- h_file.write("""\
-#define USB_HID_REPORT_ID_{name} {id}
-""".format(name=name,
- id=id))
-
-h_file.write("\n")
-
-# #define the report sizes used in the combined HID descriptor
-for name, length in hid_report_lengths_dict.items():
- h_file.write("""\
-#define USB_HID_REPORT_LENGTH_{name} {length}
-""".format(name=name,
- length=length))
-
-h_file.write("\n")
-
-h_file.write("""\
-#define USB_HID_NUM_DEVICES {num_devices}
-#define USB_HID_MAX_REPORT_LENGTH {max_length}
-""".format(num_devices=len(hid_report_lengths_dict),
- max_length=hid_max_report_length))
-
-
-
# Write out the report descriptor and info
c_file.write("""\
const uint8_t hid_report_descriptor[{HID_DESCRIPTOR_LENGTH}] = {{
@@ -465,7 +570,55 @@ const uint8_t hid_report_descriptor[{HID_DESCRIPTOR_LENGTH}] = {{
for b in bytes(combined_hid_report_descriptor):
c_file.write("0x{:02x}, ".format(b))
+c_file.write("""\
+};
+
+""")
+
+# Write out USB HID report buffer definitions.
+for name in args.hid_devices:
+ c_file.write("""\
+static uint8_t {name}_report_buffer[{report_length}];
+""".format(name=name.lower(), report_length=hid_report_descriptors.HID_DEVICE_DATA[name].report_length))
+
+# Write out table of device objects.
+c_file.write("""
+usb_hid_device_obj_t usb_hid_devices[] = {
+""");
+for name in args.hid_devices:
+ device_data = hid_report_descriptors.HID_DEVICE_DATA[name]
+ c_file.write("""\
+ {{
+ .base = {{ .type = &usb_hid_device_type }},
+ .report_buffer = {name}_report_buffer,
+ .report_id = {report_id},
+ .report_length = {report_length},
+ .usage_page = {usage_page:#04x},
+ .usage = {usage:#04x},
+ }},
+""".format(name=name.lower(), report_id=report_ids[name],
+ report_length=device_data.report_length,
+ usage_page=device_data.usage_page,
+ usage=device_data.usage))
+c_file.write("""\
+};
+""")
+
+# Write out tuple of device objects.
c_file.write("""
+mp_obj_tuple_t common_hal_usb_hid_devices = {{
+ .base = {{
+ .type = &mp_type_tuple,
+ }},
+ .len = {num_devices},
+ .items = {{
+""".format(num_devices=len(args.hid_devices)))
+for idx in range(len(args.hid_devices)):
+ c_file.write("""\
+ (mp_obj_t) &usb_hid_devices[{idx}],
+""".format(idx=idx))
+c_file.write("""\
+ },
};
""")
diff --git a/tools/git-checkout-latest-tag.sh b/tools/git-checkout-latest-tag.sh
new file mode 100755
index 000000000..f6242a946
--- /dev/null
+++ b/tools/git-checkout-latest-tag.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+git fetch --tags
+git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
diff --git a/tools/hid_report_descriptors.py b/tools/hid_report_descriptors.py
index f3b28ebcf..07ed26744 100644
--- a/tools/hid_report_descriptors.py
+++ b/tools/hid_report_descriptors.py
@@ -29,211 +29,284 @@ HID specific descriptors
* Author(s): Dan Halbert
"""
+from collections import namedtuple
+
from adafruit_usb_descriptor import hid
-REPORT_IDS = {
- "KEYBOARD" : 1,
- "MOUSE" : 2,
- "CONSUMER" : 3,
- "SYS_CONTROL" : 4,
- "GAMEPAD" : 5,
- "DIGITIZER" : 6,
+# Information about each kind of device
+# report_length does not include report ID in first byte, if present when sent.
+DeviceData = namedtuple('DeviceData', ('report_length', 'usage_page', 'usage'))
+HID_DEVICE_DATA = {
+ "KEYBOARD" : DeviceData(report_length=8, usage_page=0x01, usage=0x06), # Generic Desktop, Keyboard
+ "MOUSE" : DeviceData(report_length=4, usage_page=0x01, usage=0x02), # Generic Desktop, Mouse
+ "CONSUMER" : DeviceData(report_length=2, usage_page=0x0C, usage=0x01), # Consumer, Consumer Control
+ "SYS_CONTROL" : DeviceData(report_length=1, usage_page=0x01, usage=0x80), # Generic Desktop, Sys Control
+ "GAMEPAD" : DeviceData(report_length=6, usage_page=0x01, usage=0x05), # Generic Desktop, Game Pad
+ "DIGITIZER" : DeviceData(report_length=5, usage_page=0x0D, usage=0x02), # Digitizers, Pen
+ "XAC_COMPATIBLE_GAMEPAD" : DeviceData(report_length=3, usage_page=0x01, usage=0x05), # Generic Desktop, Game Pad
+ "RAW" : DeviceData(report_length=64, usage_page=0xFFAF, usage=0xAF), # Vendor 0xFFAF "Adafruit", 0xAF
}
-# Byte count for each kind of report. Length does not include report ID in first byte.
-REPORT_LENGTHS = {
- "KEYBOARD" : 8,
- "MOUSE" : 4,
- "CONSUMER" : 2,
- "SYS_CONTROL" : 1,
- "GAMEPAD" : 6,
- "DIGITIZER" : 5,
- }
+def keyboard_hid_descriptor(report_id):
+ data = HID_DEVICE_DATA["KEYBOARD"]
+ return hid.ReportDescriptor(
+ description="KEYBOARD",
+ report_descriptor=bytes(
+ # Regular keyboard
+ (0x05, data.usage_page, # Usage Page (Generic Desktop)
+ 0x09, data.usage, # Usage (Keyboard)
+ 0xA1, 0x01, # Collection (Application)
+ ) +
+ ((0x85, report_id) if report_id != 0 else ()) +
+ (0x05, 0x07, # Usage Page (Keyboard)
+ 0x19, 224, # Usage Minimum (224)
+ 0x29, 231, # Usage Maximum (231)
+ 0x15, 0x00, # Logical Minimum (0)
+ 0x25, 0x01, # Logical Maximum (1)
+ 0x75, 0x01, # Report Size (1)
+ 0x95, 0x08, # Report Count (8)
+ 0x81, 0x02, # Input (Data, Variable, Absolute)
+ 0x81, 0x01, # Input (Constant)
+ 0x19, 0x00, # Usage Minimum (0)
+ 0x29, 0xDD, # Usage Maximum (221)
+ 0x15, 0x00, # Logical Minimum (0)
+ 0x25, 0xDD, # Logical Maximum (221)
+ 0x75, 0x08, # Report Size (8)
+ 0x95, 0x06, # Report Count (6)
+ 0x81, 0x00, # Input (Data, Array)
+ 0x05, 0x08, # Usage Page (LED)
+ 0x19, 0x01, # Usage Minimum (1)
+ 0x29, 0x05, # Usage Maximum (5)
+ 0x15, 0x00, # Logical Minimum (0)
+ 0x25, 0x01, # Logical Maximum (1)
+ 0x75, 0x01, # Report Size (1)
+ 0x95, 0x05, # Report Count (5)
+ 0x91, 0x02, # Output (Data, Variable, Absolute)
+ 0x95, 0x03, # Report Count (3)
+ 0x91, 0x01, # Output (Constant)
+ 0xC0, # End Collection
+ )))
-KEYBOARD_WITH_ID = hid.ReportDescriptor(
- description="KEYBOARD",
- report_descriptor=bytes([
- # Regular keyboard
- 0x05, 0x01, # Usage Page (Generic Desktop)
- 0x09, 0x06, # Usage (Keyboard)
- 0xA1, 0x01, # Collection (Application)
- 0x85, REPORT_IDS["KEYBOARD"], # Report ID (1)
- 0x05, 0x07, # Usage Page (Keyboard)
- 0x19, 224, # Usage Minimum (224)
- 0x29, 231, # Usage Maximum (231)
- 0x15, 0x00, # Logical Minimum (0)
- 0x25, 0x01, # Logical Maximum (1)
- 0x75, 0x01, # Report Size (1)
- 0x95, 0x08, # Report Count (8)
- 0x81, 0x02, # Input (Data, Variable, Absolute)
- 0x81, 0x01, # Input (Constant)
- 0x19, 0x00, # Usage Minimum (0)
- 0x29, 101, # Usage Maximum (101)
- 0x15, 0x00, # Logical Minimum (0)
- 0x25, 101, # Logical Maximum (101)
- 0x75, 0x08, # Report Size (8)
- 0x95, 0x06, # Report Count (6)
- 0x81, 0x00, # Input (Data, Array)
- 0x05, 0x08, # Usage Page (LED)
- 0x19, 0x01, # Usage Minimum (1)
- 0x29, 0x05, # Usage Maximum (5)
- 0x15, 0x00, # Logical Minimum (0)
- 0x25, 0x01, # Logical Maximum (1)
- 0x75, 0x01, # Report Size (1)
- 0x95, 0x05, # Report Count (5)
- 0x91, 0x02, # Output (Data, Variable, Absolute)
- 0x95, 0x03, # Report Count (3)
- 0x91, 0x01, # Output (Constant)
- 0xC0, # End Collection
- ]))
+def mouse_hid_descriptor(report_id):
+ data = HID_DEVICE_DATA["MOUSE"]
+ return hid.ReportDescriptor(
+ description="MOUSE",
+ report_descriptor=bytes(
+ # Regular mouse
+ (0x05, data.usage_page, # Usage Page (Generic Desktop)
+ 0x09, data.usage, # Usage (Mouse)
+ 0xA1, 0x01, # Collection (Application)
+ 0x09, 0x01, # Usage (Pointer)
+ 0xA1, 0x00, # Collection (Physical)
+ ) +
+ ((0x85, report_id) if report_id != 0 else ()) +
+ (0x05, 0x09, # Usage Page (Button)
+ 0x19, 0x01, # Usage Minimum (0x01)
+ 0x29, 0x05, # Usage Maximum (0x05)
+ 0x15, 0x00, # Logical Minimum (0)
+ 0x25, 0x01, # Logical Maximum (1)
+ 0x95, 0x05, # Report Count (5)
+ 0x75, 0x01, # Report Size (1)
+ 0x81, 0x02, # Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
+ 0x95, 0x01, # Report Count (1)
+ 0x75, 0x03, # Report Size (3)
+ 0x81, 0x01, # Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
+ 0x05, 0x01, # Usage Page (Generic Desktop Ctrls)
+ 0x09, 0x30, # Usage (X)
+ 0x09, 0x31, # Usage (Y)
+ 0x15, 0x81, # Logical Minimum (-127)
+ 0x25, 0x7F, # Logical Maximum (127)
+ 0x75, 0x08, # Report Size (8)
+ 0x95, 0x02, # Report Count (2)
+ 0x81, 0x06, # Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
+ 0x09, 0x38, # Usage (Wheel)
+ 0x15, 0x81, # Logical Minimum (-127)
+ 0x25, 0x7F, # Logical Maximum (127)
+ 0x75, 0x08, # Report Size (8)
+ 0x95, 0x01, # Report Count (1)
+ 0x81, 0x06, # Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
+ 0xC0, # End Collection
+ 0xC0, # End Collection
+ )))
-MOUSE_WITH_ID = hid.ReportDescriptor(
- description="MOUSE",
- report_descriptor=bytes([
- # Regular mouse
- 0x05, 0x01, # Usage Page (Generic Desktop)
- 0x09, 0x02, # Usage (Mouse)
- 0xA1, 0x01, # Collection (Application)
- 0x09, 0x01, # Usage (Pointer)
- 0xA1, 0x00, # Collection (Physical)
- 0x85, REPORT_IDS["MOUSE"], # Report ID (n)
- 0x05, 0x09, # Usage Page (Button)
- 0x19, 0x01, # Usage Minimum (0x01)
- 0x29, 0x05, # Usage Maximum (0x05)
- 0x15, 0x00, # Logical Minimum (0)
- 0x25, 0x01, # Logical Maximum (1)
- 0x95, 0x05, # Report Count (5)
- 0x75, 0x01, # Report Size (1)
- 0x81, 0x02, # Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
- 0x95, 0x01, # Report Count (1)
- 0x75, 0x03, # Report Size (3)
- 0x81, 0x01, # Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
- 0x05, 0x01, # Usage Page (Generic Desktop Ctrls)
- 0x09, 0x30, # Usage (X)
- 0x09, 0x31, # Usage (Y)
- 0x15, 0x81, # Logical Minimum (-127)
- 0x25, 0x7F, # Logical Maximum (127)
- 0x75, 0x08, # Report Size (8)
- 0x95, 0x02, # Report Count (2)
- 0x81, 0x06, # Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
- 0x09, 0x38, # Usage (Wheel)
- 0x15, 0x81, # Logical Minimum (-127)
- 0x25, 0x7F, # Logical Maximum (127)
- 0x75, 0x08, # Report Size (8)
- 0x95, 0x01, # Report Count (1)
- 0x81, 0x06, # Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
- 0xC0, # End Collection
- 0xC0, # End Collection
- ]))
+def consumer_hid_descriptor(report_id):
+ data = HID_DEVICE_DATA["CONSUMER"]
+ return hid.ReportDescriptor(
+ description="CONSUMER",
+ report_descriptor=bytes(
+ # Consumer ("multimedia") keys
+ (0x05, data.usage_page, # Usage Page (Consumer)
+ 0x09, data.usage, # Usage (Consumer Control)
+ 0xA1, 0x01, # Collection (Application)
+ ) +
+ ((0x85, report_id) if report_id != 0 else ()) +
+ (0x75, 0x10, # Report Size (16)
+ 0x95, 0x01, # Report Count (1)
+ 0x15, 0x01, # Logical Minimum (1)
+ 0x26, 0x8C, 0x02, # Logical Maximum (652)
+ 0x19, 0x01, # Usage Minimum (Consumer Control)
+ 0x2A, 0x8C, 0x02, # Usage Maximum (AC Send)
+ 0x81, 0x00, # Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
+ 0xC0, # End Collection
+ )))
-CONSUMER_WITH_ID = hid.ReportDescriptor(
- description="CONSUMER",
- report_descriptor=bytes([
- # Consumer ("multimedia") keys
- 0x05, 0x0C, # Usage Page (Consumer)
- 0x09, 0x01, # Usage (Consumer Control)
- 0xA1, 0x01, # Collection (Application)
- 0x85, REPORT_IDS["CONSUMER"], # Report ID (n)
- 0x75, 0x10, # Report Size (16)
- 0x95, 0x01, # Report Count (1)
- 0x15, 0x01, # Logical Minimum (1)
- 0x26, 0x8C, 0x02, # Logical Maximum (652)
- 0x19, 0x01, # Usage Minimum (Consumer Control)
- 0x2A, 0x8C, 0x02, # Usage Maximum (AC Send)
- 0x81, 0x00, # Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
- 0xC0, # End Collection
- ]))
+def sys_control_hid_descriptor(report_id):
+ data = HID_DEVICE_DATA["SYS_CONTROL"]
+ return hid.ReportDescriptor(
+ description="SYS_CONTROL",
+ report_descriptor=bytes(
+ # Power controls
+ (0x05, data.usage_page, # Usage Page (Generic Desktop Ctrls)
+ 0x09, data.usage, # Usage (Sys Control)
+ 0xA1, 0x01, # Collection (Application)
+ ) +
+ ((0x85, report_id) if report_id != 0 else ()) +
+ (0x75, 0x02, # Report Size (2)
+ 0x95, 0x01, # Report Count (1)
+ 0x15, 0x01, # Logical Minimum (1)
+ 0x25, 0x03, # Logical Maximum (3)
+ 0x09, 0x82, # Usage (Sys Sleep)
+ 0x09, 0x81, # Usage (Sys Power Down)
+ 0x09, 0x83, # Usage (Sys Wake Up)
+ 0x81, 0x60, # Input (Data,Array,Abs,No Wrap,Linear,No Preferred State,Null State)
+ 0x75, 0x06, # Report Size (6)
+ 0x81, 0x03, # Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
+ 0xC0, # End Collection
+ )))
-SYS_CONTROL_WITH_ID = hid.ReportDescriptor(
- description="SYS_CONTROL",
- report_descriptor=bytes([
- # Power controls
- 0x05, 0x01, # Usage Page (Generic Desktop Ctrls)
- 0x09, 0x80, # Usage (Sys Control)
- 0xA1, 0x01, # Collection (Application)
- 0x85, REPORT_IDS["SYS_CONTROL"], # Report ID (n)
- 0x75, 0x02, # Report Size (2)
- 0x95, 0x01, # Report Count (1)
- 0x15, 0x01, # Logical Minimum (1)
- 0x25, 0x03, # Logical Maximum (3)
- 0x09, 0x82, # Usage (Sys Sleep)
- 0x09, 0x81, # Usage (Sys Power Down)
- 0x09, 0x83, # Usage (Sys Wake Up)
- 0x81, 0x60, # Input (Data,Array,Abs,No Wrap,Linear,No Preferred State,Null State)
- 0x75, 0x06, # Report Size (6)
- 0x81, 0x03, # Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
- 0xC0, # End Collection
- ]))
+def gamepad_hid_descriptor(report_id):
+ data = HID_DEVICE_DATA["GAMEPAD"]
+ return hid.ReportDescriptor(
+ description="GAMEPAD",
+ report_descriptor=bytes(
+ # Gamepad with 16 buttons and two joysticks
+ (0x05, data.usage_page, # Usage Page (Generic Desktop Ctrls)
+ 0x09, data.usage, # Usage (Game Pad)
+ 0xA1, 0x01, # Collection (Application)
+ ) +
+ ((0x85, report_id) if report_id != 0 else ()) +
+ (0x05, 0x09, # Usage Page (Button)
+ 0x19, 0x01, # Usage Minimum (Button 1)
+ 0x29, 0x10, # Usage Maximum (Button 16)
+ 0x15, 0x00, # Logical Minimum (0)
+ 0x25, 0x01, # Logical Maximum (1)
+ 0x75, 0x01, # Report Size (1)
+ 0x95, 0x10, # Report Count (16)
+ 0x81, 0x02, # Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
+ 0x05, 0x01, # Usage Page (Generic Desktop Ctrls)
+ 0x15, 0x81, # Logical Minimum (-127)
+ 0x25, 0x7F, # Logical Maximum (127)
+ 0x09, 0x30, # Usage (X)
+ 0x09, 0x31, # Usage (Y)
+ 0x09, 0x32, # Usage (Z)
+ 0x09, 0x35, # Usage (Rz)
+ 0x75, 0x08, # Report Size (8)
+ 0x95, 0x04, # Report Count (4)
+ 0x81, 0x02, # Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
+ 0xC0, # End Collection
+ )))
-GAMEPAD_WITH_ID = hid.ReportDescriptor(
- description="GAMEPAD",
- report_descriptor=bytes([
- # Gamepad with 16 buttons and two joysticks
- 0x05, 0x01, # Usage Page (Generic Desktop Ctrls)
- 0x09, 0x05, # Usage (Game Pad)
- 0xA1, 0x01, # Collection (Application)
- 0x85, REPORT_IDS["GAMEPAD"], # Report ID (n)
- 0x05, 0x09, # Usage Page (Button)
- 0x19, 0x01, # Usage Minimum (Button 1)
- 0x29, 0x10, # Usage Maximum (Button 16)
- 0x15, 0x00, # Logical Minimum (0)
- 0x25, 0x01, # Logical Maximum (1)
- 0x75, 0x01, # Report Size (1)
- 0x95, 0x10, # Report Count (16)
- 0x81, 0x02, # Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
- 0x05, 0x01, # Usage Page (Generic Desktop Ctrls)
- 0x15, 0x81, # Logical Minimum (-127)
- 0x25, 0x7F, # Logical Maximum (127)
- 0x09, 0x30, # Usage (X)
- 0x09, 0x31, # Usage (Y)
- 0x09, 0x32, # Usage (Z)
- 0x09, 0x35, # Usage (Rz)
- 0x75, 0x08, # Report Size (8)
- 0x95, 0x04, # Report Count (4)
- 0x81, 0x02, # Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
- 0xC0, # End Collection
- ]))
+def digitizer_hid_descriptor(report_id):
+ data = HID_DEVICE_DATA["DIGITIZER"]
+ return hid.ReportDescriptor(
+ description="DIGITIZER",
+ report_descriptor=bytes(
+ # Digitizer (used as an absolute pointer)
+ (0x05, data.usage_page, # Usage Page (Digitizers)
+ 0x09, data.usage, # Usage (Pen)
+ 0xA1, 0x01, # Collection (Application)
+ ) +
+ ((0x85, report_id) if report_id != 0 else ()) +
+ (0x09, 0x01, # Usage (Stylus)
+ 0xA1, 0x00, # Collection (Physical)
+ 0x09, 0x32, # Usage (In-Range)
+ 0x09, 0x42, # Usage (Tip Switch)
+ 0x09, 0x44, # Usage (Barrel Switch)
+ 0x09, 0x45, # Usage (Eraser Switch)
+ 0x15, 0x00, # Logical Minimum (0)
+ 0x25, 0x01, # Logical Maximum (1)
+ 0x75, 0x01, # Report Size (1)
+ 0x95, 0x04, # Report Count (4)
+ 0x81, 0x02, # Input (Data,Var,Abs)
+ 0x75, 0x04, # Report Size (4) -- Filler
+ 0x95, 0x01, # Report Count (1) -- Filler
+ 0x81, 0x01, # Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
+ 0x05, 0x01, # Usage Page (Generic Desktop Ctrls)
+ 0x15, 0x00, # Logical Minimum (0)
+ 0x26, 0xff, 0x7f, # Logical Maximum (32767)
+ 0x09, 0x30, # Usage (X)
+ 0x09, 0x31, # Usage (Y)
+ 0x75, 0x10, # Report Size (16)
+ 0x95, 0x02, # Report Count (2)
+ 0x81, 0x02, # Input (Data,Var,Abs)
+ 0xC0, # End Collection
+ 0xC0, # End Collection
+ )))
-DIGITIZER_WITH_ID = hid.ReportDescriptor(
- description="DIGITIZER",
- report_descriptor=bytes([
- # Digitizer (used as an absolute pointer)
- 0x05, 0x0D, # Usage Page (Digitizers)
- 0x09, 0x02, # Usage (Pen)
- 0xA1, 0x01, # Collection (Application)
- 0x85, REPORT_IDS["DIGITIZER"], # Report ID (n)
- 0x09, 0x01, # Usage (Stylus)
- 0xA1, 0x00, # Collection (Physical)
- 0x09, 0x32, # Usage (In-Range)
- 0x09, 0x42, # Usage (Tip Switch)
- 0x09, 0x44, # Usage (Barrel Switch)
- 0x09, 0x45, # Usage (Eraser Switch)
- 0x15, 0x00, # Logical Minimum (0)
- 0x25, 0x01, # Logical Maximum (1)
- 0x75, 0x01, # Report Size (1)
- 0x95, 0x04, # Report Count (4)
- 0x81, 0x02, # Input (Data,Var,Abs)
- 0x75, 0x04, # Report Size (4) -- Filler
- 0x95, 0x01, # Report Count (1) -- Filler
- 0x81, 0x01, # Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
- 0x05, 0x01, # Usage Page (Generic Desktop Ctrls)
- 0x15, 0x00, # Logical Minimum (0)
- 0x26, 0xff, 0x7f, # Logical Maximum (32767)
- 0x09, 0x30, # Usage (X)
- 0x09, 0x31, # Usage (Y)
- 0x75, 0x10, # Report Size (16)
- 0x95, 0x02, # Report Count (2)
- 0x81, 0x02, # Input (Data,Var,Abs)
- 0xC0, # End Collection
- 0xC0, # End Collection
- ]))
+def xac_compatible_gamepad_hid_descriptor(report_id):
+ data = HID_DEVICE_DATA["XAC_COMPATIBLE_GAMEPAD"]
+ return hid.ReportDescriptor(
+ description="XAC",
+ report_descriptor=bytes(
+ # This descriptor mimics the simple joystick from PDP that the XBox likes
+ (0x05, data.usage_page, # Usage Page (Desktop),
+ 0x09, data.usage, # Usage (Gamepad),
+ 0xA1, 0x01, # Collection (Application),
+ ) +
+ ((0x85, report_id) if report_id != 0 else ()) +
+ (0x15, 0x00, # Logical Minimum (0),
+ 0x25, 0x01, # Logical Maximum (1),
+ 0x35, 0x00, # Physical Minimum (0),
+ 0x45, 0x01, # Physical Maximum (1),
+ 0x75, 0x01, # Report Size (1),
+ 0x95, 0x08, # Report Count (8),
+ 0x05, 0x09, # Usage Page (Button),
+ 0x19, 0x01, # Usage Minimum (01h),
+ 0x29, 0x08, # Usage Maximum (08h),
+ 0x81, 0x02, # Input (Variable),
+ 0x05, 0x01, # Usage Page (Desktop),
+ 0x26, 0xFF, 0x00, # Logical Maximum (255),
+ 0x46, 0xFF, 0x00, # Physical Maximum (255),
+ 0x09, 0x30, # Usage (X),
+ 0x09, 0x31, # Usage (Y),
+ 0x75, 0x08, # Report Size (8),
+ 0x95, 0x02, # Report Count (2),
+ 0x81, 0x02, # Input (Variable),
+ 0xC0 # End Collection
+ )))
-# Byte count for each kind of report. Length does not include report ID in first byte.
-REPORT_DESCRIPTORS = {
- "KEYBOARD" : KEYBOARD_WITH_ID,
- "MOUSE" : MOUSE_WITH_ID,
- "CONSUMER" : CONSUMER_WITH_ID,
- "SYS_CONTROL" : SYS_CONTROL_WITH_ID,
- "GAMEPAD" : GAMEPAD_WITH_ID,
- "DIGITIZER" : DIGITIZER_WITH_ID,
- }
+def raw_hid_descriptor(report_id):
+ if report_id != 0:
+ raise ValueError("raw hid must not have a report id")
+ data = HID_DEVICE_DATA["RAW"]
+ return hid.ReportDescriptor(
+ description="RAW",
+ report_descriptor=bytes(
+ # Provide vendor-defined
+ # This is a two-byte page value.
+ (0x06, data.usage_page & 0xff, (data.usage_page >> 8) & 0xff, # Usage Page (Vendor 0xFFAF "Adafruit"),
+ 0x09, data.usage, # Usage (AF),
+ 0xA1, 0x01, # Collection (Application),
+ 0x75, 0x08, # Report Size (8),
+ 0x15, 0x00, # Logical Minimum (0),
+ 0x26, 0xFF, 0x00, # Logical Maximum (255),
+ 0x95, 0x08, # Report Count (8),
+ 0x09, 0x01, # Usage(xxx)
+ 0x81, 0x02, # Input (Variable)
+ 0x95, 0x08, # Report Count (8),
+ 0x09, 0x02, # Usage(xxx)
+ 0x91, 0x02, # Input (Variable)
+ 0xC0 # End Collection
+ )))
+
+# Function to call for each kind of HID descriptor.
+REPORT_DESCRIPTOR_FUNCTIONS = {
+ "KEYBOARD" : keyboard_hid_descriptor,
+ "MOUSE" : mouse_hid_descriptor,
+ "CONSUMER" : consumer_hid_descriptor,
+ "SYS_CONTROL" : sys_control_hid_descriptor,
+ "GAMEPAD" : gamepad_hid_descriptor,
+ "DIGITIZER" : digitizer_hid_descriptor,
+ "XAC_COMPATIBLE_GAMEPAD" : xac_compatible_gamepad_hid_descriptor,
+ "RAW" : raw_hid_descriptor,
+}
diff --git a/tools/join_bins.py b/tools/join_bins.py
new file mode 100644
index 000000000..cb73aaabb
--- /dev/null
+++ b/tools/join_bins.py
@@ -0,0 +1,20 @@
+import sys
+
+output_filename = sys.argv[1]
+input_filenames = {}
+i = 2
+while i < len(sys.argv):
+ offset = int(sys.argv[i], 16)
+ filename = sys.argv[i + 1]
+ input_filenames[offset] = filename
+ i += 2
+
+with open(output_filename, "wb") as output_file:
+ offsets = sorted(input_filenames.keys())
+ for offset in offsets:
+ input_filename = input_filenames[offset]
+ # Fill with ones to save NOR flash.
+ while output_file.tell() < offset:
+ output_file.write(b"\xff")
+ with open(input_filename, "rb") as input_file:
+ output_file.write(input_file.read())
diff --git a/tools/output_gc_until_repl.txt b/tools/output_gc_until_repl.txt
index 81711deeb..1c124de80 100644
--- a/tools/output_gc_until_repl.txt
+++ b/tools/output_gc_until_repl.txt
@@ -10,16 +10,23 @@ set logging on
set remote hardware-breakpoint-limit 4
# gc log
-break gc.c:103
+break gc.c:106
commands
-backtrace
p/x start_block
p/x length
-append binary memory ram.bin &_srelocate &_estack
+p/x ticks_ms
+# backtrace output redirect is currently broken in gdb so we use up instead.
+# https://sourceware.org/bugzilla/show_bug.cgi?id=23439
+# backtrace
+up
+up
+up
+up
+# append binary memory ram.bin &_srelocate &_estack
continue
end
-break main.c:179
+break main.c:251
continue
diff --git a/tools/preprocess_frozen_modules.py b/tools/preprocess_frozen_modules.py
index bb6959f0d..7ae20c4d6 100755
--- a/tools/preprocess_frozen_modules.py
+++ b/tools/preprocess_frozen_modules.py
@@ -32,8 +32,10 @@ def version_string(path=None, *, valid_semver=False):
def copy_and_process(in_dir, out_dir):
for root, subdirs, files in os.walk(in_dir):
- # Skip library examples directories.
- if Path(root).name in ['examples', 'docs', 'tests']:
+ # Skip library examples directory and subfolders.
+ relative_path_parts = Path(root).relative_to(in_dir).parts
+ if relative_path_parts and relative_path_parts[0] in ['examples', 'docs', 'tests']:
+ del subdirs[:]
continue
for file in files:
diff --git a/tools/print_status.py b/tools/print_status.py
new file mode 100755
index 000000000..ed563fd68
--- /dev/null
+++ b/tools/print_status.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+
+import sys
+if len(sys.argv) != 2:
+ print("""\
+Usage: print_status.py STATUS_FILENAME
+ STATUS_FILENAME contains one line with an integer status."""
+ )
+ sys.exit(1)
+with open(sys.argv[1], 'r') as status_in:
+ status = int(status_in.readline())
+
+print('{} with status {}'.format(
+ "\033[32msucceeded\033[0m" if status == 0 else "\033[31mfailed\033[0m",
+ status))
diff --git a/tools/tinytest-codegen.py b/tools/tinytest-codegen.py
index 7f14db4ba..7a48f8a9a 100755
--- a/tools/tinytest-codegen.py
+++ b/tools/tinytest-codegen.py
@@ -23,7 +23,7 @@ def chew_filename(t):
def script_to_map(test_file):
r = {"name": chew_filename(test_file)["func"]}
- with open(t) as test:
+ with open(test_file, "rb") as test:
script = test.readlines()
# Test for import skip_if and inject it into the test as needed.
@@ -39,7 +39,11 @@ def script_to_map(test_file):
continue
script.insert(index + total_lines, "\t" + line)
total_lines += 1
- r['script'] = escape(''.join(script))
+ r['script'] = escape(b''.join(script))
+
+ with open(test_file + ".exp", "rb") as f:
+ r["output"] = escape(f.read())
+
return r
test_function = (
diff --git a/tools/uf2 b/tools/uf2
-Subproject 968716efd30600984139d706bcbd8ec1a1b2336
+Subproject adbb8c7260f938e810eb37f2287f8e1a055ff40
diff --git a/tools/usb_descriptor b/tools/usb_descriptor
-Subproject 57bf602dac9cba8c4226f764c286cbc60103d67
+Subproject 701cafc50e2e574dccaf7a340eedbd64a0b41a4