From f70a8701c90eab85ca209c3beb8798bd83307df8 Mon Sep 17 00:00:00 2001 From: David Gwilliam Date: Wed, 24 Jun 2026 04:45:15 -0700 Subject: [PATCH] fix: make router socket non-blocking to prevent poll loop stalls --- scripts/led-matrix-viz.py | 2 +- sketch/ArduinoGraphics.cpp | 589 + sketch/ArduinoGraphics.h | 115 + sketch/Arduino_RPClite.h | 31 + sketch/Arduino_RouterBridge.h | 23 + sketch/Font.h | 18 + sketch/HasIncludeArduinoGraphics.h | 4 + sketch/Image.cpp | 60 + sketch/Image.h | 40 + sketch/SerialTransport.h | 51 + sketch/bridge.h | 359 + sketch/client.h | 80 + sketch/decoder.h | 353 + sketch/decoder_manager.h | 70 + sketch/dispatcher.h | 76 + sketch/error.h | 49 + sketch/hci.h | 171 + sketch/lib/LICENSE | 373 + sketch/lib/README.md | 9 + sketch/lib/docs/api.md | 806 + sketch/lib/docs/readme.md | 20 + sketch/lib/examples/ASCIIDraw/ASCIIDraw.ino | 109 + sketch/lib/extras/4x6.bdf | 11981 ++++++++ sketch/lib/extras/5x7.bdf | 25905 ++++++++++++++++++ sketch/lib/extras/generate_font.py | 86 + sketch/lib/keywords.txt | 74 + sketch/lib/library.properties | 10 + sketch/lib/src/ArduinoGraphics.cpp | 589 + sketch/lib/src/ArduinoGraphics.h | 115 + sketch/lib/src/Font.h | 18 + sketch/lib/src/Font_4x6.c | 1796 ++ sketch/lib/src/Font_5x7.c | 1988 ++ sketch/lib/src/HasIncludeArduinoGraphics.h | 4 + sketch/lib/src/Image.cpp | 60 + sketch/lib/src/Image.h | 40 + sketch/monitor.h | 196 + sketch/request.h | 88 + sketch/routerbridge_provides_serial.h | 18 + sketch/rpclite_utils.h | 198 + sketch/server.h | 101 + sketch/singletons.cpp | 24 + sketch/tcp_client.h | 225 + sketch/tcp_server.h | 155 + sketch/transport.h | 28 + sketch/udp_bridge.h | 343 + sketch/wrapper.h | 135 + 46 files changed, 47584 insertions(+), 1 deletion(-) create mode 100644 sketch/ArduinoGraphics.cpp create mode 100644 sketch/ArduinoGraphics.h create mode 100644 sketch/Arduino_RPClite.h create mode 100644 sketch/Arduino_RouterBridge.h create mode 100644 sketch/Font.h create mode 100644 sketch/HasIncludeArduinoGraphics.h create mode 100644 sketch/Image.cpp create mode 100644 sketch/Image.h create mode 100644 sketch/SerialTransport.h create mode 100644 sketch/bridge.h create mode 100644 sketch/client.h create mode 100644 sketch/decoder.h create mode 100644 sketch/decoder_manager.h create mode 100644 sketch/dispatcher.h create mode 100644 sketch/error.h create mode 100644 sketch/hci.h create mode 100644 sketch/lib/LICENSE create mode 100644 sketch/lib/README.md create mode 100644 sketch/lib/docs/api.md create mode 100644 sketch/lib/docs/readme.md create mode 100644 sketch/lib/examples/ASCIIDraw/ASCIIDraw.ino create mode 100644 sketch/lib/extras/4x6.bdf create mode 100644 sketch/lib/extras/5x7.bdf create mode 100755 sketch/lib/extras/generate_font.py create mode 100644 sketch/lib/keywords.txt create mode 100644 sketch/lib/library.properties create mode 100644 sketch/lib/src/ArduinoGraphics.cpp create mode 100644 sketch/lib/src/ArduinoGraphics.h create mode 100644 sketch/lib/src/Font.h create mode 100644 sketch/lib/src/Font_4x6.c create mode 100644 sketch/lib/src/Font_5x7.c create mode 100644 sketch/lib/src/HasIncludeArduinoGraphics.h create mode 100644 sketch/lib/src/Image.cpp create mode 100644 sketch/lib/src/Image.h create mode 100644 sketch/monitor.h create mode 100644 sketch/request.h create mode 100644 sketch/routerbridge_provides_serial.h create mode 100644 sketch/rpclite_utils.h create mode 100644 sketch/server.h create mode 100644 sketch/singletons.cpp create mode 100644 sketch/tcp_client.h create mode 100644 sketch/tcp_server.h create mode 100644 sketch/transport.h create mode 100644 sketch/udp_bridge.h create mode 100644 sketch/wrapper.h diff --git a/scripts/led-matrix-viz.py b/scripts/led-matrix-viz.py index 7fe2b09..475c7b5 100644 --- a/scripts/led-matrix-viz.py +++ b/scripts/led-matrix-viz.py @@ -47,7 +47,7 @@ def render(active_notes): def connect_router(): router = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - router.settimeout(0.3) + router.setblocking(False) try: router.connect(ROUTER_SOCK) except OSError: diff --git a/sketch/ArduinoGraphics.cpp b/sketch/ArduinoGraphics.cpp new file mode 100644 index 0000000..2a62a3a --- /dev/null +++ b/sketch/ArduinoGraphics.cpp @@ -0,0 +1,589 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#include "ArduinoGraphics.h" + +#define COLOR_R(color) (uint8_t(color >> 16)) +#define COLOR_G(color) (uint8_t(color >> 8)) +#define COLOR_B(color) (uint8_t(color >> 0)) + +ArduinoGraphics::ArduinoGraphics(int width, int height) : + _width(width), + _height(height), + _font(NULL), + _textSizeX(1), + _textSizeY(1) +{ +} + +ArduinoGraphics::~ArduinoGraphics() +{ +} + +int ArduinoGraphics::begin() +{ + background(0, 0, 0); + noFill(); + noStroke(); + + _textScrollSpeed = 100; + + return 1; +} + +void ArduinoGraphics::end() +{ +} + +int ArduinoGraphics::width() +{ + return _width; +} + +int ArduinoGraphics::height() +{ + return _height; +} + +uint32_t ArduinoGraphics::background() +{ + uint32_t bg = (uint32_t)((uint32_t)(_backgroundR << 16) | (uint32_t)(_backgroundG << 8) | (uint32_t)(_backgroundB << 0)); + return bg; +} + +void ArduinoGraphics::beginDraw() +{ +} + +void ArduinoGraphics::endDraw() +{ +} + +void ArduinoGraphics::background(uint8_t r, uint8_t g, uint8_t b) +{ + _backgroundR = r; + _backgroundG = g; + _backgroundB = b; +} + +void ArduinoGraphics::background(uint32_t color) +{ + background(COLOR_R(color), COLOR_G(color), COLOR_B(color)); +} + +void ArduinoGraphics::clear() +{ + for (int x = 0; x < _width; x++) { + for (int y = 0; y < _height; y++) { + set(x, y, _backgroundR, _backgroundG, _backgroundB); + } + } +} + +void ArduinoGraphics::clear(int x, int y) +{ + set(x, y, _backgroundR, _backgroundB, _backgroundG); +} + +void ArduinoGraphics::fill(uint8_t r, uint8_t g, uint8_t b) +{ + _fill = true; + _fillR = r; + _fillG = g; + _fillB = b; +} + +void ArduinoGraphics::fill(uint32_t color) +{ + fill(COLOR_R(color), COLOR_G(color), COLOR_B(color)); +} + +void ArduinoGraphics::noFill() +{ + _fill = false; +} + +void ArduinoGraphics::stroke(uint8_t r, uint8_t g, uint8_t b) +{ + _stroke = true; + _strokeR = r; + _strokeG = g; + _strokeB = b; +} + +void ArduinoGraphics::stroke(uint32_t color) +{ + stroke(COLOR_R(color), COLOR_G(color), COLOR_B(color)); +} + +void ArduinoGraphics::noStroke() +{ + _stroke = false; +} + +void ArduinoGraphics::circle(int x, int y, int diameter) +{ + ellipse(x, y, diameter, diameter); +} + +void ArduinoGraphics::ellipse(int x, int y, int width, int height) +{ + if (!_stroke && !_fill) { + return; + } + + int32_t a = width / 2; + int32_t b = height / 2; + int64_t a2 = a * a; + int64_t b2 = b * b; + int64_t i, j; + + if (_fill) { + for (j = -b; j <= b; j++) { + for (i = -a; i <= a; i++) { + if (i*i*b2 + j*j*a2 <= a2*b2) { + set(x + i, y + j, _fillR, _fillG, _fillB); + } + } + } + } + if (_stroke) { + int x_val, y_val; + for (i = -a; i <= a; i++) { + y_val = b * sqrt(1 - (double)i*i / a2); + set(x + i, y + y_val, _strokeR, _strokeG, _strokeB); + set(x + i, y - y_val, _strokeR, _strokeG, _strokeB); + } + for (j = -b; j <= b; j++) { + x_val = a * sqrt(1 - (double)j*j / b2); + set(x + x_val, y + j, _strokeR, _strokeG, _strokeB); + set(x - x_val, y + j, _strokeR, _strokeG, _strokeB); + } + } +} + +void ArduinoGraphics::line(int x1, int y1, int x2, int y2) +{ + if (!_stroke) { + return; + } + + if (x1 == x2) { + for (int y = y1; y <= y2; y++) { + set(x1, y, _strokeR, _strokeG, _strokeB); + } + } else if (y1 == y2) { + for (int x = x1; x <= x2; x++) { + set(x, y1, _strokeR, _strokeG, _strokeB); + } + } else if (abs(y2 - y1) < abs(x2 - x1)) { + if (x1 > x2) { + lineLow(x2, y2, x1, y1); + } else { + lineLow(x1, y1, x2, y2); + } + } else { + if (y1 > y2) { + lineHigh(x2, y2, x1, y1); + } else { + lineHigh(x1, y1, x2, y2); + } + } +} + +void ArduinoGraphics::point(int x, int y) +{ + if (_stroke) { + set(x, y, _strokeR, _strokeG, _strokeB); + } +} + +void ArduinoGraphics::rect(int x, int y, int width, int height) +{ + if (!_stroke && !_fill) { + return; + } + + int x1 = x; + int y1 = y; + int x2 = x1 + width - 1; + int y2 = y1 + height - 1; + + for (x = x1; x <= x2; x++) { + for (y = y1; y <= y2; y++) { + if ((x == x1 || x == x2 || y == y1 || y == y2) && _stroke) { + // stroke + set(x, y, _strokeR, _strokeG, _strokeB); + } else if (_fill) { + // fill + set(x, y, _fillR, _fillG, _fillB); + } + } + } +} + +void ArduinoGraphics::text(const char* str, int x, int y) +{ + if (!_font || !_stroke) { + return; + } + + while (*str) { + uint8_t const c = (uint8_t)*str++; + + if (c == '\n') { + y += _font->height * _textSizeY; + } else if (c == '\r') { + x = 0; + } else if (c == 0xc2 || c == 0xc3) { + // drop + } else { + const uint8_t* b = _font->data[c]; + + if (b == NULL) { + b = _font->data[0x20]; + } + + if (b) { + bitmap(b, x, y, _font->width, _font->height, _textSizeX, _textSizeY); + } + + x += _font->width * _textSizeX; + } + } +} + +void ArduinoGraphics::textFont(const Font& which) +{ + _font = &which; +} + +int ArduinoGraphics::textFontWidth() const +{ + return (_font ? _font->width * _textSizeX : 0); +} + +int ArduinoGraphics::textFontHeight() const +{ + return (_font ? _font->height* _textSizeY : 0); +} + +void ArduinoGraphics::textSize(uint8_t sx, uint8_t sy) +{ + _textSizeX = (sx > 0)? sx : 1; + _textSizeY = (sy > 0)? sy : 1; +} + + +void ArduinoGraphics::bitmap(const uint8_t* data, int x, int y, int w, int h, uint8_t scale_x, uint8_t scale_y) { + if (!_stroke || !scale_x || !scale_y) { + return; + } + + if ((data == nullptr) || ((x + (w * scale_x) < 0)) || ((y + (h * scale_y) < 0)) || (x > _width) || (y > _height)) { + // offscreen + return; + } + + int xStart = x; + for (int j = 0; j < h; j++) { + uint8_t b = data[j]; + for (uint8_t ys = 0; ys < scale_y; ys++) { + if (ys >= _height) return; + x = xStart; // reset for each row + for (int i = 0; i < w; i++) { + if (b & (1 << (7 - i))) { + for (uint8_t xs = 0; xs < scale_x; xs++) set(x++, y, _strokeR, _strokeG, _strokeB); + } else { + for (uint8_t xs = 0; xs < scale_x; xs++) set(x++, y, _backgroundR, _backgroundG, _backgroundB); + } + if (x >= _width) break; + } + y++; + } + } +} + + +void ArduinoGraphics::imageRGB(const Image& img, int x, int y, int width, int height) +{ + const uint8_t* data = img.data(); + + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + uint8_t r = *data++; + uint8_t g = *data++; + uint8_t b = *data++; + + set(x + i, y + j, r, g, b); + + data++; + } + + data += (4 * (img.width() - width)); + } +} + +void ArduinoGraphics::imageRGB24(const Image& img, int x, int y, int width, int height) +{ + const uint8_t* data = img.data(); + + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + uint8_t r = *data++; + uint8_t g = *data++; + uint8_t b = *data++; + + set(x + i, y + j, r, g, b); + } + + data += (3 * (img.width() - width)); + } +} + +void ArduinoGraphics::imageRGB16(const Image& img, int x, int y, int width, int height) +{ + const uint16_t* data = (const uint16_t*)img.data(); + + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + uint16_t pixel = *data++; + + set(x + i, y + j, ((pixel >> 8) & 0xf8), ((pixel >> 3) & 0xfc), (pixel << 3) & 0xf8); + } + + data += (img.width() - width); + } +} + +void ArduinoGraphics::image(const Image& img, int x, int y) +{ + image(img, x, y, img.width(), img.height()); +} + +void ArduinoGraphics::image(const Image& img, int x, int y, int width, int height) +{ + if (!img || ((x + width) < 0) || ((y + height) < 0) || (x > _width) || (y > _height)) { + // offscreen + return; + } + + switch (img.encoding()) { + case ENCODING_RGB: + imageRGB(img, x, y, width, height); + break; + + case ENCODING_RGB24: + imageRGB24(img, x, y, width, height); + break; + + case ENCODING_RGB16: + imageRGB16(img, x, y, width, height); + break; + } +} + +void ArduinoGraphics::set(int x, int y, uint32_t color) +{ + set(x, y, COLOR_R(color), COLOR_G(color), COLOR_B(color)); +} + +size_t ArduinoGraphics::write(uint8_t b) +{ + if (b != 0xc2 && b != 0xc3) { + _textBuffer += (char)b; + } + + return 1; +} + +void ArduinoGraphics::flush() +{ + _textBuffer = ""; +} + +void ArduinoGraphics::beginText(int x, int y) +{ + _textBuffer = ""; + + _textX = x; + _textY = y; +} + +void ArduinoGraphics::beginText(int x, int y, uint8_t r, uint8_t g, uint8_t b) +{ + beginText(x, y); + + _textR = r; + _textG = g; + _textB = b; +} + +void ArduinoGraphics::beginText(int x, int y, uint32_t color) +{ + beginText(x, y, COLOR_R(color), COLOR_G(color), COLOR_B(color)); +} + +void ArduinoGraphics::endText(int scrollDirection) +{ + // backup the stroke color and set the color to the text color + bool strokeOn = _stroke; + uint8_t strokeR = _strokeR; + uint8_t strokeG = _strokeG; + uint8_t strokeB = _strokeB; + + if (scrollDirection == SCROLL_LEFT) { + int scrollLength = _textBuffer.length() * textFontWidth() + _textX + 1; + + for (int i = 0; i < scrollLength; i++) { + beginDraw(); + + int const text_x = _textX - i; + stroke(_textR, _textG, _textB); + text(_textBuffer, text_x, _textY); + + // clear previous position + const int clearX = text_x + _textBuffer.length() * _font->width; + stroke(_backgroundR, _backgroundG, _backgroundB); + line(clearX, _textY, clearX, _textY + _font->height - 1); + + endDraw(); + + delay(_textScrollSpeed); + } + } else if (scrollDirection == SCROLL_RIGHT) { + int scrollLength = _textBuffer.length() * textFontWidth() + _textX; + + for (int i = 0; i < scrollLength; i++) { + beginDraw(); + + int const text_x = _textX - (scrollLength - i - 1); + stroke(_textR, _textG, _textB); + text(_textBuffer, text_x, _textY); + + // clear previous position + const int clearX = text_x - 1; + stroke(_backgroundR, _backgroundG, _backgroundB); + line(clearX, _textY, clearX, _textY + _font->height - 1); + + bitmap(_font->data[0x20], text_x - 1, _textY, 1, _font->height, _textSizeX, _textSizeY); + + endDraw(); + + delay(_textScrollSpeed); + } + } else if (scrollDirection == SCROLL_UP) { + int scrollLength = textFontHeight() + _textY + 1; + + for (int i = 0; i < scrollLength; i++) { + beginDraw(); + + int const text_y = _textY - i; + stroke(_textR, _textG, _textB); + text(_textBuffer, _textX, text_y); + + // clear previous position + const int clearY = text_y + _font->height; + stroke(_backgroundR, _backgroundG, _backgroundB); + line(_textX, clearY, _textX + (_font->width * _textBuffer.length()) - 1, clearY); + + endDraw(); + + delay(_textScrollSpeed); + } + } else if (scrollDirection == SCROLL_DOWN) { + int scrollLength = textFontHeight() + _textY; + + for (int i = 0; i < scrollLength; i++) { + beginDraw(); + + int const text_y = _textY - (scrollLength - i - 1); + stroke(_textR, _textG, _textB); + text(_textBuffer, _textX, text_y); + + // clear previous position + const int clearY = text_y - 1; + stroke(_backgroundR, _backgroundG, _backgroundB); + line(_textX, clearY, _textX + (_font->width * _textBuffer.length()) - 1, clearY); + + bitmap(_font->data[0x20], _textX, text_y - 1, _font->width, 1, _textSizeX, _textSizeY); + endDraw(); + + delay(_textScrollSpeed); + } + } else { + beginDraw(); + stroke(_textR, _textG, _textB); + text(_textBuffer, _textX, _textY); + endDraw(); + } + + // restore the stroke color + if (strokeOn) { + stroke(strokeR, strokeG, strokeB); + } else { + noStroke(); + } + + // clear the buffer + _textBuffer = ""; +} + +void ArduinoGraphics::textScrollSpeed(unsigned long speed) +{ + _textScrollSpeed = speed; +} + +void ArduinoGraphics::lineLow(int x1, int y1, int x2, int y2) +{ + int dx = x2 - x1; + int dy = y2 - y1; + int yi = 1; + + if (dy < 0) { + yi = -1; + dy = -dy; + } + + int D = 2 * dy - dx; + int y = y1; + + for (int x = x1; x <= x2; x++) { + set(x, y, _strokeR, _strokeG, _strokeB); + + if (D > 0) { + y += yi; + D -= (2 * dx); + } + + D += (2 * dy); + } +} + +void ArduinoGraphics::lineHigh(int x1, int y1, int x2, int y2) +{ + int dx = x2 - x1; + int dy = y2 - y1; + int xi = 1; + + if (dx < 0) { + xi = -1; + dx = -dx; + } + + int D = 2 * dx - dy; + int x = x1; + + for (int y = y1; y <= y2; y++) { + set(x, y, _strokeR, _strokeG, _strokeB); + + if (D > 0) { + x += xi; + D -= 2 * dy; + } + + D += 2 * dx; + } +} diff --git a/sketch/ArduinoGraphics.h b/sketch/ArduinoGraphics.h new file mode 100644 index 0000000..c409796 --- /dev/null +++ b/sketch/ArduinoGraphics.h @@ -0,0 +1,115 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#ifndef _ARDUINO_GRAPHICS_H +#define _ARDUINO_GRAPHICS_H + +#include + +#include "Font.h" +#include "Image.h" + +enum { + NO_SCROLL, + SCROLL_LEFT, + SCROLL_RIGHT, + SCROLL_UP, + SCROLL_DOWN +}; + +class ArduinoGraphics : public Print { +public: + ArduinoGraphics(int width, int height); + virtual ~ArduinoGraphics(); + + virtual int begin(); + virtual void end(); + + int width(); + int height(); + uint32_t background(); + + virtual void beginDraw(); + virtual void endDraw(); + + void background(uint8_t r, uint8_t g, uint8_t b); + void background(uint32_t color); + void clear(); + void clear(int x, int y); + void fill(uint8_t r, uint8_t g, uint8_t b); + void fill(uint32_t color); + void noFill(); + void stroke(uint8_t r, uint8_t g, uint8_t b); + void stroke(uint32_t color); + void noStroke(); + + //virtual void arc(int x, int y, int width, int height, int start, int stop); + virtual void circle(int x, int y, int diameter); + virtual void ellipse(int x, int y, int width, int height); + virtual void line(int x1, int y1, int x2, int y2); + virtual void point(int x, int y); + //virtual void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); + //virtual void triangle(int x1, int y1, int x2, int y2, int x3, int y3); + virtual void rect(int x, int y, int width, int height); + + virtual void text(const char* str, int x = 0, int y = 0); + virtual void text(const String& str, int x = 0, int y = 0) { text(str.c_str(), x, y); } + virtual void textFont(const Font& which); + virtual void textSize(uint8_t s) {textSize(s, s);} + virtual void textSize(uint8_t sx, uint8_t sy); + + virtual int textFontWidth() const; + virtual int textFontHeight() const; + + virtual void image(const Image& img, int x, int y); + virtual void image(const Image& img, int x, int y, int width, int height); + + virtual void set(int x, int y, uint8_t r, uint8_t g, uint8_t b) = 0; + virtual void set(int x, int y, uint32_t color); + + // from Print + virtual size_t write(uint8_t); + virtual void flush(); + + virtual void beginText(int x = 0, int y = 0); + virtual void beginText(int x, int y, uint8_t r, uint8_t g, uint8_t b); + virtual void beginText(int x, int y, uint32_t color); + virtual void endText(int scroll = NO_SCROLL); + virtual void textScrollSpeed(unsigned long speed = 150); + +protected: + virtual void bitmap(const uint8_t* data, int x, int y, int w, int h, uint8_t scale_x = 1, + uint8_t scale_y = 1); + virtual void imageRGB(const Image& img, int x, int y, int width, int height); + virtual void imageRGB24(const Image& img, int x, int y, int width, int height); + virtual void imageRGB16(const Image& img, int x, int y, int width, int height); + +private: + void lineLow(int x1, int y1, int x2, int y2); + void lineHigh(int x1, int y1, int x2, int y2); + +private: + int _width; + int _height; + const Font* _font; + + bool _fill, _stroke; + uint8_t _backgroundR, _backgroundG, _backgroundB; + uint8_t _fillR, _fillG, _fillB; + uint8_t _strokeR, _strokeG, _strokeB; + + String _textBuffer; + uint8_t _textR, _textG, _textB; + int _textX; + int _textY; + uint8_t _textSizeX; + uint8_t _textSizeY; + unsigned long _textScrollSpeed; +}; + +extern const struct Font Font_4x6; +extern const struct Font Font_5x7; + +#endif diff --git a/sketch/Arduino_RPClite.h b/sketch/Arduino_RPClite.h new file mode 100644 index 0000000..57c4899 --- /dev/null +++ b/sketch/Arduino_RPClite.h @@ -0,0 +1,31 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#ifndef ARDUINO_RPCLITE_H +#define ARDUINO_RPCLITE_H + +#include "Arduino.h" + +#define DECODER_BUFFER_SIZE 1024 +#define RPCLITE_MAX_TRANSPORTS 3 + +//#define HANDLE_RPC_ERRORS +#include "transport.h" +#include "client.h" +#include "server.h" +#include "wrapper.h" +#include "dispatcher.h" +#include "decoder.h" +#include "decoder_manager.h" + +#include "SerialTransport.h" + +#endif //ARDUINO_RPCLITE_H diff --git a/sketch/Arduino_RouterBridge.h b/sketch/Arduino_RouterBridge.h new file mode 100644 index 0000000..7134892 --- /dev/null +++ b/sketch/Arduino_RouterBridge.h @@ -0,0 +1,23 @@ +/* + This file is part of the Arduino_RouterBridge library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#ifndef ARDUINO_ROUTER_BRIDGE_H +#define ARDUINO_ROUTER_BRIDGE_H + +#include "Arduino.h" +#include "bridge.h" +#include "monitor.h" +#include "tcp_client.h" +#include "tcp_server.h" +#include "hci.h" +#include "udp_bridge.h" + +#endif //ARDUINO_ROUTER_BRIDGE_H diff --git a/sketch/Font.h b/sketch/Font.h new file mode 100644 index 0000000..c1d7f46 --- /dev/null +++ b/sketch/Font.h @@ -0,0 +1,18 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#ifndef _FONT_H +#define _FONT_H + +#include +#include + +struct Font { + const int width; + const int height; + const uint8_t** data; +}; + +#endif diff --git a/sketch/HasIncludeArduinoGraphics.h b/sketch/HasIncludeArduinoGraphics.h new file mode 100644 index 0000000..cc27970 --- /dev/null +++ b/sketch/HasIncludeArduinoGraphics.h @@ -0,0 +1,4 @@ +/* +This file is intentionally left blank. +Do not remove this comment. +*/ \ No newline at end of file diff --git a/sketch/Image.cpp b/sketch/Image.cpp new file mode 100644 index 0000000..a010491 --- /dev/null +++ b/sketch/Image.cpp @@ -0,0 +1,60 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#include + +#include "Image.h" + +Image::Image() : + Image(ENCODING_NONE, (const uint8_t*)NULL, 0, 0) +{ +} + +Image::Image(int encoding, const uint8_t* data, int width, int height) : + _encoding(encoding), + _data(data), + _width(width), + _height(height) +{ +} + +Image::Image(int encoding, const uint16_t* data, int width, int height) : + Image(encoding, (const uint8_t*)data, width, height) +{ +} + +Image::Image(int encoding, const uint32_t* data, int width, int height) : + Image(encoding, (const uint8_t*)data, width, height) +{ +} + +Image::~Image() +{ +} + +int Image::encoding() const +{ + return _encoding; +} + +const uint8_t* Image::data() const +{ + return _data; +} + +int Image::width() const +{ + return _width; +} + +int Image::height() const +{ + return _height; +} + +Image::operator bool() const +{ + return (_encoding != ENCODING_NONE && _data != NULL && _width > 0 && _height > 0); +} diff --git a/sketch/Image.h b/sketch/Image.h new file mode 100644 index 0000000..c8f478f --- /dev/null +++ b/sketch/Image.h @@ -0,0 +1,40 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#ifndef _IMAGE_H +#define _IMAGE_H + +#include + +enum { + ENCODING_NONE = -1, + ENCODING_RGB, + ENCODING_RGB24, + ENCODING_RGB16 +}; + +class Image { +public: + Image(); + Image(int encoding, const uint8_t* data, int width, int height); + Image(int encoding, const uint16_t* data, int width, int height); + Image(int encoding, const uint32_t* data, int width, int height); + virtual ~Image(); + + int encoding() const; + const uint8_t* data() const; + int width() const; + int height() const; + + virtual operator bool() const; + +private: + int _encoding; + const uint8_t* _data; + int _width; + int _height; +}; + +#endif diff --git a/sketch/SerialTransport.h b/sketch/SerialTransport.h new file mode 100644 index 0000000..5009254 --- /dev/null +++ b/sketch/SerialTransport.h @@ -0,0 +1,51 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#ifndef SERIALTRANSPORT_H +#define SERIALTRANSPORT_H +#include "transport.h" + +class SerialTransport final : public ITransport { + + Stream* _stream; + + public: + + explicit SerialTransport(Stream* stream): _stream(stream){} + + explicit SerialTransport(Stream& stream): _stream(&stream){} + + bool available() override { + return _stream->available(); + } + + size_t write(const uint8_t* data, size_t size) override { + _stream->write(data, size); + return size; + } + + size_t read(uint8_t* buffer, size_t size) override { + _stream->setTimeout(0); + return _stream->readBytes(buffer, size); + } + + size_t read_byte(uint8_t& r) override { + uint8_t b[1]; + if (read(b, 1) != 1){ + return 0; + }; + r = b[0]; + return 1; + } + +}; + +#endif //SERIALTRANSPORT_H \ No newline at end of file diff --git a/sketch/bridge.h b/sketch/bridge.h new file mode 100644 index 0000000..30687be --- /dev/null +++ b/sketch/bridge.h @@ -0,0 +1,359 @@ +/* + This file is part of the Arduino_RouterBridge library. + + Copyright (C) Arduino s.r.l. and/or its affiliated companies + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#pragma once + +#ifndef ROUTER_BRIDGE_H +#define ROUTER_BRIDGE_H + +#define RESET_METHOD "$/reset" +#define BIND_METHOD "$/register" +#define GET_VERSION_METHOD "$/version" +#define SET_BUF_METHOD "$/setMaxMsgSize" + +//#define BRIDGE_ERROR "$/bridgeLog" + +#define UPDATE_THREAD_STACK_SIZE 500 +#define UPDATE_THREAD_PRIORITY 5 + +#define DEFAULT_SERIAL_BAUD 115200 +#define BRIDGE_RPC_BUFFER_SIZE DEFAULT_RPC_BUFFER_SIZE + +#include +#include +#include + +#include + + +void updateEntryPoint(void *, void *, void *); + +template +class RpcCall { + + RpcError error; + + void setError(int code, MsgPack::str_t text) { + k_mutex_lock(&call_mutex, K_FOREVER); + error.code = code; + error.traceback = std::move(text); + k_mutex_unlock(&call_mutex); + } + +public: + + RpcCall(const MsgPack::str_t& m, RPCClient* c, struct k_mutex* rm, struct k_mutex* wm, Args&&... args): method(m), client(c), read_mutex(rm), write_mutex(wm), callback_params(std::forward_as_tuple(std::forward(args)...)) { + k_mutex_init(&call_mutex); + setError(GENERIC_ERR, "This call is not yet executed"); + } + + bool isError() { + k_mutex_lock(&call_mutex, K_FOREVER); + const bool out = error.code > NO_ERR; + k_mutex_unlock(&call_mutex); + return out; + } + + int getErrorCode() { + k_mutex_lock(&call_mutex, K_FOREVER); + const int out = error.code; + k_mutex_unlock(&call_mutex); + return out; + } + + MsgPack::str_t getErrorMessage() { + k_mutex_lock(&call_mutex, K_FOREVER); + MsgPack::str_t out = error.traceback; + k_mutex_unlock(&call_mutex); + return out; + } + + template bool result(RType& result) { + + if (!atomic_cas(&_executed, 0, 1)){ + // this thread lost the race + setError(GENERIC_ERR, "This call is no longer available"); + return false; + } + + while (true) { + if (k_mutex_lock(write_mutex, K_MSEC(10)) == 0) { + std::apply([this](const auto&... elems) { + client->send_rpc(method, msg_id_wait, elems...); + }, callback_params); + k_mutex_unlock(write_mutex); + break; + } else { + k_yield(); + } + } + + while(true) { + if (k_mutex_lock(read_mutex, K_MSEC(10)) == 0 ) { + RpcError temp_err; + if (client->get_response(msg_id_wait, result, temp_err)) { + k_mutex_unlock(read_mutex); + // if (error.code == PARSING_ERR) { + // k_mutex_lock(write_mutex, K_FOREVER); + // client->notify(BRIDGE_ERROR, error.traceback); + // k_mutex_unlock(write_mutex); + // } + setError(temp_err.code, temp_err.traceback); + break; + } + k_mutex_unlock(read_mutex); + k_msleep(1); + } else { + k_yield(); + } + } + + return !isError(); + } + + bool result() { + MsgPack::object::nil_t nil; + return result(nil); + } + + ~RpcCall(){ + result(); + } + + operator bool() { + return result(); + } + +private: + uint32_t msg_id_wait{}; + atomic_t _executed = ATOMIC_INIT(0);; + + MsgPack::str_t method; + RPCClient* client; + struct k_mutex* read_mutex; + struct k_mutex* write_mutex; + struct k_mutex call_mutex{}; + std::tuple callback_params; +}; + +class BridgeClass { + + RPCClient* client = nullptr; + RPCServer* server = nullptr; + HardwareSerial* serial_ptr = nullptr; + ITransport* transport = nullptr; + + struct k_mutex read_mutex{}; + struct k_mutex write_mutex{}; + struct k_mutex bridge_mutex{}; + + k_tid_t upd_tid{}; + k_thread_stack_t *upd_stack_area{}; + struct k_thread upd_thread_data{}; + + bool started = false; + +public: + + explicit BridgeClass(HardwareSerial& serial) { + serial_ptr = &serial; + } + + operator bool() { + return is_started(); + } + + bool is_started() { + k_mutex_lock(&bridge_mutex, K_FOREVER); + bool out = started; + k_mutex_unlock(&bridge_mutex); + return out; + } + + // Initialize the bridge + bool begin(unsigned long baud=DEFAULT_SERIAL_BAUD) { + k_mutex_init(&read_mutex); + k_mutex_init(&write_mutex); + k_mutex_init(&bridge_mutex); + + if (is_started()) return true; + + k_mutex_lock(&bridge_mutex, K_FOREVER); + + serial_ptr->begin(baud); + while (!*serial_ptr){ + k_yield(); + } +#if defined(ARDUINO_UNO_Q) + // Flush broken RPCs from the previous run on hardware serial. + serial_ptr->write("MCU starting RPC Bridge communication"); +#endif + transport = new SerialTransport(*serial_ptr); + + client = new RPCClient(*transport); + server = new RPCServer(*transport); + + upd_stack_area = k_thread_stack_alloc(UPDATE_THREAD_STACK_SIZE, 0); + upd_tid = k_thread_create(&upd_thread_data, upd_stack_area, + UPDATE_THREAD_STACK_SIZE, + updateEntryPoint, + NULL, NULL, NULL, + UPDATE_THREAD_PRIORITY, 0, K_NO_WAIT); + k_thread_name_set(upd_tid, "bridge"); + + bool res = false; + started = call(RESET_METHOD).result(res) && res; + notify(SET_BUF_METHOD, BRIDGE_RPC_BUFFER_SIZE); // no effect if Router is not exposing SET_BUF_METHOD + k_mutex_unlock(&bridge_mutex); + return res; + } + + bool getRouterVersion(MsgPack::str_t& version) { + return call(GET_VERSION_METHOD).result(version); + } + + template + bool provide(const MsgPack::str_t& name, F&& func) { + k_mutex_lock(&bridge_mutex, K_FOREVER); + bool res; + bool out = call(BIND_METHOD, name).result(res) && res && server->bind(name, func); + k_mutex_unlock(&bridge_mutex); + return out; + } + + template + bool provide_safe(const MsgPack::str_t& name, F&& func) { + k_mutex_lock(&bridge_mutex, K_FOREVER); + bool res; + bool out = call(BIND_METHOD, name).result(res) && res && server->bind(name, func, "__safe__"); + k_mutex_unlock(&bridge_mutex); + return out; + } + + void update() { + + // Lock read mutex + if (k_mutex_lock(&read_mutex, K_MSEC(10)) != 0 ) return; + + RPCRequest req; + if (!server->get_rpc(req)) { + k_mutex_unlock(&read_mutex); + k_msleep(1); + return; + } + + k_mutex_unlock(&read_mutex); + + server->process_request(req); + + // Lock write mutex + while (true) { + + if (k_mutex_lock(&write_mutex, K_MSEC(10)) == 0){ + server->send_response(req); + k_mutex_unlock(&write_mutex); + break; + } else { + k_yield(); + } + + } + + } + + template + RpcCall call(const MsgPack::str_t& method, Args&&... args) { + return RpcCall(method, client, &read_mutex, &write_mutex, std::forward(args)...); + } + + template + void notify(const MsgPack::str_t method, Args&&... args) { + while (true) { + if (k_mutex_lock(&write_mutex, K_MSEC(10)) == 0) { + client->notify(method, std::forward(args)...); + k_mutex_unlock(&write_mutex); + break; + } + k_yield(); + } + } + +private: + + void update_safe() { + + // Lock read mutex + if (k_mutex_lock(&read_mutex, K_MSEC(10)) != 0 ) return; + + RPCRequest req; + if (!server->get_rpc(req, "__safe__")) { + k_mutex_unlock(&read_mutex); + k_msleep(1); + return; + } + + k_mutex_unlock(&read_mutex); + + server->process_request(req); + + // Lock write mutex + while (true) { + + if (k_mutex_lock(&write_mutex, K_MSEC(10)) == 0){ + server->send_response(req); + k_mutex_unlock(&write_mutex); + break; + } else { + k_yield(); + } + + } + + } + + friend class BridgeClassUpdater; + +}; + +extern BridgeClass Bridge; + +class BridgeClassUpdater { +public: + static void safeUpdate(BridgeClass* bridge) { + if (*bridge) { + bridge->update_safe(); + } + } + +private: + BridgeClassUpdater() = delete; // prevents instantiation +}; + +inline void updateEntryPoint(void *, void *, void *){ + while (true) { + if (Bridge) { + Bridge.update(); + } + k_yield(); + } +} + +static void safeUpdate(){ + BridgeClassUpdater::safeUpdate(&Bridge); +} + +// leave as is +void __attribute__((weak)) __loopHook(void){ + k_yield(); + safeUpdate(); +} + +#endif // ROUTER_BRIDGE_H diff --git a/sketch/client.h b/sketch/client.h new file mode 100644 index 0000000..50904a0 --- /dev/null +++ b/sketch/client.h @@ -0,0 +1,80 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (C) Arduino s.r.l. and/or its affiliated companies + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#ifndef RPCLITE_CLIENT_H +#define RPCLITE_CLIENT_H +#include "error.h" +#include "decoder_manager.h" + + +class RPCClient { + RpcDecoder<>* decoder=nullptr; + +public: + RpcError lastError; + + explicit RPCClient(ITransport& t) : decoder(RpcDecoderManager::getInstance().getDecoder(t)) {} + + operator bool() const {return decoder != nullptr;} + + template + void notify(const MsgPack::str_t& method, Args&&... args) { + uint32_t _id; + decoder->send_call(NOTIFY_MSG, method, _id, std::forward(args)...); + } + + template + bool call(const MsgPack::str_t& method, RType& result, Args&&... args) { + + uint32_t msg_id_wait; + + if(!send_rpc(method, msg_id_wait, std::forward(args)...)) { + lastError.code = GENERIC_ERR; + lastError.traceback = "Failed to send RPC call"; + return false; + } + + // blocking call + RpcError tmp_error; + while (!get_response(msg_id_wait, result, tmp_error)) { + //delay(1); + } + + return (lastError.code == NO_ERR); + + } + + template + bool send_rpc(const MsgPack::str_t& method, uint32_t& wait_id, Args&&... args) { + uint32_t msg_id; + if (decoder->send_call(CALL_MSG, method, msg_id, std::forward(args)...)) { + wait_id = msg_id; + return true; + } + return false; + } + + template + bool get_response(const uint32_t wait_id, RType& result, RpcError& error) { + decoder->decode(); + + if (decoder->get_response(wait_id, result, error)) { + lastError.copy(error); + return true; + } + return false; + } + + uint32_t get_discarded_packets() const {return decoder->get_discarded_packets();} + +}; + +#endif //RPCLITE_CLIENT_H diff --git a/sketch/decoder.h b/sketch/decoder.h new file mode 100644 index 0000000..4351220 --- /dev/null +++ b/sketch/decoder.h @@ -0,0 +1,353 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (C) Arduino s.r.l. and/or its affiliated companies + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. +*/ + +#ifndef RPCLITE_DECODER_H +#define RPCLITE_DECODER_H + +// MsgPack log level +#define DEBUGLOG_DEFAULT_LOG_LEVEL_WARN + +#include "MsgPack.h" +#include "transport.h" +#include "rpclite_utils.h" +#include "error.h" + +using namespace RpcUtils::detail; + +#define MIN_RPC_BYTES 4 + +template +class RpcDecoder { + + explicit RpcDecoder(ITransport& transport) : _transport(&transport) {} + +public: + + RpcDecoder(const RpcDecoder&) = delete; + RpcDecoder& operator=(const RpcDecoder&) = delete; + + template + bool send_call(const int call_type, const MsgPack::str_t& method, uint32_t& msg_id, Args&&... args) { + + if (call_type!=CALL_MSG && call_type!=NOTIFY_MSG) return false; + + MsgPack::Packer packer; + packer.clear(); + + if (call_type == CALL_MSG){ + msg_id = _msg_id; + MsgPack::arr_size_t call_size(REQUEST_SIZE); + packer.serialize(call_size, call_type, msg_id, method); + } else { + MsgPack::arr_size_t call_size(NOTIFY_SIZE); + packer.serialize(call_size, call_type, method); + } + + MsgPack::arr_size_t arg_size(sizeof...(args)); + packer.serialize(arg_size, std::forward(args)...); + + if (send(reinterpret_cast(packer.data()), packer.size()) == packer.size()){ + _msg_id++; + return true; + } + return false; + } + + template + bool get_response(const uint32_t msg_id, RType& result, RpcError& error) { + + if (!response_queued()) return false; + + MsgPack::Unpacker unpacker; + unpacker.clear(); + + if (!unpacker.feed(_raw_buffer + _response_offset, _response_size)) return false; + + MsgPack::arr_size_t resp_size; + int resp_type; + uint32_t resp_id; + + if (!unpacker.deserialize(resp_size, resp_type, resp_id)) return false; + + // ReSharper disable once CppDFAUnreachableCode + if (resp_id != msg_id) return false; + + // msg_id OK packet will be consumed. + if (resp_type != RESP_MSG) { + // This should never happen + error.code = PARSING_ERR; + error.traceback = "Unexpected response type"; + consume(_response_size, _response_offset); + if (_response_offset == 0) reset_packet(); + _discarded_packets++; + return true; + } + + if (resp_size.size() != RESPONSE_SIZE) { + // This should never happen + error.code = PARSING_ERR; + error.traceback = "Unexpected RPC response size"; + consume(_response_size, _response_offset); + if (_response_offset == 0) reset_packet(); + _discarded_packets++; + return true; + } + + MsgPack::object::nil_t nil; + if (unpacker.unpackable(nil)){ // No error + if (!unpacker.deserialize(nil, result)) { + error.code = PARSING_ERR; + error.traceback = "Result not parsable (check type)"; + consume(_response_size, _response_offset); + if (_response_offset == 0) reset_packet(); + _discarded_packets++; + return true; + } + } else { // RPC returned an error + if (!unpacker.deserialize(error, nil)) { + error.code = PARSING_ERR; + error.traceback = "RPC Error not parsable (check type)"; + consume(_response_size, _response_offset); + if (_response_offset == 0) reset_packet(); + _discarded_packets++; + return true; + } + } + + if (_response_offset == 0) reset_packet(); + consume(_response_size, _response_offset); + + return true; + } + + bool send_response(const MsgPack::Packer& packer) const { + return send(reinterpret_cast(packer.data()), packer.size()) == packer.size(); + } + + MsgPack::str_t fetch_rpc_method(){ + + if (!packet_incoming()){return "";} + + if (_packet_type != CALL_MSG && _packet_type != NOTIFY_MSG) { + return ""; // No RPC + } + + MsgPack::Unpacker unpacker; + + unpacker.clear(); + if (!unpacker.feed(_raw_buffer, _packet_size)) { // feed should not fail at this point + discard(); + return ""; + }; + + int msg_type; + MsgPack::str_t method; + MsgPack::arr_size_t req_size; + + if (!unpacker.deserialize(req_size, msg_type)) { + discard(); + return ""; // Header not unpackable + } + + // ReSharper disable once CppDFAUnreachableCode + if (msg_type == CALL_MSG && req_size.size() == REQUEST_SIZE) { + uint32_t msg_id; + if (!unpacker.deserialize(msg_id, method)) { + discard(); + return ""; // Method not unpackable + } + } else if (msg_type == NOTIFY_MSG && req_size.size() == NOTIFY_SIZE) { + if (!unpacker.deserialize(method)) { + discard(); + return ""; // Method not unpackable + } + } else { + discard(); + return ""; // Invalid request size/type + } + + return method; + + } + + size_t get_request(uint8_t* buffer, size_t buffer_size) { + + if (_packet_type != CALL_MSG && _packet_type != NOTIFY_MSG) { + return 0; // No RPC + } + + return pop_packet(buffer, buffer_size); + } + + void decode(){ + advance(); + parse_packet(); + } + + // Fill the raw buffer to its capacity + void advance() { + + if (_transport->available() && !buffer_full()) { + size_t bytes_read = _transport->read(_raw_buffer + _bytes_stored, BufferSize - _bytes_stored); + _bytes_stored += bytes_read; + } + + } + + void parse_packet(){ + + size_t offset = 0; + + if (packet_incoming()) { + if (response_queued()) return; // parsing complete + offset = _response_offset; // looking for a RESP + } + + size_t bytes_checked = 0; + size_t container_size; + int type = NO_MSG; + MsgPack::Unpacker unpacker; + + while (bytes_checked + offset < _bytes_stored){ + bytes_checked++; + unpacker.clear(); + if (!unpacker.feed(_raw_buffer + offset, bytes_checked)) continue; + + if (unpacker.isUInt7()) { // let the ascii pass + consume(1, offset); + bytes_checked--; + continue; + } + + if (unpackTypedArray(unpacker, container_size, type)) { + + if (!isValidRpc(type, container_size)) { + consume(bytes_checked, offset); + _discarded_packets++; + break; // Not a valid rpclib format + } + + if (offset == 0) { + _packet_type = type; + _packet_size = bytes_checked; + } + + if (type == RESP_MSG) { + _response_offset = offset; + _response_size = bytes_checked; // response queued + } else { + _response_offset = offset + bytes_checked; // keep on looking for a RESP_MSG + } + + break; + } + + } + + } + + bool packet_incoming() const { return _packet_size >= MIN_RPC_BYTES; } + + bool response_queued() const { + return _response_size > 0; + } + + int packet_type() const { return _packet_type; } + + size_t get_packet_size() const { return _packet_size;} + + size_t size() const {return _bytes_stored;} + + uint32_t get_discarded_packets() const {return _discarded_packets;} + + friend class RpcDecoderManager; + friend class DecoderTester; + +private: + ITransport* _transport; + uint8_t _raw_buffer[BufferSize]{}; + size_t _bytes_stored = 0; + int _packet_type = NO_MSG; + size_t _packet_size = 0; + size_t _response_offset = 0; + size_t _response_size = 0; + uint32_t _msg_id = 0; + uint32_t _discarded_packets = 0; + + bool buffer_full() const { return _bytes_stored == BufferSize; } + + bool buffer_empty() const { return _bytes_stored == 0;} + + // This is a blocking send, under the assumption _transport->write will always succeed eventually + size_t send(const uint8_t* data, const size_t size) const { + + size_t offset = 0; + + while (offset < size) { + size_t bytes_written = _transport->write(data + offset, size - offset); + offset += bytes_written; + } + + return offset; + } + + size_t pop_packet(uint8_t* buffer, size_t buffer_size) { + + if (!packet_incoming()) return 0; + + size_t packet_size = get_packet_size(); + if (packet_size > buffer_size) return 0; + + for (size_t i = 0; i < packet_size; i++) { + buffer[i] = _raw_buffer[i]; + } + + reset_packet(); + return consume(packet_size); + } + + void discard() { + consume(_packet_size); + reset_packet(); + _discarded_packets++; + } + + void reset_packet() { + _packet_type = NO_MSG; + _packet_size = 0; + } + + void reset_response() { + _response_offset = 0; + _response_size = 0; + } + + size_t consume(size_t size, size_t offset = 0) { + // Boundary checks + if (offset + size > _bytes_stored || size == 0) return 0; + + size_t remaining_bytes = _bytes_stored - size; + for (size_t i=offset; i= offset + size) { + _response_offset -= size; + } else { + reset_response(); + } + + _bytes_stored = remaining_bytes; + return size; + } + +}; + +#endif diff --git a/sketch/decoder_manager.h b/sketch/decoder_manager.h new file mode 100644 index 0000000..6aaa7a3 --- /dev/null +++ b/sketch/decoder_manager.h @@ -0,0 +1,70 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (C) Arduino s.r.l. and/or its affiliated companies + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +// This is a static implementation of the decoder manager + +#ifndef RPCLITE_DECODER_MANAGER_H +#define RPCLITE_DECODER_MANAGER_H + +#include +#include "transport.h" +#include "decoder.h" + +class RpcDecoderManager { + +public: + + RpcDecoderManager(const RpcDecoderManager&) = delete; + RpcDecoderManager& operator=(const RpcDecoderManager&) = delete; + + RpcDecoder<>* getDecoder(ITransport& transport) { + for (auto& entry : decoders_) { + if (entry.transport == &transport) { + return entry.decoder; + } + + if (entry.transport == nullptr) { + entry.transport = &transport; + entry.decoder = new RpcDecoder<>(transport); + + decoders_count++; + return entry.decoder; + } + } + + return nullptr; + } + + size_t getDecodersCount() const { + return decoders_count; + } + + static RpcDecoderManager& getInstance() { + static RpcDecoderManager instance; // thread-safe in C++11+ + return instance; + } + +private: + + RpcDecoderManager(){}; + + static RpcDecoderManager* instance; + + struct Entry { + ITransport* transport = nullptr; + RpcDecoder<>* decoder = nullptr; + }; + + std::array decoders_; + size_t decoders_count{0}; +}; + +#endif //RPCLITE_DECODER_MANAGER_H \ No newline at end of file diff --git a/sketch/dispatcher.h b/sketch/dispatcher.h new file mode 100644 index 0000000..72ff389 --- /dev/null +++ b/sketch/dispatcher.h @@ -0,0 +1,76 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#ifndef RPCLITE_DISPATCHER_H +#define RPCLITE_DISPATCHER_H + +#include "wrapper.h" +#include "error.h" + +struct DispatchEntry { + MsgPack::str_t name; + MsgPack::str_t tag; + IFunctionWrapper* fn; +}; + +template +class RpcFunctionDispatcher { +public: + + RpcFunctionDispatcher() = default; + + template + bool bind(MsgPack::str_t name, F&& f, MsgPack::str_t tag="") { + if (_count >= N) return false; + + if (isBound(name)) return false; + + _entries[_count++] = {name, tag, wrap(std::forward(f))}; + return true; + } + + bool isBound(const MsgPack::str_t& name) const { + for (size_t i = 0; i < _count; ++i) { + if (_entries[i].name == name) { + return true; + } + } + return false; + } + + bool hasTag(const MsgPack::str_t& name, MsgPack::str_t& tag) const { + for (size_t i = 0; i < _count; ++i) { + if (_entries[i].name == name && _entries[i].tag == tag) { + return true; + } + } + return false; + } + + bool call(const MsgPack::str_t& name, MsgPack::Unpacker& unpacker, MsgPack::Packer& packer) { + for (size_t i = 0; i < _count; ++i) { + if (_entries[i].name == name) { + return (*_entries[i].fn)(unpacker, packer); + } + } + + // handler not found + MsgPack::object::nil_t nil; + packer.serialize(RpcError(FUNCTION_NOT_FOUND_ERR, name), nil); + return false; + } + +private: + DispatchEntry _entries[N]; + size_t _count = 0; +}; + +#endif \ No newline at end of file diff --git a/sketch/error.h b/sketch/error.h new file mode 100644 index 0000000..d177c52 --- /dev/null +++ b/sketch/error.h @@ -0,0 +1,49 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#ifndef RPCLITE_ERROR_H +#define RPCLITE_ERROR_H + +#include + +// MsgPack log level +#define DEBUGLOG_DEFAULT_LOG_LEVEL_WARN + +#include "MsgPack.h" + +#define NO_ERR 0x00 +#define PARSING_ERR 0xFC +#define MALFORMED_CALL_ERR 0xFD +#define FUNCTION_NOT_FOUND_ERR 0xFE +#define GENERIC_ERR 0xFF + + +struct RpcError { + int code; + MsgPack::str_t traceback; + + RpcError() { + code = NO_ERR; + traceback = ""; + } + + RpcError(const int c, MsgPack::str_t tb) + : code(c), traceback(std::move(tb)) {} + + void copy(const RpcError& err) { + code = err.code; + traceback = err.traceback; + } + + MSGPACK_DEFINE(code, traceback); // -> [code, traceback] +}; + +#endif diff --git a/sketch/hci.h b/sketch/hci.h new file mode 100644 index 0000000..2c78a6e --- /dev/null +++ b/sketch/hci.h @@ -0,0 +1,171 @@ +/* + This file is part of the Arduino_RouterBridge library. + + Copyright (C) Arduino s.r.l. and/or its affiliated companies + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#pragma once + +#ifndef BRIDGE_HCI_H +#define BRIDGE_HCI_H + +#include +#include "bridge.h" + +#define HCI_OPEN_METHOD "hci/open" +#define HCI_CLOSE_METHOD "hci/close" +#define HCI_SEND_METHOD "hci/send" +#define HCI_RECV_METHOD "hci/recv" +#define HCI_AVAIL_METHOD "hci/avail" +#define HCI_BUFFER_SIZE 1024 // Matches Linux kernel HCI_MAX_ACL_SIZE (1024 bytes) + +// Lightweight binary view to avoid dynamic allocation during serialization +struct BinaryView { + const uint8_t *data; + size_t size; + + BinaryView(const uint8_t *d, size_t s) : data(d), size(s) { + + } + + // MsgPack serialization support + void to_msgpack(MsgPack::Packer &packer) const { + packer.pack(data, size); + } +}; + +template class BridgeHCI { + BridgeClass *bridge; + struct k_mutex hci_mutex; + bool initialized = false; + MsgPack::bin_t recv_buffer; + +public: + explicit BridgeHCI(BridgeClass &bridge): bridge(&bridge) { + + } + + bool begin(const char *device = "hci0") { + k_mutex_init(&hci_mutex); + + k_mutex_lock(&hci_mutex, K_FOREVER); + // Pre-allocate recv buffer to avoid allocations during recv calls + recv_buffer.reserve(BufferSize); + + if (!(*bridge) && !bridge->begin()) { + k_mutex_unlock(&hci_mutex); + return false; + } + + bool result; + if (bridge->call(HCI_OPEN_METHOD, String(device)).result(result)) { + initialized = result; + } + + k_mutex_unlock(&hci_mutex); + return result; + } + + void end() { + k_mutex_lock(&hci_mutex, K_FOREVER); + + if (!initialized) { + k_mutex_unlock(&hci_mutex); + return; + } + + bool result; + bridge->call(HCI_CLOSE_METHOD).result(result); + initialized = false; + + k_mutex_unlock(&hci_mutex); + } + + explicit operator bool() const { + k_mutex_lock(&hci_mutex, K_FOREVER); + bool out = initialized; + k_mutex_unlock(&hci_mutex); + return out; + } + + int send(const uint8_t *buffer, size_t size) { + k_mutex_lock(&hci_mutex, K_FOREVER); + + if (!initialized) { + k_mutex_unlock(&hci_mutex); + return -1; + } + + BinaryView send_buffer(buffer, size); + size_t bytes_sent; + const bool ret = bridge->call(HCI_SEND_METHOD, send_buffer).result(bytes_sent); + + k_mutex_unlock(&hci_mutex); + + if (ret) { + return bytes_sent; + } + return -1; + } + + int recv(uint8_t *buffer, size_t max_size) { + k_mutex_lock(&hci_mutex, K_FOREVER); + + if (!initialized) { + k_mutex_unlock(&hci_mutex); + return -1; + } + + recv_buffer.clear(); + bool ret = bridge->call(HCI_RECV_METHOD, max_size).result(recv_buffer); + + if (ret) { + size_t bytes_to_copy = recv_buffer.size() < max_size ? recv_buffer.size() : max_size; + // Use memcpy for faster bulk copy + if (bytes_to_copy > 0) { + memcpy(buffer, recv_buffer.data(), bytes_to_copy); + } + k_mutex_unlock(&hci_mutex); + return bytes_to_copy; + } + + k_mutex_unlock(&hci_mutex); + return 0; + } + + int available() { + + k_mutex_lock(&hci_mutex, K_FOREVER); + + if (!initialized) { + k_mutex_unlock(&hci_mutex); + return 0; + } + + bool result; + bool ret = bridge->call(HCI_AVAIL_METHOD).result(result); + + k_mutex_unlock(&hci_mutex); + + return ret && result; + } + +}; + +namespace RouterBridge { + inline BridgeHCI<> HCI(Bridge); +} + +#ifndef ARDUINO_ROUTERBRIDGE_PROVIDES_SERIAL +// Make available in global namespace for backward compatibility +// but not on platforms that require this library in all builds +// to avoid clashes with ArduinoBLE +using RouterBridge::HCI; +#endif + +#endif // BRIDGE_HCI_H diff --git a/sketch/lib/LICENSE b/sketch/lib/LICENSE new file mode 100644 index 0000000..a612ad9 --- /dev/null +++ b/sketch/lib/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/sketch/lib/README.md b/sketch/lib/README.md new file mode 100644 index 0000000..b4f164f --- /dev/null +++ b/sketch/lib/README.md @@ -0,0 +1,9 @@ +# ArduinoGraphics Library for Arduino + +![Check Arduino status](https://github.com/arduino-libraries/ArduinoGraphics/actions/workflows/check-arduino.yml/badge.svg) +![Compile Examples status](https://github.com/arduino-libraries/ArduinoGraphics/actions/workflows/compile-examples.yml/badge.svg) +![Spell Check status](https://github.com/arduino-libraries/ArduinoGraphics/actions/workflows/spell-check.yml/badge.svg) + +Core graphics library for Arduino. Based on the Processing API. + +📖 For more information about this library please read the documentation [here](./docs/) or visit us at [https://www.arduino.cc/en/Reference/ArduinoGraphics](https://www.arduino.cc/en/Reference/ArduinoGraphics) diff --git a/sketch/lib/docs/api.md b/sketch/lib/docs/api.md new file mode 100644 index 0000000..004b2b6 --- /dev/null +++ b/sketch/lib/docs/api.md @@ -0,0 +1,806 @@ +# Arduino Graphics Library + +## Methods + +### `begin()` + +#### Description + +Initializes the graphics device. + +#### Syntax + +``` +YourScreen.begin() +``` + +#### Parameters + +None + +#### Returns + +1 for success, 0 on failure. + +#### Example + +``` +if (!YourScreen.begin()) { + Serial.println("Failed to initialize the display!"); + while (1); +} +``` + +### `end()` + +#### Description + +Stops the graphics device. + +#### Syntax + +``` +YourScreen.end() +``` + +#### Parameters + +None + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.end(); +``` + +### `width()` + +#### Description + +Returns the pixel width of the graphics device. + +#### Syntax + +``` +YourScreen.width() +``` + +#### Parameters + +None + +#### Returns + +Returns the pixel width of the graphics device. + +#### Example + +``` +int w = YourScreen.width(); +``` + +### `height()` + +#### Description + +Returns the pixel height of the graphics device. + +#### Syntax + +``` +YourScreen.height() +``` + +#### Parameters + +None + +#### Returns + +Returns the pixel height of the graphics device. + +#### Example + +``` +int h = YourScreen.height(); +``` + +### `beginDraw()` + +#### Description + +Begins a drawing operation. + +#### Syntax + +``` +YourScreen.beginDraw() +``` + +#### Parameters + +None + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.set(0, 0, 255, 0, 0); +YourScreen.endDraw(); +``` + +### `endDraw()` + +#### Description + +Ends a drawing operation, any drawing operations after beginDraw() is called will be displayed to the screen. + +#### Syntax + +``` +YourScreen.endDraw() +``` + +#### Parameters + +None + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.set(0, 0, 255, 0, 0); +YourScreen.endDraw(); +``` + +### `background()` + +#### Description + +Set the background color of drawing operations. Used when calling clear() or drawing text. + +#### Syntax + +``` +YourScreen.background(r, g, b) +YourScreen.background(color) +``` + +#### Parameters + +- r: red color value (0 - 255) +- g: green color value (0 - 255) +- b: blue color value (0 - 255) +- color: 24-bit RGB color, 0xrrggbb + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.background(255, 0, 0); +YourScreen.clear(); +YourScreen.endDraw(); +``` + +### `clear()` + +#### Description + +Clear the screen contents or a specific pixel, uses the background colour set in background(). + +#### Syntax + +``` +YourScreen.clear() +YourScreen.clear(x, y) +``` + +#### Parameters + +- x: x position of the pixel to clear +- y: y position of the pixel to clear + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.background(255, 0, 0); +YourScreen.clear(); +YourScreen.endDraw(); +``` + +### `fill()` + +#### Description + +Set the fill color of drawing operations. + +#### Syntax + +``` +YourScreen.fill(r, g, b) +YourScreen.fill(color) +``` + +#### Parameters + +- r: red color value (0 - 255) +- g: green color value (0 - 255) +- b: blue color value (0 - 255) +- color: 24-bit RGB color, 0xrrggbb + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.noStroke(); +YourScreen.fill(255, 255, 0); +YourScreen.rect(0, 0, YourScreen.width(), YourScreen.height()); +YourScreen.endDraw(); +``` + +### `noFill()` + +#### Description + +Clears the fill color of drawing operations. + +#### Syntax + +``` +YourScreen.noFill() +``` + +#### Parameters + +None + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.stroke(255, 0, 255); +YourScreen.noFill(); +YourScreen.rect(0, 0, YourScreen.width(), YourScreen.height()); +YourScreen.endDraw(); +``` + +### `stroke()` + +#### Description + +Set the stroke color of drawing operations. + +#### Syntax + +``` +YourScreen.stroke(r, g, b) +YourScreen.stroke(color) +``` + +#### Parameters + +- r: red color value (0 - 255) +- g: green color value (0 - 255) +- b: blue color value (0 - 255) +- color: 24-bit RGB color, 0xrrggbb + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.stroke(255, 0, 255); +YourScreen.noFill(); +YourScreen.rect(0, 0, YourScreen.width(), YourScreen.height()); +YourScreen.endDraw(); +``` + +### `noStroke()` + +#### Description + +Clears the stroke color of drawing operations. + +#### Syntax + +``` +YourScreen.noStroke() +``` + +#### Parameters + +None + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.noStroke(); +YourScreen.fill(255, 255, 0); +YourScreen.rect(0, 0, YourScreen.width(), YourScreen.height()); +YourScreen.endDraw(); +``` + +### `line()` + +#### Description + +Stroke a line, uses the stroke color set in stroke(). + +#### Syntax + +``` +YourScreen.line(x1, y1, x2, y2) +``` + +#### Parameters + +- x1: x position of the starting point of the line +- y1: y position of the starting point of the line +- x2: x position of the end point of the line +- y2: y position of the end point of the line + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.stroke(0, 0, 255); +YourScreen.line(0, 0, YourScreen.width() - 1, YourScreen.height() - 1); +YourScreen.endDraw(); +``` + +### `point()` + +#### Description + +Stroke a point, uses the stroke color set in stroke(). + +#### Syntax + +``` +YourScreen.point(x, y) +``` + +#### Parameters + +x: x position of the point +y: y position of the point + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.stroke(0, 255, 0); +YourScreen.point(1, 1); +YourScreen.endDraw(); +``` + +### `rect()` + +#### Description + +Stroke and fill a rectangle, uses the stroke color set in stroke() and the fill color set in fill(). + +#### Syntax + +``` +YourScreen.rect(x, y, width, height) +``` + +#### Parameters + +- x: x position of the rectangle +- y: y position of the rectangle +- width: width of the rectangle +- height: height of the rectangle + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.noStroke(); +YourScreen.fill(255, 255, 0); +YourScreen.rect(0, 0, YourScreen.width(), YourScreen.height()); +YourScreen.endDraw(); +``` + +### `circle()` + +#### Description + +Stroke and fill a circle, uses the stroke color set in stroke() and the fill color set in fill(). + +#### Syntax + +``` +YourScreen.circle(x, y, diameter) +``` + +#### Parameters + +- x: x center position of the circle +- y: y center position of the circle +- diameter: diameter of the circle + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.noStroke(); +YourScreen.fill(255, 255, 0); +YourScreen.circle(YourScreen.width()/2, YourScreen.height()/2, YourScreen.height()); +YourScreen.endDraw(); +``` + +### `ellipse()` + +#### Description + +Stroke and fill an ellipse, uses the stroke color set in stroke() and the fill color set in fill(). + +#### Syntax + +``` +YourScreen.ellipse(x, y, width, height) +``` + +#### Parameters + +- x: x center position of the ellipse +- y: y center position of the ellipse +- width: width of the ellipse +- height: height of the ellipse + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.noStroke(); +YourScreen.fill(255, 255, 0); +YourScreen.ellipse(YourScreen.width()/2, YourScreen.height()/2, YourScreen.width(), YourScreen.height()); +YourScreen.endDraw(); +``` + +### `text()` + +#### Description + +Draw some text, uses the stroke color set in stroke() and the background color set in background(). + +#### Syntax + +``` +YourScreen.text(string) +YourScreen.text(string, x, y) +``` + +#### Parameters + +- string: string to draw +- x: x position for the start of the text +- y: y position for the start of the text + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.stroke(255, 255, 255); +YourScreen.text("abc", 0, 1); +YourScreen.endDraw(); +``` + +### `textFont()` + +#### Description + +Sets the font used for text. The library current has the Font_4x6 and Font_5x7 built in. + +#### Syntax + +``` +YourScreen.textFont(font) +``` + +#### Parameters + +font: font to set + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.stroke(255, 255, 255); +YourScreen.textFont(Font_5x7); +YourScreen.text("abc", 0, 1); +YourScreen.endDraw(); +``` + +### `textFontWidth()` + +#### Description + +Returns the width, in pixels, of the current font. + +#### Syntax + +``` +YourScreen.textFontWidth() + +``` + +#### Parameters + +None + +#### Returns + +Nothing + +#### Example + +``` +int w = YourScreen.textFontWidth(); +``` + +### `textFontHeight()` + +#### Description + +Returns the height, in pixels, of the current font. + +#### Syntax + +``` +YourScreen.textFontHeight() +``` + +#### Parameters + +None + +#### Returns + +Nothing + +#### Example + +``` +int h = YourScreen.textFontHeight(); +``` + +### `textSize()` + +#### Description + +Set a text scale factor + +#### Syntax + +``` +YourScreen.textSize(scale) +YourScreen.textSize(scaleX, scaleY) +``` + +#### Parameters + +scale: scale factor used for both x and y +scaleX: x scale factor +scaleY: y scale factor + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.clear(); +YourScreen.stroke(255, 255, 255); +YourScreen.textFont(Font_5x7); +YourScreen.textSize(5); +YourScreen.text("abc", 0, 1); +YourScreen.endDraw(); +``` + +### `set()` + +#### Description + +Set a pixel’s color value. + +#### Syntax + +``` +YourScreen.set(x, y, r, g, b) +YourScreen.set(x, y, color) +``` + +#### Parameters + +x: x position of the pixel +y: y position of the pixel +r: red color value (0 - 255) +g: green color value (0 - 255) +b: blue color value (0 - 255) +color: 24-bit RGB color, 0xrrggbb + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginDraw(); +YourScreen.point(1, 1, 0, 255, 0); +YourScreen.endDraw(); +``` + +### `beginText()` + +#### Description + +Start the process of displaying and optionally scrolling text. The Print interface can be used to set the text. + +#### Syntax + +``` +YourScreen.beginText() +YourScreen.beginText(x, y, r, g, b) +YourScreen.beginText(x, y, color) +``` + +#### Parameters + +x: x position of the text +y: y position of the text +r: red color value (0 - 255) +g: green color value (0 - 255) +b: blue color value (0 - 255) +color: 24-bit RGB color, 0xrrggbb + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginText(0, 0, 127, 0, 0); +YourScreen.print("Hi"); +YourScreen.endText(); +``` + +### `endText()` + +#### Description + +End the process of displaying and optionally scrolling text. + +#### Syntax + +``` +YourScreen.endText() +YourScreen.endText(scrollDirection) +``` + +#### Parameters + +scrollDirection: (optional) the direction to scroll, defaults to NO_SCROLL if not provided. Valid options are NO_SCROLL, SCROLL_LEFT, SCROLL_RIGHT, SCROLL_UP, SCROLL_DOWN + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginText(0, 0, 127, 0, 0); +YourScreen.print("Hi"); +YourScreen.endText(); +``` + +### `textScrollSpeed()` + +#### Description + +Sets the text scrolling speed, the speed controls the delay in milliseconds between scrolling each pixel. + +#### Syntax + +``` +YourScreen.textScrollSpeed(speed) +``` + +#### Parameters + +speed: scroll speed + +#### Returns + +Nothing + +#### Example + +``` +YourScreen.beginText(0, 0, 127, 0, 0); +YourScreen.textScrollSpeed(500); +YourScreen.print("Hello There!"); +YourScreen.endText(true); +``` diff --git a/sketch/lib/docs/readme.md b/sketch/lib/docs/readme.md new file mode 100644 index 0000000..0dd9764 --- /dev/null +++ b/sketch/lib/docs/readme.md @@ -0,0 +1,20 @@ +# Arduino Graphics Library + +This is a library that allows you to draw and write on screens with graphical primitives; it requires a specific hardware interface library to drive the screen you are using, therefore every screen type should have its own hardware specific library. + +To use this library + +``` +#include +``` + +To let you easily understand the usage of the graphics primitives, we are using a dummy screen object named YourScreen that should be substituted with the real one, Eg. MATRIX, OLED, TFT and so on. Refer to the hardware interfacing library of your screen to get more details. + +The style and syntax of this library is inspired by [Processing 3](https://processing.org/) and we believe that learning Processing is very helpful to develop complex applications that combine the versatility of Arduino driven hardware with the power of a pc based graphical interface. + +## How-to generate bitmaps from the fonts + +```bash +cd extras +./generate_font.py 5x7.bdf Font_5x7.c Font_5x7 +``` \ No newline at end of file diff --git a/sketch/lib/examples/ASCIIDraw/ASCIIDraw.ino b/sketch/lib/examples/ASCIIDraw/ASCIIDraw.ino new file mode 100644 index 0000000..dfb6bb3 --- /dev/null +++ b/sketch/lib/examples/ASCIIDraw/ASCIIDraw.ino @@ -0,0 +1,109 @@ +/* + ASCIIDraw + + Use the ArduinoGraphics library to draw ASCII art on the Serial Monitor. + + This is intended primarily to allow testing of the library. + See the Arduino_MKRRGB library for a more useful demonstration of the ArduinoGraphics library. + + The circuit: + - Arduino board + + This example code is in the public domain. +*/ + +#include + +const byte fontSize = 3; +const byte canvasWidth = fontSize * (5 * 7) + 26; +const byte canvasHeight = fontSize * 7 + 20; + +class ASCIIDrawClass : public ArduinoGraphics { + public: + // can be used with an object of any class that inherits from the Print class + ASCIIDrawClass(Print &printObject = (Print &)Serial) : + ArduinoGraphics(canvasWidth, canvasHeight), + _printObject(&printObject) {} + + // this function is called by the ArduinoGraphics library's functions + virtual void set(int x, int y, uint8_t r, uint8_t g, uint8_t b) { + // the r parameter is (mis)used to set the character to draw with + _canvasBuffer[x][y] = r; + // cast unused parameters to void to fix "unused parameter" warning + (void)g; + (void)b; + } + + // display the drawing + void endDraw() { + ArduinoGraphics::endDraw(); + + for (byte row = 0; row < canvasHeight; row++) { + for (byte column = 0; column < canvasWidth; column++) { + // handle unset parts of buffer + if (_canvasBuffer[column][row] == 0) { + _canvasBuffer[column][row] = ' '; + } + _printObject->print(_canvasBuffer[column][row]); + } + _printObject->println(); + } + } + + private: + Print *_printObject; + char _canvasBuffer[canvasWidth][canvasHeight] = {{0}}; +}; + +ASCIIDrawClass ASCIIDraw; + +void setup() { + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + ASCIIDraw.beginDraw(); + + // configure the character used to fill the background. The second and third parameters are ignored + ASCIIDraw.background('+', 0, 0); + ASCIIDraw.clear(); + + // add the outer border + ASCIIDraw.stroke('-', 0, 0); + ASCIIDraw.fill('*', 0, 0); + const byte outerBorderThickness = 1; + ASCIIDraw.rect(outerBorderThickness, outerBorderThickness, canvasWidth - outerBorderThickness * 2, canvasHeight - outerBorderThickness * 2); + + // add the inner border + ASCIIDraw.stroke('+', 0, 0); + ASCIIDraw.fill('O', 0, 0); + const byte borderThickness = outerBorderThickness + 6; + ASCIIDraw.rect(borderThickness, borderThickness, canvasWidth - borderThickness * 2, canvasHeight - borderThickness * 2); + + // add the text + ASCIIDraw.background(' ', 0, 0); + ASCIIDraw.stroke('@', 0, 0); + const char text[] = "ARDUINO"; + ASCIIDraw.textFont(Font_5x7); + ASCIIDraw.textSize(fontSize); + const byte textWidth = strlen(text) * ASCIIDraw.textFontWidth(); + const byte textHeight = ASCIIDraw.textFontHeight(); + const byte textX = (canvasWidth - textWidth) / 2; + const byte textY = (canvasHeight - textHeight) / 2; + ASCIIDraw.text(text, textX, textY); + + // underline the text + ASCIIDraw.stroke('-', 0, 0); + ASCIIDraw.line(textX, textY + textHeight - 1, textX + textWidth - 1, textY + textHeight - 1); + + // add some accents to the underline + ASCIIDraw.stroke('+', 0, 0); + ASCIIDraw.point(textX + 4, textY + textHeight - 1); + ASCIIDraw.point(textX + textWidth - 1 - 4, textY + textHeight - 1); + + // print the drawing to the Serial Monitor + ASCIIDraw.endDraw(); +} + +void loop() {} diff --git a/sketch/lib/extras/4x6.bdf b/sketch/lib/extras/4x6.bdf new file mode 100644 index 0000000..ac68ebd --- /dev/null +++ b/sketch/lib/extras/4x6.bdf @@ -0,0 +1,11981 @@ +STARTFONT 2.1 +COMMENT Contributed by Janne V. Kujala +COMMENT $ucs-fonts: 4x6.bdf,v 1.5 2002-08-26 18:05:49+01 mgk25 Rel $ +COMMENT Send bug reports to Markus Kuhn +FONT -Misc-Fixed-Medium-R-Normal--6-60-75-75-C-40-ISO10646-1 +SIZE 6 75 75 +FONTBOUNDINGBOX 4 6 0 -1 +STARTPROPERTIES 23 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 6 +POINT_SIZE 60 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 40 +CHARSET_REGISTRY "ISO10646" +CHARSET_ENCODING "1" +FONT_ASCENT 5 +FONT_DESCENT 1 +DESTINATION 1 +COPYRIGHT "Public domain font. Share and enjoy." +_XMBDFED_INFO "Edited with xmbdfed 4.3." +CAP_HEIGHT 5 +X_HEIGHT 4 +DEFAULT_CHAR 0 +ENDPROPERTIES +CHARS 919 +STARTCHAR char0 +ENCODING 0 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +00 +A0 +00 +ENDCHAR +STARTCHAR space +ENCODING 32 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclam +ENCODING 33 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +00 +40 +00 +ENDCHAR +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR numbersign +ENCODING 35 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +F0 +A0 +F0 +A0 +00 +ENDCHAR +STARTCHAR dollar +ENCODING 36 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +C0 +20 +E0 +40 +ENDCHAR +STARTCHAR percent +ENCODING 37 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +20 +40 +80 +20 +00 +ENDCHAR +STARTCHAR ampersand +ENCODING 38 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +40 +A0 +50 +00 +ENDCHAR +STARTCHAR quotesingle +ENCODING 39 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenleft +ENCODING 40 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +40 +40 +40 +20 +ENDCHAR +STARTCHAR parenright +ENCODING 41 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +40 +40 +40 +80 +ENDCHAR +STARTCHAR asterisk +ENCODING 42 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +E0 +40 +A0 +00 +ENDCHAR +STARTCHAR plus +ENCODING 43 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR comma +ENCODING 44 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +40 +80 +ENDCHAR +STARTCHAR hyphen +ENCODING 45 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +00 +00 +00 +ENDCHAR +STARTCHAR period +ENCODING 46 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +40 +00 +ENDCHAR +STARTCHAR slash +ENCODING 47 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +20 +40 +80 +80 +00 +ENDCHAR +STARTCHAR zero +ENCODING 48 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +E0 +A0 +40 +00 +ENDCHAR +STARTCHAR one +ENCODING 49 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +C0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR two +ENCODING 50 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +20 +40 +E0 +00 +ENDCHAR +STARTCHAR three +ENCODING 51 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +20 +40 +20 +C0 +00 +ENDCHAR +STARTCHAR four +ENCODING 52 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +E0 +20 +20 +00 +ENDCHAR +STARTCHAR five +ENCODING 53 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +C0 +20 +C0 +00 +ENDCHAR +STARTCHAR six +ENCODING 54 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +C0 +A0 +40 +00 +ENDCHAR +STARTCHAR seven +ENCODING 55 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +20 +40 +80 +80 +00 +ENDCHAR +STARTCHAR eight +ENCODING 56 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +A0 +40 +A0 +C0 +00 +ENDCHAR +STARTCHAR nine +ENCODING 57 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +60 +20 +C0 +00 +ENDCHAR +STARTCHAR colon +ENCODING 58 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +00 +00 +40 +00 +ENDCHAR +STARTCHAR semicolon +ENCODING 59 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +00 +00 +40 +80 +ENDCHAR +STARTCHAR less +ENCODING 60 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +80 +40 +20 +00 +ENDCHAR +STARTCHAR equal +ENCODING 61 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +00 +E0 +00 +00 +ENDCHAR +STARTCHAR greater +ENCODING 62 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +20 +40 +80 +00 +ENDCHAR +STARTCHAR question +ENCODING 63 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +20 +40 +00 +40 +00 +ENDCHAR +STARTCHAR at +ENCODING 64 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +A0 +A0 +80 +60 +00 +ENDCHAR +STARTCHAR A +ENCODING 65 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR B +ENCODING 66 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +C0 +A0 +C0 +00 +ENDCHAR +STARTCHAR C +ENCODING 67 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +80 +A0 +40 +00 +ENDCHAR +STARTCHAR D +ENCODING 68 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +A0 +A0 +C0 +00 +ENDCHAR +STARTCHAR E +ENCODING 69 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR F +ENCODING 70 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +C0 +80 +80 +00 +ENDCHAR +STARTCHAR G +ENCODING 71 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR H +ENCODING 72 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR I +ENCODING 73 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR J +ENCODING 74 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +20 +20 +A0 +40 +00 +ENDCHAR +STARTCHAR K +ENCODING 75 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR L +ENCODING 76 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +80 +80 +E0 +00 +ENDCHAR +STARTCHAR M +ENCODING 77 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR N +ENCODING 78 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +A0 +E0 +A0 +80 +00 +ENDCHAR +STARTCHAR O +ENCODING 79 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR P +ENCODING 80 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +C0 +80 +80 +00 +ENDCHAR +STARTCHAR Q +ENCODING 81 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +A0 +A0 +40 +20 +ENDCHAR +STARTCHAR R +ENCODING 82 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR S +ENCODING 83 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +40 +20 +C0 +00 +ENDCHAR +STARTCHAR T +ENCODING 84 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +40 +40 +40 +00 +ENDCHAR +STARTCHAR U +ENCODING 85 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR V +ENCODING 86 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +A0 +E0 +40 +00 +ENDCHAR +STARTCHAR W +ENCODING 87 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +E0 +E0 +A0 +00 +ENDCHAR +STARTCHAR X +ENCODING 88 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +40 +A0 +A0 +00 +ENDCHAR +STARTCHAR Y +ENCODING 89 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +40 +40 +40 +00 +ENDCHAR +STARTCHAR Z +ENCODING 90 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +20 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR bracketleft +ENCODING 91 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +40 +40 +40 +60 +00 +ENDCHAR +STARTCHAR backslash +ENCODING 92 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +40 +20 +20 +00 +ENDCHAR +STARTCHAR bracketright +ENCODING 93 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +40 +40 +C0 +00 +ENDCHAR +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR underscore +ENCODING 95 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +00 +E0 +ENDCHAR +STARTCHAR grave +ENCODING 96 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR a +ENCODING 97 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR b +ENCODING 98 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +C0 +A0 +A0 +C0 +00 +ENDCHAR +STARTCHAR c +ENCODING 99 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +80 +80 +60 +00 +ENDCHAR +STARTCHAR d +ENCODING 100 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +60 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR e +ENCODING 101 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR f +ENCODING 102 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR g +ENCODING 103 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +A0 +60 +20 +C0 +ENDCHAR +STARTCHAR h +ENCODING 104 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +C0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR i +ENCODING 105 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +C0 +40 +E0 +00 +ENDCHAR +STARTCHAR j +ENCODING 106 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +00 +20 +20 +20 +C0 +ENDCHAR +STARTCHAR k +ENCODING 107 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +A0 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR l +ENCODING 108 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR m +ENCODING 109 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR n +ENCODING 110 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR o +ENCODING 111 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR p +ENCODING 112 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +A0 +C0 +80 +80 +ENDCHAR +STARTCHAR q +ENCODING 113 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +A0 +A0 +60 +20 +ENDCHAR +STARTCHAR r +ENCODING 114 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +C0 +80 +80 +00 +ENDCHAR +STARTCHAR s +ENCODING 115 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +C0 +20 +C0 +00 +ENDCHAR +STARTCHAR t +ENCODING 116 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +40 +20 +00 +ENDCHAR +STARTCHAR u +ENCODING 117 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR v +ENCODING 118 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR w +ENCODING 119 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR x +ENCODING 120 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +40 +40 +A0 +00 +ENDCHAR +STARTCHAR y +ENCODING 121 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +60 +20 +C0 +ENDCHAR +STARTCHAR z +ENCODING 122 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +20 +40 +E0 +00 +ENDCHAR +STARTCHAR braceleft +ENCODING 123 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +C0 +40 +40 +20 +ENDCHAR +STARTCHAR bar +ENCODING 124 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +40 +40 +00 +ENDCHAR +STARTCHAR braceright +ENCODING 125 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +60 +40 +40 +80 +ENDCHAR +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR space +ENCODING 160 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclamdown +ENCODING 161 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +40 +40 +40 +00 +ENDCHAR +STARTCHAR cent +ENCODING 162 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +80 +E0 +40 +00 +ENDCHAR +STARTCHAR sterling +ENCODING 163 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +60 +40 +A0 +00 +ENDCHAR +STARTCHAR currency +ENCODING 164 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +90 +60 +60 +90 +00 +ENDCHAR +STARTCHAR yen +ENCODING 165 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR brokenbar +ENCODING 166 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +00 +40 +40 +00 +ENDCHAR +STARTCHAR section +ENCODING 167 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +C0 +A0 +60 +20 +C0 +ENDCHAR +STARTCHAR dieresis +ENCODING 168 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR copyright +ENCODING 169 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +90 +D0 +D0 +90 +60 +ENDCHAR +STARTCHAR ordfeminine +ENCODING 170 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +A0 +60 +00 +E0 +00 +ENDCHAR +STARTCHAR guillemotleft +ENCODING 171 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +50 +A0 +50 +00 +00 +ENDCHAR +STARTCHAR logicalnot +ENCODING 172 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +20 +00 +00 +ENDCHAR +STARTCHAR hyphen +ENCODING 173 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +00 +00 +00 +ENDCHAR +STARTCHAR registered +ENCODING 174 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +F0 +D0 +60 +00 +00 +ENDCHAR +STARTCHAR macron +ENCODING 175 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR degree +ENCODING 176 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +40 +00 +00 +00 +ENDCHAR +STARTCHAR plusminus +ENCODING 177 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +00 +E0 +00 +ENDCHAR +STARTCHAR twosuperior +ENCODING 178 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +80 +C0 +00 +00 +ENDCHAR +STARTCHAR threesuperior +ENCODING 179 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +80 +40 +80 +00 +ENDCHAR +STARTCHAR acute +ENCODING 180 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR mu +ENCODING 181 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +A0 +C0 +80 +ENDCHAR +STARTCHAR paragraph +ENCODING 182 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +70 +D0 +D0 +50 +50 +00 +ENDCHAR +STARTCHAR periodcentered +ENCODING 183 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +40 +00 +00 +00 +ENDCHAR +STARTCHAR cedilla +ENCODING 184 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +20 +40 +00 +ENDCHAR +STARTCHAR onesuperior +ENCODING 185 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +C0 +40 +40 +00 +00 +ENDCHAR +STARTCHAR ordmasculine +ENCODING 186 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +40 +00 +E0 +00 +ENDCHAR +STARTCHAR guillemotright +ENCODING 187 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +50 +A0 +00 +00 +ENDCHAR +STARTCHAR onequarter +ENCODING 188 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +80 +50 +70 +10 +ENDCHAR +STARTCHAR onehalf +ENCODING 189 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +B0 +10 +20 +30 +ENDCHAR +STARTCHAR threequarters +ENCODING 190 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +80 +50 +B0 +10 +ENDCHAR +STARTCHAR questiondown +ENCODING 191 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +40 +80 +60 +00 +ENDCHAR +STARTCHAR Agrave +ENCODING 192 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR Aacute +ENCODING 193 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR Acircumflex +ENCODING 194 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR Atilde +ENCODING 195 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +C0 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR Adieresis +ENCODING 196 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR Aring +ENCODING 197 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR AE +ENCODING 198 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +70 +A0 +F0 +A0 +B0 +00 +ENDCHAR +STARTCHAR Ccedilla +ENCODING 199 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +80 +A0 +40 +80 +ENDCHAR +STARTCHAR Egrave +ENCODING 200 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +E0 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR Eacute +ENCODING 201 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +E0 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR Ecircumflex +ENCODING 202 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +E0 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR Edieresis +ENCODING 203 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR Igrave +ENCODING 204 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +E0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR Iacute +ENCODING 205 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +E0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR Icircumflex +ENCODING 206 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR Idieresis +ENCODING 207 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR Eth +ENCODING 208 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +50 +D0 +50 +E0 +00 +ENDCHAR +STARTCHAR Ntilde +ENCODING 209 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +E0 +E0 +A0 +00 +ENDCHAR +STARTCHAR Ograve +ENCODING 210 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR Oacute +ENCODING 211 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR Ocircumflex +ENCODING 212 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR Otilde +ENCODING 213 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +70 +E0 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR Odieresis +ENCODING 214 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR multiply +ENCODING 215 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +40 +A0 +00 +00 +ENDCHAR +STARTCHAR Oslash +ENCODING 216 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +A0 +E0 +A0 +C0 +00 +ENDCHAR +STARTCHAR Ugrave +ENCODING 217 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR Uacute +ENCODING 218 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR Ucircumflex +ENCODING 219 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR Udieresis +ENCODING 220 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR Yacute +ENCODING 221 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +00 +A0 +40 +40 +00 +ENDCHAR +STARTCHAR Thorn +ENCODING 222 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +C0 +A0 +C0 +80 +00 +ENDCHAR +STARTCHAR germandbls +ENCODING 223 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +C0 +A0 +E0 +80 +ENDCHAR +STARTCHAR agrave +ENCODING 224 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR aacute +ENCODING 225 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR acircumflex +ENCODING 226 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +00 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR atilde +ENCODING 227 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR adieresis +ENCODING 228 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR aring +ENCODING 229 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR ae +ENCODING 230 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +70 +B0 +A0 +70 +00 +ENDCHAR +STARTCHAR ccedilla +ENCODING 231 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +80 +60 +40 +ENDCHAR +STARTCHAR egrave +ENCODING 232 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR eacute +ENCODING 233 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR ecircumflex +ENCODING 234 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR edieresis +ENCODING 235 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR igrave +ENCODING 236 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR iacute +ENCODING 237 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +C0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR icircumflex +ENCODING 238 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR idieresis +ENCODING 239 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +C0 +40 +E0 +00 +ENDCHAR +STARTCHAR eth +ENCODING 240 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +60 +A0 +40 +00 +ENDCHAR +STARTCHAR ntilde +ENCODING 241 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR ograve +ENCODING 242 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +40 +A0 +40 +00 +ENDCHAR +STARTCHAR oacute +ENCODING 243 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +40 +A0 +40 +00 +ENDCHAR +STARTCHAR ocircumflex +ENCODING 244 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +40 +A0 +40 +00 +ENDCHAR +STARTCHAR otilde +ENCODING 245 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +40 +A0 +40 +00 +ENDCHAR +STARTCHAR odieresis +ENCODING 246 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +40 +A0 +40 +00 +ENDCHAR +STARTCHAR divide +ENCODING 247 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +E0 +00 +40 +00 +ENDCHAR +STARTCHAR oslash +ENCODING 248 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +A0 +A0 +C0 +00 +ENDCHAR +STARTCHAR ugrave +ENCODING 249 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR uacute +ENCODING 250 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR ucircumflex +ENCODING 251 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR udieresis +ENCODING 252 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR yacute +ENCODING 253 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +A0 +E0 +20 +C0 +ENDCHAR +STARTCHAR thorn +ENCODING 254 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +C0 +A0 +C0 +80 +ENDCHAR +STARTCHAR ydieresis +ENCODING 255 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +E0 +20 +C0 +ENDCHAR +STARTCHAR Amacron +ENCODING 256 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR amacron +ENCODING 257 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR Abreve +ENCODING 258 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR abreve +ENCODING 259 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR Aogonek +ENCODING 260 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +E0 +A0 +20 +ENDCHAR +STARTCHAR aogonek +ENCODING 261 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +60 +A0 +60 +20 +ENDCHAR +STARTCHAR Cacute +ENCODING 262 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +A0 +80 +A0 +40 +00 +ENDCHAR +STARTCHAR cacute +ENCODING 263 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +A0 +80 +60 +00 +ENDCHAR +STARTCHAR Ccircumflex +ENCODING 264 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +A0 +80 +A0 +40 +00 +ENDCHAR +STARTCHAR ccircumflex +ENCODING 265 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +00 +60 +80 +60 +00 +ENDCHAR +STARTCHAR Cdotaccent +ENCODING 266 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +80 +A0 +40 +00 +ENDCHAR +STARTCHAR cdotaccent +ENCODING 267 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +60 +80 +60 +00 +ENDCHAR +STARTCHAR Ccaron +ENCODING 268 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +A0 +80 +A0 +40 +00 +ENDCHAR +STARTCHAR ccaron +ENCODING 269 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +60 +80 +60 +00 +ENDCHAR +STARTCHAR Dcaron +ENCODING 270 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +C0 +A0 +A0 +C0 +00 +ENDCHAR +STARTCHAR dcaron +ENCODING 271 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +30 +20 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR Dcroat +ENCODING 272 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +E0 +A0 +C0 +00 +ENDCHAR +STARTCHAR dcroat +ENCODING 273 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +20 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR Emacron +ENCODING 274 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +E0 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR emacron +ENCODING 275 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR Ebreve +ENCODING 276 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR ebreve +ENCODING 277 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR Edotaccent +ENCODING 278 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR edotaccent +ENCODING 279 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR Eogonek +ENCODING 280 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +C0 +80 +E0 +20 +ENDCHAR +STARTCHAR eogonek +ENCODING 281 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +C0 +60 +40 +ENDCHAR +STARTCHAR Ecaron +ENCODING 282 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR ecaron +ENCODING 283 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR Gcircumflex +ENCODING 284 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +80 +A0 +60 +00 +ENDCHAR +STARTCHAR gcircumflex +ENCODING 285 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +A0 +60 +20 +C0 +ENDCHAR +STARTCHAR Gbreve +ENCODING 286 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +60 +80 +A0 +60 +00 +ENDCHAR +STARTCHAR gbreve +ENCODING 287 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +60 +20 +C0 +ENDCHAR +STARTCHAR Gdotaccent +ENCODING 288 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +60 +80 +A0 +60 +00 +ENDCHAR +STARTCHAR gdotaccent +ENCODING 289 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +60 +A0 +60 +20 +C0 +ENDCHAR +STARTCHAR Gcommaaccent +ENCODING 290 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +A0 +A0 +40 +40 +ENDCHAR +STARTCHAR gcommaaccent +ENCODING 291 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +60 +A0 +60 +20 +C0 +ENDCHAR +STARTCHAR Hcircumflex +ENCODING 292 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +00 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR hcircumflex +ENCODING 293 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Hbar +ENCODING 294 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR hbar +ENCODING 295 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +C0 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Itilde +ENCODING 296 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR itilde +ENCODING 297 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +C0 +40 +E0 +00 +ENDCHAR +STARTCHAR Imacron +ENCODING 298 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +E0 +40 +E0 +00 +ENDCHAR +STARTCHAR imacron +ENCODING 299 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +C0 +40 +E0 +00 +ENDCHAR +STARTCHAR Ibreve +ENCODING 300 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +E0 +40 +E0 +00 +ENDCHAR +STARTCHAR ibreve +ENCODING 301 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +C0 +40 +E0 +00 +ENDCHAR +STARTCHAR Iogonek +ENCODING 302 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +40 +40 +E0 +20 +ENDCHAR +STARTCHAR iogonek +ENCODING 303 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +C0 +40 +E0 +20 +ENDCHAR +STARTCHAR Idotaccent +ENCODING 304 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +E0 +40 +E0 +00 +ENDCHAR +STARTCHAR dotlessi +ENCODING 305 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +C0 +40 +E0 +00 +ENDCHAR +STARTCHAR IJ +ENCODING 306 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +A0 +A0 +A0 +20 +60 +ENDCHAR +STARTCHAR ij +ENCODING 307 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +A0 +20 +40 +ENDCHAR +STARTCHAR Jcircumflex +ENCODING 308 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +A0 +20 +A0 +40 +00 +ENDCHAR +STARTCHAR jcircumflex +ENCODING 309 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +00 +20 +20 +C0 +ENDCHAR +STARTCHAR Kcommaaccent +ENCODING 310 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +C0 +A0 +20 +40 +ENDCHAR +STARTCHAR kcommaaccent +ENCODING 311 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +A0 +C0 +A0 +20 +40 +ENDCHAR +STARTCHAR kgreenlandic +ENCODING 312 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +C0 +A0 +00 +ENDCHAR +STARTCHAR Lacute +ENCODING 313 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +80 +80 +80 +E0 +00 +ENDCHAR +STARTCHAR lacute +ENCODING 314 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +C0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR Lcommaaccent +ENCODING 315 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +80 +80 +E0 +20 +ENDCHAR +STARTCHAR lcommaaccent +ENCODING 316 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +40 +40 +E0 +20 +ENDCHAR +STARTCHAR Lcaron +ENCODING 317 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +C0 +80 +80 +E0 +00 +ENDCHAR +STARTCHAR lcaron +ENCODING 318 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +D0 +40 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR Ldot +ENCODING 319 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +A0 +80 +E0 +00 +ENDCHAR +STARTCHAR ldot +ENCODING 320 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +50 +40 +E0 +00 +ENDCHAR +STARTCHAR Lslash +ENCODING 321 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +A0 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR lslash +ENCODING 322 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +60 +C0 +40 +E0 +00 +ENDCHAR +STARTCHAR Nacute +ENCODING 323 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +A0 +E0 +A0 +80 +00 +ENDCHAR +STARTCHAR nacute +ENCODING 324 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Ncommaaccent +ENCODING 325 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +A0 +E0 +A0 +80 +20 +ENDCHAR +STARTCHAR ncommaaccent +ENCODING 326 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +A0 +A0 +00 +40 +ENDCHAR +STARTCHAR Ncaron +ENCODING 327 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +A0 +E0 +A0 +80 +00 +ENDCHAR +STARTCHAR ncaron +ENCODING 328 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR napostrophe +ENCODING 329 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +00 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Eng +ENCODING 330 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +E0 +A0 +20 +40 +ENDCHAR +STARTCHAR eng +ENCODING 331 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +A0 +A0 +20 +40 +ENDCHAR +STARTCHAR Omacron +ENCODING 332 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR omacron +ENCODING 333 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +40 +A0 +40 +00 +ENDCHAR +STARTCHAR Obreve +ENCODING 334 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR obreve +ENCODING 335 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +40 +A0 +40 +00 +ENDCHAR +STARTCHAR Ohungarumlaut +ENCODING 336 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR ohungarumlaut +ENCODING 337 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +40 +A0 +40 +00 +ENDCHAR +STARTCHAR OE +ENCODING 338 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +B0 +A0 +70 +00 +ENDCHAR +STARTCHAR oe +ENCODING 339 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +70 +B0 +A0 +70 +00 +ENDCHAR +STARTCHAR Racute +ENCODING 340 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +C0 +A0 +C0 +A0 +00 +ENDCHAR +STARTCHAR racute +ENCODING 341 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +00 +A0 +C0 +80 +00 +ENDCHAR +STARTCHAR Rcommaaccent +ENCODING 342 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +C0 +A0 +00 +40 +ENDCHAR +STARTCHAR rcommaaccent +ENCODING 343 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +C0 +80 +80 +20 +ENDCHAR +STARTCHAR Rcaron +ENCODING 344 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +C0 +A0 +C0 +A0 +00 +ENDCHAR +STARTCHAR rcaron +ENCODING 345 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +00 +A0 +C0 +80 +00 +ENDCHAR +STARTCHAR Sacute +ENCODING 346 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +60 +C0 +20 +C0 +00 +ENDCHAR +STARTCHAR sacute +ENCODING 347 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +60 +C0 +20 +C0 +00 +ENDCHAR +STARTCHAR Scircumflex +ENCODING 348 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +C0 +20 +C0 +00 +ENDCHAR +STARTCHAR scircumflex +ENCODING 349 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +C0 +20 +C0 +00 +ENDCHAR +STARTCHAR Scedilla +ENCODING 350 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +40 +20 +C0 +40 +ENDCHAR +STARTCHAR scedilla +ENCODING 351 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +C0 +20 +E0 +40 +ENDCHAR +STARTCHAR Scaron +ENCODING 352 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +C0 +20 +E0 +00 +ENDCHAR +STARTCHAR scaron +ENCODING 353 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +C0 +20 +C0 +00 +ENDCHAR +STARTCHAR Tcommaaccent +ENCODING 354 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +40 +40 +20 +40 +ENDCHAR +STARTCHAR tcommaaccent +ENCODING 355 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +40 +20 +40 +ENDCHAR +STARTCHAR Tcaron +ENCODING 356 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR tcaron +ENCODING 357 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +E0 +40 +20 +00 +ENDCHAR +STARTCHAR Tbar +ENCODING 358 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR tbar +ENCODING 359 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +E0 +40 +20 +00 +ENDCHAR +STARTCHAR Utilde +ENCODING 360 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +D0 +20 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR utilde +ENCODING 361 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +00 +A0 +60 +00 +ENDCHAR +STARTCHAR Umacron +ENCODING 362 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR umacron +ENCODING 363 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR Ubreve +ENCODING 364 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR ubreve +ENCODING 365 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +00 +A0 +60 +00 +ENDCHAR +STARTCHAR Uring +ENCODING 366 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR uring +ENCODING 367 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR Uhungarumlaut +ENCODING 368 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR uhungarumlaut +ENCODING 369 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR Uogonek +ENCODING 370 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +A0 +40 +20 +ENDCHAR +STARTCHAR uogonek +ENCODING 371 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +A0 +60 +40 +ENDCHAR +STARTCHAR Wcircumflex +ENCODING 372 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR wcircumflex +ENCODING 373 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +A0 +E0 +E0 +00 +ENDCHAR +STARTCHAR Ycircumflex +ENCODING 374 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +00 +A0 +40 +40 +00 +ENDCHAR +STARTCHAR ycircumflex +ENCODING 375 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +A0 +40 +80 +00 +ENDCHAR +STARTCHAR Ydieresis +ENCODING 376 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +40 +40 +00 +ENDCHAR +STARTCHAR Zacute +ENCODING 377 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR zacute +ENCODING 378 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR Zdotaccent +ENCODING 379 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR zdotaccent +ENCODING 380 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR Zcaron +ENCODING 381 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR zcaron +ENCODING 382 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR longs +ENCODING 383 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +C0 +40 +40 +00 +ENDCHAR +STARTCHAR uni018F +ENCODING 399 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +60 +A0 +40 +00 +ENDCHAR +STARTCHAR florin +ENCODING 402 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +40 +40 +80 +ENDCHAR +STARTCHAR Scommaaccent +ENCODING 536 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +40 +20 +C0 +40 +ENDCHAR +STARTCHAR scommaaccent +ENCODING 537 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +C0 +20 +E0 +40 +ENDCHAR +STARTCHAR Tcommaaccent +ENCODING 538 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +40 +40 +00 +40 +ENDCHAR +STARTCHAR tcommaaccent +ENCODING 539 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +40 +20 +40 +ENDCHAR +STARTCHAR uni0259 +ENCODING 601 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +60 +A0 +40 +00 +ENDCHAR +STARTCHAR circumflex +ENCODING 710 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR caron +ENCODING 711 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR macron +ENCODING 713 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR breve +ENCODING 728 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +90 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotaccent +ENCODING 729 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ring +ENCODING 730 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +40 +00 +00 +00 +ENDCHAR +STARTCHAR ogonek +ENCODING 731 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +40 +80 +C0 +ENDCHAR +STARTCHAR tilde +ENCODING 732 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hungarumlaut +ENCODING 733 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0374 +ENCODING 884 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0375 +ENCODING 885 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +40 +80 +ENDCHAR +STARTCHAR uni037A +ENCODING 890 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +40 +60 +ENDCHAR +STARTCHAR uni037E +ENCODING 894 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +00 +00 +40 +80 +ENDCHAR +STARTCHAR tonos +ENCODING 900 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dieresistonos +ENCODING 901 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +B0 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Alphatonos +ENCODING 902 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR anoteleia +ENCODING 903 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +40 +00 +00 +00 +ENDCHAR +STARTCHAR Epsilontonos +ENCODING 904 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +C0 +60 +40 +60 +00 +ENDCHAR +STARTCHAR Etatonos +ENCODING 905 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +20 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Iotatonos +ENCODING 906 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +C0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR Omicrontonos +ENCODING 908 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR Upsilontonos +ENCODING 910 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +C0 +40 +40 +00 +ENDCHAR +STARTCHAR Omegatonos +ENCODING 911 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +A0 +40 +A0 +00 +ENDCHAR +STARTCHAR iotadieresistonos +ENCODING 912 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +B0 +40 +00 +40 +20 +00 +ENDCHAR +STARTCHAR Alpha +ENCODING 913 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Beta +ENCODING 914 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +C0 +A0 +C0 +00 +ENDCHAR +STARTCHAR Gamma +ENCODING 915 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +80 +80 +80 +00 +ENDCHAR +STARTCHAR Delta +ENCODING 916 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR Epsilon +ENCODING 917 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR Zeta +ENCODING 918 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +20 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR Eta +ENCODING 919 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Theta +ENCODING 920 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +E0 +A0 +40 +00 +ENDCHAR +STARTCHAR Iota +ENCODING 921 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR Kappa +ENCODING 922 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Lambda +ENCODING 923 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Mu +ENCODING 924 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Nu +ENCODING 925 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +A0 +E0 +A0 +80 +00 +ENDCHAR +STARTCHAR Xi +ENCODING 926 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +40 +00 +E0 +00 +ENDCHAR +STARTCHAR Omicron +ENCODING 927 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR Pi +ENCODING 928 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +A0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR Rho +ENCODING 929 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +C0 +80 +80 +00 +ENDCHAR +STARTCHAR Sigma +ENCODING 931 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR Tau +ENCODING 932 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +40 +40 +40 +00 +ENDCHAR +STARTCHAR Upsilon +ENCODING 933 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +40 +40 +40 +00 +ENDCHAR +STARTCHAR Phi +ENCODING 934 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +A0 +E0 +40 +00 +ENDCHAR +STARTCHAR Chi +ENCODING 935 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +40 +A0 +A0 +00 +ENDCHAR +STARTCHAR Psi +ENCODING 936 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR Omega +ENCODING 937 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +A0 +40 +A0 +00 +ENDCHAR +STARTCHAR Iotadieresis +ENCODING 938 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +E0 +40 +E0 +00 +ENDCHAR +STARTCHAR Upsilondieresis +ENCODING 939 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +40 +40 +00 +ENDCHAR +STARTCHAR alphatonos +ENCODING 940 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +80 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR epsilontonos +ENCODING 941 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +C0 +40 +80 +60 +00 +ENDCHAR +STARTCHAR etatonos +ENCODING 942 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +C0 +A0 +20 +40 +ENDCHAR +STARTCHAR iotatonos +ENCODING 943 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR upsilondieresistonos +ENCODING 944 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +B0 +40 +A0 +A0 +C0 +00 +ENDCHAR +STARTCHAR alpha +ENCODING 945 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +50 +A0 +A0 +50 +00 +ENDCHAR +STARTCHAR beta +ENCODING 946 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +C0 +A0 +C0 +00 +ENDCHAR +STARTCHAR gamma +ENCODING 947 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +60 +40 +40 +00 +ENDCHAR +STARTCHAR delta +ENCODING 948 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +40 +A0 +40 +00 +ENDCHAR +STARTCHAR epsilon +ENCODING 949 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +C0 +80 +60 +00 +ENDCHAR +STARTCHAR zeta +ENCODING 950 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +80 +E0 +20 +40 +ENDCHAR +STARTCHAR eta +ENCODING 951 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +A0 +A0 +20 +40 +ENDCHAR +STARTCHAR theta +ENCODING 952 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +E0 +A0 +40 +00 +ENDCHAR +STARTCHAR iota +ENCODING 953 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +40 +40 +20 +00 +ENDCHAR +STARTCHAR kappa +ENCODING 954 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +C0 +A0 +00 +ENDCHAR +STARTCHAR lambda +ENCODING 955 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +20 +60 +A0 +A0 +00 +ENDCHAR +STARTCHAR mu +ENCODING 956 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +A0 +C0 +80 +ENDCHAR +STARTCHAR nu +ENCODING 957 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +60 +40 +00 +ENDCHAR +STARTCHAR xi +ENCODING 958 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +A0 +40 +80 +60 +00 +ENDCHAR +STARTCHAR omicron +ENCODING 959 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR pi +ENCODING 960 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR rho +ENCODING 961 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +A0 +C0 +80 +ENDCHAR +STARTCHAR sigma1 +ENCODING 962 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +80 +40 +C0 +00 +ENDCHAR +STARTCHAR sigma +ENCODING 963 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +C0 +A0 +40 +00 +ENDCHAR +STARTCHAR tau +ENCODING 964 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +40 +40 +20 +00 +ENDCHAR +STARTCHAR upsilon +ENCODING 965 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +80 +A0 +A0 +C0 +00 +ENDCHAR +STARTCHAR phi +ENCODING 966 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +E0 +A0 +40 +40 +ENDCHAR +STARTCHAR chi +ENCODING 967 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +40 +60 +A0 +00 +ENDCHAR +STARTCHAR psi +ENCODING 968 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +E0 +E0 +40 +00 +ENDCHAR +STARTCHAR omega +ENCODING 969 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +E0 +E0 +00 +ENDCHAR +STARTCHAR iotadieresis +ENCODING 970 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR upsilondieresis +ENCODING 971 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +A0 +C0 +00 +ENDCHAR +STARTCHAR omicrontonos +ENCODING 972 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +40 +A0 +40 +00 +ENDCHAR +STARTCHAR upsilontonos +ENCODING 973 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +00 +A0 +A0 +C0 +00 +ENDCHAR +STARTCHAR omegatonos +ENCODING 974 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +00 +A0 +E0 +E0 +00 +ENDCHAR +STARTCHAR afii10023 +ENCODING 1025 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR afii10051 +ENCODING 1026 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10052 +ENCODING 1027 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +E0 +80 +80 +80 +00 +ENDCHAR +STARTCHAR afii10053 +ENCODING 1028 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +C0 +80 +60 +00 +ENDCHAR +STARTCHAR afii10054 +ENCODING 1029 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +40 +20 +C0 +00 +ENDCHAR +STARTCHAR afii10055 +ENCODING 1030 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR afii10056 +ENCODING 1031 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR afii10057 +ENCODING 1032 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +20 +20 +A0 +40 +00 +ENDCHAR +STARTCHAR afii10058 +ENCODING 1033 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +60 +A0 +B0 +B0 +00 +ENDCHAR +STARTCHAR afii10059 +ENCODING 1034 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +E0 +B0 +B0 +00 +ENDCHAR +STARTCHAR afii10060 +ENCODING 1035 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +80 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10061 +ENCODING 1036 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +80 +A0 +C0 +A0 +00 +ENDCHAR +STARTCHAR afii10062 +ENCODING 1038 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +00 +A0 +40 +80 +ENDCHAR +STARTCHAR afii10145 +ENCODING 1039 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +A0 +A0 +E0 +40 +ENDCHAR +STARTCHAR afii10017 +ENCODING 1040 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10018 +ENCODING 1041 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +C0 +A0 +C0 +00 +ENDCHAR +STARTCHAR afii10019 +ENCODING 1042 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +C0 +A0 +C0 +00 +ENDCHAR +STARTCHAR afii10020 +ENCODING 1043 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +80 +80 +80 +00 +ENDCHAR +STARTCHAR afii10021 +ENCODING 1044 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +60 +A0 +A0 +E0 +A0 +ENDCHAR +STARTCHAR afii10022 +ENCODING 1045 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +C0 +80 +E0 +00 +ENDCHAR +STARTCHAR afii10024 +ENCODING 1046 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +40 +E0 +A0 +00 +ENDCHAR +STARTCHAR afii10025 +ENCODING 1047 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +20 +40 +20 +C0 +00 +ENDCHAR +STARTCHAR afii10026 +ENCODING 1048 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +A0 +E0 +A0 +20 +00 +ENDCHAR +STARTCHAR afii10027 +ENCODING 1049 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +A0 +E0 +A0 +20 +ENDCHAR +STARTCHAR afii10028 +ENCODING 1050 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +C0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10029 +ENCODING 1051 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +A0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10030 +ENCODING 1052 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10031 +ENCODING 1053 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10032 +ENCODING 1054 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR afii10033 +ENCODING 1055 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +A0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10034 +ENCODING 1056 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +A0 +C0 +80 +80 +00 +ENDCHAR +STARTCHAR afii10035 +ENCODING 1057 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +80 +A0 +40 +00 +ENDCHAR +STARTCHAR afii10036 +ENCODING 1058 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +40 +40 +40 +00 +ENDCHAR +STARTCHAR afii10037 +ENCODING 1059 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +A0 +40 +40 +80 +ENDCHAR +STARTCHAR afii10038 +ENCODING 1060 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +A0 +E0 +40 +00 +ENDCHAR +STARTCHAR afii10039 +ENCODING 1061 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +40 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10040 +ENCODING 1062 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR afii10041 +ENCODING 1063 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +60 +20 +20 +00 +ENDCHAR +STARTCHAR afii10042 +ENCODING 1064 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +E0 +E0 +E0 +00 +ENDCHAR +STARTCHAR afii10043 +ENCODING 1065 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +E0 +E0 +F0 +10 +ENDCHAR +STARTCHAR afii10044 +ENCODING 1066 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +60 +50 +60 +00 +ENDCHAR +STARTCHAR afii10045 +ENCODING 1067 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +90 +90 +D0 +B0 +D0 +00 +ENDCHAR +STARTCHAR afii10046 +ENCODING 1068 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +C0 +A0 +C0 +00 +ENDCHAR +STARTCHAR afii10047 +ENCODING 1069 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +20 +60 +20 +C0 +00 +ENDCHAR +STARTCHAR afii10048 +ENCODING 1070 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +D0 +D0 +D0 +A0 +00 +ENDCHAR +STARTCHAR afii10049 +ENCODING 1071 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +A0 +60 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10065 +ENCODING 1072 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +A0 +A0 +60 +00 +ENDCHAR +STARTCHAR afii10066 +ENCODING 1073 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +E0 +A0 +40 +00 +ENDCHAR +STARTCHAR afii10067 +ENCODING 1074 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +C0 +A0 +C0 +00 +ENDCHAR +STARTCHAR afii10068 +ENCODING 1075 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +80 +80 +80 +00 +ENDCHAR +STARTCHAR afii10069 +ENCODING 1076 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +A0 +A0 +E0 +A0 +ENDCHAR +STARTCHAR afii10070 +ENCODING 1077 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR afii10072 +ENCODING 1078 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +B0 +60 +60 +B0 +00 +ENDCHAR +STARTCHAR afii10073 +ENCODING 1079 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +40 +20 +C0 +00 +ENDCHAR +STARTCHAR afii10074 +ENCODING 1080 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +E0 +E0 +A0 +00 +ENDCHAR +STARTCHAR afii10075 +ENCODING 1081 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR afii10076 +ENCODING 1082 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +C0 +A0 +00 +ENDCHAR +STARTCHAR afii10077 +ENCODING 1083 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10078 +ENCODING 1084 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10079 +ENCODING 1085 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10080 +ENCODING 1086 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR afii10081 +ENCODING 1087 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii10082 +ENCODING 1088 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +A0 +C0 +80 +80 +ENDCHAR +STARTCHAR afii10083 +ENCODING 1089 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +80 +80 +60 +00 +ENDCHAR +STARTCHAR afii10084 +ENCODING 1090 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +40 +40 +40 +00 +ENDCHAR +STARTCHAR afii10085 +ENCODING 1091 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +60 +20 +C0 +ENDCHAR +STARTCHAR afii10086 +ENCODING 1092 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +A0 +A0 +40 +40 +ENDCHAR +STARTCHAR afii10087 +ENCODING 1093 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +40 +40 +A0 +00 +ENDCHAR +STARTCHAR afii10088 +ENCODING 1094 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +A0 +E0 +20 +ENDCHAR +STARTCHAR afii10089 +ENCODING 1095 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +60 +20 +00 +ENDCHAR +STARTCHAR afii10090 +ENCODING 1096 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +E0 +E0 +E0 +00 +ENDCHAR +STARTCHAR afii10091 +ENCODING 1097 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +E0 +E0 +F0 +10 +ENDCHAR +STARTCHAR afii10092 +ENCODING 1098 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +60 +50 +60 +00 +ENDCHAR +STARTCHAR afii10093 +ENCODING 1099 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +90 +D0 +B0 +D0 +00 +ENDCHAR +STARTCHAR afii10094 +ENCODING 1100 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +80 +C0 +A0 +C0 +00 +ENDCHAR +STARTCHAR afii10095 +ENCODING 1101 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +60 +20 +C0 +00 +ENDCHAR +STARTCHAR afii10096 +ENCODING 1102 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +D0 +D0 +A0 +00 +ENDCHAR +STARTCHAR afii10097 +ENCODING 1103 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +A0 +60 +A0 +00 +ENDCHAR +STARTCHAR afii10071 +ENCODING 1105 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +C0 +60 +00 +ENDCHAR +STARTCHAR afii10099 +ENCODING 1106 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +C0 +80 +C0 +A0 +20 +ENDCHAR +STARTCHAR afii10100 +ENCODING 1107 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +80 +80 +00 +ENDCHAR +STARTCHAR afii10101 +ENCODING 1108 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +C0 +80 +60 +00 +ENDCHAR +STARTCHAR afii10102 +ENCODING 1109 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +C0 +20 +C0 +00 +ENDCHAR +STARTCHAR afii10103 +ENCODING 1110 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +C0 +40 +E0 +00 +ENDCHAR +STARTCHAR afii10104 +ENCODING 1111 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +C0 +40 +E0 +00 +ENDCHAR +STARTCHAR afii10105 +ENCODING 1112 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +00 +20 +20 +20 +C0 +ENDCHAR +STARTCHAR afii10106 +ENCODING 1113 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +A0 +B0 +B0 +00 +ENDCHAR +STARTCHAR afii10107 +ENCODING 1114 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +E0 +B0 +B0 +00 +ENDCHAR +STARTCHAR afii10108 +ENCODING 1115 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +C0 +80 +C0 +A0 +00 +ENDCHAR +STARTCHAR afii10109 +ENCODING 1116 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +80 +A0 +C0 +A0 +00 +ENDCHAR +STARTCHAR afii10110 +ENCODING 1118 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +00 +A0 +40 +80 +ENDCHAR +STARTCHAR afii10193 +ENCODING 1119 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +A0 +E0 +40 +ENDCHAR +STARTCHAR afii10050 +ENCODING 1168 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +E0 +80 +80 +80 +00 +ENDCHAR +STARTCHAR afii10098 +ENCODING 1169 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +20 +E0 +80 +80 +00 +ENDCHAR +STARTCHAR uni0492 +ENCODING 1170 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR uni0493 +ENCODING 1171 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +40 +E0 +40 +00 +ENDCHAR +STARTCHAR afii57664 +ENCODING 1488 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +60 +C0 +A0 +00 +ENDCHAR +STARTCHAR afii57665 +ENCODING 1489 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +20 +20 +F0 +00 +ENDCHAR +STARTCHAR afii57666 +ENCODING 1490 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +40 +40 +A0 +00 +ENDCHAR +STARTCHAR afii57667 +ENCODING 1491 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +20 +20 +20 +00 +ENDCHAR +STARTCHAR afii57668 +ENCODING 1492 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +E0 +20 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii57669 +ENCODING 1493 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR afii57670 +ENCODING 1494 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +60 +40 +40 +40 +00 +ENDCHAR +STARTCHAR afii57671 +ENCODING 1495 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii57672 +ENCODING 1496 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +A0 +A0 +C0 +00 +ENDCHAR +STARTCHAR afii57673 +ENCODING 1497 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +20 +20 +00 +00 +00 +ENDCHAR +STARTCHAR afii57674 +ENCODING 1498 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +20 +20 +20 +20 +ENDCHAR +STARTCHAR afii57675 +ENCODING 1499 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +20 +20 +C0 +00 +ENDCHAR +STARTCHAR afii57676 +ENCODING 1500 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +E0 +20 +20 +40 +00 +ENDCHAR +STARTCHAR afii57677 +ENCODING 1501 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +60 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR afii57678 +ENCODING 1502 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +60 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR afii57679 +ENCODING 1503 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +60 +20 +20 +20 +00 +ENDCHAR +STARTCHAR afii57680 +ENCODING 1504 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +20 +20 +20 +60 +00 +ENDCHAR +STARTCHAR afii57681 +ENCODING 1505 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +60 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR afii57682 +ENCODING 1506 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +A0 +60 +C0 +00 +ENDCHAR +STARTCHAR afii57683 +ENCODING 1507 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +A0 +20 +20 +20 +ENDCHAR +STARTCHAR afii57684 +ENCODING 1508 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +A0 +20 +E0 +00 +ENDCHAR +STARTCHAR afii57685 +ENCODING 1509 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +C0 +80 +80 +ENDCHAR +STARTCHAR afii57686 +ENCODING 1510 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +40 +20 +E0 +00 +ENDCHAR +STARTCHAR afii57687 +ENCODING 1511 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +20 +C0 +80 +80 +ENDCHAR +STARTCHAR afii57688 +ENCODING 1512 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +20 +20 +20 +00 +ENDCHAR +STARTCHAR afii57689 +ENCODING 1513 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +F0 +D0 +A0 +E0 +00 +ENDCHAR +STARTCHAR afii57690 +ENCODING 1514 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +60 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR uni1E02 +ENCODING 7682 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +C0 +A0 +C0 +00 +ENDCHAR +STARTCHAR uni1E03 +ENCODING 7683 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +80 +C0 +A0 +C0 +00 +ENDCHAR +STARTCHAR uni1E0A +ENCODING 7690 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +C0 +A0 +A0 +C0 +00 +ENDCHAR +STARTCHAR uni1E0B +ENCODING 7691 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +20 +60 +A0 +60 +00 +ENDCHAR +STARTCHAR uni1E1E +ENCODING 7710 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +80 +C0 +80 +00 +ENDCHAR +STARTCHAR uni1E1F +ENCODING 7711 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +20 +40 +E0 +40 +00 +ENDCHAR +STARTCHAR uni1E40 +ENCODING 7744 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR uni1E41 +ENCODING 7745 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR uni1E56 +ENCODING 7766 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +C0 +A0 +C0 +80 +00 +ENDCHAR +STARTCHAR uni1E57 +ENCODING 7767 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +C0 +A0 +C0 +80 +ENDCHAR +STARTCHAR uni1E60 +ENCODING 7776 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +C0 +20 +C0 +00 +ENDCHAR +STARTCHAR uni1E61 +ENCODING 7777 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +60 +C0 +20 +C0 +00 +ENDCHAR +STARTCHAR uni1E6A +ENCODING 7786 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +40 +40 +00 +ENDCHAR +STARTCHAR uni1E6B +ENCODING 7787 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +40 +E0 +40 +20 +ENDCHAR +STARTCHAR Wgrave +ENCODING 7808 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +20 +A0 +E0 +E0 +00 +ENDCHAR +STARTCHAR wgrave +ENCODING 7809 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR Wacute +ENCODING 7810 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +80 +A0 +E0 +E0 +00 +ENDCHAR +STARTCHAR wacute +ENCODING 7811 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR Wdieresis +ENCODING 7812 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +E0 +E0 +00 +ENDCHAR +STARTCHAR wdieresis +ENCODING 7813 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +A0 +E0 +E0 +00 +ENDCHAR +STARTCHAR Ygrave +ENCODING 7922 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +20 +A0 +40 +40 +00 +ENDCHAR +STARTCHAR ygrave +ENCODING 7923 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +A0 +60 +20 +40 +ENDCHAR +STARTCHAR uni2010 +ENCODING 8208 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uni2011 +ENCODING 8209 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +60 +00 +00 +00 +ENDCHAR +STARTCHAR figuredash +ENCODING 8210 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +00 +00 +00 +ENDCHAR +STARTCHAR endash +ENCODING 8211 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +00 +00 +00 +ENDCHAR +STARTCHAR emdash +ENCODING 8212 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR afii00208 +ENCODING 8213 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR uni2016 +ENCODING 8214 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +A0 +A0 +A0 +A0 +ENDCHAR +STARTCHAR underscoredbl +ENCODING 8215 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +F0 +00 +F0 +ENDCHAR +STARTCHAR quoteleft +ENCODING 8216 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +60 +00 +00 +00 +ENDCHAR +STARTCHAR quoteright +ENCODING 8217 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +20 +40 +00 +00 +00 +ENDCHAR +STARTCHAR quotesinglbase +ENCODING 8218 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +60 +20 +40 +ENDCHAR +STARTCHAR quotereversed +ENCODING 8219 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +40 +20 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblleft +ENCODING 8220 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +A0 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblright +ENCODING 8221 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +50 +A0 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblbase +ENCODING 8222 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +50 +50 +A0 +ENDCHAR +STARTCHAR uni201F +ENCODING 8223 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +50 +00 +00 +00 +ENDCHAR +STARTCHAR dagger +ENCODING 8224 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +40 +40 +00 +ENDCHAR +STARTCHAR daggerdbl +ENCODING 8225 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +E0 +40 +00 +ENDCHAR +STARTCHAR bullet +ENCODING 8226 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +E0 +40 +00 +00 +ENDCHAR +STARTCHAR uni2023 +ENCODING 8227 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +E0 +C0 +00 +00 +ENDCHAR +STARTCHAR onedotenleader +ENCODING 8228 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +40 +00 +ENDCHAR +STARTCHAR twodotenleader +ENCODING 8229 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +A0 +00 +ENDCHAR +STARTCHAR ellipsis +ENCODING 8230 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +B0 +00 +ENDCHAR +STARTCHAR uni2027 +ENCODING 8231 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +40 +00 +00 +00 +ENDCHAR +STARTCHAR perthousand +ENCODING 8240 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +20 +40 +80 +30 +00 +ENDCHAR +STARTCHAR guilsinglleft +ENCODING 8249 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +80 +40 +00 +00 +ENDCHAR +STARTCHAR guilsinglright +ENCODING 8250 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +20 +40 +00 +00 +ENDCHAR +STARTCHAR uni203E +ENCODING 8254 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR nsuperior +ENCODING 8319 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +A0 +A0 +00 +00 +ENDCHAR +STARTCHAR peseta +ENCODING 8359 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +F0 +60 +40 +40 +00 +ENDCHAR +STARTCHAR Euro +ENCODING 8364 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +40 +20 +00 +ENDCHAR +STARTCHAR afii61352 +ENCODING 8470 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +B0 +B0 +A0 +B0 +00 +ENDCHAR +STARTCHAR trademark +ENCODING 8482 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +40 +00 +E0 +A0 +00 +ENDCHAR +STARTCHAR Omega +ENCODING 8486 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +A0 +40 +A0 +00 +ENDCHAR +STARTCHAR uni2127 +ENCODING 8487 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR oneeighth +ENCODING 8539 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +B0 +20 +50 +20 +ENDCHAR +STARTCHAR threeeighths +ENCODING 8540 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +B0 +60 +D0 +20 +ENDCHAR +STARTCHAR fiveeighths +ENCODING 8541 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +80 +70 +A0 +50 +20 +ENDCHAR +STARTCHAR seveneighths +ENCODING 8542 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +40 +B0 +A0 +50 +20 +ENDCHAR +STARTCHAR arrowleft +ENCODING 8592 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +F0 +40 +00 +00 +ENDCHAR +STARTCHAR arrowup +ENCODING 8593 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR arrowright +ENCODING 8594 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +20 +F0 +20 +00 +00 +ENDCHAR +STARTCHAR arrowdown +ENCODING 8595 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +40 +E0 +40 +00 +ENDCHAR +STARTCHAR arrowboth +ENCODING 8596 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +50 +F0 +50 +00 +00 +ENDCHAR +STARTCHAR arrowupdn +ENCODING 8597 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +40 +E0 +40 +00 +ENDCHAR +STARTCHAR universal +ENCODING 8704 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +E0 +A0 +40 +00 +ENDCHAR +STARTCHAR uni2201 +ENCODING 8705 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +80 +A0 +40 +00 +ENDCHAR +STARTCHAR partialdiff +ENCODING 8706 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +20 +60 +A0 +40 +00 +ENDCHAR +STARTCHAR existential +ENCODING 8707 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +20 +E0 +20 +E0 +00 +ENDCHAR +STARTCHAR uni2204 +ENCODING 8708 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +F0 +20 +E0 +60 +E0 +80 +ENDCHAR +STARTCHAR emptyset +ENCODING 8709 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +60 +A0 +A0 +C0 +80 +ENDCHAR +STARTCHAR Delta +ENCODING 8710 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR gradient +ENCODING 8711 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +A0 +A0 +40 +40 +00 +ENDCHAR +STARTCHAR element +ENCODING 8712 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +E0 +80 +60 +00 +ENDCHAR +STARTCHAR notelement +ENCODING 8713 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +70 +A0 +E0 +A0 +60 +40 +ENDCHAR +STARTCHAR uni220A +ENCODING 8714 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +80 +C0 +80 +40 +00 +ENDCHAR +STARTCHAR suchthat +ENCODING 8715 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +20 +E0 +20 +C0 +00 +ENDCHAR +STARTCHAR uni220C +ENCODING 8716 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +D0 +20 +E0 +60 +C0 +80 +ENDCHAR +STARTCHAR uni220D +ENCODING 8717 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +C0 +40 +80 +00 +ENDCHAR +STARTCHAR uni220E +ENCODING 8718 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +C0 +C0 +C0 +C0 +00 +ENDCHAR +STARTCHAR product +ENCODING 8719 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +A0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR uni2210 +ENCODING 8720 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +A0 +A0 +E0 +00 +ENDCHAR +STARTCHAR summation +ENCODING 8721 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR minus +ENCODING 8722 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +00 +00 +00 +ENDCHAR +STARTCHAR uni2213 +ENCODING 8723 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +40 +E0 +40 +00 +ENDCHAR +STARTCHAR uni2214 +ENCODING 8724 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +40 +E0 +40 +00 +ENDCHAR +STARTCHAR fraction +ENCODING 8725 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +20 +40 +80 +80 +00 +ENDCHAR +STARTCHAR uni2216 +ENCODING 8726 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +40 +20 +20 +00 +ENDCHAR +STARTCHAR asteriskmath +ENCODING 8727 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +A0 +70 +E0 +50 +40 +ENDCHAR +STARTCHAR uni2218 +ENCODING 8728 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +40 +00 +00 +ENDCHAR +STARTCHAR periodcentered +ENCODING 8729 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +E0 +40 +00 +00 +ENDCHAR +STARTCHAR radical +ENCODING 8730 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +30 +20 +20 +A0 +60 +00 +ENDCHAR +STARTCHAR uni221B +ENCODING 8731 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +D0 +50 +D0 +10 +50 +30 +ENDCHAR +STARTCHAR uni221C +ENCODING 8732 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +D0 +D0 +50 +10 +50 +30 +ENDCHAR +STARTCHAR proportional +ENCODING 8733 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +50 +E0 +50 +00 +ENDCHAR +STARTCHAR infinity +ENCODING 8734 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +20 +D0 +B0 +40 +00 +ENDCHAR +STARTCHAR orthogonal +ENCODING 8735 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +80 +80 +E0 +00 +ENDCHAR +STARTCHAR angle +ENCODING 8736 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +20 +40 +80 +E0 +00 +ENDCHAR +STARTCHAR uni2221 +ENCODING 8737 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +10 +A0 +40 +A0 +F0 +20 +ENDCHAR +STARTCHAR uni2222 +ENCODING 8738 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +90 +60 +A0 +A0 +60 +90 +ENDCHAR +STARTCHAR uni2223 +ENCODING 8739 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +40 +40 +00 +ENDCHAR +STARTCHAR uni2224 +ENCODING 8740 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +60 +40 +C0 +40 +00 +ENDCHAR +STARTCHAR uni2225 +ENCODING 8741 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR uni2226 +ENCODING 8742 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +B0 +E0 +A0 +A0 +00 +ENDCHAR +STARTCHAR logicaland +ENCODING 8743 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +40 +A0 +A0 +00 +ENDCHAR +STARTCHAR logicalor +ENCODING 8744 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +40 +40 +00 +ENDCHAR +STARTCHAR intersection +ENCODING 8745 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR union +ENCODING 8746 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +A0 +A0 +40 +00 +ENDCHAR +STARTCHAR integral +ENCODING 8747 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +40 +40 +40 +80 +ENDCHAR +STARTCHAR uni222C +ENCODING 8748 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +A0 +A0 +A0 +80 +ENDCHAR +STARTCHAR uni222D +ENCODING 8749 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +D0 +D0 +D0 +D0 +A0 +ENDCHAR +STARTCHAR uni222E +ENCODING 8750 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +E0 +40 +80 +ENDCHAR +STARTCHAR uni222F +ENCODING 8751 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +E0 +E0 +A0 +80 +ENDCHAR +STARTCHAR uni2230 +ENCODING 8752 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +D0 +F0 +F0 +D0 +A0 +ENDCHAR +STARTCHAR uni2231 +ENCODING 8753 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +50 +40 +80 +ENDCHAR +STARTCHAR uni2232 +ENCODING 8754 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +C0 +40 +80 +ENDCHAR +STARTCHAR uni2233 +ENCODING 8755 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +C0 +E0 +40 +80 +ENDCHAR +STARTCHAR therefore +ENCODING 8756 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +40 +00 +A0 +00 +ENDCHAR +STARTCHAR uni2235 +ENCODING 8757 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +A0 +00 +40 +00 +ENDCHAR +STARTCHAR uni2236 +ENCODING 8758 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +40 +00 +40 +00 +ENDCHAR +STARTCHAR uni2237 +ENCODING 8759 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +A0 +00 +A0 +00 +ENDCHAR +STARTCHAR uni2238 +ENCODING 8760 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +00 +E0 +00 +00 +ENDCHAR +STARTCHAR uni2239 +ENCODING 8761 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +20 +C0 +20 +00 +ENDCHAR +STARTCHAR uni223A +ENCODING 8762 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +00 +E0 +00 +A0 +00 +ENDCHAR +STARTCHAR uni223B +ENCODING 8763 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +00 +50 +A0 +00 +40 +ENDCHAR +STARTCHAR similar +ENCODING 8764 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +50 +A0 +00 +00 +ENDCHAR +STARTCHAR uni223D +ENCODING 8765 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +A0 +50 +00 +00 +ENDCHAR +STARTCHAR uni223E +ENCODING 8766 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +D0 +B0 +00 +00 +ENDCHAR +STARTCHAR uni223F +ENCODING 8767 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +50 +A0 +20 +00 +ENDCHAR +STARTCHAR uni2240 +ENCODING 8768 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +20 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni2241 +ENCODING 8769 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +10 +20 +B0 +D0 +40 +80 +ENDCHAR +STARTCHAR uni2242 +ENCODING 8770 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +00 +A0 +50 +00 +ENDCHAR +STARTCHAR uni2243 +ENCODING 8771 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +50 +A0 +00 +E0 +00 +ENDCHAR +STARTCHAR uni2244 +ENCODING 8772 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +D0 +B0 +40 +F0 +40 +ENDCHAR +STARTCHAR congruent +ENCODING 8773 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +00 +E0 +00 +E0 +ENDCHAR +STARTCHAR uni2246 +ENCODING 8774 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +20 +F0 +40 +F0 +ENDCHAR +STARTCHAR uni2247 +ENCODING 8775 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +70 +A0 +20 +F0 +40 +F0 +ENDCHAR +STARTCHAR approxequal +ENCODING 8776 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +50 +A0 +00 +50 +A0 +00 +ENDCHAR +STARTCHAR uni2249 +ENCODING 8777 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +70 +A0 +40 +50 +E0 +80 +ENDCHAR +STARTCHAR uni224A +ENCODING 8778 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +B0 +40 +B0 +00 +F0 +ENDCHAR +STARTCHAR uni224B +ENCODING 8779 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +B0 +40 +B0 +40 +B0 +ENDCHAR +STARTCHAR uni224C +ENCODING 8780 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +50 +00 +E0 +00 +E0 +ENDCHAR +STARTCHAR uni224D +ENCODING 8781 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +00 +40 +A0 +00 +ENDCHAR +STARTCHAR uni224E +ENCODING 8782 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +00 +A0 +40 +00 +ENDCHAR +STARTCHAR uni224F +ENCODING 8783 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +A0 +00 +E0 +00 +00 +ENDCHAR +STARTCHAR uni2250 +ENCODING 8784 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +E0 +00 +E0 +00 +ENDCHAR +STARTCHAR uni2251 +ENCODING 8785 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +00 +E0 +00 +40 +ENDCHAR +STARTCHAR uni2252 +ENCODING 8786 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +E0 +00 +E0 +00 +20 +ENDCHAR +STARTCHAR uni2253 +ENCODING 8787 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +E0 +00 +E0 +00 +80 +ENDCHAR +STARTCHAR uni2254 +ENCODING 8788 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +B0 +00 +B0 +00 +00 +ENDCHAR +STARTCHAR uni2255 +ENCODING 8789 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +D0 +00 +D0 +00 +00 +ENDCHAR +STARTCHAR uni2256 +ENCODING 8790 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +E0 +40 +E0 +00 +00 +ENDCHAR +STARTCHAR uni2257 +ENCODING 8791 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +00 +E0 +00 +00 +ENDCHAR +STARTCHAR uni2258 +ENCODING 8792 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +00 +E0 +00 +00 +ENDCHAR +STARTCHAR uni2259 +ENCODING 8793 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +00 +E0 +00 +00 +ENDCHAR +STARTCHAR uni225A +ENCODING 8794 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +00 +E0 +00 +00 +ENDCHAR +STARTCHAR uni225B +ENCODING 8795 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +00 +E0 +00 +00 +ENDCHAR +STARTCHAR uni225C +ENCODING 8796 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +00 +E0 +00 +00 +ENDCHAR +STARTCHAR uni225D +ENCODING 8797 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +E0 +00 +E0 +00 +ENDCHAR +STARTCHAR uni225E +ENCODING 8798 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +E0 +00 +E0 +00 +ENDCHAR +STARTCHAR uni225F +ENCODING 8799 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +E0 +00 +E0 +00 +ENDCHAR +STARTCHAR notequal +ENCODING 8800 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +E0 +40 +E0 +80 +00 +ENDCHAR +STARTCHAR equivalence +ENCODING 8801 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +E0 +00 +E0 +00 +ENDCHAR +STARTCHAR uni2262 +ENCODING 8802 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +20 +E0 +40 +E0 +80 +ENDCHAR +STARTCHAR uni2263 +ENCODING 8803 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +00 +E0 +00 +E0 +00 +ENDCHAR +STARTCHAR lessequal +ENCODING 8804 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +00 +E0 +00 +ENDCHAR +STARTCHAR greaterequal +ENCODING 8805 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +E0 +00 +E0 +00 +ENDCHAR +STARTCHAR uni2266 +ENCODING 8806 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +00 +E0 +00 +ENDCHAR +STARTCHAR uni2267 +ENCODING 8807 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +E0 +00 +E0 +00 +ENDCHAR +STARTCHAR uni2268 +ENCODING 8808 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +20 +40 +E0 +00 +00 +ENDCHAR +STARTCHAR uni2269 +ENCODING 8809 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +80 +40 +E0 +00 +00 +ENDCHAR +STARTCHAR uni226A +ENCODING 8810 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +50 +A0 +50 +00 +00 +ENDCHAR +STARTCHAR uni226B +ENCODING 8811 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +50 +A0 +00 +00 +ENDCHAR +STARTCHAR uni226C +ENCODING 8812 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +40 +A0 +40 +A0 +00 +ENDCHAR +STARTCHAR uni226D +ENCODING 8813 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +E0 +40 +E0 +80 +00 +ENDCHAR +STARTCHAR uni226E +ENCODING 8814 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +60 +C0 +60 +80 +00 +ENDCHAR +STARTCHAR uni226F +ENCODING 8815 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +C0 +60 +C0 +80 +00 +ENDCHAR +STARTCHAR uni2270 +ENCODING 8816 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +40 +E0 +80 +ENDCHAR +STARTCHAR uni2271 +ENCODING 8817 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +60 +E0 +40 +E0 +80 +ENDCHAR +STARTCHAR uni2272 +ENCODING 8818 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +E0 +00 +50 +A0 +ENDCHAR +STARTCHAR uni2273 +ENCODING 8819 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +E0 +00 +A0 +50 +ENDCHAR +STARTCHAR uni2276 +ENCODING 8822 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +C0 +20 +80 +60 +C0 +ENDCHAR +STARTCHAR uni2277 +ENCODING 8823 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +60 +80 +20 +C0 +60 +ENDCHAR +STARTCHAR uni2278 +ENCODING 8824 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +C0 +60 +C0 +60 +C0 +ENDCHAR +STARTCHAR uni2279 +ENCODING 8825 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +60 +C0 +60 +C0 +60 +ENDCHAR +STARTCHAR uni227A +ENCODING 8826 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +20 +C0 +20 +00 +00 +ENDCHAR +STARTCHAR uni227B +ENCODING 8827 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +80 +60 +80 +00 +00 +ENDCHAR +STARTCHAR uni227C +ENCODING 8828 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +C0 +20 +00 +E0 +00 +ENDCHAR +STARTCHAR uni227D +ENCODING 8829 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +60 +80 +00 +E0 +00 +ENDCHAR +STARTCHAR uni227E +ENCODING 8830 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +C0 +20 +00 +A0 +50 +ENDCHAR +STARTCHAR uni227F +ENCODING 8831 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +C0 +20 +00 +A0 +50 +ENDCHAR +STARTCHAR uni2280 +ENCODING 8832 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +60 +C0 +60 +40 +00 +ENDCHAR +STARTCHAR uni2281 +ENCODING 8833 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +C0 +60 +C0 +40 +00 +ENDCHAR +STARTCHAR propersubset +ENCODING 8834 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +80 +60 +00 +00 +ENDCHAR +STARTCHAR propersuperset +ENCODING 8835 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +C0 +20 +C0 +00 +00 +ENDCHAR +STARTCHAR notsubset +ENCODING 8836 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +60 +C0 +60 +40 +00 +ENDCHAR +STARTCHAR uni2285 +ENCODING 8837 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +C0 +60 +C0 +40 +00 +ENDCHAR +STARTCHAR reflexsubset +ENCODING 8838 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +60 +00 +E0 +00 +ENDCHAR +STARTCHAR reflexsuperset +ENCODING 8839 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +20 +C0 +00 +E0 +00 +ENDCHAR +STARTCHAR uni2288 +ENCODING 8840 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +A0 +60 +40 +E0 +80 +ENDCHAR +STARTCHAR uni2289 +ENCODING 8841 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +60 +C0 +40 +E0 +40 +ENDCHAR +STARTCHAR uni228A +ENCODING 8842 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +80 +60 +40 +E0 +80 +ENDCHAR +STARTCHAR uni228B +ENCODING 8843 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +20 +C0 +40 +E0 +80 +ENDCHAR +STARTCHAR revlogicalnot +ENCODING 8976 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +80 +00 +00 +ENDCHAR +STARTCHAR integraltp +ENCODING 8992 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR integralbt +ENCODING 8993 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +20 +20 +20 +20 +20 +40 +ENDCHAR +STARTCHAR uni23BA +ENCODING 9146 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +F0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni23BB +ENCODING 9147 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni23BC +ENCODING 9148 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +F0 +00 +00 +ENDCHAR +STARTCHAR uni23BD +ENCODING 9149 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +00 +F0 +ENDCHAR +STARTCHAR uni2409 +ENCODING 9225 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +A0 +70 +20 +20 +ENDCHAR +STARTCHAR uni240A +ENCODING 9226 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +E0 +60 +40 +40 +ENDCHAR +STARTCHAR uni240B +ENCODING 9227 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +A0 +40 +70 +20 +20 +ENDCHAR +STARTCHAR uni240C +ENCODING 9228 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +C0 +80 +60 +60 +40 +ENDCHAR +STARTCHAR uni240D +ENCODING 9229 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +80 +E0 +50 +60 +50 +ENDCHAR +STARTCHAR uni2423 +ENCODING 9251 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +90 +F0 +ENDCHAR +STARTCHAR uni2424 +ENCODING 9252 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +D0 +B0 +90 +20 +20 +30 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9472 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +F0 +00 +00 +ENDCHAR +STARTCHAR uni2501 +ENCODING 9473 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +F8 +F8 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9474 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +40 +40 +40 +ENDCHAR +STARTCHAR uni2503 +ENCODING 9475 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR uni2504 +ENCODING 9476 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +A0 +00 +00 +ENDCHAR +STARTCHAR uni2505 +ENCODING 9477 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +A8 +A8 +00 +00 +ENDCHAR +STARTCHAR uni2506 +ENCODING 9478 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +40 +00 +40 +00 +ENDCHAR +STARTCHAR uni2507 +ENCODING 9479 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +00 +60 +00 +60 +00 +ENDCHAR +STARTCHAR uni2508 +ENCODING 9480 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +A0 +00 +00 +ENDCHAR +STARTCHAR uni2509 +ENCODING 9481 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +A8 +A8 +00 +00 +ENDCHAR +STARTCHAR uni250A +ENCODING 9482 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +00 +40 +00 +40 +00 +ENDCHAR +STARTCHAR uni250B +ENCODING 9483 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +00 +60 +00 +60 +00 +ENDCHAR +STARTCHAR SF010000 +ENCODING 9484 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +70 +40 +40 +ENDCHAR +STARTCHAR uni250D +ENCODING 9485 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +70 +70 +40 +40 +ENDCHAR +STARTCHAR uni250E +ENCODING 9486 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +70 +60 +60 +ENDCHAR +STARTCHAR uni250F +ENCODING 9487 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +70 +70 +60 +60 +ENDCHAR +STARTCHAR SF030000 +ENCODING 9488 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +C0 +40 +40 +ENDCHAR +STARTCHAR uni2511 +ENCODING 9489 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +C0 +C0 +40 +40 +ENDCHAR +STARTCHAR uni2512 +ENCODING 9490 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +E0 +60 +60 +ENDCHAR +STARTCHAR uni2513 +ENCODING 9491 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +E0 +60 +60 +ENDCHAR +STARTCHAR SF020000 +ENCODING 9492 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +70 +00 +00 +ENDCHAR +STARTCHAR uni2515 +ENCODING 9493 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +70 +70 +00 +00 +ENDCHAR +STARTCHAR uni2516 +ENCODING 9494 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +70 +00 +00 +ENDCHAR +STARTCHAR uni2517 +ENCODING 9495 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +70 +70 +00 +00 +ENDCHAR +STARTCHAR SF040000 +ENCODING 9496 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +C0 +00 +00 +ENDCHAR +STARTCHAR uni2519 +ENCODING 9497 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +C0 +C0 +00 +00 +ENDCHAR +STARTCHAR uni251A +ENCODING 9498 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +E0 +00 +00 +ENDCHAR +STARTCHAR uni251B +ENCODING 9499 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +E0 +E0 +00 +00 +ENDCHAR +STARTCHAR SF080000 +ENCODING 9500 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +70 +40 +40 +ENDCHAR +STARTCHAR uni251D +ENCODING 9501 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +70 +70 +40 +40 +ENDCHAR +STARTCHAR uni251E +ENCODING 9502 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +70 +40 +40 +ENDCHAR +STARTCHAR uni251F +ENCODING 9503 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +70 +60 +60 +ENDCHAR +STARTCHAR uni2520 +ENCODING 9504 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +70 +60 +60 +ENDCHAR +STARTCHAR uni2521 +ENCODING 9505 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +70 +70 +40 +40 +ENDCHAR +STARTCHAR uni2522 +ENCODING 9506 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +70 +70 +60 +60 +ENDCHAR +STARTCHAR uni2523 +ENCODING 9507 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +70 +70 +60 +60 +ENDCHAR +STARTCHAR SF090000 +ENCODING 9508 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +C0 +40 +40 +ENDCHAR +STARTCHAR uni2525 +ENCODING 9509 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +C0 +C0 +40 +40 +ENDCHAR +STARTCHAR uni2526 +ENCODING 9510 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +E0 +40 +40 +ENDCHAR +STARTCHAR uni2527 +ENCODING 9511 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +E0 +60 +60 +ENDCHAR +STARTCHAR uni2528 +ENCODING 9512 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +E0 +60 +60 +ENDCHAR +STARTCHAR uni2529 +ENCODING 9513 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +E0 +E0 +40 +40 +ENDCHAR +STARTCHAR uni252A +ENCODING 9514 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +E0 +E0 +60 +60 +ENDCHAR +STARTCHAR uni252B +ENCODING 9515 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +E0 +E0 +60 +60 +ENDCHAR +STARTCHAR SF060000 +ENCODING 9516 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +F0 +40 +40 +ENDCHAR +STARTCHAR uni252D +ENCODING 9517 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +C0 +F0 +40 +40 +ENDCHAR +STARTCHAR uni252E +ENCODING 9518 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +70 +F0 +40 +40 +ENDCHAR +STARTCHAR uni252F +ENCODING 9519 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +F0 +F0 +40 +40 +ENDCHAR +STARTCHAR uni2530 +ENCODING 9520 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +F0 +60 +60 +ENDCHAR +STARTCHAR uni2531 +ENCODING 9521 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +F0 +60 +60 +ENDCHAR +STARTCHAR uni2532 +ENCODING 9522 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +70 +F0 +60 +60 +ENDCHAR +STARTCHAR uni2533 +ENCODING 9523 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +F0 +F0 +60 +60 +ENDCHAR +STARTCHAR SF070000 +ENCODING 9524 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +F0 +00 +00 +ENDCHAR +STARTCHAR uni2535 +ENCODING 9525 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +C0 +F0 +00 +00 +ENDCHAR +STARTCHAR uni2536 +ENCODING 9526 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +70 +F0 +00 +00 +ENDCHAR +STARTCHAR uni2537 +ENCODING 9527 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +F0 +F0 +00 +00 +ENDCHAR +STARTCHAR uni2538 +ENCODING 9528 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +F0 +00 +00 +ENDCHAR +STARTCHAR uni2539 +ENCODING 9529 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +E0 +F0 +00 +00 +ENDCHAR +STARTCHAR uni253A +ENCODING 9530 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +70 +F0 +00 +00 +ENDCHAR +STARTCHAR uni253B +ENCODING 9531 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +F0 +F0 +00 +00 +ENDCHAR +STARTCHAR SF050000 +ENCODING 9532 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +F0 +40 +40 +ENDCHAR +STARTCHAR uni253D +ENCODING 9533 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +C0 +F0 +40 +40 +ENDCHAR +STARTCHAR uni253E +ENCODING 9534 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +70 +F0 +40 +40 +ENDCHAR +STARTCHAR uni253F +ENCODING 9535 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +F0 +F0 +40 +40 +ENDCHAR +STARTCHAR uni2540 +ENCODING 9536 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +F0 +40 +40 +ENDCHAR +STARTCHAR uni2541 +ENCODING 9537 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +F0 +60 +60 +ENDCHAR +STARTCHAR uni2542 +ENCODING 9538 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +F0 +60 +60 +ENDCHAR +STARTCHAR uni2543 +ENCODING 9539 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +E0 +F0 +40 +40 +ENDCHAR +STARTCHAR uni2544 +ENCODING 9540 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +70 +F0 +40 +40 +ENDCHAR +STARTCHAR uni2545 +ENCODING 9541 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +E0 +F0 +60 +60 +ENDCHAR +STARTCHAR uni2546 +ENCODING 9542 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +70 +F0 +60 +60 +ENDCHAR +STARTCHAR uni2547 +ENCODING 9543 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +F0 +F0 +40 +40 +ENDCHAR +STARTCHAR uni2548 +ENCODING 9544 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +F0 +F0 +60 +60 +ENDCHAR +STARTCHAR uni2549 +ENCODING 9545 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +E0 +F0 +60 +60 +ENDCHAR +STARTCHAR uni254A +ENCODING 9546 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +70 +F0 +60 +60 +ENDCHAR +STARTCHAR uni254B +ENCODING 9547 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +F0 +F0 +60 +60 +ENDCHAR +STARTCHAR uni254C +ENCODING 9548 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +A0 +00 +00 +ENDCHAR +STARTCHAR uni254D +ENCODING 9549 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +A0 +A0 +00 +00 +ENDCHAR +STARTCHAR uni254E +ENCODING 9550 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +40 +00 +40 +40 +ENDCHAR +STARTCHAR uni254F +ENCODING 9551 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +60 +60 +00 +60 +60 +ENDCHAR +STARTCHAR SF430000 +ENCODING 9552 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +F0 +00 +F0 +00 +ENDCHAR +STARTCHAR SF240000 +ENCODING 9553 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +60 +60 +60 +ENDCHAR +STARTCHAR SF510000 +ENCODING 9554 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +70 +40 +70 +40 +ENDCHAR +STARTCHAR SF520000 +ENCODING 9555 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +70 +60 +60 +ENDCHAR +STARTCHAR SF390000 +ENCODING 9556 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +70 +40 +70 +60 +ENDCHAR +STARTCHAR SF220000 +ENCODING 9557 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +C0 +40 +C0 +40 +ENDCHAR +STARTCHAR SF210000 +ENCODING 9558 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +E0 +60 +60 +ENDCHAR +STARTCHAR SF250000 +ENCODING 9559 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +20 +E0 +60 +ENDCHAR +STARTCHAR SF500000 +ENCODING 9560 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +70 +40 +70 +00 +ENDCHAR +STARTCHAR SF490000 +ENCODING 9561 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +70 +00 +00 +ENDCHAR +STARTCHAR SF380000 +ENCODING 9562 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +70 +40 +70 +00 +ENDCHAR +STARTCHAR SF280000 +ENCODING 9563 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +C0 +40 +C0 +00 +ENDCHAR +STARTCHAR SF270000 +ENCODING 9564 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +E0 +00 +00 +ENDCHAR +STARTCHAR SF260000 +ENCODING 9565 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +E0 +20 +E0 +00 +ENDCHAR +STARTCHAR SF360000 +ENCODING 9566 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +70 +40 +70 +40 +ENDCHAR +STARTCHAR SF370000 +ENCODING 9567 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +70 +60 +60 +ENDCHAR +STARTCHAR SF420000 +ENCODING 9568 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +70 +40 +70 +60 +ENDCHAR +STARTCHAR SF190000 +ENCODING 9569 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +C0 +40 +C0 +40 +ENDCHAR +STARTCHAR SF200000 +ENCODING 9570 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +E0 +60 +60 +ENDCHAR +STARTCHAR SF230000 +ENCODING 9571 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +E0 +20 +E0 +60 +ENDCHAR +STARTCHAR SF470000 +ENCODING 9572 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +F0 +00 +F0 +40 +ENDCHAR +STARTCHAR SF480000 +ENCODING 9573 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +F0 +60 +60 +ENDCHAR +STARTCHAR SF410000 +ENCODING 9574 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +F0 +00 +F0 +60 +ENDCHAR +STARTCHAR SF450000 +ENCODING 9575 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +F0 +00 +F0 +00 +ENDCHAR +STARTCHAR SF460000 +ENCODING 9576 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +F0 +00 +00 +ENDCHAR +STARTCHAR SF400000 +ENCODING 9577 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +F0 +00 +F0 +00 +ENDCHAR +STARTCHAR SF540000 +ENCODING 9578 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +F0 +40 +F0 +40 +ENDCHAR +STARTCHAR SF530000 +ENCODING 9579 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +F0 +60 +60 +ENDCHAR +STARTCHAR SF440000 +ENCODING 9580 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +F0 +00 +F0 +60 +ENDCHAR +STARTCHAR uni256D +ENCODING 9581 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +30 +40 +40 +ENDCHAR +STARTCHAR uni256E +ENCODING 9582 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +80 +40 +40 +ENDCHAR +STARTCHAR uni256F +ENCODING 9583 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +80 +00 +00 +ENDCHAR +STARTCHAR uni2570 +ENCODING 9584 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +30 +00 +00 +ENDCHAR +STARTCHAR uni2571 +ENCODING 9585 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +10 +20 +20 +40 +40 +80 +ENDCHAR +STARTCHAR uni2572 +ENCODING 9586 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +40 +40 +20 +20 +10 +ENDCHAR +STARTCHAR uni2573 +ENCODING 9587 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +90 +90 +60 +60 +90 +90 +ENDCHAR +STARTCHAR uni2574 +ENCODING 9588 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +C0 +00 +00 +ENDCHAR +STARTCHAR uni2575 +ENCODING 9589 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR uni2576 +ENCODING 9590 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +70 +00 +00 +ENDCHAR +STARTCHAR uni2577 +ENCODING 9591 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +40 +40 +40 +ENDCHAR +STARTCHAR uni2578 +ENCODING 9592 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +C0 +C0 +00 +00 +ENDCHAR +STARTCHAR uni2579 +ENCODING 9593 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +60 +00 +00 +ENDCHAR +STARTCHAR uni257A +ENCODING 9594 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +70 +70 +00 +00 +ENDCHAR +STARTCHAR uni257B +ENCODING 9595 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +60 +60 +60 +ENDCHAR +STARTCHAR uni257C +ENCODING 9596 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +30 +F0 +00 +00 +ENDCHAR +STARTCHAR uni257D +ENCODING 9597 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +60 +60 +60 +ENDCHAR +STARTCHAR uni257E +ENCODING 9598 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +C0 +F0 +00 +00 +ENDCHAR +STARTCHAR uni257F +ENCODING 9599 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +60 +60 +60 +60 +40 +40 +ENDCHAR +STARTCHAR upblock +ENCODING 9600 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +F8 +F8 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2581 +ENCODING 9601 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +00 +F0 +ENDCHAR +STARTCHAR uni2582 +ENCODING 9602 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +00 +F8 +ENDCHAR +STARTCHAR uni2583 +ENCODING 9603 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +00 +F8 +F8 +ENDCHAR +STARTCHAR dnblock +ENCODING 9604 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +F8 +F8 +F8 +ENDCHAR +STARTCHAR uni2585 +ENCODING 9605 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +00 +F8 +F8 +F8 +ENDCHAR +STARTCHAR uni2586 +ENCODING 9606 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR uni2587 +ENCODING 9607 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +F8 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR block +ENCODING 9608 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +F8 +F8 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR uni2589 +ENCODING 9609 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +F0 +F0 +F0 +F0 +F0 +F0 +ENDCHAR +STARTCHAR uni258A +ENCODING 9610 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR +STARTCHAR uni258B +ENCODING 9611 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR +STARTCHAR lfblock +ENCODING 9612 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR uni258D +ENCODING 9613 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR uni258E +ENCODING 9614 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR uni258F +ENCODING 9615 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR rtblock +ENCODING 9616 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR ltshade +ENCODING 9617 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +20 +80 +20 +80 +20 +ENDCHAR +STARTCHAR shade +ENCODING 9618 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A8 +50 +A8 +50 +A8 +50 +ENDCHAR +STARTCHAR dkshade +ENCODING 9619 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +B8 +E8 +B8 +E8 +B8 +E8 +ENDCHAR +STARTCHAR uni2594 +ENCODING 9620 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2595 +ENCODING 9621 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +10 +10 +10 +10 +10 +10 +ENDCHAR +STARTCHAR filledbox +ENCODING 9632 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +E0 +E0 +00 +ENDCHAR +STARTCHAR H22073 +ENCODING 9633 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +00 +E0 +A0 +E0 +00 +ENDCHAR +STARTCHAR uni25C6 +ENCODING 9670 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +E0 +E0 +40 +00 +ENDCHAR +STARTCHAR spade +ENCODING 9824 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +E0 +E0 +40 +E0 +00 +ENDCHAR +STARTCHAR club +ENCODING 9827 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +A0 +40 +E0 +00 +ENDCHAR +STARTCHAR heart +ENCODING 9829 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +A0 +E0 +E0 +40 +00 +ENDCHAR +STARTCHAR diamond +ENCODING 9830 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +00 +40 +E0 +40 +00 +00 +ENDCHAR +STARTCHAR uni2669 +ENCODING 9833 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +40 +40 +C0 +80 +00 +ENDCHAR +STARTCHAR musicalnote +ENCODING 9834 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +40 +60 +40 +C0 +80 +00 +ENDCHAR +STARTCHAR musicalnotedbl +ENCODING 9835 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +70 +50 +50 +50 +A0 +00 +ENDCHAR +STARTCHAR uni266C +ENCODING 9836 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +70 +70 +50 +50 +A0 +00 +ENDCHAR +STARTCHAR uni266D +ENCODING 9837 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +80 +E0 +A0 +C0 +00 +ENDCHAR +STARTCHAR uni266E +ENCODING 9838 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +80 +E0 +A0 +E0 +20 +00 +ENDCHAR +STARTCHAR uni266F +ENCODING 9839 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +A0 +E0 +A0 +E0 +A0 +00 +ENDCHAR +STARTCHAR uniFFFD +ENCODING 65533 +SWIDTH 640 0 +DWIDTH 4 0 +BBX 4 6 0 -1 +BITMAP +F0 +90 +D0 +F0 +D0 +F0 +ENDCHAR +ENDFONT diff --git a/sketch/lib/extras/5x7.bdf b/sketch/lib/extras/5x7.bdf new file mode 100644 index 0000000..06cde34 --- /dev/null +++ b/sketch/lib/extras/5x7.bdf @@ -0,0 +1,25905 @@ +STARTFONT 2.1 +COMMENT "$ucs-fonts: 5x7.bdf,v 1.38 2006-01-05 20:03:17+00 mgk25 Rel $" +COMMENT "Send bug reports to Markus Kuhn " +FONT -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO10646-1 +SIZE 7 75 75 +FONTBOUNDINGBOX 5 7 0 -1 +STARTPROPERTIES 23 +FONTNAME_REGISTRY "" +FOUNDRY "Misc" +FAMILY_NAME "Fixed" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 7 +POINT_SIZE 70 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 50 +CHARSET_REGISTRY "ISO10646" +CHARSET_ENCODING "1" +FONT_ASCENT 6 +FONT_DESCENT 1 +DESTINATION 1 +DEFAULT_CHAR 0 +COPYRIGHT "Public domain font. Share and enjoy." +_XMBDFED_INFO "Edited with xmbdfed 4.5." +CAP_HEIGHT 6 +X_HEIGHT 4 +ENDPROPERTIES +CHARS 1848 +STARTCHAR char0 +ENCODING 0 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +A8 +00 +88 +00 +A8 +00 +ENDCHAR +STARTCHAR space +ENCODING 32 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclam +ENCODING 33 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +00 +20 +00 +ENDCHAR +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +00 +00 +00 +00 +ENDCHAR +STARTCHAR numbersign +ENCODING 35 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +50 +F8 +50 +F8 +50 +00 +ENDCHAR +STARTCHAR dollar +ENCODING 36 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +A0 +70 +28 +70 +00 +ENDCHAR +STARTCHAR percent +ENCODING 37 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +90 +20 +40 +90 +10 +00 +ENDCHAR +STARTCHAR ampersand +ENCODING 38 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +A0 +40 +A0 +50 +00 +ENDCHAR +STARTCHAR quotesingle +ENCODING 39 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenleft +ENCODING 40 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +40 +40 +40 +20 +00 +ENDCHAR +STARTCHAR parenright +ENCODING 41 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +20 +20 +20 +40 +00 +ENDCHAR +STARTCHAR asterisk +ENCODING 42 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +50 +20 +70 +20 +50 +00 +ENDCHAR +STARTCHAR plus +ENCODING 43 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +20 +F8 +20 +20 +00 +ENDCHAR +STARTCHAR comma +ENCODING 44 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +30 +20 +40 +ENDCHAR +STARTCHAR hyphen +ENCODING 45 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR period +ENCODING 46 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +60 +60 +00 +ENDCHAR +STARTCHAR slash +ENCODING 47 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +20 +40 +80 +00 +00 +ENDCHAR +STARTCHAR zero +ENCODING 48 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR one +ENCODING 49 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +60 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR two +ENCODING 50 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +10 +20 +40 +F0 +00 +ENDCHAR +STARTCHAR three +ENCODING 51 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +60 +10 +90 +60 +00 +ENDCHAR +STARTCHAR four +ENCODING 52 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +60 +A0 +F0 +20 +20 +00 +ENDCHAR +STARTCHAR five +ENCODING 53 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +10 +90 +60 +00 +ENDCHAR +STARTCHAR six +ENCODING 54 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +80 +E0 +90 +90 +60 +00 +ENDCHAR +STARTCHAR seven +ENCODING 55 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +20 +20 +40 +40 +00 +ENDCHAR +STARTCHAR eight +ENCODING 56 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR nine +ENCODING 57 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +70 +10 +60 +00 +ENDCHAR +STARTCHAR colon +ENCODING 58 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +60 +00 +60 +60 +00 +ENDCHAR +STARTCHAR semicolon +ENCODING 59 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +60 +00 +60 +40 +80 +ENDCHAR +STARTCHAR less +ENCODING 60 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +20 +40 +20 +10 +00 +ENDCHAR +STARTCHAR equal +ENCODING 61 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +00 +F0 +00 +00 +ENDCHAR +STARTCHAR greater +ENCODING 62 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +20 +10 +20 +40 +00 +ENDCHAR +STARTCHAR question +ENCODING 63 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +10 +20 +00 +20 +00 +ENDCHAR +STARTCHAR at +ENCODING 64 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +B0 +B0 +80 +60 +00 +ENDCHAR +STARTCHAR A +ENCODING 65 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR B +ENCODING 66 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR C +ENCODING 67 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +80 +90 +60 +00 +ENDCHAR +STARTCHAR D +ENCODING 68 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR E +ENCODING 69 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR F +ENCODING 70 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +80 +00 +ENDCHAR +STARTCHAR G +ENCODING 71 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +B0 +90 +70 +00 +ENDCHAR +STARTCHAR H +ENCODING 72 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR I +ENCODING 73 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR J +ENCODING 74 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +10 +10 +10 +90 +60 +00 +ENDCHAR +STARTCHAR K +ENCODING 75 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +A0 +C0 +C0 +A0 +90 +00 +ENDCHAR +STARTCHAR L +ENCODING 76 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +80 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR M +ENCODING 77 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +F0 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR N +ENCODING 78 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +D0 +D0 +B0 +B0 +90 +00 +ENDCHAR +STARTCHAR O +ENCODING 79 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR P +ENCODING 80 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +80 +80 +00 +ENDCHAR +STARTCHAR Q +ENCODING 81 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +D0 +60 +10 +ENDCHAR +STARTCHAR R +ENCODING 82 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +A0 +90 +00 +ENDCHAR +STARTCHAR S +ENCODING 83 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +20 +90 +60 +00 +ENDCHAR +STARTCHAR T +ENCODING 84 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR U +ENCODING 85 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR V +ENCODING 86 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +60 +60 +00 +ENDCHAR +STARTCHAR W +ENCODING 87 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +F0 +F0 +90 +00 +ENDCHAR +STARTCHAR X +ENCODING 88 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +60 +60 +90 +90 +00 +ENDCHAR +STARTCHAR Y +ENCODING 89 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR Z +ENCODING 90 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +20 +40 +80 +F0 +00 +ENDCHAR +STARTCHAR bracketleft +ENCODING 91 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +40 +40 +40 +40 +70 +00 +ENDCHAR +STARTCHAR backslash +ENCODING 92 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +40 +20 +10 +00 +00 +ENDCHAR +STARTCHAR bracketright +ENCODING 93 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +10 +10 +10 +10 +70 +00 +ENDCHAR +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR underscore +ENCODING 95 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +F0 +00 +ENDCHAR +STARTCHAR grave +ENCODING 96 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR a +ENCODING 97 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR b +ENCODING 98 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR c +ENCODING 99 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +80 +80 +60 +00 +ENDCHAR +STARTCHAR d +ENCODING 100 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +10 +70 +90 +90 +70 +00 +ENDCHAR +STARTCHAR e +ENCODING 101 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR f +ENCODING 102 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR g +ENCODING 103 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +60 +80 +70 +ENDCHAR +STARTCHAR h +ENCODING 104 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR i +ENCODING 105 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR j +ENCODING 106 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +10 +10 +50 +20 +ENDCHAR +STARTCHAR k +ENCODING 107 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +A0 +C0 +A0 +90 +00 +ENDCHAR +STARTCHAR l +ENCODING 108 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR m +ENCODING 109 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A0 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR n +ENCODING 110 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR o +ENCODING 111 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR p +ENCODING 112 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR q +ENCODING 113 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +90 +70 +10 +ENDCHAR +STARTCHAR r +ENCODING 114 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +80 +80 +00 +ENDCHAR +STARTCHAR s +ENCODING 115 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +C0 +30 +E0 +00 +ENDCHAR +STARTCHAR t +ENCODING 116 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +E0 +40 +40 +30 +00 +ENDCHAR +STARTCHAR u +ENCODING 117 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR v +ENCODING 118 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR w +ENCODING 119 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR x +ENCODING 120 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +60 +60 +90 +00 +ENDCHAR +STARTCHAR y +ENCODING 121 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +50 +20 +40 +ENDCHAR +STARTCHAR z +ENCODING 122 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +20 +40 +F0 +00 +ENDCHAR +STARTCHAR braceleft +ENCODING 123 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +60 +20 +20 +10 +00 +ENDCHAR +STARTCHAR bar +ENCODING 124 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR braceright +ENCODING 125 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +30 +20 +20 +40 +00 +ENDCHAR +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR space +ENCODING 160 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclamdown +ENCODING 161 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR cent +ENCODING 162 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +A0 +A0 +70 +20 +ENDCHAR +STARTCHAR sterling +ENCODING 163 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +30 +40 +E0 +40 +B0 +00 +ENDCHAR +STARTCHAR currency +ENCODING 164 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +88 +70 +50 +70 +88 +00 +ENDCHAR +STARTCHAR yen +ENCODING 165 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +20 +70 +20 +20 +00 +ENDCHAR +STARTCHAR brokenbar +ENCODING 166 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +20 +00 +20 +20 +00 +ENDCHAR +STARTCHAR section +ENCODING 167 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +40 +60 +50 +30 +10 +60 +ENDCHAR +STARTCHAR dieresis +ENCODING 168 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR copyright +ENCODING 169 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +88 +A8 +C8 +A8 +88 +70 +ENDCHAR +STARTCHAR ordfeminine +ENCODING 170 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +A0 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR guillemotleft +ENCODING 171 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +48 +90 +48 +00 +00 +ENDCHAR +STARTCHAR logicalnot +ENCODING 172 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F0 +10 +00 +00 +ENDCHAR +STARTCHAR hyphen +ENCODING 173 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +70 +00 +00 +00 +ENDCHAR +STARTCHAR registered +ENCODING 174 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +88 +E8 +C8 +C8 +88 +70 +ENDCHAR +STARTCHAR macron +ENCODING 175 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR degree +ENCODING 176 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR plusminus +ENCODING 177 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +F8 +20 +20 +F8 +00 +ENDCHAR +STARTCHAR twosuperior +ENCODING 178 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +40 +60 +00 +00 +00 +ENDCHAR +STARTCHAR threesuperior +ENCODING 179 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +20 +60 +00 +00 +00 +ENDCHAR +STARTCHAR acute +ENCODING 180 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR mu +ENCODING 181 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR paragraph +ENCODING 182 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +D0 +D0 +50 +50 +50 +00 +ENDCHAR +STARTCHAR periodcentered +ENCODING 183 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +60 +00 +00 +00 +ENDCHAR +STARTCHAR cedilla +ENCODING 184 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +20 +40 +ENDCHAR +STARTCHAR onesuperior +ENCODING 185 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +60 +20 +70 +00 +00 +00 +ENDCHAR +STARTCHAR ordmasculine +ENCODING 186 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +A0 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR guillemotright +ENCODING 187 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +48 +90 +00 +00 +ENDCHAR +STARTCHAR onequarter +ENCODING 188 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +80 +90 +30 +70 +10 +ENDCHAR +STARTCHAR onehalf +ENCODING 189 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +80 +B0 +10 +20 +30 +ENDCHAR +STARTCHAR threequarters +ENCODING 190 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +C0 +40 +D0 +30 +70 +10 +ENDCHAR +STARTCHAR questiondown +ENCODING 191 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +20 +40 +50 +20 +00 +ENDCHAR +STARTCHAR Agrave +ENCODING 192 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR Aacute +ENCODING 193 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR Acircumflex +ENCODING 194 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR Atilde +ENCODING 195 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR Adieresis +ENCODING 196 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR Aring +ENCODING 197 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR AE +ENCODING 198 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +A0 +B0 +E0 +A0 +B0 +00 +ENDCHAR +STARTCHAR Ccedilla +ENCODING 199 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +80 +90 +60 +40 +ENDCHAR +STARTCHAR Egrave +ENCODING 200 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR Eacute +ENCODING 201 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR Ecircumflex +ENCODING 202 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR Edieresis +ENCODING 203 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR Igrave +ENCODING 204 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR Iacute +ENCODING 205 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR Icircumflex +ENCODING 206 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR Idieresis +ENCODING 207 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR Eth +ENCODING 208 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +D0 +50 +50 +E0 +00 +ENDCHAR +STARTCHAR Ntilde +ENCODING 209 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +B0 +90 +D0 +B0 +B0 +90 +00 +ENDCHAR +STARTCHAR Ograve +ENCODING 210 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Oacute +ENCODING 211 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Ocircumflex +ENCODING 212 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Otilde +ENCODING 213 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Odieresis +ENCODING 214 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR multiply +ENCODING 215 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +60 +60 +90 +00 +ENDCHAR +STARTCHAR Oslash +ENCODING 216 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +B0 +B0 +D0 +D0 +E0 +00 +ENDCHAR +STARTCHAR Ugrave +ENCODING 217 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Uacute +ENCODING 218 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Ucircumflex +ENCODING 219 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Udieresis +ENCODING 220 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +00 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Yacute +ENCODING 221 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR Thorn +ENCODING 222 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +E0 +90 +E0 +80 +80 +00 +ENDCHAR +STARTCHAR germandbls +ENCODING 223 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +A0 +90 +90 +A0 +00 +ENDCHAR +STARTCHAR agrave +ENCODING 224 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR aacute +ENCODING 225 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR acircumflex +ENCODING 226 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR atilde +ENCODING 227 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR adieresis +ENCODING 228 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR aring +ENCODING 229 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR ae +ENCODING 230 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +B0 +A0 +70 +00 +ENDCHAR +STARTCHAR ccedilla +ENCODING 231 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +30 +40 +40 +30 +20 +ENDCHAR +STARTCHAR egrave +ENCODING 232 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR eacute +ENCODING 233 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR ecircumflex +ENCODING 234 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +A0 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR edieresis +ENCODING 235 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +00 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR igrave +ENCODING 236 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR iacute +ENCODING 237 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR icircumflex +ENCODING 238 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR idieresis +ENCODING 239 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR eth +ENCODING 240 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +30 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR ntilde +ENCODING 241 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR ograve +ENCODING 242 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR oacute +ENCODING 243 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR ocircumflex +ENCODING 244 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +00 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR otilde +ENCODING 245 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR odieresis +ENCODING 246 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR divide +ENCODING 247 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +00 +F0 +00 +60 +00 +ENDCHAR +STARTCHAR oslash +ENCODING 248 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +B0 +D0 +E0 +00 +ENDCHAR +STARTCHAR ugrave +ENCODING 249 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uacute +ENCODING 250 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR ucircumflex +ENCODING 251 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +00 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR udieresis +ENCODING 252 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR yacute +ENCODING 253 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +90 +90 +50 +20 +40 +ENDCHAR +STARTCHAR thorn +ENCODING 254 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +E0 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR ydieresis +ENCODING 255 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +90 +90 +50 +20 +40 +ENDCHAR +STARTCHAR Amacron +ENCODING 256 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR amacron +ENCODING 257 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR Abreve +ENCODING 258 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR abreve +ENCODING 259 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR Aogonek +ENCODING 260 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +10 +ENDCHAR +STARTCHAR aogonek +ENCODING 261 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +B0 +50 +08 +ENDCHAR +STARTCHAR Cacute +ENCODING 262 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +80 +90 +60 +00 +ENDCHAR +STARTCHAR cacute +ENCODING 263 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +30 +40 +40 +30 +00 +ENDCHAR +STARTCHAR Ccircumflex +ENCODING 264 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +80 +90 +60 +00 +ENDCHAR +STARTCHAR ccircumflex +ENCODING 265 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +00 +60 +80 +80 +60 +00 +ENDCHAR +STARTCHAR Cdotaccent +ENCODING 266 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +80 +90 +60 +00 +ENDCHAR +STARTCHAR cdotaccent +ENCODING 267 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +60 +80 +80 +60 +00 +ENDCHAR +STARTCHAR Ccaron +ENCODING 268 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +80 +90 +60 +00 +ENDCHAR +STARTCHAR ccaron +ENCODING 269 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +40 +60 +80 +80 +60 +00 +ENDCHAR +STARTCHAR Dcaron +ENCODING 270 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR dcaron +ENCODING 271 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +50 +10 +70 +90 +70 +00 +ENDCHAR +STARTCHAR Dcroat +ENCODING 272 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +D0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR dcroat +ENCODING 273 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +38 +10 +70 +90 +70 +00 +ENDCHAR +STARTCHAR Emacron +ENCODING 274 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR emacron +ENCODING 275 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +00 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR Ebreve +ENCODING 276 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR ebreve +ENCODING 277 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR Edotaccent +ENCODING 278 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR edotaccent +ENCODING 279 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR Eogonek +ENCODING 280 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +40 +ENDCHAR +STARTCHAR eogonek +ENCODING 281 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +B0 +C0 +60 +40 +ENDCHAR +STARTCHAR Ecaron +ENCODING 282 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR ecaron +ENCODING 283 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +40 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR Gcircumflex +ENCODING 284 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +B0 +90 +70 +00 +ENDCHAR +STARTCHAR gcircumflex +ENCODING 285 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +00 +70 +90 +60 +80 +70 +ENDCHAR +STARTCHAR Gbreve +ENCODING 286 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +B0 +90 +70 +00 +ENDCHAR +STARTCHAR gbreve +ENCODING 287 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +70 +90 +60 +80 +70 +ENDCHAR +STARTCHAR Gdotaccent +ENCODING 288 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +B0 +90 +70 +00 +ENDCHAR +STARTCHAR gdotaccent +ENCODING 289 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +70 +90 +60 +80 +70 +ENDCHAR +STARTCHAR Gcommaaccent +ENCODING 290 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +B0 +90 +70 +40 +ENDCHAR +STARTCHAR gcommaaccent +ENCODING 291 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +70 +90 +60 +80 +70 +ENDCHAR +STARTCHAR Hcircumflex +ENCODING 292 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR hcircumflex +ENCODING 293 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +A0 +80 +E0 +90 +90 +00 +ENDCHAR +STARTCHAR Hbar +ENCODING 294 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +F8 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR hbar +ENCODING 295 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +C0 +80 +E0 +90 +90 +00 +ENDCHAR +STARTCHAR Itilde +ENCODING 296 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR itilde +ENCODING 297 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR Imacron +ENCODING 298 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR imacron +ENCODING 299 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR Ibreve +ENCODING 300 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR ibreve +ENCODING 301 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR Iogonek +ENCODING 302 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +40 +ENDCHAR +STARTCHAR iogonek +ENCODING 303 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +60 +20 +20 +70 +40 +ENDCHAR +STARTCHAR Idotaccent +ENCODING 304 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR dotlessi +ENCODING 305 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR IJ +ENCODING 306 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +D0 +A0 +00 +ENDCHAR +STARTCHAR ij +ENCODING 307 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +00 +90 +90 +90 +D0 +20 +ENDCHAR +STARTCHAR Jcircumflex +ENCODING 308 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +10 +10 +10 +90 +60 +00 +ENDCHAR +STARTCHAR jcircumflex +ENCODING 309 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +00 +20 +20 +A0 +40 +ENDCHAR +STARTCHAR Kcommaaccent +ENCODING 310 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +A0 +C0 +C0 +A0 +90 +80 +ENDCHAR +STARTCHAR kcommaaccent +ENCODING 311 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +A0 +C0 +A0 +90 +80 +ENDCHAR +STARTCHAR kgreenlandic +ENCODING 312 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +E0 +90 +90 +00 +ENDCHAR +STARTCHAR Lacute +ENCODING 313 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +A0 +80 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR lacute +ENCODING 314 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C8 +50 +40 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR Lcommaaccent +ENCODING 315 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +80 +80 +80 +F0 +80 +ENDCHAR +STARTCHAR lcommaaccent +ENCODING 316 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +20 +20 +20 +70 +40 +ENDCHAR +STARTCHAR Lcaron +ENCODING 317 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +90 +80 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR lcaron +ENCODING 318 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +90 +80 +80 +80 +40 +00 +ENDCHAR +STARTCHAR Ldot +ENCODING 319 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +A0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR ldot +ENCODING 320 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +40 +50 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR Lslash +ENCODING 321 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +C0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR lslash +ENCODING 322 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +30 +60 +20 +70 +00 +ENDCHAR +STARTCHAR Nacute +ENCODING 323 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +D0 +D0 +B0 +B0 +90 +00 +ENDCHAR +STARTCHAR nacute +ENCODING 324 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR Ncommaaccent +ENCODING 325 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +D0 +D0 +B0 +B0 +90 +80 +ENDCHAR +STARTCHAR ncommaaccent +ENCODING 326 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +90 +80 +ENDCHAR +STARTCHAR Ncaron +ENCODING 327 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +D0 +D0 +B0 +B0 +90 +00 +ENDCHAR +STARTCHAR ncaron +ENCODING 328 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +40 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR napostrophe +ENCODING 329 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +00 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR Eng +ENCODING 330 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +D0 +D0 +B0 +B0 +90 +20 +ENDCHAR +STARTCHAR eng +ENCODING 331 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +90 +20 +ENDCHAR +STARTCHAR Omacron +ENCODING 332 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR omacron +ENCODING 333 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Obreve +ENCODING 334 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR obreve +ENCODING 335 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Ohungarumlaut +ENCODING 336 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR ohungarumlaut +ENCODING 337 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +48 +90 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR OE +ENCODING 338 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +A0 +B0 +A0 +A0 +70 +00 +ENDCHAR +STARTCHAR oe +ENCODING 339 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +B0 +A0 +70 +00 +ENDCHAR +STARTCHAR Racute +ENCODING 340 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +A0 +90 +00 +ENDCHAR +STARTCHAR racute +ENCODING 341 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +E0 +90 +80 +80 +00 +ENDCHAR +STARTCHAR Rcommaaccent +ENCODING 342 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +A0 +90 +80 +ENDCHAR +STARTCHAR rcommaaccent +ENCODING 343 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +80 +80 +40 +ENDCHAR +STARTCHAR Rcaron +ENCODING 344 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +A0 +90 +00 +ENDCHAR +STARTCHAR rcaron +ENCODING 345 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +40 +E0 +90 +80 +80 +00 +ENDCHAR +STARTCHAR Sacute +ENCODING 346 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +20 +90 +60 +00 +ENDCHAR +STARTCHAR sacute +ENCODING 347 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +70 +C0 +30 +E0 +00 +ENDCHAR +STARTCHAR Scircumflex +ENCODING 348 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +20 +90 +60 +00 +ENDCHAR +STARTCHAR scircumflex +ENCODING 349 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +00 +70 +C0 +30 +E0 +00 +ENDCHAR +STARTCHAR Scedilla +ENCODING 350 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +20 +90 +60 +40 +ENDCHAR +STARTCHAR scedilla +ENCODING 351 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +C0 +30 +E0 +40 +ENDCHAR +STARTCHAR Scaron +ENCODING 352 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +20 +90 +60 +00 +ENDCHAR +STARTCHAR scaron +ENCODING 353 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +70 +C0 +30 +E0 +00 +ENDCHAR +STARTCHAR Tcommaaccent +ENCODING 354 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +20 +40 +ENDCHAR +STARTCHAR tcommaaccent +ENCODING 355 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +E0 +40 +40 +30 +40 +ENDCHAR +STARTCHAR Tcaron +ENCODING 356 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +40 +40 +40 +40 +40 +00 +ENDCHAR +STARTCHAR tcaron +ENCODING 357 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +40 +E0 +40 +30 +00 +ENDCHAR +STARTCHAR Tbar +ENCODING 358 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +40 +E0 +40 +40 +40 +00 +ENDCHAR +STARTCHAR tbar +ENCODING 359 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +E0 +40 +E0 +40 +30 +00 +ENDCHAR +STARTCHAR Utilde +ENCODING 360 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR utilde +ENCODING 361 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR Umacron +ENCODING 362 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR umacron +ENCODING 363 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR Ubreve +ENCODING 364 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR ubreve +ENCODING 365 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +00 +90 +90 +70 +00 +ENDCHAR +STARTCHAR Uring +ENCODING 366 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uring +ENCODING 367 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +00 +90 +90 +70 +00 +ENDCHAR +STARTCHAR Uhungarumlaut +ENCODING 368 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uhungarumlaut +ENCODING 369 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +48 +90 +00 +90 +90 +70 +00 +ENDCHAR +STARTCHAR Uogonek +ENCODING 370 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +40 +ENDCHAR +STARTCHAR uogonek +ENCODING 371 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +70 +20 +ENDCHAR +STARTCHAR Wcircumflex +ENCODING 372 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +F0 +F0 +90 +00 +ENDCHAR +STARTCHAR wcircumflex +ENCODING 373 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +00 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR Ycircumflex +ENCODING 374 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +A0 +A0 +40 +40 +40 +00 +ENDCHAR +STARTCHAR ycircumflex +ENCODING 375 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +00 +90 +50 +20 +40 +ENDCHAR +STARTCHAR Ydieresis +ENCODING 376 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +A0 +A0 +40 +40 +40 +00 +ENDCHAR +STARTCHAR Zacute +ENCODING 377 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +20 +40 +80 +F0 +00 +ENDCHAR +STARTCHAR zacute +ENCODING 378 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +F0 +20 +40 +F0 +00 +ENDCHAR +STARTCHAR Zdotaccent +ENCODING 379 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +20 +40 +80 +F0 +00 +ENDCHAR +STARTCHAR zdotaccent +ENCODING 380 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +F0 +20 +40 +F0 +00 +ENDCHAR +STARTCHAR Zcaron +ENCODING 381 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +20 +40 +80 +F0 +00 +ENDCHAR +STARTCHAR zcaron +ENCODING 382 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +F0 +20 +40 +F0 +00 +ENDCHAR +STARTCHAR longs +ENCODING 383 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +60 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni0180 +ENCODING 384 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +E0 +40 +60 +50 +60 +00 +ENDCHAR +STARTCHAR uni0181 +ENCODING 385 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +60 +50 +50 +60 +00 +ENDCHAR +STARTCHAR uni0182 +ENCODING 386 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +80 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR uni0183 +ENCODING 387 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +60 +50 +50 +60 +00 +ENDCHAR +STARTCHAR uni0184 +ENCODING 388 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +C0 +F0 +48 +48 +70 +00 +ENDCHAR +STARTCHAR uni0185 +ENCODING 389 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +C0 +60 +50 +50 +60 +00 +ENDCHAR +STARTCHAR uni0186 +ENCODING 390 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +10 +10 +90 +60 +00 +ENDCHAR +STARTCHAR uni0187 +ENCODING 391 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +68 +90 +80 +80 +90 +60 +00 +ENDCHAR +STARTCHAR uni0188 +ENCODING 392 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +60 +80 +80 +60 +00 +ENDCHAR +STARTCHAR uni0189 +ENCODING 393 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +D0 +50 +50 +E0 +00 +ENDCHAR +STARTCHAR uni018A +ENCODING 394 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +50 +50 +50 +60 +00 +ENDCHAR +STARTCHAR uni018B +ENCODING 395 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +10 +70 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uni018C +ENCODING 396 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +10 +30 +50 +50 +30 +00 +ENDCHAR +STARTCHAR uni018D +ENCODING 397 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +60 +10 +60 +ENDCHAR +STARTCHAR uni018E +ENCODING 398 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +70 +10 +10 +F0 +00 +ENDCHAR +STARTCHAR uni018F +ENCODING 399 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +10 +F0 +90 +60 +00 +ENDCHAR +STARTCHAR uni0190 +ENCODING 400 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +80 +90 +60 +00 +ENDCHAR +STARTCHAR uni0191 +ENCODING 401 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +40 +60 +40 +40 +40 +80 +ENDCHAR +STARTCHAR florin +ENCODING 402 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +40 +E0 +40 +40 +80 +ENDCHAR +STARTCHAR uni0193 +ENCODING 403 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +90 +80 +B0 +90 +70 +00 +ENDCHAR +STARTCHAR uni0194 +ENCODING 404 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +90 +90 +60 +90 +60 +00 +ENDCHAR +STARTCHAR uni0195 +ENCODING 405 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +C8 +A8 +A8 +90 +00 +ENDCHAR +STARTCHAR uni0196 +ENCODING 406 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +20 +20 +20 +10 +00 +ENDCHAR +STARTCHAR uni0197 +ENCODING 407 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +70 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni0198 +ENCODING 408 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +80 +C0 +A0 +90 +00 +ENDCHAR +STARTCHAR uni0199 +ENCODING 409 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +80 +A0 +C0 +A0 +90 +00 +ENDCHAR +STARTCHAR uni019A +ENCODING 410 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +70 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni019B +ENCODING 411 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +30 +60 +20 +50 +50 +00 +ENDCHAR +STARTCHAR uni019C +ENCODING 412 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +F0 +50 +00 +ENDCHAR +STARTCHAR uni019D +ENCODING 413 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +48 +68 +68 +58 +58 +48 +80 +ENDCHAR +STARTCHAR uni019E +ENCODING 414 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni019F +ENCODING 415 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +F0 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Ohorn +ENCODING 416 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +68 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR ohorn +ENCODING 417 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +08 +70 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni01A2 +ENCODING 418 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +A8 +A8 +A8 +A8 +40 +00 +ENDCHAR +STARTCHAR uni01A3 +ENCODING 419 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +A8 +A8 +48 +00 +ENDCHAR +STARTCHAR uni01A4 +ENCODING 420 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +50 +60 +40 +40 +00 +ENDCHAR +STARTCHAR uni01A5 +ENCODING 421 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +80 +E0 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR uni01A6 +ENCODING 422 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +E0 +90 +E0 +C0 +A0 +10 +ENDCHAR +STARTCHAR uni01A7 +ENCODING 423 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +20 +40 +90 +60 +00 +ENDCHAR +STARTCHAR uni01A8 +ENCODING 424 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +30 +C0 +70 +00 +ENDCHAR +STARTCHAR uni01A9 +ENCODING 425 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +40 +40 +80 +F0 +00 +ENDCHAR +STARTCHAR uni01AA +ENCODING 426 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +A0 +70 +20 +20 +20 +10 +ENDCHAR +STARTCHAR uni01AB +ENCODING 427 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +E0 +40 +70 +10 +20 +ENDCHAR +STARTCHAR uni01AC +ENCODING 428 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +A0 +A0 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni01AD +ENCODING 429 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +40 +E0 +40 +40 +30 +00 +ENDCHAR +STARTCHAR uni01AE +ENCODING 430 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +40 +40 +40 +40 +40 +30 +ENDCHAR +STARTCHAR Uhorn +ENCODING 431 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +98 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uhorn +ENCODING 432 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +08 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uni01B1 +ENCODING 433 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +88 +88 +88 +88 +70 +00 +ENDCHAR +STARTCHAR uni01B2 +ENCODING 434 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni01B3 +ENCODING 435 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +50 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni01B4 +ENCODING 436 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +A0 +A0 +40 +80 +ENDCHAR +STARTCHAR uni01B5 +ENCODING 437 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +F0 +40 +80 +F0 +00 +ENDCHAR +STARTCHAR uni01B6 +ENCODING 438 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +70 +40 +F0 +00 +ENDCHAR +STARTCHAR uni01B7 +ENCODING 439 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +20 +60 +10 +10 +E0 +00 +ENDCHAR +STARTCHAR uni01B8 +ENCODING 440 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +40 +60 +80 +80 +70 +00 +ENDCHAR +STARTCHAR uni01B9 +ENCODING 441 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +40 +60 +80 +70 +ENDCHAR +STARTCHAR uni01BA +ENCODING 442 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +20 +60 +30 +F8 +ENDCHAR +STARTCHAR uni01BB +ENCODING 443 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +10 +F0 +40 +F0 +00 +ENDCHAR +STARTCHAR uni01BC +ENCODING 444 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +90 +10 +E0 +00 +ENDCHAR +STARTCHAR uni01BD +ENCODING 445 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +60 +10 +60 +00 +ENDCHAR +STARTCHAR uni01BE +ENCODING 446 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +20 +10 +60 +00 +ENDCHAR +STARTCHAR uni01BF +ENCODING 447 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +A0 +C0 +80 +ENDCHAR +STARTCHAR uni01C0 +ENCODING 448 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni01C1 +ENCODING 449 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +50 +50 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni01C2 +ENCODING 450 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +20 +70 +20 +00 +ENDCHAR +STARTCHAR uni01C3 +ENCODING 451 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +20 +20 +00 +20 +00 +ENDCHAR +STARTCHAR uni01C4 +ENCODING 452 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +18 +D8 +A8 +A8 +B0 +D8 +00 +ENDCHAR +STARTCHAR uni01C5 +ENCODING 453 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D8 +A0 +B8 +A8 +B0 +D8 +00 +ENDCHAR +STARTCHAR uni01C6 +ENCODING 454 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +38 +20 +78 +A8 +B0 +78 +00 +ENDCHAR +STARTCHAR uni01C7 +ENCODING 455 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +88 +88 +88 +88 +A8 +D0 +00 +ENDCHAR +STARTCHAR uni01C8 +ENCODING 456 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +88 +80 +88 +88 +88 +E8 +10 +ENDCHAR +STARTCHAR uni01C9 +ENCODING 457 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C8 +40 +48 +48 +48 +E8 +10 +ENDCHAR +STARTCHAR uni01CA +ENCODING 458 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C8 +A8 +A8 +A8 +A8 +B0 +00 +ENDCHAR +STARTCHAR uni01CB +ENCODING 459 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C8 +A0 +A8 +A8 +A8 +A8 +10 +ENDCHAR +STARTCHAR uni01CC +ENCODING 460 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +08 +00 +C8 +A8 +A8 +A8 +10 +ENDCHAR +STARTCHAR uni01CD +ENCODING 461 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR uni01CE +ENCODING 462 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni01CF +ENCODING 463 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni01D0 +ENCODING 464 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni01D1 +ENCODING 465 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni01D2 +ENCODING 466 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +40 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni01D3 +ENCODING 467 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni01D4 +ENCODING 468 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uni01D5 +ENCODING 469 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni01D6 +ENCODING 470 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +50 +00 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uni01D7 +ENCODING 471 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni01D8 +ENCODING 472 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +70 +00 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uni01D9 +ENCODING 473 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni01DA +ENCODING 474 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +70 +00 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uni01DB +ENCODING 475 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni01DC +ENCODING 476 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +70 +00 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uni01DD +ENCODING 477 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +30 +D0 +60 +00 +ENDCHAR +STARTCHAR uni01DE +ENCODING 478 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR uni01DF +ENCODING 479 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +50 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni01E0 +ENCODING 480 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR uni01E1 +ENCODING 481 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni01E2 +ENCODING 482 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +70 +A0 +F0 +A0 +B0 +00 +ENDCHAR +STARTCHAR uni01E3 +ENCODING 483 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +70 +B0 +A0 +70 +00 +ENDCHAR +STARTCHAR uni01E4 +ENCODING 484 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +B0 +B8 +70 +00 +ENDCHAR +STARTCHAR uni01E5 +ENCODING 485 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +60 +B8 +70 +ENDCHAR +STARTCHAR Gcaron +ENCODING 486 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +B0 +90 +70 +00 +ENDCHAR +STARTCHAR gcaron +ENCODING 487 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +70 +90 +60 +80 +70 +ENDCHAR +STARTCHAR uni01E8 +ENCODING 488 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +A0 +C0 +C0 +A0 +90 +00 +ENDCHAR +STARTCHAR uni01E9 +ENCODING 489 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +80 +A0 +C0 +A0 +00 +ENDCHAR +STARTCHAR uni01EA +ENCODING 490 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +40 +ENDCHAR +STARTCHAR uni01EB +ENCODING 491 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +90 +60 +40 +ENDCHAR +STARTCHAR uni01EC +ENCODING 492 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +40 +ENDCHAR +STARTCHAR uni01ED +ENCODING 493 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +60 +90 +90 +60 +40 +ENDCHAR +STARTCHAR uni01EE +ENCODING 494 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +20 +60 +10 +10 +E0 +00 +ENDCHAR +STARTCHAR uni01EF +ENCODING 495 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +F0 +20 +60 +10 +E0 +ENDCHAR +STARTCHAR uni01F0 +ENCODING 496 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +00 +20 +20 +A0 +40 +ENDCHAR +STARTCHAR uni01F1 +ENCODING 497 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D8 +A8 +A8 +B0 +B0 +D8 +00 +ENDCHAR +STARTCHAR uni01F2 +ENCODING 498 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +A0 +B8 +A8 +B0 +D8 +00 +ENDCHAR +STARTCHAR uni01F3 +ENCODING 499 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +78 +A8 +B0 +78 +00 +ENDCHAR +STARTCHAR uni01F4 +ENCODING 500 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +B0 +90 +70 +00 +ENDCHAR +STARTCHAR uni01F5 +ENCODING 501 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +70 +90 +60 +80 +70 +ENDCHAR +STARTCHAR uni01F6 +ENCODING 502 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +A0 +E8 +A8 +A8 +90 +00 +ENDCHAR +STARTCHAR uni01F7 +ENCODING 503 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +A0 +C0 +80 +80 +00 +ENDCHAR +STARTCHAR uni01F8 +ENCODING 504 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +D0 +D0 +B0 +B0 +90 +00 +ENDCHAR +STARTCHAR uni01F9 +ENCODING 505 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR Aringacute +ENCODING 506 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR aringacute +ENCODING 507 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +60 +60 +90 +70 +00 +ENDCHAR +STARTCHAR AEacute +ENCODING 508 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +A0 +B0 +E0 +A0 +B0 +00 +ENDCHAR +STARTCHAR aeacute +ENCODING 509 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +70 +B0 +A0 +70 +00 +ENDCHAR +STARTCHAR Oslashacute +ENCODING 510 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +B0 +B0 +D0 +D0 +E0 +00 +ENDCHAR +STARTCHAR oslashacute +ENCODING 511 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +70 +B0 +D0 +E0 +00 +ENDCHAR +STARTCHAR uni0200 +ENCODING 512 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR uni0201 +ENCODING 513 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +50 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni0202 +ENCODING 514 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR uni0203 +ENCODING 515 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni0204 +ENCODING 516 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR uni0205 +ENCODING 517 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +50 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR uni0206 +ENCODING 518 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR uni0207 +ENCODING 519 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR uni0208 +ENCODING 520 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni0209 +ENCODING 521 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +50 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni020A +ENCODING 522 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni020B +ENCODING 523 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni020C +ENCODING 524 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni020D +ENCODING 525 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +50 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni020E +ENCODING 526 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni020F +ENCODING 527 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni0210 +ENCODING 528 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +A0 +90 +00 +ENDCHAR +STARTCHAR uni0211 +ENCODING 529 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +50 +E0 +90 +80 +80 +00 +ENDCHAR +STARTCHAR uni0212 +ENCODING 530 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +A0 +90 +00 +ENDCHAR +STARTCHAR uni0213 +ENCODING 531 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +E0 +90 +80 +80 +00 +ENDCHAR +STARTCHAR uni0214 +ENCODING 532 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni0215 +ENCODING 533 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +50 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uni0216 +ENCODING 534 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni0217 +ENCODING 535 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR Scommaaccent +ENCODING 536 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +20 +90 +60 +C0 +ENDCHAR +STARTCHAR scommaaccent +ENCODING 537 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +C0 +30 +E0 +C0 +ENDCHAR +STARTCHAR Tcommaaccent +ENCODING 538 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +20 +40 +ENDCHAR +STARTCHAR tcommaaccent +ENCODING 539 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +E0 +40 +40 +30 +40 +ENDCHAR +STARTCHAR uni021C +ENCODING 540 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +10 +20 +10 +E0 +00 +ENDCHAR +STARTCHAR uni021D +ENCODING 541 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +B0 +50 +20 +C0 +ENDCHAR +STARTCHAR uni021E +ENCODING 542 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR uni021F +ENCODING 543 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +80 +E0 +90 +90 +00 +ENDCHAR +STARTCHAR uni0250 +ENCODING 592 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A0 +D0 +90 +E0 +00 +ENDCHAR +STARTCHAR uni0251 +ENCODING 593 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uni0252 +ENCODING 594 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR uni0253 +ENCODING 595 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +80 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR uni0254 +ENCODING 596 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +10 +10 +60 +00 +ENDCHAR +STARTCHAR uni0255 +ENCODING 597 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +80 +B0 +60 +80 +ENDCHAR +STARTCHAR uni0256 +ENCODING 598 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +10 +70 +90 +90 +70 +18 +ENDCHAR +STARTCHAR uni0257 +ENCODING 599 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +18 +10 +70 +90 +90 +70 +00 +ENDCHAR +STARTCHAR uni0258 +ENCODING 600 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +D0 +30 +60 +00 +ENDCHAR +STARTCHAR uni0259 +ENCODING 601 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +30 +D0 +60 +00 +ENDCHAR +STARTCHAR uni025A +ENCODING 602 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +38 +D0 +60 +00 +ENDCHAR +STARTCHAR uni025B +ENCODING 603 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +30 +20 +40 +30 +00 +ENDCHAR +STARTCHAR uni025C +ENCODING 604 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +20 +10 +60 +00 +ENDCHAR +STARTCHAR uni025D +ENCODING 605 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +40 +20 +C0 +00 +ENDCHAR +STARTCHAR uni025E +ENCODING 606 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +A0 +90 +60 +00 +ENDCHAR +STARTCHAR uni025F +ENCODING 607 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +20 +70 +20 +A0 +40 +ENDCHAR +STARTCHAR uni0260 +ENCODING 608 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +08 +70 +90 +70 +10 +60 +ENDCHAR +STARTCHAR uni0261 +ENCODING 609 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +70 +10 +60 +ENDCHAR +STARTCHAR uni0262 +ENCODING 610 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +80 +90 +70 +00 +ENDCHAR +STARTCHAR uni0263 +ENCODING 611 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +50 +20 +50 +20 +ENDCHAR +STARTCHAR uni0264 +ENCODING 612 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +20 +50 +20 +00 +ENDCHAR +STARTCHAR uni0265 +ENCODING 613 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +70 +10 +ENDCHAR +STARTCHAR uni0266 +ENCODING 614 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +80 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR uni0267 +ENCODING 615 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +80 +E0 +90 +90 +90 +20 +ENDCHAR +STARTCHAR uni0268 +ENCODING 616 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +20 +70 +20 +70 +00 +ENDCHAR +STARTCHAR uni0269 +ENCODING 617 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni026A +ENCODING 618 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +40 +40 +E0 +00 +ENDCHAR +STARTCHAR uni026B +ENCODING 619 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +68 +B0 +20 +70 +00 +ENDCHAR +STARTCHAR uni026C +ENCODING 620 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +60 +70 +20 +70 +00 +ENDCHAR +STARTCHAR uni026D +ENCODING 621 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +20 +20 +20 +20 +10 +ENDCHAR +STARTCHAR uni026E +ENCODING 622 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +E0 +90 +90 +A0 +60 +ENDCHAR +STARTCHAR uni026F +ENCODING 623 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +F0 +50 +00 +ENDCHAR +STARTCHAR uni0270 +ENCODING 624 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +F0 +50 +10 +ENDCHAR +STARTCHAR uni0271 +ENCODING 625 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A0 +F0 +90 +90 +20 +ENDCHAR +STARTCHAR uni0272 +ENCODING 626 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +50 +50 +50 +80 +ENDCHAR +STARTCHAR uni0273 +ENCODING 627 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +C0 +A0 +A0 +A0 +10 +ENDCHAR +STARTCHAR uni0274 +ENCODING 628 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +D0 +B0 +90 +00 +ENDCHAR +STARTCHAR uni0275 +ENCODING 629 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +90 +F0 +90 +60 +00 +ENDCHAR +STARTCHAR uni0276 +ENCODING 630 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +B0 +A0 +70 +00 +ENDCHAR +STARTCHAR uni0277 +ENCODING 631 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni0278 +ENCODING 632 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +A8 +70 +20 +00 +ENDCHAR +STARTCHAR uni0279 +ENCODING 633 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +10 +90 +70 +00 +ENDCHAR +STARTCHAR uni027A +ENCODING 634 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +10 +10 +90 +70 +00 +ENDCHAR +STARTCHAR uni027B +ENCODING 635 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +A0 +60 +30 +00 +ENDCHAR +STARTCHAR uni027C +ENCODING 636 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +E0 +90 +80 +80 +80 +80 +ENDCHAR +STARTCHAR uni027D +ENCODING 637 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +E0 +90 +80 +80 +80 +40 +ENDCHAR +STARTCHAR uni027E +ENCODING 638 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +80 +80 +00 +ENDCHAR +STARTCHAR uni027F +ENCODING 639 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +10 +10 +00 +ENDCHAR +STARTCHAR uni0280 +ENCODING 640 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +E0 +90 +00 +ENDCHAR +STARTCHAR uni0281 +ENCODING 641 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +E0 +90 +E0 +00 +ENDCHAR +STARTCHAR uni0282 +ENCODING 642 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +C0 +30 +E0 +80 +ENDCHAR +STARTCHAR uni0283 +ENCODING 643 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +20 +20 +20 +20 +40 +ENDCHAR +STARTCHAR uni0284 +ENCODING 644 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +20 +20 +70 +20 +40 +ENDCHAR +STARTCHAR uni0285 +ENCODING 645 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +20 +20 +10 +00 +ENDCHAR +STARTCHAR uni0286 +ENCODING 646 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +20 +20 +70 +A0 +40 +ENDCHAR +STARTCHAR uni0287 +ENCODING 647 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +C0 +20 +20 +70 +20 +20 +ENDCHAR +STARTCHAR uni0288 +ENCODING 648 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +E0 +40 +40 +40 +30 +ENDCHAR +STARTCHAR uni0289 +ENCODING 649 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +F0 +90 +70 +00 +ENDCHAR +STARTCHAR uni028A +ENCODING 650 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni028B +ENCODING 651 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A0 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni028C +ENCODING 652 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni028D +ENCODING 653 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR uni028E +ENCODING 654 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +40 +A0 +90 +90 +00 +ENDCHAR +STARTCHAR uni028F +ENCODING 655 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A0 +40 +40 +40 +00 +ENDCHAR +STARTCHAR uni0290 +ENCODING 656 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +20 +40 +F0 +10 +ENDCHAR +STARTCHAR uni0291 +ENCODING 657 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +20 +50 +F0 +40 +ENDCHAR +STARTCHAR uni0292 +ENCODING 658 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +20 +60 +10 +E0 +ENDCHAR +STARTCHAR uni0293 +ENCODING 659 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +20 +60 +50 +78 +ENDCHAR +STARTCHAR uni0294 +ENCODING 660 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +10 +30 +20 +20 +00 +ENDCHAR +STARTCHAR uni0295 +ENCODING 661 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +30 +40 +60 +20 +20 +00 +ENDCHAR +STARTCHAR uni0296 +ENCODING 662 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +20 +30 +10 +60 +00 +ENDCHAR +STARTCHAR uni0297 +ENCODING 663 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +50 +40 +40 +50 +20 +ENDCHAR +STARTCHAR uni0298 +ENCODING 664 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +88 +A8 +88 +70 +00 +ENDCHAR +STARTCHAR uni0299 +ENCODING 665 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +E0 +90 +E0 +00 +ENDCHAR +STARTCHAR uni029A +ENCODING 666 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +50 +90 +60 +00 +ENDCHAR +STARTCHAR uni029B +ENCODING 667 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +18 +70 +80 +90 +70 +00 +ENDCHAR +STARTCHAR uni029C +ENCODING 668 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR uni029D +ENCODING 669 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +20 +20 +70 +A0 +40 +ENDCHAR +STARTCHAR uni029E +ENCODING 670 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +50 +30 +50 +10 +ENDCHAR +STARTCHAR uni029F +ENCODING 671 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +80 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR uni02A0 +ENCODING 672 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +18 +70 +90 +90 +70 +10 +ENDCHAR +STARTCHAR uni02A1 +ENCODING 673 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +10 +20 +70 +20 +00 +ENDCHAR +STARTCHAR uni02A2 +ENCODING 674 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +30 +40 +20 +70 +20 +00 +ENDCHAR +STARTCHAR uni02A3 +ENCODING 675 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +78 +A8 +B0 +78 +00 +ENDCHAR +STARTCHAR uni02A4 +ENCODING 676 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +78 +A8 +B0 +68 +10 +ENDCHAR +STARTCHAR uni02A5 +ENCODING 677 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +78 +A8 +B8 +78 +00 +ENDCHAR +STARTCHAR uni02A6 +ENCODING 678 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +E8 +50 +48 +30 +00 +ENDCHAR +STARTCHAR uni02A7 +ENCODING 679 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +48 +50 +F0 +50 +50 +30 +20 +ENDCHAR +STARTCHAR uni02A8 +ENCODING 680 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +E8 +50 +50 +38 +10 +ENDCHAR +STARTCHAR uni02B6 +ENCODING 694 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +C0 +A0 +C0 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B8 +ENCODING 696 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B9 +ENCODING 697 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57929 +ENCODING 700 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +20 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii64937 +ENCODING 701 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR circumflex +ENCODING 710 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR caron +ENCODING 711 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C8 +ENCODING 712 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR macron +ENCODING 713 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02CC +ENCODING 716 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +20 +20 +ENDCHAR +STARTCHAR uni02D0 +ENCODING 720 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +20 +00 +20 +70 +00 +ENDCHAR +STARTCHAR uni02D6 +ENCODING 726 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +70 +20 +00 +00 +ENDCHAR +STARTCHAR breve +ENCODING 728 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotaccent +ENCODING 729 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ring +ENCODING 730 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ogonek +ENCODING 731 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +20 +30 +ENDCHAR +STARTCHAR tilde +ENCODING 732 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hungarumlaut +ENCODING 733 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +48 +90 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR gravecomb +ENCODING 768 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR acutecomb +ENCODING 769 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0302 +ENCODING 770 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR tildecomb +ENCODING 771 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0304 +ENCODING 772 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0305 +ENCODING 773 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0306 +ENCODING 774 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0307 +ENCODING 775 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0308 +ENCODING 776 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hookabovecomb +ENCODING 777 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni030A +ENCODING 778 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni030B +ENCODING 779 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +48 +90 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni030C +ENCODING 780 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni030D +ENCODING 781 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni030E +ENCODING 782 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni030F +ENCODING 783 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +48 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0310 +ENCODING 784 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0311 +ENCODING 785 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotbelowcomb +ENCODING 803 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +20 +ENDCHAR +STARTCHAR uni0324 +ENCODING 804 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni0338 +ENCODING 824 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +20 +40 +40 +80 +00 +ENDCHAR +STARTCHAR uni0340 +ENCODING 832 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0341 +ENCODING 833 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0374 +ENCODING 884 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0375 +ENCODING 885 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +20 +40 +ENDCHAR +STARTCHAR uni037A +ENCODING 890 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni037E +ENCODING 894 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +60 +00 +60 +40 +80 +ENDCHAR +STARTCHAR tonos +ENCODING 900 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dieresistonos +ENCODING 901 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +B0 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Alphatonos +ENCODING 902 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR anoteleia +ENCODING 903 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +60 +00 +00 +00 +ENDCHAR +STARTCHAR Epsilontonos +ENCODING 904 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +C0 +60 +40 +40 +70 +00 +ENDCHAR +STARTCHAR Etatonos +ENCODING 905 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR Iotatonos +ENCODING 906 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR Omicrontonos +ENCODING 908 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR Upsilontonos +ENCODING 910 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR Omegatonos +ENCODING 911 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR iotadieresistonos +ENCODING 912 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +B0 +40 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR Alpha +ENCODING 913 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR Beta +ENCODING 914 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR Gamma +ENCODING 915 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +80 +80 +80 +80 +00 +ENDCHAR +STARTCHAR Delta +ENCODING 916 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +90 +90 +90 +F0 +00 +ENDCHAR +STARTCHAR Epsilon +ENCODING 917 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR Zeta +ENCODING 918 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +20 +40 +80 +F0 +00 +ENDCHAR +STARTCHAR Eta +ENCODING 919 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR Theta +ENCODING 920 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +F0 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Iota +ENCODING 921 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR Kappa +ENCODING 922 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +A0 +C0 +C0 +A0 +90 +00 +ENDCHAR +STARTCHAR Lambda +ENCODING 923 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +60 +90 +90 +90 +00 +ENDCHAR +STARTCHAR Mu +ENCODING 924 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +F0 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR Nu +ENCODING 925 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +D0 +D0 +B0 +B0 +90 +00 +ENDCHAR +STARTCHAR Xi +ENCODING 926 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +60 +00 +00 +F0 +00 +ENDCHAR +STARTCHAR Omicron +ENCODING 927 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR Pi +ENCODING 928 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +90 +90 +90 +90 +90 +00 +ENDCHAR +STARTCHAR Rho +ENCODING 929 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +80 +80 +00 +ENDCHAR +STARTCHAR Sigma +ENCODING 931 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +40 +40 +80 +F0 +00 +ENDCHAR +STARTCHAR Tau +ENCODING 932 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR Upsilon +ENCODING 933 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR Phi +ENCODING 934 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +50 +50 +70 +20 +00 +ENDCHAR +STARTCHAR Chi +ENCODING 935 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +60 +60 +90 +90 +00 +ENDCHAR +STARTCHAR Psi +ENCODING 936 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +70 +70 +70 +20 +20 +00 +ENDCHAR +STARTCHAR Omega +ENCODING 937 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR Iotadieresis +ENCODING 938 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +70 +20 +20 +70 +00 +ENDCHAR +STARTCHAR Upsilondieresis +ENCODING 939 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +00 +A0 +A0 +40 +40 +00 +ENDCHAR +STARTCHAR alphatonos +ENCODING 940 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR epsilontonos +ENCODING 941 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +70 +20 +40 +30 +00 +ENDCHAR +STARTCHAR etatonos +ENCODING 942 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR iotatonos +ENCODING 943 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR upsilondieresistonos +ENCODING 944 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +B0 +40 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR alpha +ENCODING 945 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR beta +ENCODING 946 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +E0 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR gamma +ENCODING 947 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +50 +20 +20 +20 +ENDCHAR +STARTCHAR delta +ENCODING 948 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +80 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR epsilon +ENCODING 949 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +20 +40 +30 +00 +ENDCHAR +STARTCHAR zeta +ENCODING 950 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +40 +80 +80 +80 +70 +10 +ENDCHAR +STARTCHAR eta +ENCODING 951 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR theta +ENCODING 952 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +70 +50 +50 +20 +00 +ENDCHAR +STARTCHAR iota +ENCODING 953 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +40 +40 +20 +00 +ENDCHAR +STARTCHAR kappa +ENCODING 954 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +A0 +E0 +90 +00 +ENDCHAR +STARTCHAR lambda +ENCODING 955 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +10 +50 +B0 +90 +90 +00 +ENDCHAR +STARTCHAR mu +ENCODING 956 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +F0 +80 +ENDCHAR +STARTCHAR nu +ENCODING 957 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR xi +ENCODING 958 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +40 +80 +60 +80 +70 +10 +ENDCHAR +STARTCHAR omicron +ENCODING 959 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR pi +ENCODING 960 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR rho +ENCODING 961 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR sigma1 +ENCODING 962 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +C0 +30 +60 +00 +ENDCHAR +STARTCHAR sigma +ENCODING 963 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +A0 +90 +60 +00 +ENDCHAR +STARTCHAR tau +ENCODING 964 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +40 +40 +20 +00 +ENDCHAR +STARTCHAR upsilon +ENCODING 965 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR phi +ENCODING 966 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +70 +50 +70 +20 +ENDCHAR +STARTCHAR chi +ENCODING 967 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +60 +60 +90 +90 +ENDCHAR +STARTCHAR psi +ENCODING 968 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +70 +70 +20 +20 +ENDCHAR +STARTCHAR omega +ENCODING 969 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR iotadieresis +ENCODING 970 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +00 +40 +40 +40 +20 +00 +ENDCHAR +STARTCHAR upsilondieresis +ENCODING 971 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +00 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR omicrontonos +ENCODING 972 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR upsilontonos +ENCODING 973 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR omegatonos +ENCODING 974 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni03D0 +ENCODING 976 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +A0 +D0 +90 +60 +00 +ENDCHAR +STARTCHAR theta1 +ENCODING 977 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +70 +10 +90 +60 +00 +ENDCHAR +STARTCHAR Upsilon1 +ENCODING 978 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni03D3 +ENCODING 979 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni03D4 +ENCODING 980 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +50 +20 +20 +00 +ENDCHAR +STARTCHAR phi1 +ENCODING 981 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +70 +50 +70 +20 +ENDCHAR +STARTCHAR omega1 +ENCODING 982 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni03D7 +ENCODING 983 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +90 +60 +60 +90 +30 +ENDCHAR +STARTCHAR uni03DA +ENCODING 986 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +80 +80 +60 +10 +20 +ENDCHAR +STARTCHAR uni03DB +ENCODING 987 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +C0 +30 +60 +00 +ENDCHAR +STARTCHAR uni03DC +ENCODING 988 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +80 +00 +ENDCHAR +STARTCHAR uni03DD +ENCODING 989 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +40 +60 +40 +40 +ENDCHAR +STARTCHAR uni03DE +ENCODING 990 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +90 +B0 +D0 +90 +10 +00 +ENDCHAR +STARTCHAR uni03DF +ENCODING 991 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +80 +F0 +10 +20 +20 +ENDCHAR +STARTCHAR uni03E0 +ENCODING 992 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +60 +60 +90 +B0 +B0 +00 +ENDCHAR +STARTCHAR uni03E1 +ENCODING 993 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +20 +50 +B0 +50 +10 +10 +ENDCHAR +STARTCHAR uni03F0 +ENCODING 1008 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +60 +60 +B0 +00 +ENDCHAR +STARTCHAR uni03F1 +ENCODING 1009 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +E0 +80 +60 +ENDCHAR +STARTCHAR uni03F2 +ENCODING 1010 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +30 +40 +40 +30 +00 +ENDCHAR +STARTCHAR uni03F3 +ENCODING 1011 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +10 +10 +50 +20 +ENDCHAR +STARTCHAR uni03F4 +ENCODING 1012 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +F0 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni03F5 +ENCODING 1013 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +30 +60 +40 +30 +00 +ENDCHAR +STARTCHAR afii10023 +ENCODING 1025 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR afii10051 +ENCODING 1026 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +40 +60 +50 +50 +10 +20 +ENDCHAR +STARTCHAR afii10052 +ENCODING 1027 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +80 +80 +80 +80 +00 +ENDCHAR +STARTCHAR afii10053 +ENCODING 1028 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +C0 +80 +90 +60 +00 +ENDCHAR +STARTCHAR afii10054 +ENCODING 1029 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +20 +90 +60 +00 +ENDCHAR +STARTCHAR afii10055 +ENCODING 1030 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR afii10056 +ENCODING 1031 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR afii10057 +ENCODING 1032 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +10 +10 +10 +90 +60 +00 +ENDCHAR +STARTCHAR afii10058 +ENCODING 1033 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +A0 +B0 +A8 +A8 +B0 +00 +ENDCHAR +STARTCHAR afii10059 +ENCODING 1034 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +A0 +F0 +A8 +A8 +B0 +00 +ENDCHAR +STARTCHAR afii10060 +ENCODING 1035 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +40 +60 +50 +50 +50 +00 +ENDCHAR +STARTCHAR afii10061 +ENCODING 1036 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +A0 +C0 +C0 +A0 +90 +00 +ENDCHAR +STARTCHAR afii10062 +ENCODING 1038 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +20 +20 +40 +00 +ENDCHAR +STARTCHAR afii10145 +ENCODING 1039 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +50 +50 +70 +20 +ENDCHAR +STARTCHAR afii10017 +ENCODING 1040 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR afii10018 +ENCODING 1041 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +80 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR afii10019 +ENCODING 1042 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR afii10020 +ENCODING 1043 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +80 +80 +80 +80 +00 +ENDCHAR +STARTCHAR afii10021 +ENCODING 1044 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +50 +50 +50 +50 +F0 +90 +ENDCHAR +STARTCHAR afii10022 +ENCODING 1045 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR afii10024 +ENCODING 1046 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +A8 +70 +70 +A8 +A8 +00 +ENDCHAR +STARTCHAR afii10025 +ENCODING 1047 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +10 +60 +10 +90 +60 +00 +ENDCHAR +STARTCHAR afii10026 +ENCODING 1048 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +B0 +B0 +D0 +D0 +90 +00 +ENDCHAR +STARTCHAR afii10027 +ENCODING 1049 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +B0 +B0 +D0 +D0 +90 +00 +ENDCHAR +STARTCHAR afii10028 +ENCODING 1050 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +A0 +C0 +C0 +A0 +90 +00 +ENDCHAR +STARTCHAR afii10029 +ENCODING 1051 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +50 +50 +50 +50 +90 +00 +ENDCHAR +STARTCHAR afii10030 +ENCODING 1052 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +F0 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR afii10031 +ENCODING 1053 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR afii10032 +ENCODING 1054 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR afii10033 +ENCODING 1055 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +90 +90 +90 +90 +90 +00 +ENDCHAR +STARTCHAR afii10034 +ENCODING 1056 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +80 +80 +00 +ENDCHAR +STARTCHAR afii10035 +ENCODING 1057 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +80 +80 +90 +60 +00 +ENDCHAR +STARTCHAR afii10036 +ENCODING 1058 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR afii10037 +ENCODING 1059 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +20 +20 +40 +00 +ENDCHAR +STARTCHAR afii10038 +ENCODING 1060 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +50 +50 +70 +20 +00 +ENDCHAR +STARTCHAR afii10039 +ENCODING 1061 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +60 +60 +90 +90 +00 +ENDCHAR +STARTCHAR afii10040 +ENCODING 1062 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +F0 +10 +ENDCHAR +STARTCHAR afii10041 +ENCODING 1063 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +70 +10 +10 +00 +ENDCHAR +STARTCHAR afii10042 +ENCODING 1064 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +A8 +A8 +A8 +A8 +F8 +00 +ENDCHAR +STARTCHAR afii10043 +ENCODING 1065 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +A8 +A8 +A8 +A8 +F8 +08 +ENDCHAR +STARTCHAR afii10044 +ENCODING 1066 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +40 +60 +50 +50 +60 +00 +ENDCHAR +STARTCHAR afii10045 +ENCODING 1067 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +D0 +B0 +B0 +D0 +00 +ENDCHAR +STARTCHAR afii10046 +ENCODING 1068 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR afii10047 +ENCODING 1069 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +30 +10 +90 +60 +00 +ENDCHAR +STARTCHAR afii10048 +ENCODING 1070 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +D0 +D0 +D0 +A0 +00 +ENDCHAR +STARTCHAR afii10049 +ENCODING 1071 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +90 +90 +70 +50 +90 +00 +ENDCHAR +STARTCHAR afii10065 +ENCODING 1072 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR afii10066 +ENCODING 1073 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +80 +E0 +90 +60 +00 +ENDCHAR +STARTCHAR afii10067 +ENCODING 1074 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +E0 +90 +E0 +00 +ENDCHAR +STARTCHAR afii10068 +ENCODING 1075 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +80 +80 +80 +00 +ENDCHAR +STARTCHAR afii10069 +ENCODING 1076 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +30 +50 +50 +F0 +90 +ENDCHAR +STARTCHAR afii10070 +ENCODING 1077 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR afii10072 +ENCODING 1078 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A8 +70 +70 +A8 +00 +ENDCHAR +STARTCHAR afii10073 +ENCODING 1079 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +60 +20 +C0 +00 +ENDCHAR +STARTCHAR afii10074 +ENCODING 1080 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +B0 +D0 +90 +00 +ENDCHAR +STARTCHAR afii10075 +ENCODING 1081 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +90 +B0 +D0 +90 +00 +ENDCHAR +STARTCHAR afii10076 +ENCODING 1082 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +E0 +A0 +90 +00 +ENDCHAR +STARTCHAR afii10077 +ENCODING 1083 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +30 +50 +50 +90 +00 +ENDCHAR +STARTCHAR afii10078 +ENCODING 1084 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +88 +D8 +A8 +A8 +00 +ENDCHAR +STARTCHAR afii10079 +ENCODING 1085 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR afii10080 +ENCODING 1086 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR afii10081 +ENCODING 1087 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR afii10082 +ENCODING 1088 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR afii10083 +ENCODING 1089 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +80 +80 +60 +00 +ENDCHAR +STARTCHAR afii10084 +ENCODING 1090 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +40 +40 +40 +00 +ENDCHAR +STARTCHAR afii10085 +ENCODING 1091 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +50 +20 +40 +ENDCHAR +STARTCHAR afii10086 +ENCODING 1092 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +20 +70 +50 +70 +20 +ENDCHAR +STARTCHAR afii10087 +ENCODING 1093 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +60 +60 +90 +00 +ENDCHAR +STARTCHAR afii10088 +ENCODING 1094 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +F0 +10 +ENDCHAR +STARTCHAR afii10089 +ENCODING 1095 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +70 +10 +00 +ENDCHAR +STARTCHAR afii10090 +ENCODING 1096 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A8 +A8 +A8 +F8 +00 +ENDCHAR +STARTCHAR afii10091 +ENCODING 1097 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A8 +A8 +A8 +F8 +08 +ENDCHAR +STARTCHAR afii10092 +ENCODING 1098 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +C0 +60 +50 +60 +00 +ENDCHAR +STARTCHAR afii10093 +ENCODING 1099 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +D0 +B0 +D0 +00 +ENDCHAR +STARTCHAR afii10094 +ENCODING 1100 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +80 +E0 +90 +E0 +00 +ENDCHAR +STARTCHAR afii10095 +ENCODING 1101 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +30 +10 +60 +00 +ENDCHAR +STARTCHAR afii10096 +ENCODING 1102 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A0 +D0 +D0 +A0 +00 +ENDCHAR +STARTCHAR afii10097 +ENCODING 1103 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +A0 +60 +A0 +00 +ENDCHAR +STARTCHAR afii10071 +ENCODING 1105 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +00 +60 +B0 +C0 +60 +00 +ENDCHAR +STARTCHAR afii10099 +ENCODING 1106 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +E0 +40 +60 +50 +10 +20 +ENDCHAR +STARTCHAR afii10100 +ENCODING 1107 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +F0 +80 +80 +80 +00 +ENDCHAR +STARTCHAR afii10101 +ENCODING 1108 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +30 +60 +40 +30 +00 +ENDCHAR +STARTCHAR afii10102 +ENCODING 1109 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +C0 +30 +E0 +00 +ENDCHAR +STARTCHAR afii10103 +ENCODING 1110 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR afii10104 +ENCODING 1111 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR afii10105 +ENCODING 1112 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +10 +10 +50 +20 +ENDCHAR +STARTCHAR afii10106 +ENCODING 1113 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +B8 +A8 +B0 +00 +ENDCHAR +STARTCHAR afii10107 +ENCODING 1114 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A0 +F0 +A8 +B0 +00 +ENDCHAR +STARTCHAR afii10108 +ENCODING 1115 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +E0 +40 +70 +48 +48 +00 +ENDCHAR +STARTCHAR afii10109 +ENCODING 1116 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +90 +E0 +A0 +90 +00 +ENDCHAR +STARTCHAR afii10110 +ENCODING 1118 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +00 +90 +50 +20 +40 +ENDCHAR +STARTCHAR afii10193 +ENCODING 1119 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +50 +50 +70 +20 +ENDCHAR +STARTCHAR afii10050 +ENCODING 1168 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +F0 +80 +80 +80 +80 +00 +ENDCHAR +STARTCHAR afii10098 +ENCODING 1169 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +F0 +80 +80 +80 +00 +ENDCHAR +STARTCHAR uni0492 +ENCODING 1170 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR uni0493 +ENCODING 1171 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +40 +E0 +40 +00 +ENDCHAR +STARTCHAR uni0496 +ENCODING 1174 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +A8 +70 +70 +A8 +A8 +08 +ENDCHAR +STARTCHAR uni0497 +ENCODING 1175 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A8 +70 +70 +A8 +08 +ENDCHAR +STARTCHAR uni049A +ENCODING 1178 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +A0 +C0 +C0 +A0 +90 +08 +ENDCHAR +STARTCHAR uni049B +ENCODING 1179 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +E0 +A0 +90 +08 +ENDCHAR +STARTCHAR uni04AE +ENCODING 1198 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni04AF +ENCODING 1199 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +50 +20 +20 +20 +ENDCHAR +STARTCHAR uni04B0 +ENCODING 1200 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +20 +70 +20 +20 +00 +ENDCHAR +STARTCHAR uni04B1 +ENCODING 1201 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +20 +70 +20 +20 +ENDCHAR +STARTCHAR uni04B2 +ENCODING 1202 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +60 +60 +90 +90 +08 +ENDCHAR +STARTCHAR uni04B3 +ENCODING 1203 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +60 +60 +90 +08 +ENDCHAR +STARTCHAR uni04BA +ENCODING 1210 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +E0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR uni04BB +ENCODING 1211 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +60 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni04D8 +ENCODING 1240 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +10 +F0 +90 +60 +00 +ENDCHAR +STARTCHAR afii10846 +ENCODING 1241 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +30 +D0 +60 +00 +ENDCHAR +STARTCHAR uni04E2 +ENCODING 1250 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni04E3 +ENCODING 1251 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +60 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni04E8 +ENCODING 1256 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +F0 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni04E9 +ENCODING 1257 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +F0 +90 +60 +00 +ENDCHAR +STARTCHAR uni04EE +ENCODING 1262 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni04EF +ENCODING 1263 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +90 +90 +90 +70 +00 +ENDCHAR +STARTCHAR afii57664 +ENCODING 1488 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +50 +A0 +90 +00 +ENDCHAR +STARTCHAR afii57665 +ENCODING 1489 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +20 +20 +F0 +00 +ENDCHAR +STARTCHAR afii57666 +ENCODING 1490 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +20 +20 +20 +D0 +00 +ENDCHAR +STARTCHAR afii57667 +ENCODING 1491 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +20 +20 +20 +00 +ENDCHAR +STARTCHAR afii57668 +ENCODING 1492 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +10 +90 +90 +00 +ENDCHAR +STARTCHAR afii57669 +ENCODING 1493 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR afii57670 +ENCODING 1494 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +20 +20 +20 +00 +ENDCHAR +STARTCHAR afii57671 +ENCODING 1495 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +50 +50 +50 +00 +ENDCHAR +STARTCHAR afii57672 +ENCODING 1496 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +F0 +00 +ENDCHAR +STARTCHAR afii57673 +ENCODING 1497 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57674 +ENCODING 1498 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +10 +20 +20 +00 +ENDCHAR +STARTCHAR afii57675 +ENCODING 1499 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +70 +10 +10 +E0 +00 +ENDCHAR +STARTCHAR afii57676 +ENCODING 1500 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +70 +10 +20 +40 +00 +ENDCHAR +STARTCHAR afii57677 +ENCODING 1501 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +70 +90 +90 +F0 +00 +ENDCHAR +STARTCHAR afii57678 +ENCODING 1502 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +70 +90 +90 +B0 +00 +ENDCHAR +STARTCHAR afii57679 +ENCODING 1503 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +20 +40 +40 +40 +00 +ENDCHAR +STARTCHAR afii57680 +ENCODING 1504 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +20 +20 +20 +60 +00 +ENDCHAR +STARTCHAR afii57681 +ENCODING 1505 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +78 +48 +48 +30 +00 +ENDCHAR +STARTCHAR afii57682 +ENCODING 1506 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +50 +50 +F0 +00 +ENDCHAR +STARTCHAR afii57683 +ENCODING 1507 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +10 +10 +00 +ENDCHAR +STARTCHAR afii57684 +ENCODING 1508 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +90 +10 +F0 +00 +ENDCHAR +STARTCHAR afii57685 +ENCODING 1509 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +60 +40 +40 +00 +ENDCHAR +STARTCHAR afii57686 +ENCODING 1510 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +60 +20 +F0 +00 +ENDCHAR +STARTCHAR afii57687 +ENCODING 1511 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +10 +A0 +80 +00 +ENDCHAR +STARTCHAR afii57688 +ENCODING 1512 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +10 +10 +10 +00 +ENDCHAR +STARTCHAR afii57689 +ENCODING 1513 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A8 +C8 +88 +F0 +00 +ENDCHAR +STARTCHAR afii57690 +ENCODING 1514 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +50 +50 +D0 +00 +ENDCHAR +STARTCHAR uni16A0 +ENCODING 5792 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +60 +50 +60 +40 +40 +00 +ENDCHAR +STARTCHAR uni16A2 +ENCODING 5794 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +50 +50 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni16A3 +ENCODING 5795 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +50 +70 +70 +70 +00 +ENDCHAR +STARTCHAR uni16A6 +ENCODING 5798 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +60 +50 +50 +60 +40 +00 +ENDCHAR +STARTCHAR uni16A9 +ENCODING 5801 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +80 +80 +80 +80 +00 +ENDCHAR +STARTCHAR uni16AA +ENCODING 5802 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +80 +C0 +A0 +80 +00 +ENDCHAR +STARTCHAR uni16AB +ENCODING 5803 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +50 +60 +50 +40 +40 +00 +ENDCHAR +STARTCHAR uni16B1 +ENCODING 5809 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +A0 +C0 +A0 +80 +00 +ENDCHAR +STARTCHAR uni16B3 +ENCODING 5811 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +60 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni16B7 +ENCODING 5815 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +20 +20 +50 +50 +00 +ENDCHAR +STARTCHAR uni16B8 +ENCODING 5816 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +70 +A8 +A8 +70 +50 +00 +ENDCHAR +STARTCHAR uni16B9 +ENCODING 5817 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +50 +50 +60 +40 +40 +00 +ENDCHAR +STARTCHAR uni16BB +ENCODING 5819 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +D0 +B0 +D0 +B0 +00 +ENDCHAR +STARTCHAR uni16BE +ENCODING 5822 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +60 +30 +20 +20 +00 +ENDCHAR +STARTCHAR uni16C0 +ENCODING 5824 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni16C4 +ENCODING 5828 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +A8 +A8 +70 +20 +00 +ENDCHAR +STARTCHAR uni16C7 +ENCODING 5831 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +30 +28 +A0 +60 +20 +00 +ENDCHAR +STARTCHAR uni16C8 +ENCODING 5832 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +80 +80 +A0 +D0 +00 +ENDCHAR +STARTCHAR uni16C9 +ENCODING 5833 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +A8 +A8 +70 +20 +20 +00 +ENDCHAR +STARTCHAR uni16CB +ENCODING 5835 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +90 +B0 +D0 +90 +10 +00 +ENDCHAR +STARTCHAR uni16CF +ENCODING 5839 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +A8 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni16D2 +ENCODING 5842 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +E0 +E0 +90 +E0 +00 +ENDCHAR +STARTCHAR uni16D6 +ENCODING 5846 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +88 +D8 +A8 +88 +88 +88 +00 +ENDCHAR +STARTCHAR uni16D7 +ENCODING 5847 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +88 +D8 +A8 +D8 +88 +88 +00 +ENDCHAR +STARTCHAR uni16DA +ENCODING 5850 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +60 +50 +40 +40 +40 +00 +ENDCHAR +STARTCHAR uni16DD +ENCODING 5853 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni16DE +ENCODING 5854 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +88 +88 +D8 +A8 +D8 +88 +00 +ENDCHAR +STARTCHAR uni16DF +ENCODING 5855 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +50 +20 +50 +50 +00 +ENDCHAR +STARTCHAR uni16E0 +ENCODING 5856 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +70 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni16E1 +ENCODING 5857 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +70 +70 +A8 +20 +20 +00 +ENDCHAR +STARTCHAR uni16E2 +ENCODING 5858 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +28 +30 +20 +20 +60 +A0 +00 +ENDCHAR +STARTCHAR uni16E3 +ENCODING 5859 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +70 +A8 +A8 +00 +ENDCHAR +STARTCHAR uni16E4 +ENCODING 5860 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +F0 +90 +90 +F0 +90 +00 +ENDCHAR +STARTCHAR uni16EB +ENCODING 5867 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni16EC +ENCODING 5868 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +00 +20 +00 +00 +ENDCHAR +STARTCHAR uni16ED +ENCODING 5869 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +20 +50 +00 +00 +ENDCHAR +STARTCHAR uni1E02 +ENCODING 7682 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +E0 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR uni1E03 +ENCODING 7683 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +80 +80 +E0 +90 +E0 +00 +ENDCHAR +STARTCHAR uni1E0A +ENCODING 7690 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +90 +90 +E0 +00 +ENDCHAR +STARTCHAR uni1E0B +ENCODING 7691 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +10 +10 +70 +90 +70 +00 +ENDCHAR +STARTCHAR uni1E1E +ENCODING 7710 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +E0 +80 +80 +80 +00 +ENDCHAR +STARTCHAR uni1E1F +ENCODING 7711 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +20 +40 +E0 +40 +40 +00 +ENDCHAR +STARTCHAR uni1E40 +ENCODING 7744 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +F0 +F0 +90 +90 +90 +00 +ENDCHAR +STARTCHAR uni1E41 +ENCODING 7745 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +A0 +F0 +90 +90 +00 +ENDCHAR +STARTCHAR uni1E56 +ENCODING 7766 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +E0 +80 +80 +00 +ENDCHAR +STARTCHAR uni1E57 +ENCODING 7767 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +E0 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR uni1E60 +ENCODING 7776 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +40 +20 +90 +60 +00 +ENDCHAR +STARTCHAR uni1E61 +ENCODING 7777 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +70 +C0 +30 +E0 +00 +ENDCHAR +STARTCHAR uni1E6A +ENCODING 7786 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni1E6B +ENCODING 7787 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +20 +70 +20 +20 +10 +00 +ENDCHAR +STARTCHAR Wgrave +ENCODING 7808 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +F0 +F0 +90 +00 +ENDCHAR +STARTCHAR wgrave +ENCODING 7809 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +00 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR Wacute +ENCODING 7810 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +F0 +F0 +90 +00 +ENDCHAR +STARTCHAR wacute +ENCODING 7811 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +00 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR Wdieresis +ENCODING 7812 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +F0 +F0 +90 +00 +ENDCHAR +STARTCHAR wdieresis +ENCODING 7813 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +A0 +00 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR Ygrave +ENCODING 7922 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR ygrave +ENCODING 7923 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +00 +90 +50 +20 +40 +ENDCHAR +STARTCHAR uni1F00 +ENCODING 7936 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1F01 +ENCODING 7937 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1F02 +ENCODING 7938 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1F03 +ENCODING 7939 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1F04 +ENCODING 7940 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1F05 +ENCODING 7941 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1F06 +ENCODING 7942 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1F07 +ENCODING 7943 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1F08 +ENCODING 7944 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F09 +ENCODING 7945 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F0A +ENCODING 7946 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F0B +ENCODING 7947 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F0C +ENCODING 7948 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F0D +ENCODING 7949 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F0E +ENCODING 7950 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F0F +ENCODING 7951 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F10 +ENCODING 7952 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +10 +70 +20 +40 +30 +00 +ENDCHAR +STARTCHAR uni1F11 +ENCODING 7953 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +20 +70 +20 +40 +30 +00 +ENDCHAR +STARTCHAR uni1F12 +ENCODING 7954 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +E0 +40 +80 +60 +00 +ENDCHAR +STARTCHAR uni1F13 +ENCODING 7955 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +E0 +40 +80 +60 +00 +ENDCHAR +STARTCHAR uni1F14 +ENCODING 7956 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +E0 +40 +80 +60 +00 +ENDCHAR +STARTCHAR uni1F15 +ENCODING 7957 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +E0 +40 +80 +60 +00 +ENDCHAR +STARTCHAR uni1F18 +ENCODING 7960 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +C0 +60 +40 +40 +70 +00 +ENDCHAR +STARTCHAR uni1F19 +ENCODING 7961 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +C0 +60 +40 +40 +70 +00 +ENDCHAR +STARTCHAR uni1F1A +ENCODING 7962 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +C0 +60 +40 +40 +70 +00 +ENDCHAR +STARTCHAR uni1F1B +ENCODING 7963 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +C0 +60 +40 +40 +70 +00 +ENDCHAR +STARTCHAR uni1F1C +ENCODING 7964 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +C0 +60 +40 +40 +70 +00 +ENDCHAR +STARTCHAR uni1F1D +ENCODING 7965 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +C0 +60 +40 +40 +70 +00 +ENDCHAR +STARTCHAR uni1F20 +ENCODING 7968 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1F21 +ENCODING 7969 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1F22 +ENCODING 7970 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1F23 +ENCODING 7971 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1F24 +ENCODING 7972 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1F25 +ENCODING 7973 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1F26 +ENCODING 7974 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1F27 +ENCODING 7975 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1F28 +ENCODING 7976 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F29 +ENCODING 7977 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F2A +ENCODING 7978 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F2B +ENCODING 7979 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F2C +ENCODING 7980 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F2D +ENCODING 7981 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F2E +ENCODING 7982 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F2F +ENCODING 7983 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni1F30 +ENCODING 7984 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1F31 +ENCODING 7985 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1F32 +ENCODING 7986 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1F33 +ENCODING 7987 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1F34 +ENCODING 7988 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1F35 +ENCODING 7989 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1F36 +ENCODING 7990 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +40 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1F37 +ENCODING 7991 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +40 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1F38 +ENCODING 7992 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1F39 +ENCODING 7993 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1F3A +ENCODING 7994 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1F3B +ENCODING 7995 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1F3C +ENCODING 7996 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1F3D +ENCODING 7997 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1F3E +ENCODING 7998 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1F3F +ENCODING 7999 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1F40 +ENCODING 8000 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F41 +ENCODING 8001 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F42 +ENCODING 8002 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F43 +ENCODING 8003 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F44 +ENCODING 8004 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F45 +ENCODING 8005 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F48 +ENCODING 8008 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR uni1F49 +ENCODING 8009 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR uni1F4A +ENCODING 8010 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR uni1F4B +ENCODING 8011 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR uni1F4C +ENCODING 8012 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR uni1F4D +ENCODING 8013 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR uni1F50 +ENCODING 8016 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F51 +ENCODING 8017 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F52 +ENCODING 8018 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F53 +ENCODING 8019 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F54 +ENCODING 8020 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F55 +ENCODING 8021 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F56 +ENCODING 8022 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F57 +ENCODING 8023 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F59 +ENCODING 8025 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni1F5B +ENCODING 8027 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni1F5D +ENCODING 8029 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni1F5F +ENCODING 8031 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni1F60 +ENCODING 8032 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1F61 +ENCODING 8033 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1F62 +ENCODING 8034 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1F63 +ENCODING 8035 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1F64 +ENCODING 8036 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1F65 +ENCODING 8037 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1F66 +ENCODING 8038 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1F67 +ENCODING 8039 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1F68 +ENCODING 8040 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni1F69 +ENCODING 8041 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni1F6A +ENCODING 8042 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni1F6B +ENCODING 8043 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni1F6C +ENCODING 8044 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni1F6D +ENCODING 8045 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni1F6E +ENCODING 8046 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni1F6F +ENCODING 8047 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni1F70 +ENCODING 8048 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1F71 +ENCODING 8049 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1F72 +ENCODING 8050 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +70 +20 +40 +30 +00 +ENDCHAR +STARTCHAR uni1F73 +ENCODING 8051 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +70 +20 +40 +30 +00 +ENDCHAR +STARTCHAR uni1F74 +ENCODING 8052 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +40 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1F75 +ENCODING 8053 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1F76 +ENCODING 8054 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +40 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1F77 +ENCODING 8055 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1F78 +ENCODING 8056 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +40 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F79 +ENCODING 8057 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F7A +ENCODING 8058 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F7B +ENCODING 8059 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1F7C +ENCODING 8060 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1F7D +ENCODING 8061 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1F80 +ENCODING 8064 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1F81 +ENCODING 8065 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1F82 +ENCODING 8066 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1F83 +ENCODING 8067 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1F84 +ENCODING 8068 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1F85 +ENCODING 8069 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1F86 +ENCODING 8070 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1F87 +ENCODING 8071 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1F88 +ENCODING 8072 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F89 +ENCODING 8073 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F8A +ENCODING 8074 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F8B +ENCODING 8075 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F8C +ENCODING 8076 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F8D +ENCODING 8077 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F8E +ENCODING 8078 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F8F +ENCODING 8079 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F90 +ENCODING 8080 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1F91 +ENCODING 8081 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1F92 +ENCODING 8082 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1F93 +ENCODING 8083 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1F94 +ENCODING 8084 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1F95 +ENCODING 8085 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1F96 +ENCODING 8086 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1F97 +ENCODING 8087 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1F98 +ENCODING 8088 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F99 +ENCODING 8089 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F9A +ENCODING 8090 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F9B +ENCODING 8091 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F9C +ENCODING 8092 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F9D +ENCODING 8093 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F9E +ENCODING 8094 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +20 +ENDCHAR +STARTCHAR uni1F9F +ENCODING 8095 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +20 +ENDCHAR +STARTCHAR uni1FA0 +ENCODING 8096 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FA1 +ENCODING 8097 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FA2 +ENCODING 8098 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FA3 +ENCODING 8099 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FA4 +ENCODING 8100 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FA5 +ENCODING 8101 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FA6 +ENCODING 8102 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FA7 +ENCODING 8103 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FA8 +ENCODING 8104 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +20 +ENDCHAR +STARTCHAR uni1FA9 +ENCODING 8105 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +20 +ENDCHAR +STARTCHAR uni1FAA +ENCODING 8106 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +20 +ENDCHAR +STARTCHAR uni1FAB +ENCODING 8107 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +20 +ENDCHAR +STARTCHAR uni1FAC +ENCODING 8108 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +20 +ENDCHAR +STARTCHAR uni1FAD +ENCODING 8109 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +20 +ENDCHAR +STARTCHAR uni1FAE +ENCODING 8110 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +20 +ENDCHAR +STARTCHAR uni1FAF +ENCODING 8111 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +20 +ENDCHAR +STARTCHAR uni1FB0 +ENCODING 8112 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1FB1 +ENCODING 8113 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1FB2 +ENCODING 8114 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1FB3 +ENCODING 8115 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1FB4 +ENCODING 8116 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1FB6 +ENCODING 8118 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +70 +90 +B0 +50 +00 +ENDCHAR +STARTCHAR uni1FB7 +ENCODING 8119 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +70 +90 +B0 +50 +40 +ENDCHAR +STARTCHAR uni1FB8 +ENCODING 8120 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +60 +90 +F0 +90 +00 +ENDCHAR +STARTCHAR uni1FB9 +ENCODING 8121 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +60 +90 +F0 +90 +00 +ENDCHAR +STARTCHAR uni1FBA +ENCODING 8122 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR uni1FBB +ENCODING 8123 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +70 +50 +50 +00 +ENDCHAR +STARTCHAR uni1FBC +ENCODING 8124 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +F0 +90 +90 +40 +ENDCHAR +STARTCHAR uni1FBD +ENCODING 8125 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FBE +ENCODING 8126 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1FBF +ENCODING 8127 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FC0 +ENCODING 8128 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FC1 +ENCODING 8129 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +A0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FC2 +ENCODING 8130 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +40 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1FC3 +ENCODING 8131 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1FC4 +ENCODING 8132 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1FC6 +ENCODING 8134 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +E0 +90 +90 +90 +10 +ENDCHAR +STARTCHAR uni1FC7 +ENCODING 8135 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +E0 +90 +90 +10 +90 +ENDCHAR +STARTCHAR uni1FC8 +ENCODING 8136 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +C0 +60 +40 +40 +70 +00 +ENDCHAR +STARTCHAR uni1FC9 +ENCODING 8137 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +C0 +60 +40 +40 +70 +00 +ENDCHAR +STARTCHAR uni1FCA +ENCODING 8138 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni1FCB +ENCODING 8139 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +70 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni1FCC +ENCODING 8140 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +F0 +90 +90 +90 +40 +ENDCHAR +STARTCHAR uni1FCD +ENCODING 8141 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +50 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FCE +ENCODING 8142 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FCF +ENCODING 8143 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FD0 +ENCODING 8144 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +40 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1FD1 +ENCODING 8145 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +40 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1FD2 +ENCODING 8146 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +20 +00 +20 +20 +10 +00 +ENDCHAR +STARTCHAR uni1FD3 +ENCODING 8147 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +B0 +40 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1FD6 +ENCODING 8150 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +00 +40 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1FD7 +ENCODING 8151 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +A0 +00 +40 +40 +20 +00 +ENDCHAR +STARTCHAR uni1FD8 +ENCODING 8152 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +70 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1FD9 +ENCODING 8153 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +70 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1FDA +ENCODING 8154 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1FDB +ENCODING 8155 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +A0 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni1FDD +ENCODING 8157 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +90 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FDE +ENCODING 8158 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +A0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FDF +ENCODING 8159 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FE0 +ENCODING 8160 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1FE1 +ENCODING 8161 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1FE2 +ENCODING 8162 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +20 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1FE3 +ENCODING 8163 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +B0 +40 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1FE4 +ENCODING 8164 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +60 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR uni1FE5 +ENCODING 8165 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +60 +90 +90 +E0 +80 +ENDCHAR +STARTCHAR uni1FE6 +ENCODING 8166 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1FE7 +ENCODING 8167 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +90 +00 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni1FE8 +ENCODING 8168 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +60 +A0 +A0 +40 +40 +00 +ENDCHAR +STARTCHAR uni1FE9 +ENCODING 8169 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +A0 +A0 +40 +40 +00 +ENDCHAR +STARTCHAR uni1FEA +ENCODING 8170 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni1FEB +ENCODING 8171 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +D0 +50 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni1FEC +ENCODING 8172 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +D0 +50 +60 +40 +40 +00 +ENDCHAR +STARTCHAR uni1FED +ENCODING 8173 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D0 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FEE +ENCODING 8174 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +B0 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FEF +ENCODING 8175 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FF2 +ENCODING 8178 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FF3 +ENCODING 8179 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FF4 +ENCODING 8180 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FF6 +ENCODING 8182 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +90 +90 +F0 +F0 +00 +ENDCHAR +STARTCHAR uni1FF7 +ENCODING 8183 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +00 +90 +90 +F0 +F0 +40 +ENDCHAR +STARTCHAR uni1FF8 +ENCODING 8184 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR uni1FF9 +ENCODING 8185 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR uni1FFA +ENCODING 8186 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni1FFB +ENCODING 8187 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +50 +50 +20 +50 +00 +ENDCHAR +STARTCHAR uni1FFC +ENCODING 8188 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +50 +50 +20 +50 +20 +ENDCHAR +STARTCHAR uni1FFD +ENCODING 8189 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1FFE +ENCODING 8190 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2010 +ENCODING 8208 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +70 +00 +00 +00 +ENDCHAR +STARTCHAR uni2011 +ENCODING 8209 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +70 +00 +00 +00 +ENDCHAR +STARTCHAR figuredash +ENCODING 8210 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR endash +ENCODING 8211 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR emdash +ENCODING 8212 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR afii00208 +ENCODING 8213 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2016 +ENCODING 8214 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +50 +50 +50 +00 +ENDCHAR +STARTCHAR underscoredbl +ENCODING 8215 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +F0 +00 +F0 +ENDCHAR +STARTCHAR quoteleft +ENCODING 8216 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quoteright +ENCODING 8217 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotesinglbase +ENCODING 8218 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +60 +20 +40 +ENDCHAR +STARTCHAR quotereversed +ENCODING 8219 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +40 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblleft +ENCODING 8220 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblright +ENCODING 8221 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblbase +ENCODING 8222 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +50 +50 +A0 +ENDCHAR +STARTCHAR uni201F +ENCODING 8223 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +A0 +50 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dagger +ENCODING 8224 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +20 +20 +20 +00 +ENDCHAR +STARTCHAR daggerdbl +ENCODING 8225 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +20 +70 +20 +00 +ENDCHAR +STARTCHAR bullet +ENCODING 8226 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +F0 +F0 +60 +00 +ENDCHAR +STARTCHAR uni2023 +ENCODING 8227 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +60 +70 +60 +40 +00 +ENDCHAR +STARTCHAR onedotenleader +ENCODING 8228 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +20 +00 +ENDCHAR +STARTCHAR twodotenleader +ENCODING 8229 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +50 +00 +ENDCHAR +STARTCHAR ellipsis +ENCODING 8230 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +A8 +00 +ENDCHAR +STARTCHAR uni2027 +ENCODING 8231 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +60 +00 +00 +00 +ENDCHAR +STARTCHAR perthousand +ENCODING 8240 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +90 +20 +40 +A8 +28 +00 +ENDCHAR +STARTCHAR minute +ENCODING 8242 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR second +ENCODING 8243 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2034 +ENCODING 8244 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +70 +E0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2035 +ENCODING 8245 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2036 +ENCODING 8246 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +A0 +50 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2037 +ENCODING 8247 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +E0 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR guilsinglleft +ENCODING 8249 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +40 +20 +00 +00 +ENDCHAR +STARTCHAR guilsinglright +ENCODING 8250 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +20 +40 +00 +00 +ENDCHAR +STARTCHAR exclamdbl +ENCODING 8252 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +50 +00 +50 +00 +ENDCHAR +STARTCHAR uni203E +ENCODING 8254 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR fraction +ENCODING 8260 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +20 +40 +80 +00 +00 +ENDCHAR +STARTCHAR zerosuperior +ENCODING 8304 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +50 +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni2071 +ENCODING 8305 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +20 +20 +00 +00 +00 +ENDCHAR +STARTCHAR foursuperior +ENCODING 8308 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +60 +70 +20 +00 +00 +00 +ENDCHAR +STARTCHAR fivesuperior +ENCODING 8309 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +60 +10 +60 +00 +00 +00 +ENDCHAR +STARTCHAR sixsuperior +ENCODING 8310 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +60 +50 +20 +00 +00 +00 +ENDCHAR +STARTCHAR sevensuperior +ENCODING 8311 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +10 +20 +20 +00 +00 +00 +ENDCHAR +STARTCHAR eightsuperior +ENCODING 8312 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +20 +50 +20 +00 +00 +ENDCHAR +STARTCHAR ninesuperior +ENCODING 8313 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +30 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uni207A +ENCODING 8314 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni207B +ENCODING 8315 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni207C +ENCODING 8316 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +00 +70 +00 +00 +00 +ENDCHAR +STARTCHAR parenleftsuperior +ENCODING 8317 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +40 +40 +20 +00 +00 +00 +ENDCHAR +STARTCHAR parenrightsuperior +ENCODING 8318 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +10 +10 +20 +00 +00 +00 +ENDCHAR +STARTCHAR nsuperior +ENCODING 8319 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +50 +50 +00 +00 +00 +ENDCHAR +STARTCHAR zeroinferior +ENCODING 8320 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +20 +50 +50 +20 +ENDCHAR +STARTCHAR oneinferior +ENCODING 8321 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +20 +60 +20 +70 +ENDCHAR +STARTCHAR twoinferior +ENCODING 8322 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +60 +20 +40 +60 +ENDCHAR +STARTCHAR threeinferior +ENCODING 8323 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +60 +60 +20 +60 +ENDCHAR +STARTCHAR fourinferior +ENCODING 8324 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +20 +60 +70 +20 +ENDCHAR +STARTCHAR fiveinferior +ENCODING 8325 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +70 +60 +10 +60 +ENDCHAR +STARTCHAR sixinferior +ENCODING 8326 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +30 +60 +50 +20 +ENDCHAR +STARTCHAR seveninferior +ENCODING 8327 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +70 +10 +20 +20 +ENDCHAR +STARTCHAR eightinferior +ENCODING 8328 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +50 +20 +50 +20 +ENDCHAR +STARTCHAR nineinferior +ENCODING 8329 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +20 +50 +30 +60 +ENDCHAR +STARTCHAR uni208A +ENCODING 8330 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +20 +70 +20 +ENDCHAR +STARTCHAR uni208B +ENCODING 8331 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +70 +00 +ENDCHAR +STARTCHAR uni208C +ENCODING 8332 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +70 +00 +70 +ENDCHAR +STARTCHAR parenleftinferior +ENCODING 8333 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +20 +40 +40 +20 +ENDCHAR +STARTCHAR parenrightinferior +ENCODING 8334 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +20 +10 +10 +20 +ENDCHAR +STARTCHAR franc +ENCODING 8355 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +80 +D8 +A0 +A0 +A0 +00 +ENDCHAR +STARTCHAR lira +ENCODING 8356 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +40 +E0 +E0 +40 +B0 +00 +ENDCHAR +STARTCHAR peseta +ENCODING 8359 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +50 +F8 +70 +40 +40 +00 +ENDCHAR +STARTCHAR dong +ENCODING 8363 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +38 +70 +90 +90 +70 +F0 +ENDCHAR +STARTCHAR Euro +ENCODING 8364 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +40 +E0 +E0 +40 +30 +00 +ENDCHAR +STARTCHAR uni20AF +ENCODING 8367 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +60 +D0 +50 +D0 +E0 +00 +ENDCHAR +STARTCHAR uni20D0 +ENCODING 8400 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20D1 +ENCODING 8401 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20D2 +ENCODING 8402 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR uni20D3 +ENCODING 8403 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR uni20D4 +ENCODING 8404 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +D0 +D0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20D5 +ENCODING 8405 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +B0 +B0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20D6 +ENCODING 8406 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +F8 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20D7 +ENCODING 8407 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +F8 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2102 +ENCODING 8450 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +D0 +C0 +C0 +D0 +60 +00 +ENDCHAR +STARTCHAR afii61248 +ENCODING 8453 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +80 +70 +60 +A0 +50 +20 +ENDCHAR +STARTCHAR afii61289 +ENCODING 8467 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +20 +20 +50 +00 +ENDCHAR +STARTCHAR uni2115 +ENCODING 8469 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C8 +C8 +E8 +D8 +C8 +C8 +00 +ENDCHAR +STARTCHAR afii61352 +ENCODING 8470 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +A0 +A0 +B0 +A8 +B0 +00 +ENDCHAR +STARTCHAR uni211A +ENCODING 8474 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +D0 +D0 +D0 +F0 +70 +10 +ENDCHAR +STARTCHAR uni211D +ENCODING 8477 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +D0 +D0 +F0 +E0 +D0 +00 +ENDCHAR +STARTCHAR trademark +ENCODING 8482 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +00 +F8 +A8 +A8 +ENDCHAR +STARTCHAR uni2124 +ENCODING 8484 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +30 +60 +60 +C0 +F0 +00 +ENDCHAR +STARTCHAR Omega +ENCODING 8486 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +50 +50 +20 +70 +00 +ENDCHAR +STARTCHAR uni2127 +ENCODING 8487 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +50 +50 +50 +20 +00 +ENDCHAR +STARTCHAR estimated +ENCODING 8494 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +D8 +E0 +70 +00 +ENDCHAR +STARTCHAR oneeighth +ENCODING 8539 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +80 +B0 +30 +30 +30 +ENDCHAR +STARTCHAR threeeighths +ENCODING 8540 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +C0 +40 +F0 +30 +30 +30 +ENDCHAR +STARTCHAR fiveeighths +ENCODING 8541 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +80 +40 +B0 +30 +30 +30 +ENDCHAR +STARTCHAR seveneighths +ENCODING 8542 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +40 +80 +B0 +30 +30 +30 +ENDCHAR +STARTCHAR arrowleft +ENCODING 8592 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +F0 +40 +00 +00 +ENDCHAR +STARTCHAR arrowup +ENCODING 8593 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR arrowright +ENCODING 8594 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +F0 +20 +00 +00 +ENDCHAR +STARTCHAR arrowdown +ENCODING 8595 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +70 +20 +00 +ENDCHAR +STARTCHAR arrowboth +ENCODING 8596 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +F8 +50 +00 +00 +ENDCHAR +STARTCHAR arrowupdn +ENCODING 8597 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +20 +20 +70 +20 +00 +ENDCHAR +STARTCHAR uni21A4 +ENCODING 8612 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +F0 +50 +00 +00 +ENDCHAR +STARTCHAR uni21A5 +ENCODING 8613 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni21A6 +ENCODING 8614 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A0 +F0 +A0 +00 +00 +ENDCHAR +STARTCHAR uni21A7 +ENCODING 8615 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +70 +20 +00 +ENDCHAR +STARTCHAR arrowupdnbse +ENCODING 8616 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +20 +20 +70 +20 +70 +ENDCHAR +STARTCHAR uni21C4 +ENCODING 8644 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +F8 +10 +40 +F8 +40 +00 +ENDCHAR +STARTCHAR uni21C6 +ENCODING 8646 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +F8 +40 +10 +F8 +10 +00 +ENDCHAR +STARTCHAR uni21CB +ENCODING 8651 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +F0 +00 +F0 +20 +00 +ENDCHAR +STARTCHAR uni21CC +ENCODING 8652 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +F0 +00 +F0 +40 +00 +ENDCHAR +STARTCHAR arrowdblleft +ENCODING 8656 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +78 +80 +78 +20 +10 +ENDCHAR +STARTCHAR arrowdblup +ENCODING 8657 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +D8 +50 +50 +50 +00 +ENDCHAR +STARTCHAR arrowdblright +ENCODING 8658 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +F0 +08 +F0 +20 +40 +ENDCHAR +STARTCHAR arrowdbldown +ENCODING 8659 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +D8 +50 +20 +00 +ENDCHAR +STARTCHAR arrowdblboth +ENCODING 8660 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +88 +70 +20 +00 +ENDCHAR +STARTCHAR uni21D5 +ENCODING 8661 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +D8 +50 +D8 +50 +20 +ENDCHAR +STARTCHAR universal +ENCODING 8704 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +F0 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni2201 +ENCODING 8705 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +40 +40 +50 +20 +00 +ENDCHAR +STARTCHAR partialdiff +ENCODING 8706 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +10 +30 +50 +50 +20 +00 +ENDCHAR +STARTCHAR existential +ENCODING 8707 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +10 +70 +10 +10 +F0 +00 +ENDCHAR +STARTCHAR uni2204 +ENCODING 8708 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +F0 +50 +70 +50 +F0 +40 +ENDCHAR +STARTCHAR emptyset +ENCODING 8709 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +70 +B0 +D0 +D0 +E0 +80 +ENDCHAR +STARTCHAR Delta +ENCODING 8710 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +50 +50 +88 +F8 +00 +ENDCHAR +STARTCHAR gradient +ENCODING 8711 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +88 +50 +50 +20 +20 +00 +ENDCHAR +STARTCHAR element +ENCODING 8712 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +80 +F0 +80 +70 +00 +ENDCHAR +STARTCHAR notelement +ENCODING 8713 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +70 +A0 +F0 +A0 +70 +40 +ENDCHAR +STARTCHAR uni220A +ENCODING 8714 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +30 +40 +70 +40 +30 +00 +ENDCHAR +STARTCHAR suchthat +ENCODING 8715 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +E0 +10 +F0 +10 +E0 +00 +ENDCHAR +STARTCHAR uni220C +ENCODING 8716 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +E0 +50 +F0 +50 +E0 +80 +ENDCHAR +STARTCHAR uni220D +ENCODING 8717 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +60 +10 +70 +10 +60 +00 +ENDCHAR +STARTCHAR uni220E +ENCODING 8718 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +F0 +F0 +F0 +F0 +F0 +00 +ENDCHAR +STARTCHAR product +ENCODING 8719 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +50 +50 +50 +50 +D8 +00 +ENDCHAR +STARTCHAR uni2210 +ENCODING 8720 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +D8 +50 +50 +50 +50 +F8 +00 +ENDCHAR +STARTCHAR summation +ENCODING 8721 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +40 +20 +40 +80 +F0 +00 +ENDCHAR +STARTCHAR minus +ENCODING 8722 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2213 +ENCODING 8723 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +20 +20 +F8 +20 +20 +00 +ENDCHAR +STARTCHAR uni2214 +ENCODING 8724 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +20 +20 +F8 +20 +20 +ENDCHAR +STARTCHAR fraction +ENCODING 8725 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +10 +20 +40 +80 +80 +00 +ENDCHAR +STARTCHAR uni2216 +ENCODING 8726 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +80 +40 +20 +10 +00 +ENDCHAR +STARTCHAR asteriskmath +ENCODING 8727 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +A8 +70 +A8 +20 +00 +ENDCHAR +STARTCHAR uni2218 +ENCODING 8728 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +50 +20 +00 +00 +ENDCHAR +STARTCHAR periodcentered +ENCODING 8729 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +70 +20 +00 +00 +ENDCHAR +STARTCHAR radical +ENCODING 8730 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +08 +10 +10 +20 +A0 +40 +00 +ENDCHAR +STARTCHAR uni221B +ENCODING 8731 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +88 +D0 +90 +20 +A0 +40 +00 +ENDCHAR +STARTCHAR uni221C +ENCODING 8732 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +88 +D0 +50 +20 +A0 +40 +00 +ENDCHAR +STARTCHAR proportional +ENCODING 8733 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +A0 +A0 +50 +00 +ENDCHAR +STARTCHAR infinity +ENCODING 8734 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +A8 +A8 +50 +00 +ENDCHAR +STARTCHAR orthogonal +ENCODING 8735 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +80 +80 +80 +F0 +00 +ENDCHAR +STARTCHAR angle +ENCODING 8736 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +20 +40 +F0 +00 +ENDCHAR +STARTCHAR uni2221 +ENCODING 8737 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +A0 +40 +F0 +20 +ENDCHAR +STARTCHAR uni2222 +ENCODING 8738 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +50 +60 +A0 +60 +50 +00 +ENDCHAR +STARTCHAR uni2223 +ENCODING 8739 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR uni2224 +ENCODING 8740 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +30 +60 +20 +20 +00 +ENDCHAR +STARTCHAR uni2225 +ENCODING 8741 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +50 +50 +50 +00 +ENDCHAR +STARTCHAR uni2226 +ENCODING 8742 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +58 +70 +70 +D0 +50 +00 +ENDCHAR +STARTCHAR logicaland +ENCODING 8743 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +20 +50 +50 +00 +ENDCHAR +STARTCHAR logicalor +ENCODING 8744 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +50 +20 +20 +00 +ENDCHAR +STARTCHAR intersection +ENCODING 8745 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +90 +90 +00 +ENDCHAR +STARTCHAR union +ENCODING 8746 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR integral +ENCODING 8747 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +28 +20 +20 +20 +A0 +40 +ENDCHAR +STARTCHAR uni222C +ENCODING 8748 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +28 +50 +50 +50 +50 +50 +A0 +ENDCHAR +STARTCHAR uni222D +ENCODING 8749 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +38 +70 +70 +70 +70 +70 +E0 +ENDCHAR +STARTCHAR uni222E +ENCODING 8750 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +28 +70 +A8 +70 +A0 +40 +ENDCHAR +STARTCHAR uni222F +ENCODING 8751 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +28 +50 +70 +D8 +70 +50 +A0 +ENDCHAR +STARTCHAR uni2230 +ENCODING 8752 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +38 +70 +70 +F8 +70 +70 +E0 +ENDCHAR +STARTCHAR therefore +ENCODING 8756 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2235 +ENCODING 8757 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +20 +00 +00 +ENDCHAR +STARTCHAR uni2236 +ENCODING 8758 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +00 +00 +20 +00 +ENDCHAR +STARTCHAR uni2237 +ENCODING 8759 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +90 +00 +00 +90 +00 +ENDCHAR +STARTCHAR uni2238 +ENCODING 8760 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +20 +00 +F8 +00 +00 +ENDCHAR +STARTCHAR uni2239 +ENCODING 8761 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +C0 +10 +00 +00 +ENDCHAR +STARTCHAR uni223A +ENCODING 8762 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +90 +00 +F0 +00 +90 +00 +ENDCHAR +STARTCHAR similar +ENCODING 8764 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +50 +A0 +00 +00 +ENDCHAR +STARTCHAR uni2243 +ENCODING 8771 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +50 +A0 +00 +F0 +00 +00 +ENDCHAR +STARTCHAR congruent +ENCODING 8773 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A0 +00 +F0 +00 +F0 +00 +ENDCHAR +STARTCHAR approxequal +ENCODING 8776 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +50 +A0 +00 +50 +A0 +00 +ENDCHAR +STARTCHAR uni2249 +ENCODING 8777 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +50 +A0 +20 +50 +A0 +80 +ENDCHAR +STARTCHAR uni2259 +ENCODING 8793 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +00 +F0 +00 +F0 +00 +ENDCHAR +STARTCHAR uni225A +ENCODING 8794 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +20 +00 +F0 +00 +F0 +00 +ENDCHAR +STARTCHAR uni225F +ENCODING 8799 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +20 +00 +20 +F0 +00 +F0 +ENDCHAR +STARTCHAR notequal +ENCODING 8800 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +F0 +20 +F0 +40 +00 +ENDCHAR +STARTCHAR equivalence +ENCODING 8801 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +F0 +00 +F0 +00 +F0 +00 +ENDCHAR +STARTCHAR uni2262 +ENCODING 8802 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +F0 +20 +F0 +20 +F0 +40 +ENDCHAR +STARTCHAR uni2263 +ENCODING 8803 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +00 +F0 +00 +F0 +00 +F0 +ENDCHAR +STARTCHAR lessequal +ENCODING 8804 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +20 +40 +20 +10 +70 +00 +ENDCHAR +STARTCHAR greaterequal +ENCODING 8805 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +20 +10 +20 +40 +70 +00 +ENDCHAR +STARTCHAR uni226A +ENCODING 8810 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +28 +50 +A0 +50 +28 +00 +ENDCHAR +STARTCHAR uni226B +ENCODING 8811 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +A0 +50 +28 +50 +A0 +00 +ENDCHAR +STARTCHAR propersubset +ENCODING 8834 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +80 +80 +70 +00 +ENDCHAR +STARTCHAR propersuperset +ENCODING 8835 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +10 +10 +E0 +00 +ENDCHAR +STARTCHAR notsubset +ENCODING 8836 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +A0 +A0 +70 +20 +ENDCHAR +STARTCHAR uni2285 +ENCODING 8837 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +E0 +50 +50 +E0 +40 +ENDCHAR +STARTCHAR reflexsubset +ENCODING 8838 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +80 +70 +00 +F0 +00 +ENDCHAR +STARTCHAR reflexsuperset +ENCODING 8839 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +E0 +10 +E0 +00 +F0 +00 +ENDCHAR +STARTCHAR uni2288 +ENCODING 8840 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +A0 +70 +20 +F0 +20 +ENDCHAR +STARTCHAR uni2289 +ENCODING 8841 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +E0 +50 +E0 +40 +F0 +40 +ENDCHAR +STARTCHAR uni228A +ENCODING 8842 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +80 +70 +20 +F0 +20 +ENDCHAR +STARTCHAR uni228B +ENCODING 8843 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +E0 +10 +E0 +40 +F0 +40 +ENDCHAR +STARTCHAR circleplus +ENCODING 8853 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +A8 +F8 +A8 +70 +00 +ENDCHAR +STARTCHAR uni2296 +ENCODING 8854 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +88 +F8 +88 +70 +00 +ENDCHAR +STARTCHAR circlemultiply +ENCODING 8855 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +D8 +A8 +D8 +70 +00 +ENDCHAR +STARTCHAR uni2298 +ENCODING 8856 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +98 +A8 +C8 +70 +00 +ENDCHAR +STARTCHAR uni2299 +ENCODING 8857 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +88 +A8 +88 +70 +00 +ENDCHAR +STARTCHAR uni22A2 +ENCODING 8866 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +80 +F0 +80 +80 +00 +ENDCHAR +STARTCHAR uni22A3 +ENCODING 8867 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +10 +F0 +10 +10 +00 +ENDCHAR +STARTCHAR uni22A4 +ENCODING 8868 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +20 +20 +20 +20 +20 +00 +ENDCHAR +STARTCHAR perpendicular +ENCODING 8869 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +20 +70 +00 +ENDCHAR +STARTCHAR uni22A6 +ENCODING 8870 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +40 +70 +40 +40 +00 +ENDCHAR +STARTCHAR uni22A7 +ENCODING 8871 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +70 +40 +70 +40 +00 +ENDCHAR +STARTCHAR uni22A8 +ENCODING 8872 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +F0 +80 +F0 +80 +00 +ENDCHAR +STARTCHAR uni22C2 +ENCODING 8898 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +90 +90 +90 +90 +90 +00 +ENDCHAR +STARTCHAR uni22C3 +ENCODING 8899 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +90 +90 +90 +90 +90 +60 +00 +ENDCHAR +STARTCHAR dotmath +ENCODING 8901 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EE +ENCODING 8942 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +00 +20 +00 +20 +00 +ENDCHAR +STARTCHAR uni22EF +ENCODING 8943 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +A8 +00 +00 +00 +ENDCHAR +STARTCHAR uni22F0 +ENCODING 8944 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +08 +00 +20 +00 +80 +00 +ENDCHAR +STARTCHAR uni22F1 +ENCODING 8945 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +00 +20 +00 +08 +00 +ENDCHAR +STARTCHAR uni2300 +ENCODING 8960 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +78 +98 +A8 +C8 +F0 +00 +ENDCHAR +STARTCHAR house +ENCODING 8962 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +50 +88 +88 +F8 +00 +ENDCHAR +STARTCHAR uni2308 +ENCODING 8968 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +40 +40 +40 +40 +40 +00 +ENDCHAR +STARTCHAR uni2309 +ENCODING 8969 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +10 +10 +10 +10 +10 +00 +ENDCHAR +STARTCHAR uni230A +ENCODING 8970 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +40 +40 +40 +70 +00 +ENDCHAR +STARTCHAR uni230B +ENCODING 8971 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +10 +10 +10 +10 +70 +00 +ENDCHAR +STARTCHAR revlogicalnot +ENCODING 8976 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F0 +80 +00 +00 +ENDCHAR +STARTCHAR integraltp +ENCODING 8992 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +28 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR integralbt +ENCODING 8993 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +20 +A0 +40 +ENDCHAR +STARTCHAR uni23BA +ENCODING 9146 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni23BB +ENCODING 9147 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni23BC +ENCODING 9148 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +F8 +00 +ENDCHAR +STARTCHAR uni23BD +ENCODING 9149 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +F8 +ENDCHAR +STARTCHAR uni2409 +ENCODING 9225 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +E0 +A0 +70 +20 +20 +00 +ENDCHAR +STARTCHAR uni240A +ENCODING 9226 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +F0 +20 +30 +20 +00 +ENDCHAR +STARTCHAR uni240B +ENCODING 9227 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A0 +A0 +78 +50 +10 +10 +00 +ENDCHAR +STARTCHAR uni240C +ENCODING 9228 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +80 +F8 +A0 +30 +20 +00 +ENDCHAR +STARTCHAR uni240D +ENCODING 9229 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +80 +E0 +50 +60 +50 +00 +ENDCHAR +STARTCHAR uni2423 +ENCODING 9251 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +90 +F0 +00 +ENDCHAR +STARTCHAR uni2424 +ENCODING 9252 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +A0 +A0 +A0 +20 +38 +00 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9472 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2501 +ENCODING 9473 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F8 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9474 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +20 +20 +20 +ENDCHAR +STARTCHAR uni2503 +ENCODING 9475 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR uni2504 +ENCODING 9476 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +A8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2505 +ENCODING 9477 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A8 +A8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2506 +ENCODING 9478 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +20 +20 +00 +20 +00 +ENDCHAR +STARTCHAR uni2507 +ENCODING 9479 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +00 +30 +30 +00 +30 +00 +ENDCHAR +STARTCHAR uni2508 +ENCODING 9480 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +A8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2509 +ENCODING 9481 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +A8 +A8 +00 +00 +00 +ENDCHAR +STARTCHAR uni250A +ENCODING 9482 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +00 +20 +00 +20 +00 +20 +ENDCHAR +STARTCHAR uni250B +ENCODING 9483 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +00 +30 +00 +30 +00 +30 +ENDCHAR +STARTCHAR SF010000 +ENCODING 9484 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +38 +20 +20 +20 +ENDCHAR +STARTCHAR uni250D +ENCODING 9485 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +38 +38 +20 +20 +20 +ENDCHAR +STARTCHAR uni250E +ENCODING 9486 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +38 +30 +30 +30 +ENDCHAR +STARTCHAR uni250F +ENCODING 9487 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +38 +38 +30 +30 +30 +ENDCHAR +STARTCHAR SF030000 +ENCODING 9488 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +E0 +20 +20 +20 +ENDCHAR +STARTCHAR uni2511 +ENCODING 9489 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +E0 +20 +20 +20 +ENDCHAR +STARTCHAR uni2512 +ENCODING 9490 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F0 +30 +30 +30 +ENDCHAR +STARTCHAR uni2513 +ENCODING 9491 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +F0 +30 +30 +30 +ENDCHAR +STARTCHAR SF020000 +ENCODING 9492 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +38 +00 +00 +00 +ENDCHAR +STARTCHAR uni2515 +ENCODING 9493 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +38 +38 +00 +00 +00 +ENDCHAR +STARTCHAR uni2516 +ENCODING 9494 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +38 +00 +00 +00 +ENDCHAR +STARTCHAR uni2517 +ENCODING 9495 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +38 +38 +00 +00 +00 +ENDCHAR +STARTCHAR SF040000 +ENCODING 9496 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +E0 +00 +00 +00 +ENDCHAR +STARTCHAR uni2519 +ENCODING 9497 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +E0 +E0 +00 +00 +00 +ENDCHAR +STARTCHAR uni251A +ENCODING 9498 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR uni251B +ENCODING 9499 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +F0 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR SF080000 +ENCODING 9500 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +38 +20 +20 +20 +ENDCHAR +STARTCHAR uni251D +ENCODING 9501 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +38 +38 +20 +20 +20 +ENDCHAR +STARTCHAR uni251E +ENCODING 9502 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +38 +20 +20 +20 +ENDCHAR +STARTCHAR uni251F +ENCODING 9503 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +38 +30 +30 +30 +ENDCHAR +STARTCHAR uni2520 +ENCODING 9504 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +38 +30 +30 +30 +ENDCHAR +STARTCHAR uni2521 +ENCODING 9505 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +38 +38 +20 +20 +20 +ENDCHAR +STARTCHAR uni2522 +ENCODING 9506 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +38 +38 +30 +30 +30 +ENDCHAR +STARTCHAR uni2523 +ENCODING 9507 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +38 +38 +30 +30 +30 +ENDCHAR +STARTCHAR SF090000 +ENCODING 9508 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +E0 +20 +20 +20 +ENDCHAR +STARTCHAR uni2525 +ENCODING 9509 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +E0 +E0 +20 +20 +20 +ENDCHAR +STARTCHAR uni2526 +ENCODING 9510 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +F0 +20 +20 +20 +ENDCHAR +STARTCHAR uni2527 +ENCODING 9511 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +F0 +30 +30 +30 +ENDCHAR +STARTCHAR uni2528 +ENCODING 9512 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +F0 +30 +30 +30 +ENDCHAR +STARTCHAR uni2529 +ENCODING 9513 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +F0 +F0 +20 +20 +20 +ENDCHAR +STARTCHAR uni252A +ENCODING 9514 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +F0 +F0 +30 +30 +30 +ENDCHAR +STARTCHAR uni252B +ENCODING 9515 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +F0 +F0 +30 +30 +30 +ENDCHAR +STARTCHAR SF060000 +ENCODING 9516 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni252D +ENCODING 9517 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni252E +ENCODING 9518 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +38 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni252F +ENCODING 9519 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F8 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni2530 +ENCODING 9520 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni2531 +ENCODING 9521 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni2532 +ENCODING 9522 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +18 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni2533 +ENCODING 9523 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F8 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR SF070000 +ENCODING 9524 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2535 +ENCODING 9525 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +E0 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2536 +ENCODING 9526 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +38 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2537 +ENCODING 9527 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +F8 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2538 +ENCODING 9528 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni2539 +ENCODING 9529 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +F0 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni253A +ENCODING 9530 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +38 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni253B +ENCODING 9531 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +F8 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR SF050000 +ENCODING 9532 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni253D +ENCODING 9533 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +E0 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni253E +ENCODING 9534 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +38 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni253F +ENCODING 9535 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +F8 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni2540 +ENCODING 9536 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni2541 +ENCODING 9537 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni2542 +ENCODING 9538 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni2543 +ENCODING 9539 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +F0 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni2544 +ENCODING 9540 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +38 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni2545 +ENCODING 9541 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +E0 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni2546 +ENCODING 9542 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +38 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni2547 +ENCODING 9543 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +F8 +F8 +20 +20 +20 +ENDCHAR +STARTCHAR uni2548 +ENCODING 9544 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +F8 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni2549 +ENCODING 9545 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +F0 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni254A +ENCODING 9546 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +38 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni254B +ENCODING 9547 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +F8 +F8 +30 +30 +30 +ENDCHAR +STARTCHAR uni254C +ENCODING 9548 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +D0 +00 +00 +00 +ENDCHAR +STARTCHAR uni254D +ENCODING 9549 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +D0 +D0 +00 +00 +00 +ENDCHAR +STARTCHAR uni254E +ENCODING 9550 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +00 +20 +20 +00 +ENDCHAR +STARTCHAR uni254F +ENCODING 9551 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +00 +30 +30 +00 +ENDCHAR +STARTCHAR SF430000 +ENCODING 9552 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F8 +00 +F8 +00 +00 +ENDCHAR +STARTCHAR SF240000 +ENCODING 9553 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +50 +50 +50 +50 +ENDCHAR +STARTCHAR SF510000 +ENCODING 9554 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +38 +20 +38 +20 +20 +ENDCHAR +STARTCHAR SF520000 +ENCODING 9555 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +78 +50 +50 +50 +ENDCHAR +STARTCHAR SF390000 +ENCODING 9556 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +78 +40 +58 +50 +50 +ENDCHAR +STARTCHAR SF220000 +ENCODING 9557 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +20 +E0 +20 +20 +ENDCHAR +STARTCHAR SF210000 +ENCODING 9558 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F0 +50 +50 +50 +ENDCHAR +STARTCHAR SF250000 +ENCODING 9559 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +10 +D0 +50 +50 +ENDCHAR +STARTCHAR SF500000 +ENCODING 9560 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +38 +20 +38 +00 +00 +ENDCHAR +STARTCHAR SF490000 +ENCODING 9561 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +78 +00 +00 +00 +ENDCHAR +STARTCHAR SF380000 +ENCODING 9562 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +58 +40 +78 +00 +00 +ENDCHAR +STARTCHAR SF280000 +ENCODING 9563 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +E0 +20 +E0 +00 +00 +ENDCHAR +STARTCHAR SF270000 +ENCODING 9564 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR SF260000 +ENCODING 9565 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +D0 +10 +F0 +00 +00 +ENDCHAR +STARTCHAR SF360000 +ENCODING 9566 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +38 +20 +38 +20 +20 +ENDCHAR +STARTCHAR SF370000 +ENCODING 9567 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +58 +50 +50 +50 +ENDCHAR +STARTCHAR SF420000 +ENCODING 9568 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +58 +40 +58 +50 +50 +ENDCHAR +STARTCHAR SF190000 +ENCODING 9569 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +E0 +20 +E0 +20 +20 +ENDCHAR +STARTCHAR SF200000 +ENCODING 9570 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +D0 +50 +50 +50 +ENDCHAR +STARTCHAR SF230000 +ENCODING 9571 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +D0 +10 +D0 +50 +50 +ENDCHAR +STARTCHAR SF470000 +ENCODING 9572 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F8 +00 +F8 +20 +20 +ENDCHAR +STARTCHAR SF480000 +ENCODING 9573 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +50 +50 +50 +ENDCHAR +STARTCHAR SF410000 +ENCODING 9574 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F8 +00 +D8 +50 +50 +ENDCHAR +STARTCHAR SF450000 +ENCODING 9575 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +F8 +00 +F8 +00 +00 +ENDCHAR +STARTCHAR SF460000 +ENCODING 9576 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR SF400000 +ENCODING 9577 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +D8 +00 +F8 +00 +00 +ENDCHAR +STARTCHAR SF540000 +ENCODING 9578 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +F8 +20 +F8 +20 +20 +ENDCHAR +STARTCHAR SF530000 +ENCODING 9579 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +50 +F8 +50 +50 +50 +ENDCHAR +STARTCHAR SF440000 +ENCODING 9580 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +50 +D8 +00 +D8 +50 +50 +ENDCHAR +STARTCHAR uni256D +ENCODING 9581 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +18 +20 +20 +20 +ENDCHAR +STARTCHAR uni256E +ENCODING 9582 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +C0 +20 +20 +20 +ENDCHAR +STARTCHAR uni256F +ENCODING 9583 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +C0 +00 +00 +00 +ENDCHAR +STARTCHAR uni2570 +ENCODING 9584 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +18 +00 +00 +00 +ENDCHAR +STARTCHAR uni2571 +ENCODING 9585 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +08 +10 +10 +20 +40 +40 +80 +ENDCHAR +STARTCHAR uni2572 +ENCODING 9586 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +40 +40 +20 +10 +10 +08 +ENDCHAR +STARTCHAR uni2573 +ENCODING 9587 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +88 +50 +50 +20 +50 +50 +88 +ENDCHAR +STARTCHAR uni2574 +ENCODING 9588 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +E0 +00 +00 +00 +ENDCHAR +STARTCHAR uni2575 +ENCODING 9589 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni2576 +ENCODING 9590 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +38 +00 +00 +00 +ENDCHAR +STARTCHAR uni2577 +ENCODING 9591 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +20 +20 +20 +20 +ENDCHAR +STARTCHAR uni2578 +ENCODING 9592 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +E0 +00 +00 +00 +ENDCHAR +STARTCHAR uni2579 +ENCODING 9593 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +30 +00 +00 +00 +ENDCHAR +STARTCHAR uni257A +ENCODING 9594 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +38 +38 +00 +00 +00 +ENDCHAR +STARTCHAR uni257B +ENCODING 9595 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +30 +30 +30 +30 +ENDCHAR +STARTCHAR uni257C +ENCODING 9596 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +38 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni257D +ENCODING 9597 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +20 +30 +30 +30 +30 +ENDCHAR +STARTCHAR uni257E +ENCODING 9598 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +E0 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR uni257F +ENCODING 9599 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +30 +30 +30 +20 +20 +20 +ENDCHAR +STARTCHAR upblock +ENCODING 9600 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +F8 +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2581 +ENCODING 9601 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +F8 +ENDCHAR +STARTCHAR uni2582 +ENCODING 9602 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +F8 +F8 +ENDCHAR +STARTCHAR uni2583 +ENCODING 9603 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +F8 +F8 +F8 +ENDCHAR +STARTCHAR dnblock +ENCODING 9604 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR uni2585 +ENCODING 9605 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR uni2586 +ENCODING 9606 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F8 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR uni2587 +ENCODING 9607 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +F8 +F8 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR block +ENCODING 9608 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +F8 +F8 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR uni2589 +ENCODING 9609 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +F0 +F0 +F0 +F0 +F0 +F0 +ENDCHAR +STARTCHAR uni258A +ENCODING 9610 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F0 +F0 +F0 +F0 +F0 +F0 +F0 +ENDCHAR +STARTCHAR uni258B +ENCODING 9611 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR +STARTCHAR lfblock +ENCODING 9612 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR +STARTCHAR uni258D +ENCODING 9613 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR uni258E +ENCODING 9614 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR uni258F +ENCODING 9615 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR rtblock +ENCODING 9616 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR ltshade +ENCODING 9617 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +10 +40 +10 +40 +10 +00 +ENDCHAR +STARTCHAR shade +ENCODING 9618 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +A8 +50 +A8 +50 +A8 +50 +A8 +ENDCHAR +STARTCHAR dkshade +ENCODING 9619 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +B8 +E8 +B8 +E8 +B8 +E8 +F8 +ENDCHAR +STARTCHAR uni2594 +ENCODING 9620 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2595 +ENCODING 9621 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +08 +08 +08 +08 +08 +08 +08 +ENDCHAR +STARTCHAR uni2596 +ENCODING 9622 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +E0 +E0 +E0 +E0 +ENDCHAR +STARTCHAR uni2597 +ENCODING 9623 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2598 +ENCODING 9624 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +E0 +E0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2599 +ENCODING 9625 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +E0 +E0 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR uni259A +ENCODING 9626 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +E0 +E0 +E0 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni259B +ENCODING 9627 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +F8 +F8 +E0 +E0 +E0 +E0 +ENDCHAR +STARTCHAR uni259C +ENCODING 9628 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +F8 +F8 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni259D +ENCODING 9629 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni259E +ENCODING 9630 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +18 +18 +18 +E0 +E0 +E0 +E0 +ENDCHAR +STARTCHAR uni259F +ENCODING 9631 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +18 +18 +18 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR filledbox +ENCODING 9632 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +F0 +F0 +F0 +00 +ENDCHAR +STARTCHAR H22073 +ENCODING 9633 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F0 +90 +90 +F0 +00 +ENDCHAR +STARTCHAR H18543 +ENCODING 9642 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +70 +70 +00 +00 +ENDCHAR +STARTCHAR H18551 +ENCODING 9643 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +70 +50 +70 +00 +00 +ENDCHAR +STARTCHAR filledrect +ENCODING 9644 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F8 +F8 +F8 +00 +00 +ENDCHAR +STARTCHAR uni25AD +ENCODING 9645 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +F8 +88 +F8 +00 +00 +ENDCHAR +STARTCHAR uni25AE +ENCODING 9646 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +70 +70 +70 +70 +00 +ENDCHAR +STARTCHAR triagup +ENCODING 9650 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +70 +70 +F8 +F8 +00 +ENDCHAR +STARTCHAR uni25B3 +ENCODING 9651 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +50 +50 +88 +F8 +00 +ENDCHAR +STARTCHAR uni25B6 +ENCODING 9654 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +C0 +E0 +F0 +E0 +C0 +80 +ENDCHAR +STARTCHAR uni25B7 +ENCODING 9655 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +80 +C0 +A0 +90 +A0 +C0 +80 +ENDCHAR +STARTCHAR uni25B8 +ENCODING 9656 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +60 +70 +60 +40 +00 +ENDCHAR +STARTCHAR uni25B9 +ENCODING 9657 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +40 +60 +50 +60 +40 +00 +ENDCHAR +STARTCHAR triagrt +ENCODING 9658 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +E0 +F8 +E0 +80 +00 +ENDCHAR +STARTCHAR uni25BB +ENCODING 9659 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +80 +E0 +98 +E0 +80 +00 +ENDCHAR +STARTCHAR triagdn +ENCODING 9660 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +F8 +70 +70 +20 +20 +00 +ENDCHAR +STARTCHAR uni25BD +ENCODING 9661 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +88 +50 +50 +20 +20 +00 +ENDCHAR +STARTCHAR uni25C0 +ENCODING 9664 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +30 +70 +F0 +70 +30 +10 +ENDCHAR +STARTCHAR uni25C1 +ENCODING 9665 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +30 +50 +90 +50 +30 +10 +ENDCHAR +STARTCHAR uni25C2 +ENCODING 9666 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +30 +70 +30 +10 +00 +ENDCHAR +STARTCHAR uni25C3 +ENCODING 9667 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +10 +30 +50 +30 +10 +00 +ENDCHAR +STARTCHAR triaglf +ENCODING 9668 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +08 +38 +F8 +38 +08 +00 +ENDCHAR +STARTCHAR uni25C5 +ENCODING 9669 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +08 +38 +C8 +38 +08 +00 +ENDCHAR +STARTCHAR uni25C6 +ENCODING 9670 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +F8 +70 +20 +00 +ENDCHAR +STARTCHAR lozenge +ENCODING 9674 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +50 +88 +50 +20 +00 +ENDCHAR +STARTCHAR circle +ENCODING 9675 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +88 +88 +88 +70 +00 +ENDCHAR +STARTCHAR H18533 +ENCODING 9679 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +70 +F8 +F8 +F8 +70 +00 +ENDCHAR +STARTCHAR invbullet +ENCODING 9688 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +F8 +D8 +88 +D8 +F8 +F8 +ENDCHAR +STARTCHAR invcircle +ENCODING 9689 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +F8 +F8 +D8 +A8 +D8 +F8 +F8 +ENDCHAR +STARTCHAR openbullet +ENCODING 9702 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +60 +90 +90 +60 +00 +ENDCHAR +STARTCHAR uni2639 +ENCODING 9785 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +50 +00 +20 +50 +00 +00 +ENDCHAR +STARTCHAR smileface +ENCODING 9786 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +50 +00 +50 +20 +00 +00 +ENDCHAR +STARTCHAR invsmileface +ENCODING 9787 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +A8 +F8 +A8 +D8 +70 +00 +ENDCHAR +STARTCHAR sun +ENCODING 9788 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +A8 +70 +D8 +70 +A8 +20 +ENDCHAR +STARTCHAR female +ENCODING 9792 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +50 +20 +70 +20 +00 +ENDCHAR +STARTCHAR uni2641 +ENCODING 9793 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +20 +70 +20 +50 +20 +00 +ENDCHAR +STARTCHAR male +ENCODING 9794 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +38 +18 +68 +A0 +40 +00 +00 +ENDCHAR +STARTCHAR spade +ENCODING 9824 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +F8 +F8 +20 +70 +00 +ENDCHAR +STARTCHAR club +ENCODING 9827 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +70 +A8 +F8 +A8 +20 +70 +ENDCHAR +STARTCHAR heart +ENCODING 9829 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +F8 +F8 +70 +70 +20 +00 +ENDCHAR +STARTCHAR diamond +ENCODING 9830 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +70 +F8 +F8 +70 +20 +00 +ENDCHAR +STARTCHAR uni2669 +ENCODING 9833 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +10 +10 +30 +70 +20 +00 +ENDCHAR +STARTCHAR musicalnote +ENCODING 9834 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +30 +28 +60 +E0 +40 +00 +ENDCHAR +STARTCHAR musicalnotedbl +ENCODING 9835 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +60 +58 +48 +C8 +D8 +18 +00 +ENDCHAR +STARTCHAR uni266C +ENCODING 9836 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +70 +68 +58 +C8 +D8 +18 +00 +ENDCHAR +STARTCHAR uni266D +ENCODING 9837 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +70 +50 +50 +60 +00 +ENDCHAR +STARTCHAR uni266E +ENCODING 9838 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +70 +50 +50 +70 +10 +00 +ENDCHAR +STARTCHAR uni266F +ENCODING 9839 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +58 +70 +D8 +70 +D0 +40 +ENDCHAR +STARTCHAR uni27E8 +ENCODING 10216 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +20 +40 +40 +20 +20 +00 +ENDCHAR +STARTCHAR uni27E9 +ENCODING 10217 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +40 +20 +20 +40 +40 +00 +ENDCHAR +STARTCHAR uni2800 +ENCODING 10240 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2801 +ENCODING 10241 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2802 +ENCODING 10242 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2803 +ENCODING 10243 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2804 +ENCODING 10244 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni2805 +ENCODING 10245 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni2806 +ENCODING 10246 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni2807 +ENCODING 10247 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni2808 +ENCODING 10248 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2809 +ENCODING 10249 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni280A +ENCODING 10250 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni280B +ENCODING 10251 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni280C +ENCODING 10252 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni280D +ENCODING 10253 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni280E +ENCODING 10254 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni280F +ENCODING 10255 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni2810 +ENCODING 10256 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2811 +ENCODING 10257 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2812 +ENCODING 10258 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2813 +ENCODING 10259 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2814 +ENCODING 10260 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni2815 +ENCODING 10261 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni2816 +ENCODING 10262 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni2817 +ENCODING 10263 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni2818 +ENCODING 10264 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2819 +ENCODING 10265 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni281A +ENCODING 10266 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni281B +ENCODING 10267 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni281C +ENCODING 10268 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni281D +ENCODING 10269 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni281E +ENCODING 10270 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni281F +ENCODING 10271 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +40 +00 +00 +ENDCHAR +STARTCHAR uni2820 +ENCODING 10272 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni2821 +ENCODING 10273 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni2822 +ENCODING 10274 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni2823 +ENCODING 10275 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni2824 +ENCODING 10276 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2825 +ENCODING 10277 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2826 +ENCODING 10278 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2827 +ENCODING 10279 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2828 +ENCODING 10280 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni2829 +ENCODING 10281 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni282A +ENCODING 10282 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni282B +ENCODING 10283 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni282C +ENCODING 10284 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni282D +ENCODING 10285 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni282E +ENCODING 10286 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni282F +ENCODING 10287 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2830 +ENCODING 10288 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni2831 +ENCODING 10289 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni2832 +ENCODING 10290 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni2833 +ENCODING 10291 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni2834 +ENCODING 10292 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2835 +ENCODING 10293 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2836 +ENCODING 10294 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2837 +ENCODING 10295 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2838 +ENCODING 10296 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni2839 +ENCODING 10297 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni283A +ENCODING 10298 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni283B +ENCODING 10299 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +10 +00 +00 +ENDCHAR +STARTCHAR uni283C +ENCODING 10300 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni283D +ENCODING 10301 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni283E +ENCODING 10302 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni283F +ENCODING 10303 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +50 +00 +00 +ENDCHAR +STARTCHAR uni2840 +ENCODING 10304 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni2841 +ENCODING 10305 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni2842 +ENCODING 10306 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni2843 +ENCODING 10307 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni2844 +ENCODING 10308 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni2845 +ENCODING 10309 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni2846 +ENCODING 10310 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni2847 +ENCODING 10311 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni2848 +ENCODING 10312 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni2849 +ENCODING 10313 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni284A +ENCODING 10314 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni284B +ENCODING 10315 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni284C +ENCODING 10316 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni284D +ENCODING 10317 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni284E +ENCODING 10318 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni284F +ENCODING 10319 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni2850 +ENCODING 10320 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni2851 +ENCODING 10321 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni2852 +ENCODING 10322 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni2853 +ENCODING 10323 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni2854 +ENCODING 10324 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni2855 +ENCODING 10325 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni2856 +ENCODING 10326 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni2857 +ENCODING 10327 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni2858 +ENCODING 10328 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni2859 +ENCODING 10329 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni285A +ENCODING 10330 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni285B +ENCODING 10331 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +00 +00 +40 +ENDCHAR +STARTCHAR uni285C +ENCODING 10332 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni285D +ENCODING 10333 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni285E +ENCODING 10334 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni285F +ENCODING 10335 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +40 +00 +40 +ENDCHAR +STARTCHAR uni2860 +ENCODING 10336 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni2861 +ENCODING 10337 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni2862 +ENCODING 10338 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni2863 +ENCODING 10339 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni2864 +ENCODING 10340 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni2865 +ENCODING 10341 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni2866 +ENCODING 10342 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni2867 +ENCODING 10343 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni2868 +ENCODING 10344 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni2869 +ENCODING 10345 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni286A +ENCODING 10346 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni286B +ENCODING 10347 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni286C +ENCODING 10348 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni286D +ENCODING 10349 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni286E +ENCODING 10350 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni286F +ENCODING 10351 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni2870 +ENCODING 10352 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni2871 +ENCODING 10353 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni2872 +ENCODING 10354 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni2873 +ENCODING 10355 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni2874 +ENCODING 10356 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni2875 +ENCODING 10357 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni2876 +ENCODING 10358 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni2877 +ENCODING 10359 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni2878 +ENCODING 10360 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni2879 +ENCODING 10361 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni287A +ENCODING 10362 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni287B +ENCODING 10363 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +10 +00 +40 +ENDCHAR +STARTCHAR uni287C +ENCODING 10364 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni287D +ENCODING 10365 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni287E +ENCODING 10366 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni287F +ENCODING 10367 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +50 +00 +40 +ENDCHAR +STARTCHAR uni2880 +ENCODING 10368 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni2881 +ENCODING 10369 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni2882 +ENCODING 10370 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni2883 +ENCODING 10371 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni2884 +ENCODING 10372 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni2885 +ENCODING 10373 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni2886 +ENCODING 10374 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni2887 +ENCODING 10375 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni2888 +ENCODING 10376 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni2889 +ENCODING 10377 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni288A +ENCODING 10378 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni288B +ENCODING 10379 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni288C +ENCODING 10380 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni288D +ENCODING 10381 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni288E +ENCODING 10382 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni288F +ENCODING 10383 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni2890 +ENCODING 10384 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni2891 +ENCODING 10385 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni2892 +ENCODING 10386 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni2893 +ENCODING 10387 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni2894 +ENCODING 10388 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni2895 +ENCODING 10389 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni2896 +ENCODING 10390 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni2897 +ENCODING 10391 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni2898 +ENCODING 10392 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni2899 +ENCODING 10393 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni289A +ENCODING 10394 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni289B +ENCODING 10395 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +00 +00 +10 +ENDCHAR +STARTCHAR uni289C +ENCODING 10396 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni289D +ENCODING 10397 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni289E +ENCODING 10398 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni289F +ENCODING 10399 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +40 +00 +10 +ENDCHAR +STARTCHAR uni28A0 +ENCODING 10400 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28A1 +ENCODING 10401 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28A2 +ENCODING 10402 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28A3 +ENCODING 10403 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28A4 +ENCODING 10404 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28A5 +ENCODING 10405 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28A6 +ENCODING 10406 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28A7 +ENCODING 10407 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28A8 +ENCODING 10408 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28A9 +ENCODING 10409 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28AA +ENCODING 10410 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28AB +ENCODING 10411 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28AC +ENCODING 10412 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28AD +ENCODING 10413 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28AE +ENCODING 10414 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28AF +ENCODING 10415 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28B0 +ENCODING 10416 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28B1 +ENCODING 10417 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28B2 +ENCODING 10418 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28B3 +ENCODING 10419 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28B4 +ENCODING 10420 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28B5 +ENCODING 10421 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28B6 +ENCODING 10422 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28B7 +ENCODING 10423 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28B8 +ENCODING 10424 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28B9 +ENCODING 10425 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28BA +ENCODING 10426 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28BB +ENCODING 10427 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +10 +00 +10 +ENDCHAR +STARTCHAR uni28BC +ENCODING 10428 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28BD +ENCODING 10429 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28BE +ENCODING 10430 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28BF +ENCODING 10431 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +50 +00 +10 +ENDCHAR +STARTCHAR uni28C0 +ENCODING 10432 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28C1 +ENCODING 10433 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28C2 +ENCODING 10434 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28C3 +ENCODING 10435 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28C4 +ENCODING 10436 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28C5 +ENCODING 10437 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28C6 +ENCODING 10438 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28C7 +ENCODING 10439 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28C8 +ENCODING 10440 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28C9 +ENCODING 10441 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28CA +ENCODING 10442 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28CB +ENCODING 10443 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28CC +ENCODING 10444 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28CD +ENCODING 10445 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28CE +ENCODING 10446 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28CF +ENCODING 10447 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28D0 +ENCODING 10448 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28D1 +ENCODING 10449 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28D2 +ENCODING 10450 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28D3 +ENCODING 10451 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28D4 +ENCODING 10452 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28D5 +ENCODING 10453 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28D6 +ENCODING 10454 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28D7 +ENCODING 10455 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28D8 +ENCODING 10456 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28D9 +ENCODING 10457 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28DA +ENCODING 10458 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28DB +ENCODING 10459 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +00 +00 +50 +ENDCHAR +STARTCHAR uni28DC +ENCODING 10460 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28DD +ENCODING 10461 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28DE +ENCODING 10462 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28DF +ENCODING 10463 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +40 +00 +50 +ENDCHAR +STARTCHAR uni28E0 +ENCODING 10464 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28E1 +ENCODING 10465 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28E2 +ENCODING 10466 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28E3 +ENCODING 10467 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28E4 +ENCODING 10468 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +00 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28E5 +ENCODING 10469 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +00 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28E6 +ENCODING 10470 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +40 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28E7 +ENCODING 10471 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +40 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28E8 +ENCODING 10472 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28E9 +ENCODING 10473 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28EA +ENCODING 10474 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28EB +ENCODING 10475 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28EC +ENCODING 10476 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +00 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28ED +ENCODING 10477 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +00 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28EE +ENCODING 10478 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +40 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28EF +ENCODING 10479 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +40 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28F0 +ENCODING 10480 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28F1 +ENCODING 10481 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28F2 +ENCODING 10482 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28F3 +ENCODING 10483 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28F4 +ENCODING 10484 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +10 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28F5 +ENCODING 10485 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +10 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28F6 +ENCODING 10486 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +00 +00 +50 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28F7 +ENCODING 10487 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +40 +00 +50 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28F8 +ENCODING 10488 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28F9 +ENCODING 10489 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28FA +ENCODING 10490 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28FB +ENCODING 10491 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +10 +00 +50 +ENDCHAR +STARTCHAR uni28FC +ENCODING 10492 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +10 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28FD +ENCODING 10493 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +10 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28FE +ENCODING 10494 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +10 +00 +50 +00 +50 +00 +50 +ENDCHAR +STARTCHAR uni28FF +ENCODING 10495 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +00 +50 +00 +50 +00 +50 +ENDCHAR +STARTCHAR fi +ENCODING 64257 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +20 +50 +40 +F0 +50 +50 +00 +ENDCHAR +STARTCHAR fl +ENCODING 64258 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +30 +50 +50 +F0 +50 +50 +00 +ENDCHAR +STARTCHAR uniFFFD +ENCODING 65533 +SWIDTH 685 0 +DWIDTH 5 0 +BBX 5 7 0 -1 +BITMAP +50 +A8 +E8 +D8 +F8 +D8 +70 +ENDCHAR +ENDFONT diff --git a/sketch/lib/extras/generate_font.py b/sketch/lib/extras/generate_font.py new file mode 100755 index 0000000..48efb84 --- /dev/null +++ b/sketch/lib/extras/generate_font.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python + +# This file is part of the ArduinoGraphics library. +# Copyright (c) 2018 Arduino SA. All rights reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +import sys; + +input = sys.argv[1] +output = sys.argv[2] +name = sys.argv[3] + +fontWidth = 0 +fontHeight = 0 +fontCharacters = [None] * 256 +fontCharacterNames = [None] * 256 + +with open(input) as f: + charName = "" + charEncoding = -1 + charBitmap = [] + + bitmap = False + + for line in f: + line = line.rstrip(); + splitLine= line.split(" ") + + if splitLine[0] == "FONTBOUNDINGBOX": + fontWidth = int(splitLine[1]) + fontHeight = int(splitLine[2]) + elif splitLine[0] == "STARTCHAR": + charName = splitLine[1]; + elif splitLine[0] == "ENCODING": + charEncoding = int(splitLine[1]) + elif splitLine[0] == "BITMAP": + bitmap = True + charBitmap = [] + elif splitLine[0] == "ENDCHAR": + if charEncoding <= 255: + fontCharacterNames[charEncoding] = charName + fontCharacters[charEncoding] = charBitmap + charEncoding = -1 + bitmap = False + elif bitmap: + charBitmap.append(int(line, 16)) + +out = open(output, "w") + +out.write("#include \"Font.h\"\n") +out.write("\n") +out.write("const struct Font %s = {" % ( name )) +out.write("\n") +out.write(" %d," % ( fontWidth )) +out.write("\n") +out.write(" %d," % ( fontHeight )) +out.write("\n") +out.write(" (const uint8_t*[]){\n") +for c in range (0, 255): + if None == fontCharacters[c]: + out.write(" NULL,\n") + else: + out.write(" // %s" % (fontCharacterNames[c])) + out.write("\n") + out.write(" (const uint8_t[]){\n") + for i in range(0, fontHeight): + out.write(" 0b%s," % ('{0:08b}'.format(fontCharacters[c][i]))) + out.write("\n") + out.write(" },\n") +out.write(" }\n") +out.write("};\n") + +out.close() diff --git a/sketch/lib/keywords.txt b/sketch/lib/keywords.txt new file mode 100644 index 0000000..ce07cc7 --- /dev/null +++ b/sketch/lib/keywords.txt @@ -0,0 +1,74 @@ +########################################## +# Syntax Coloring Map For ArduinoGraphics +########################################## +# Class +########################################## + +ArduinoGraphics KEYWORD1 +MATRIX KEYWORD1 +Font KEYWORD1 +Image KEYWORD1 + +########################################## +# Methods and Functions +########################################## + +begin KEYWORD2 +end KEYWORD2 + +width KEYWORD2 +height KEYWORD2 + +beginDraw KEYWORD2 +endDraw KEYWORD2 + +background KEYWORD2 +clear KEYWORD2 +fill KEYWORD2 +noFill KEYWORD2 +stroke KEYWORD2 +noStroke KEYWORD2 + +line KEYWORD2 +point KEYWORD2 +quad KEYWORD2 +rect KEYWORD2 +circle KEYWORD2 +ellipse KEYWORD2 + +text KEYWORD2 +textFont KEYWORD2 +textFontWidth KEYWORD2 +textFontHeight KEYWORD2 + +image KEYWORD2 + +set KEYWORD2 + +write KEYWORD2 +flush KEYWORD2 + +beginText KEYWORD2 +endText KEYWORD2 +textScrollSpeed KEYWORD2 + +encoding KEYWORD2 +data KEYWORD2 + +########################################## +# Constants +########################################## + +Font_4x6 LITERAL1 +Font_5x7 LITERAL1 + +ENCODING_NONE LITERAL1 +ENCODING_RGB LITERAL1 +ENCODING_RGB24 LITERAL1 +ENCODING_RGB16 LITERAL1 + +NO_SCROLL LITERAL1 +SCROLL_LEFT LITERAL1 +SCROLL_RIGHT LITERAL1 +SCROLL_UP LITERAL1 +SCROLL_DOWN LITERAL1 diff --git a/sketch/lib/library.properties b/sketch/lib/library.properties new file mode 100644 index 0000000..7a54f99 --- /dev/null +++ b/sketch/lib/library.properties @@ -0,0 +1,10 @@ +name=ArduinoGraphics +version=1.1.5 +author=Arduino +maintainer=Arduino +sentence=Core graphics library for Arduino. +paragraph=Based on the Processing API. +category=Display +url=http://github.com/arduino-libraries/ArduinoGraphics +architectures=* +includes=ArduinoGraphics.h diff --git a/sketch/lib/src/ArduinoGraphics.cpp b/sketch/lib/src/ArduinoGraphics.cpp new file mode 100644 index 0000000..2a62a3a --- /dev/null +++ b/sketch/lib/src/ArduinoGraphics.cpp @@ -0,0 +1,589 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#include "ArduinoGraphics.h" + +#define COLOR_R(color) (uint8_t(color >> 16)) +#define COLOR_G(color) (uint8_t(color >> 8)) +#define COLOR_B(color) (uint8_t(color >> 0)) + +ArduinoGraphics::ArduinoGraphics(int width, int height) : + _width(width), + _height(height), + _font(NULL), + _textSizeX(1), + _textSizeY(1) +{ +} + +ArduinoGraphics::~ArduinoGraphics() +{ +} + +int ArduinoGraphics::begin() +{ + background(0, 0, 0); + noFill(); + noStroke(); + + _textScrollSpeed = 100; + + return 1; +} + +void ArduinoGraphics::end() +{ +} + +int ArduinoGraphics::width() +{ + return _width; +} + +int ArduinoGraphics::height() +{ + return _height; +} + +uint32_t ArduinoGraphics::background() +{ + uint32_t bg = (uint32_t)((uint32_t)(_backgroundR << 16) | (uint32_t)(_backgroundG << 8) | (uint32_t)(_backgroundB << 0)); + return bg; +} + +void ArduinoGraphics::beginDraw() +{ +} + +void ArduinoGraphics::endDraw() +{ +} + +void ArduinoGraphics::background(uint8_t r, uint8_t g, uint8_t b) +{ + _backgroundR = r; + _backgroundG = g; + _backgroundB = b; +} + +void ArduinoGraphics::background(uint32_t color) +{ + background(COLOR_R(color), COLOR_G(color), COLOR_B(color)); +} + +void ArduinoGraphics::clear() +{ + for (int x = 0; x < _width; x++) { + for (int y = 0; y < _height; y++) { + set(x, y, _backgroundR, _backgroundG, _backgroundB); + } + } +} + +void ArduinoGraphics::clear(int x, int y) +{ + set(x, y, _backgroundR, _backgroundB, _backgroundG); +} + +void ArduinoGraphics::fill(uint8_t r, uint8_t g, uint8_t b) +{ + _fill = true; + _fillR = r; + _fillG = g; + _fillB = b; +} + +void ArduinoGraphics::fill(uint32_t color) +{ + fill(COLOR_R(color), COLOR_G(color), COLOR_B(color)); +} + +void ArduinoGraphics::noFill() +{ + _fill = false; +} + +void ArduinoGraphics::stroke(uint8_t r, uint8_t g, uint8_t b) +{ + _stroke = true; + _strokeR = r; + _strokeG = g; + _strokeB = b; +} + +void ArduinoGraphics::stroke(uint32_t color) +{ + stroke(COLOR_R(color), COLOR_G(color), COLOR_B(color)); +} + +void ArduinoGraphics::noStroke() +{ + _stroke = false; +} + +void ArduinoGraphics::circle(int x, int y, int diameter) +{ + ellipse(x, y, diameter, diameter); +} + +void ArduinoGraphics::ellipse(int x, int y, int width, int height) +{ + if (!_stroke && !_fill) { + return; + } + + int32_t a = width / 2; + int32_t b = height / 2; + int64_t a2 = a * a; + int64_t b2 = b * b; + int64_t i, j; + + if (_fill) { + for (j = -b; j <= b; j++) { + for (i = -a; i <= a; i++) { + if (i*i*b2 + j*j*a2 <= a2*b2) { + set(x + i, y + j, _fillR, _fillG, _fillB); + } + } + } + } + if (_stroke) { + int x_val, y_val; + for (i = -a; i <= a; i++) { + y_val = b * sqrt(1 - (double)i*i / a2); + set(x + i, y + y_val, _strokeR, _strokeG, _strokeB); + set(x + i, y - y_val, _strokeR, _strokeG, _strokeB); + } + for (j = -b; j <= b; j++) { + x_val = a * sqrt(1 - (double)j*j / b2); + set(x + x_val, y + j, _strokeR, _strokeG, _strokeB); + set(x - x_val, y + j, _strokeR, _strokeG, _strokeB); + } + } +} + +void ArduinoGraphics::line(int x1, int y1, int x2, int y2) +{ + if (!_stroke) { + return; + } + + if (x1 == x2) { + for (int y = y1; y <= y2; y++) { + set(x1, y, _strokeR, _strokeG, _strokeB); + } + } else if (y1 == y2) { + for (int x = x1; x <= x2; x++) { + set(x, y1, _strokeR, _strokeG, _strokeB); + } + } else if (abs(y2 - y1) < abs(x2 - x1)) { + if (x1 > x2) { + lineLow(x2, y2, x1, y1); + } else { + lineLow(x1, y1, x2, y2); + } + } else { + if (y1 > y2) { + lineHigh(x2, y2, x1, y1); + } else { + lineHigh(x1, y1, x2, y2); + } + } +} + +void ArduinoGraphics::point(int x, int y) +{ + if (_stroke) { + set(x, y, _strokeR, _strokeG, _strokeB); + } +} + +void ArduinoGraphics::rect(int x, int y, int width, int height) +{ + if (!_stroke && !_fill) { + return; + } + + int x1 = x; + int y1 = y; + int x2 = x1 + width - 1; + int y2 = y1 + height - 1; + + for (x = x1; x <= x2; x++) { + for (y = y1; y <= y2; y++) { + if ((x == x1 || x == x2 || y == y1 || y == y2) && _stroke) { + // stroke + set(x, y, _strokeR, _strokeG, _strokeB); + } else if (_fill) { + // fill + set(x, y, _fillR, _fillG, _fillB); + } + } + } +} + +void ArduinoGraphics::text(const char* str, int x, int y) +{ + if (!_font || !_stroke) { + return; + } + + while (*str) { + uint8_t const c = (uint8_t)*str++; + + if (c == '\n') { + y += _font->height * _textSizeY; + } else if (c == '\r') { + x = 0; + } else if (c == 0xc2 || c == 0xc3) { + // drop + } else { + const uint8_t* b = _font->data[c]; + + if (b == NULL) { + b = _font->data[0x20]; + } + + if (b) { + bitmap(b, x, y, _font->width, _font->height, _textSizeX, _textSizeY); + } + + x += _font->width * _textSizeX; + } + } +} + +void ArduinoGraphics::textFont(const Font& which) +{ + _font = &which; +} + +int ArduinoGraphics::textFontWidth() const +{ + return (_font ? _font->width * _textSizeX : 0); +} + +int ArduinoGraphics::textFontHeight() const +{ + return (_font ? _font->height* _textSizeY : 0); +} + +void ArduinoGraphics::textSize(uint8_t sx, uint8_t sy) +{ + _textSizeX = (sx > 0)? sx : 1; + _textSizeY = (sy > 0)? sy : 1; +} + + +void ArduinoGraphics::bitmap(const uint8_t* data, int x, int y, int w, int h, uint8_t scale_x, uint8_t scale_y) { + if (!_stroke || !scale_x || !scale_y) { + return; + } + + if ((data == nullptr) || ((x + (w * scale_x) < 0)) || ((y + (h * scale_y) < 0)) || (x > _width) || (y > _height)) { + // offscreen + return; + } + + int xStart = x; + for (int j = 0; j < h; j++) { + uint8_t b = data[j]; + for (uint8_t ys = 0; ys < scale_y; ys++) { + if (ys >= _height) return; + x = xStart; // reset for each row + for (int i = 0; i < w; i++) { + if (b & (1 << (7 - i))) { + for (uint8_t xs = 0; xs < scale_x; xs++) set(x++, y, _strokeR, _strokeG, _strokeB); + } else { + for (uint8_t xs = 0; xs < scale_x; xs++) set(x++, y, _backgroundR, _backgroundG, _backgroundB); + } + if (x >= _width) break; + } + y++; + } + } +} + + +void ArduinoGraphics::imageRGB(const Image& img, int x, int y, int width, int height) +{ + const uint8_t* data = img.data(); + + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + uint8_t r = *data++; + uint8_t g = *data++; + uint8_t b = *data++; + + set(x + i, y + j, r, g, b); + + data++; + } + + data += (4 * (img.width() - width)); + } +} + +void ArduinoGraphics::imageRGB24(const Image& img, int x, int y, int width, int height) +{ + const uint8_t* data = img.data(); + + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + uint8_t r = *data++; + uint8_t g = *data++; + uint8_t b = *data++; + + set(x + i, y + j, r, g, b); + } + + data += (3 * (img.width() - width)); + } +} + +void ArduinoGraphics::imageRGB16(const Image& img, int x, int y, int width, int height) +{ + const uint16_t* data = (const uint16_t*)img.data(); + + for (int j = 0; j < height; j++) { + for (int i = 0; i < width; i++) { + uint16_t pixel = *data++; + + set(x + i, y + j, ((pixel >> 8) & 0xf8), ((pixel >> 3) & 0xfc), (pixel << 3) & 0xf8); + } + + data += (img.width() - width); + } +} + +void ArduinoGraphics::image(const Image& img, int x, int y) +{ + image(img, x, y, img.width(), img.height()); +} + +void ArduinoGraphics::image(const Image& img, int x, int y, int width, int height) +{ + if (!img || ((x + width) < 0) || ((y + height) < 0) || (x > _width) || (y > _height)) { + // offscreen + return; + } + + switch (img.encoding()) { + case ENCODING_RGB: + imageRGB(img, x, y, width, height); + break; + + case ENCODING_RGB24: + imageRGB24(img, x, y, width, height); + break; + + case ENCODING_RGB16: + imageRGB16(img, x, y, width, height); + break; + } +} + +void ArduinoGraphics::set(int x, int y, uint32_t color) +{ + set(x, y, COLOR_R(color), COLOR_G(color), COLOR_B(color)); +} + +size_t ArduinoGraphics::write(uint8_t b) +{ + if (b != 0xc2 && b != 0xc3) { + _textBuffer += (char)b; + } + + return 1; +} + +void ArduinoGraphics::flush() +{ + _textBuffer = ""; +} + +void ArduinoGraphics::beginText(int x, int y) +{ + _textBuffer = ""; + + _textX = x; + _textY = y; +} + +void ArduinoGraphics::beginText(int x, int y, uint8_t r, uint8_t g, uint8_t b) +{ + beginText(x, y); + + _textR = r; + _textG = g; + _textB = b; +} + +void ArduinoGraphics::beginText(int x, int y, uint32_t color) +{ + beginText(x, y, COLOR_R(color), COLOR_G(color), COLOR_B(color)); +} + +void ArduinoGraphics::endText(int scrollDirection) +{ + // backup the stroke color and set the color to the text color + bool strokeOn = _stroke; + uint8_t strokeR = _strokeR; + uint8_t strokeG = _strokeG; + uint8_t strokeB = _strokeB; + + if (scrollDirection == SCROLL_LEFT) { + int scrollLength = _textBuffer.length() * textFontWidth() + _textX + 1; + + for (int i = 0; i < scrollLength; i++) { + beginDraw(); + + int const text_x = _textX - i; + stroke(_textR, _textG, _textB); + text(_textBuffer, text_x, _textY); + + // clear previous position + const int clearX = text_x + _textBuffer.length() * _font->width; + stroke(_backgroundR, _backgroundG, _backgroundB); + line(clearX, _textY, clearX, _textY + _font->height - 1); + + endDraw(); + + delay(_textScrollSpeed); + } + } else if (scrollDirection == SCROLL_RIGHT) { + int scrollLength = _textBuffer.length() * textFontWidth() + _textX; + + for (int i = 0; i < scrollLength; i++) { + beginDraw(); + + int const text_x = _textX - (scrollLength - i - 1); + stroke(_textR, _textG, _textB); + text(_textBuffer, text_x, _textY); + + // clear previous position + const int clearX = text_x - 1; + stroke(_backgroundR, _backgroundG, _backgroundB); + line(clearX, _textY, clearX, _textY + _font->height - 1); + + bitmap(_font->data[0x20], text_x - 1, _textY, 1, _font->height, _textSizeX, _textSizeY); + + endDraw(); + + delay(_textScrollSpeed); + } + } else if (scrollDirection == SCROLL_UP) { + int scrollLength = textFontHeight() + _textY + 1; + + for (int i = 0; i < scrollLength; i++) { + beginDraw(); + + int const text_y = _textY - i; + stroke(_textR, _textG, _textB); + text(_textBuffer, _textX, text_y); + + // clear previous position + const int clearY = text_y + _font->height; + stroke(_backgroundR, _backgroundG, _backgroundB); + line(_textX, clearY, _textX + (_font->width * _textBuffer.length()) - 1, clearY); + + endDraw(); + + delay(_textScrollSpeed); + } + } else if (scrollDirection == SCROLL_DOWN) { + int scrollLength = textFontHeight() + _textY; + + for (int i = 0; i < scrollLength; i++) { + beginDraw(); + + int const text_y = _textY - (scrollLength - i - 1); + stroke(_textR, _textG, _textB); + text(_textBuffer, _textX, text_y); + + // clear previous position + const int clearY = text_y - 1; + stroke(_backgroundR, _backgroundG, _backgroundB); + line(_textX, clearY, _textX + (_font->width * _textBuffer.length()) - 1, clearY); + + bitmap(_font->data[0x20], _textX, text_y - 1, _font->width, 1, _textSizeX, _textSizeY); + endDraw(); + + delay(_textScrollSpeed); + } + } else { + beginDraw(); + stroke(_textR, _textG, _textB); + text(_textBuffer, _textX, _textY); + endDraw(); + } + + // restore the stroke color + if (strokeOn) { + stroke(strokeR, strokeG, strokeB); + } else { + noStroke(); + } + + // clear the buffer + _textBuffer = ""; +} + +void ArduinoGraphics::textScrollSpeed(unsigned long speed) +{ + _textScrollSpeed = speed; +} + +void ArduinoGraphics::lineLow(int x1, int y1, int x2, int y2) +{ + int dx = x2 - x1; + int dy = y2 - y1; + int yi = 1; + + if (dy < 0) { + yi = -1; + dy = -dy; + } + + int D = 2 * dy - dx; + int y = y1; + + for (int x = x1; x <= x2; x++) { + set(x, y, _strokeR, _strokeG, _strokeB); + + if (D > 0) { + y += yi; + D -= (2 * dx); + } + + D += (2 * dy); + } +} + +void ArduinoGraphics::lineHigh(int x1, int y1, int x2, int y2) +{ + int dx = x2 - x1; + int dy = y2 - y1; + int xi = 1; + + if (dx < 0) { + xi = -1; + dx = -dx; + } + + int D = 2 * dx - dy; + int x = x1; + + for (int y = y1; y <= y2; y++) { + set(x, y, _strokeR, _strokeG, _strokeB); + + if (D > 0) { + x += xi; + D -= 2 * dy; + } + + D += 2 * dx; + } +} diff --git a/sketch/lib/src/ArduinoGraphics.h b/sketch/lib/src/ArduinoGraphics.h new file mode 100644 index 0000000..c409796 --- /dev/null +++ b/sketch/lib/src/ArduinoGraphics.h @@ -0,0 +1,115 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#ifndef _ARDUINO_GRAPHICS_H +#define _ARDUINO_GRAPHICS_H + +#include + +#include "Font.h" +#include "Image.h" + +enum { + NO_SCROLL, + SCROLL_LEFT, + SCROLL_RIGHT, + SCROLL_UP, + SCROLL_DOWN +}; + +class ArduinoGraphics : public Print { +public: + ArduinoGraphics(int width, int height); + virtual ~ArduinoGraphics(); + + virtual int begin(); + virtual void end(); + + int width(); + int height(); + uint32_t background(); + + virtual void beginDraw(); + virtual void endDraw(); + + void background(uint8_t r, uint8_t g, uint8_t b); + void background(uint32_t color); + void clear(); + void clear(int x, int y); + void fill(uint8_t r, uint8_t g, uint8_t b); + void fill(uint32_t color); + void noFill(); + void stroke(uint8_t r, uint8_t g, uint8_t b); + void stroke(uint32_t color); + void noStroke(); + + //virtual void arc(int x, int y, int width, int height, int start, int stop); + virtual void circle(int x, int y, int diameter); + virtual void ellipse(int x, int y, int width, int height); + virtual void line(int x1, int y1, int x2, int y2); + virtual void point(int x, int y); + //virtual void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); + //virtual void triangle(int x1, int y1, int x2, int y2, int x3, int y3); + virtual void rect(int x, int y, int width, int height); + + virtual void text(const char* str, int x = 0, int y = 0); + virtual void text(const String& str, int x = 0, int y = 0) { text(str.c_str(), x, y); } + virtual void textFont(const Font& which); + virtual void textSize(uint8_t s) {textSize(s, s);} + virtual void textSize(uint8_t sx, uint8_t sy); + + virtual int textFontWidth() const; + virtual int textFontHeight() const; + + virtual void image(const Image& img, int x, int y); + virtual void image(const Image& img, int x, int y, int width, int height); + + virtual void set(int x, int y, uint8_t r, uint8_t g, uint8_t b) = 0; + virtual void set(int x, int y, uint32_t color); + + // from Print + virtual size_t write(uint8_t); + virtual void flush(); + + virtual void beginText(int x = 0, int y = 0); + virtual void beginText(int x, int y, uint8_t r, uint8_t g, uint8_t b); + virtual void beginText(int x, int y, uint32_t color); + virtual void endText(int scroll = NO_SCROLL); + virtual void textScrollSpeed(unsigned long speed = 150); + +protected: + virtual void bitmap(const uint8_t* data, int x, int y, int w, int h, uint8_t scale_x = 1, + uint8_t scale_y = 1); + virtual void imageRGB(const Image& img, int x, int y, int width, int height); + virtual void imageRGB24(const Image& img, int x, int y, int width, int height); + virtual void imageRGB16(const Image& img, int x, int y, int width, int height); + +private: + void lineLow(int x1, int y1, int x2, int y2); + void lineHigh(int x1, int y1, int x2, int y2); + +private: + int _width; + int _height; + const Font* _font; + + bool _fill, _stroke; + uint8_t _backgroundR, _backgroundG, _backgroundB; + uint8_t _fillR, _fillG, _fillB; + uint8_t _strokeR, _strokeG, _strokeB; + + String _textBuffer; + uint8_t _textR, _textG, _textB; + int _textX; + int _textY; + uint8_t _textSizeX; + uint8_t _textSizeY; + unsigned long _textScrollSpeed; +}; + +extern const struct Font Font_4x6; +extern const struct Font Font_5x7; + +#endif diff --git a/sketch/lib/src/Font.h b/sketch/lib/src/Font.h new file mode 100644 index 0000000..c1d7f46 --- /dev/null +++ b/sketch/lib/src/Font.h @@ -0,0 +1,18 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#ifndef _FONT_H +#define _FONT_H + +#include +#include + +struct Font { + const int width; + const int height; + const uint8_t** data; +}; + +#endif diff --git a/sketch/lib/src/Font_4x6.c b/sketch/lib/src/Font_4x6.c new file mode 100644 index 0000000..407527b --- /dev/null +++ b/sketch/lib/src/Font_4x6.c @@ -0,0 +1,1796 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#include "Font.h" + +const struct Font Font_4x6 = { + 4, + 6, + (const uint8_t*[]){ + // char0 + (const uint8_t[]){ + 0b10100000, + 0b00000000, + 0b10100000, + 0b00000000, + 0b10100000, + 0b00000000, + }, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + // space + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // exclam + (const uint8_t[]){ + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + 0b01000000, + 0b00000000, + }, + // quotedbl + (const uint8_t[]){ + 0b10100000, + 0b10100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // numbersign + (const uint8_t[]){ + 0b10100000, + 0b11110000, + 0b10100000, + 0b11110000, + 0b10100000, + 0b00000000, + }, + // dollar + (const uint8_t[]){ + 0b01000000, + 0b11100000, + 0b11000000, + 0b00100000, + 0b11100000, + 0b01000000, + }, + // percent + (const uint8_t[]){ + 0b10000000, + 0b00100000, + 0b01000000, + 0b10000000, + 0b00100000, + 0b00000000, + }, + // ampersand + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b01000000, + 0b10100000, + 0b01010000, + 0b00000000, + }, + // quotesingle + (const uint8_t[]){ + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // parenleft + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00100000, + }, + // parenright + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b10000000, + }, + // asterisk + (const uint8_t[]){ + 0b10100000, + 0b01000000, + 0b11100000, + 0b01000000, + 0b10100000, + 0b00000000, + }, + // plus + (const uint8_t[]){ + 0b01000000, + 0b01000000, + 0b11100000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // comma + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000000, + 0b10000000, + }, + // hyphen + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b11100000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // period + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000000, + 0b00000000, + }, + // slash + (const uint8_t[]){ + 0b00100000, + 0b00100000, + 0b01000000, + 0b10000000, + 0b10000000, + 0b00000000, + }, + // zero + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // one + (const uint8_t[]){ + 0b01000000, + 0b11000000, + 0b01000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // two + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b00100000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // three + (const uint8_t[]){ + 0b11100000, + 0b00100000, + 0b01000000, + 0b00100000, + 0b11000000, + 0b00000000, + }, + // four + (const uint8_t[]){ + 0b10100000, + 0b10100000, + 0b11100000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // five + (const uint8_t[]){ + 0b11100000, + 0b10000000, + 0b11000000, + 0b00100000, + 0b11000000, + 0b00000000, + }, + // six + (const uint8_t[]){ + 0b01100000, + 0b10000000, + 0b11000000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // seven + (const uint8_t[]){ + 0b11100000, + 0b00100000, + 0b01000000, + 0b10000000, + 0b10000000, + 0b00000000, + }, + // eight + (const uint8_t[]){ + 0b01100000, + 0b10100000, + 0b01000000, + 0b10100000, + 0b11000000, + 0b00000000, + }, + // nine + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b01100000, + 0b00100000, + 0b11000000, + 0b00000000, + }, + // colon + (const uint8_t[]){ + 0b00000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b01000000, + 0b00000000, + }, + // semicolon + (const uint8_t[]){ + 0b00000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b01000000, + 0b10000000, + }, + // less + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b10000000, + 0b01000000, + 0b00100000, + 0b00000000, + }, + // equal + (const uint8_t[]){ + 0b00000000, + 0b11100000, + 0b00000000, + 0b11100000, + 0b00000000, + 0b00000000, + }, + // greater + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b00100000, + 0b01000000, + 0b10000000, + 0b00000000, + }, + // question + (const uint8_t[]){ + 0b11000000, + 0b00100000, + 0b01000000, + 0b00000000, + 0b01000000, + 0b00000000, + }, + // at + (const uint8_t[]){ + 0b01100000, + 0b10100000, + 0b10100000, + 0b10000000, + 0b01100000, + 0b00000000, + }, + // A + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // B + (const uint8_t[]){ + 0b11000000, + 0b10100000, + 0b11000000, + 0b10100000, + 0b11000000, + 0b00000000, + }, + // C + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b10000000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // D + (const uint8_t[]){ + 0b11000000, + 0b10100000, + 0b10100000, + 0b10100000, + 0b11000000, + 0b00000000, + }, + // E + (const uint8_t[]){ + 0b11100000, + 0b10000000, + 0b11000000, + 0b10000000, + 0b11100000, + 0b00000000, + }, + // F + (const uint8_t[]){ + 0b11100000, + 0b10000000, + 0b11000000, + 0b10000000, + 0b10000000, + 0b00000000, + }, + // G + (const uint8_t[]){ + 0b01100000, + 0b10000000, + 0b10100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // H + (const uint8_t[]){ + 0b10100000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // I + (const uint8_t[]){ + 0b11100000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // J + (const uint8_t[]){ + 0b00100000, + 0b00100000, + 0b00100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // K + (const uint8_t[]){ + 0b10100000, + 0b10100000, + 0b11000000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // L + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b10000000, + 0b10000000, + 0b11100000, + 0b00000000, + }, + // M + (const uint8_t[]){ + 0b10100000, + 0b11100000, + 0b11100000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // N + (const uint8_t[]){ + 0b00100000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b10000000, + 0b00000000, + }, + // O + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b10100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // P + (const uint8_t[]){ + 0b11000000, + 0b10100000, + 0b11000000, + 0b10000000, + 0b10000000, + 0b00000000, + }, + // Q + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b10100000, + 0b10100000, + 0b01000000, + 0b00100000, + }, + // R + (const uint8_t[]){ + 0b11000000, + 0b10100000, + 0b11000000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // S + (const uint8_t[]){ + 0b01100000, + 0b10000000, + 0b01000000, + 0b00100000, + 0b11000000, + 0b00000000, + }, + // T + (const uint8_t[]){ + 0b11100000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // U + (const uint8_t[]){ + 0b10100000, + 0b10100000, + 0b10100000, + 0b10100000, + 0b11100000, + 0b00000000, + }, + // V + (const uint8_t[]){ + 0b10100000, + 0b10100000, + 0b10100000, + 0b11100000, + 0b01000000, + 0b00000000, + }, + // W + (const uint8_t[]){ + 0b10100000, + 0b10100000, + 0b11100000, + 0b11100000, + 0b10100000, + 0b00000000, + }, + // X + (const uint8_t[]){ + 0b10100000, + 0b10100000, + 0b01000000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // Y + (const uint8_t[]){ + 0b10100000, + 0b10100000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // Z + (const uint8_t[]){ + 0b11100000, + 0b00100000, + 0b01000000, + 0b10000000, + 0b11100000, + 0b00000000, + }, + // bracketleft + (const uint8_t[]){ + 0b01100000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01100000, + 0b00000000, + }, + // backslash + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b01000000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // bracketright + (const uint8_t[]){ + 0b11000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b11000000, + 0b00000000, + }, + // asciicircum + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // underscore + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11100000, + }, + // grave + (const uint8_t[]){ + 0b01000000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // a + (const uint8_t[]){ + 0b00000000, + 0b01100000, + 0b10100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // b + (const uint8_t[]){ + 0b10000000, + 0b11000000, + 0b10100000, + 0b10100000, + 0b11000000, + 0b00000000, + }, + // c + (const uint8_t[]){ + 0b00000000, + 0b01100000, + 0b10000000, + 0b10000000, + 0b01100000, + 0b00000000, + }, + // d + (const uint8_t[]){ + 0b00100000, + 0b01100000, + 0b10100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // e + (const uint8_t[]){ + 0b00000000, + 0b01000000, + 0b10100000, + 0b11000000, + 0b01100000, + 0b00000000, + }, + // f + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b11100000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // g + (const uint8_t[]){ + 0b00000000, + 0b01100000, + 0b10100000, + 0b01100000, + 0b00100000, + 0b11000000, + }, + // h + (const uint8_t[]){ + 0b10000000, + 0b11000000, + 0b10100000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // i + (const uint8_t[]){ + 0b01000000, + 0b00000000, + 0b11000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // j + (const uint8_t[]){ + 0b00100000, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b11000000, + }, + // k + (const uint8_t[]){ + 0b10000000, + 0b10100000, + 0b11000000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // l + (const uint8_t[]){ + 0b11000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // m + (const uint8_t[]){ + 0b00000000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // n + (const uint8_t[]){ + 0b00000000, + 0b11000000, + 0b10100000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // o + (const uint8_t[]){ + 0b00000000, + 0b01000000, + 0b10100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // p + (const uint8_t[]){ + 0b00000000, + 0b11000000, + 0b10100000, + 0b11000000, + 0b10000000, + 0b10000000, + }, + // q + (const uint8_t[]){ + 0b00000000, + 0b01100000, + 0b10100000, + 0b10100000, + 0b01100000, + 0b00100000, + }, + // r + (const uint8_t[]){ + 0b00000000, + 0b10100000, + 0b11000000, + 0b10000000, + 0b10000000, + 0b00000000, + }, + // s + (const uint8_t[]){ + 0b00000000, + 0b01100000, + 0b11000000, + 0b00100000, + 0b11000000, + 0b00000000, + }, + // t + (const uint8_t[]){ + 0b01000000, + 0b11100000, + 0b01000000, + 0b01000000, + 0b00100000, + 0b00000000, + }, + // u + (const uint8_t[]){ + 0b00000000, + 0b10100000, + 0b10100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // v + (const uint8_t[]){ + 0b00000000, + 0b10100000, + 0b10100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // w + (const uint8_t[]){ + 0b00000000, + 0b10100000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b00000000, + }, + // x + (const uint8_t[]){ + 0b00000000, + 0b10100000, + 0b01000000, + 0b01000000, + 0b10100000, + 0b00000000, + }, + // y + (const uint8_t[]){ + 0b00000000, + 0b10100000, + 0b10100000, + 0b01100000, + 0b00100000, + 0b11000000, + }, + // z + (const uint8_t[]){ + 0b00000000, + 0b11100000, + 0b00100000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // braceleft + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b11000000, + 0b01000000, + 0b01000000, + 0b00100000, + }, + // bar + (const uint8_t[]){ + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // braceright + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b01100000, + 0b01000000, + 0b01000000, + 0b10000000, + }, + // asciitilde + (const uint8_t[]){ + 0b01010000, + 0b10100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + // space + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // exclamdown + (const uint8_t[]){ + 0b01000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // cent + (const uint8_t[]){ + 0b01000000, + 0b11100000, + 0b10000000, + 0b11100000, + 0b01000000, + 0b00000000, + }, + // sterling + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b01100000, + 0b01000000, + 0b10100000, + 0b00000000, + }, + // currency + (const uint8_t[]){ + 0b00000000, + 0b10010000, + 0b01100000, + 0b01100000, + 0b10010000, + 0b00000000, + }, + // yen + (const uint8_t[]){ + 0b10100000, + 0b01000000, + 0b11100000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // brokenbar + (const uint8_t[]){ + 0b01000000, + 0b01000000, + 0b00000000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // section + (const uint8_t[]){ + 0b01100000, + 0b11000000, + 0b10100000, + 0b01100000, + 0b00100000, + 0b11000000, + }, + // dieresis + (const uint8_t[]){ + 0b10100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // copyright + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b11010000, + 0b11010000, + 0b10010000, + 0b01100000, + }, + // ordfeminine + (const uint8_t[]){ + 0b01100000, + 0b10100000, + 0b01100000, + 0b00000000, + 0b11100000, + 0b00000000, + }, + // guillemotleft + (const uint8_t[]){ + 0b00000000, + 0b01010000, + 0b10100000, + 0b01010000, + 0b00000000, + 0b00000000, + }, + // logicalnot + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b11100000, + 0b00100000, + 0b00000000, + 0b00000000, + }, + // hyphen + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b11100000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // registered + (const uint8_t[]){ + 0b01100000, + 0b11110000, + 0b11010000, + 0b01100000, + 0b00000000, + 0b00000000, + }, + // macron + (const uint8_t[]){ + 0b11100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // degree + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // plusminus + (const uint8_t[]){ + 0b01000000, + 0b11100000, + 0b01000000, + 0b00000000, + 0b11100000, + 0b00000000, + }, + // twosuperior + (const uint8_t[]){ + 0b11000000, + 0b01000000, + 0b10000000, + 0b11000000, + 0b00000000, + 0b00000000, + }, + // threesuperior + (const uint8_t[]){ + 0b11000000, + 0b01000000, + 0b10000000, + 0b01000000, + 0b10000000, + 0b00000000, + }, + // acute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // mu + (const uint8_t[]){ + 0b00000000, + 0b10100000, + 0b10100000, + 0b10100000, + 0b11000000, + 0b10000000, + }, + // paragraph + (const uint8_t[]){ + 0b01110000, + 0b11010000, + 0b11010000, + 0b01010000, + 0b01010000, + 0b00000000, + }, + // periodcentered + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // cedilla + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100000, + 0b01000000, + 0b00000000, + }, + // onesuperior + (const uint8_t[]){ + 0b01000000, + 0b11000000, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + }, + // ordmasculine + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b01000000, + 0b00000000, + 0b11100000, + 0b00000000, + }, + // guillemotright + (const uint8_t[]){ + 0b00000000, + 0b10100000, + 0b01010000, + 0b10100000, + 0b00000000, + 0b00000000, + }, + // onequarter + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b10000000, + 0b01010000, + 0b01110000, + 0b00010000, + }, + // onehalf + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b10110000, + 0b00010000, + 0b00100000, + 0b00110000, + }, + // threequarters + (const uint8_t[]){ + 0b11000000, + 0b01000000, + 0b10000000, + 0b01010000, + 0b10110000, + 0b00010000, + }, + // questiondown + (const uint8_t[]){ + 0b01000000, + 0b00000000, + 0b01000000, + 0b10000000, + 0b01100000, + 0b00000000, + }, + // Agrave + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b00000000, + }, + // Aacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b00000000, + }, + // Acircumflex + (const uint8_t[]){ + 0b11000000, + 0b01000000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b00000000, + }, + // Atilde + (const uint8_t[]){ + 0b01100000, + 0b11000000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b00000000, + }, + // Adieresis + (const uint8_t[]){ + 0b10100000, + 0b01000000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b00000000, + }, + // Aring + (const uint8_t[]){ + 0b01000000, + 0b01000000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b00000000, + }, + // AE + (const uint8_t[]){ + 0b01110000, + 0b10100000, + 0b11110000, + 0b10100000, + 0b10110000, + 0b00000000, + }, + // Ccedilla + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b10000000, + 0b10100000, + 0b01000000, + 0b10000000, + }, + // Egrave + (const uint8_t[]){ + 0b10000000, + 0b11100000, + 0b11000000, + 0b10000000, + 0b11100000, + 0b00000000, + }, + // Eacute + (const uint8_t[]){ + 0b00100000, + 0b11100000, + 0b11000000, + 0b10000000, + 0b11100000, + 0b00000000, + }, + // Ecircumflex + (const uint8_t[]){ + 0b01100000, + 0b11100000, + 0b11000000, + 0b10000000, + 0b11100000, + 0b00000000, + }, + // Edieresis + (const uint8_t[]){ + 0b10100000, + 0b11100000, + 0b11000000, + 0b10000000, + 0b11100000, + 0b00000000, + }, + // Igrave + (const uint8_t[]){ + 0b10000000, + 0b11100000, + 0b01000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // Iacute + (const uint8_t[]){ + 0b00100000, + 0b11100000, + 0b01000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // Icircumflex + (const uint8_t[]){ + 0b01000000, + 0b11100000, + 0b01000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // Idieresis + (const uint8_t[]){ + 0b10100000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // Eth + (const uint8_t[]){ + 0b11100000, + 0b01010000, + 0b11010000, + 0b01010000, + 0b11100000, + 0b00000000, + }, + // Ntilde + (const uint8_t[]){ + 0b01010000, + 0b10100000, + 0b11100000, + 0b11100000, + 0b10100000, + 0b00000000, + }, + // Ograve + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b10100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // Oacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b10100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // Ocircumflex + (const uint8_t[]){ + 0b01000000, + 0b01000000, + 0b10100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // Otilde + (const uint8_t[]){ + 0b01110000, + 0b11100000, + 0b10100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // Odieresis + (const uint8_t[]){ + 0b10100000, + 0b01000000, + 0b10100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // multiply + (const uint8_t[]){ + 0b00000000, + 0b10100000, + 0b01000000, + 0b10100000, + 0b00000000, + 0b00000000, + }, + // Oslash + (const uint8_t[]){ + 0b01100000, + 0b10100000, + 0b11100000, + 0b10100000, + 0b11000000, + 0b00000000, + }, + // Ugrave + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b10100000, + 0b10100000, + 0b11100000, + 0b00000000, + }, + // Uacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b10100000, + 0b10100000, + 0b11100000, + 0b00000000, + }, + // Ucircumflex + (const uint8_t[]){ + 0b01000000, + 0b00000000, + 0b10100000, + 0b10100000, + 0b11100000, + 0b00000000, + }, + // Udieresis + (const uint8_t[]){ + 0b10100000, + 0b00000000, + 0b10100000, + 0b10100000, + 0b11100000, + 0b00000000, + }, + // Yacute + (const uint8_t[]){ + 0b00100000, + 0b00000000, + 0b10100000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // Thorn + (const uint8_t[]){ + 0b10000000, + 0b11000000, + 0b10100000, + 0b11000000, + 0b10000000, + 0b00000000, + }, + // germandbls + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b11000000, + 0b10100000, + 0b11100000, + 0b10000000, + }, + // agrave + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b01100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // aacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b01100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // acircumflex + (const uint8_t[]){ + 0b01100000, + 0b00000000, + 0b01100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // atilde + (const uint8_t[]){ + 0b01010000, + 0b10100000, + 0b01100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // adieresis + (const uint8_t[]){ + 0b10100000, + 0b00000000, + 0b01100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // aring + (const uint8_t[]){ + 0b01000000, + 0b00000000, + 0b01100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // ae + (const uint8_t[]){ + 0b00000000, + 0b01110000, + 0b10110000, + 0b10100000, + 0b01110000, + 0b00000000, + }, + // ccedilla + (const uint8_t[]){ + 0b00000000, + 0b01000000, + 0b10100000, + 0b10000000, + 0b01100000, + 0b01000000, + }, + // egrave + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b10100000, + 0b11000000, + 0b01100000, + 0b00000000, + }, + // eacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b10100000, + 0b11000000, + 0b01100000, + 0b00000000, + }, + // ecircumflex + (const uint8_t[]){ + 0b11000000, + 0b01000000, + 0b10100000, + 0b11000000, + 0b01100000, + 0b00000000, + }, + // edieresis + (const uint8_t[]){ + 0b10100000, + 0b01000000, + 0b10100000, + 0b11000000, + 0b01100000, + 0b00000000, + }, + // igrave + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // iacute + (const uint8_t[]){ + 0b00100000, + 0b11000000, + 0b01000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // icircumflex + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b01000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // idieresis + (const uint8_t[]){ + 0b10100000, + 0b00000000, + 0b11000000, + 0b01000000, + 0b11100000, + 0b00000000, + }, + // eth + (const uint8_t[]){ + 0b10100000, + 0b01000000, + 0b01100000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // ntilde + (const uint8_t[]){ + 0b01010000, + 0b10100000, + 0b11000000, + 0b10100000, + 0b10100000, + 0b00000000, + }, + // ograve + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b01000000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // oacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b01000000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // ocircumflex + (const uint8_t[]){ + 0b01000000, + 0b00000000, + 0b01000000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // otilde + (const uint8_t[]){ + 0b11100000, + 0b00000000, + 0b01000000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // odieresis + (const uint8_t[]){ + 0b10100000, + 0b00000000, + 0b01000000, + 0b10100000, + 0b01000000, + 0b00000000, + }, + // divide + (const uint8_t[]){ + 0b01000000, + 0b00000000, + 0b11100000, + 0b00000000, + 0b01000000, + 0b00000000, + }, + // oslash + (const uint8_t[]){ + 0b00000000, + 0b01100000, + 0b10100000, + 0b10100000, + 0b11000000, + 0b00000000, + }, + // ugrave + (const uint8_t[]){ + 0b10000000, + 0b01000000, + 0b10100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // uacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b10100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // ucircumflex + (const uint8_t[]){ + 0b01000000, + 0b00000000, + 0b10100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // udieresis + (const uint8_t[]){ + 0b10100000, + 0b00000000, + 0b10100000, + 0b10100000, + 0b01100000, + 0b00000000, + }, + // yacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b10100000, + 0b11100000, + 0b00100000, + 0b11000000, + }, + // thorn + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b11000000, + 0b10100000, + 0b11000000, + 0b10000000, + }, + } +}; diff --git a/sketch/lib/src/Font_5x7.c b/sketch/lib/src/Font_5x7.c new file mode 100644 index 0000000..a4ee951 --- /dev/null +++ b/sketch/lib/src/Font_5x7.c @@ -0,0 +1,1988 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#include "Font.h" + +const struct Font Font_5x7 = { + 5, + 7, + (const uint8_t*[]){ + // char0 + (const uint8_t[]){ + 0b00000000, + 0b10101000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b10101000, + 0b00000000, + }, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + // space + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // exclam + (const uint8_t[]){ + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00100000, + 0b00000000, + }, + // quotedbl + (const uint8_t[]){ + 0b01010000, + 0b01010000, + 0b01010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // numbersign + (const uint8_t[]){ + 0b00000000, + 0b01010000, + 0b11111000, + 0b01010000, + 0b11111000, + 0b01010000, + 0b00000000, + }, + // dollar + (const uint8_t[]){ + 0b00000000, + 0b01110000, + 0b10100000, + 0b01110000, + 0b00101000, + 0b01110000, + 0b00000000, + }, + // percent + (const uint8_t[]){ + 0b10000000, + 0b10010000, + 0b00100000, + 0b01000000, + 0b10010000, + 0b00010000, + 0b00000000, + }, + // ampersand + (const uint8_t[]){ + 0b00000000, + 0b01000000, + 0b10100000, + 0b01000000, + 0b10100000, + 0b01010000, + 0b00000000, + }, + // quotesingle + (const uint8_t[]){ + 0b00100000, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // parenleft + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00100000, + 0b00000000, + }, + // parenright + (const uint8_t[]){ + 0b01000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b01000000, + 0b00000000, + }, + // asterisk + (const uint8_t[]){ + 0b00000000, + 0b01010000, + 0b00100000, + 0b01110000, + 0b00100000, + 0b01010000, + 0b00000000, + }, + // plus + (const uint8_t[]){ + 0b00000000, + 0b00100000, + 0b00100000, + 0b11111000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // comma + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00110000, + 0b00100000, + 0b01000000, + }, + // hyphen + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // period + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01100000, + 0b01100000, + 0b00000000, + }, + // slash + (const uint8_t[]){ + 0b00000000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b10000000, + 0b00000000, + 0b00000000, + }, + // zero + (const uint8_t[]){ + 0b00100000, + 0b01010000, + 0b01010000, + 0b01010000, + 0b01010000, + 0b00100000, + 0b00000000, + }, + // one + (const uint8_t[]){ + 0b00100000, + 0b01100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // two + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b11110000, + 0b00000000, + }, + // three + (const uint8_t[]){ + 0b11110000, + 0b00010000, + 0b01100000, + 0b00010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // four + (const uint8_t[]){ + 0b00100000, + 0b01100000, + 0b10100000, + 0b11110000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // five + (const uint8_t[]){ + 0b11110000, + 0b10000000, + 0b11100000, + 0b00010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // six + (const uint8_t[]){ + 0b01100000, + 0b10000000, + 0b11100000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // seven + (const uint8_t[]){ + 0b11110000, + 0b00010000, + 0b00100000, + 0b00100000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // eight + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b01100000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // nine + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b01110000, + 0b00010000, + 0b01100000, + 0b00000000, + }, + // colon + (const uint8_t[]){ + 0b00000000, + 0b01100000, + 0b01100000, + 0b00000000, + 0b01100000, + 0b01100000, + 0b00000000, + }, + // semicolon + (const uint8_t[]){ + 0b00000000, + 0b01100000, + 0b01100000, + 0b00000000, + 0b01100000, + 0b01000000, + 0b10000000, + }, + // less + (const uint8_t[]){ + 0b00000000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00000000, + }, + // equal + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b00000000, + }, + // greater + (const uint8_t[]){ + 0b00000000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b00000000, + }, + // question + (const uint8_t[]){ + 0b00100000, + 0b01010000, + 0b00010000, + 0b00100000, + 0b00000000, + 0b00100000, + 0b00000000, + }, + // at + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10110000, + 0b10110000, + 0b10000000, + 0b01100000, + 0b00000000, + }, + // A + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b11110000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // B + (const uint8_t[]){ + 0b11100000, + 0b10010000, + 0b11100000, + 0b10010000, + 0b10010000, + 0b11100000, + 0b00000000, + }, + // C + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10000000, + 0b10000000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // D + (const uint8_t[]){ + 0b11100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b11100000, + 0b00000000, + }, + // E + (const uint8_t[]){ + 0b11110000, + 0b10000000, + 0b11100000, + 0b10000000, + 0b10000000, + 0b11110000, + 0b00000000, + }, + // F + (const uint8_t[]){ + 0b11110000, + 0b10000000, + 0b11100000, + 0b10000000, + 0b10000000, + 0b10000000, + 0b00000000, + }, + // G + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10000000, + 0b10110000, + 0b10010000, + 0b01110000, + 0b00000000, + }, + // H + (const uint8_t[]){ + 0b10010000, + 0b10010000, + 0b11110000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // I + (const uint8_t[]){ + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // J + (const uint8_t[]){ + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // K + (const uint8_t[]){ + 0b10010000, + 0b10100000, + 0b11000000, + 0b11000000, + 0b10100000, + 0b10010000, + 0b00000000, + }, + // L + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b10000000, + 0b10000000, + 0b10000000, + 0b11110000, + 0b00000000, + }, + // M + (const uint8_t[]){ + 0b10010000, + 0b11110000, + 0b11110000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // N + (const uint8_t[]){ + 0b10010000, + 0b11010000, + 0b11010000, + 0b10110000, + 0b10110000, + 0b10010000, + 0b00000000, + }, + // O + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // P + (const uint8_t[]){ + 0b11100000, + 0b10010000, + 0b10010000, + 0b11100000, + 0b10000000, + 0b10000000, + 0b00000000, + }, + // Q + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b11010000, + 0b01100000, + 0b00010000, + }, + // R + (const uint8_t[]){ + 0b11100000, + 0b10010000, + 0b10010000, + 0b11100000, + 0b10100000, + 0b10010000, + 0b00000000, + }, + // S + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b01000000, + 0b00100000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // T + (const uint8_t[]){ + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // U + (const uint8_t[]){ + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // V + (const uint8_t[]){ + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b01100000, + 0b00000000, + }, + // W + (const uint8_t[]){ + 0b10010000, + 0b10010000, + 0b10010000, + 0b11110000, + 0b11110000, + 0b10010000, + 0b00000000, + }, + // X + (const uint8_t[]){ + 0b10010000, + 0b10010000, + 0b01100000, + 0b01100000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // Y + (const uint8_t[]){ + 0b01010000, + 0b01010000, + 0b01010000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // Z + (const uint8_t[]){ + 0b11110000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b10000000, + 0b11110000, + 0b00000000, + }, + // bracketleft + (const uint8_t[]){ + 0b01110000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01110000, + 0b00000000, + }, + // backslash + (const uint8_t[]){ + 0b00000000, + 0b10000000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00000000, + 0b00000000, + }, + // bracketright + (const uint8_t[]){ + 0b01110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01110000, + 0b00000000, + }, + // asciicircum + (const uint8_t[]){ + 0b00100000, + 0b01010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // underscore + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00000000, + }, + // grave + (const uint8_t[]){ + 0b01000000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // a + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01110000, + 0b10010000, + 0b10110000, + 0b01010000, + 0b00000000, + }, + // b + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b11100000, + 0b10010000, + 0b10010000, + 0b11100000, + 0b00000000, + }, + // c + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01100000, + 0b10000000, + 0b10000000, + 0b01100000, + 0b00000000, + }, + // d + (const uint8_t[]){ + 0b00010000, + 0b00010000, + 0b01110000, + 0b10010000, + 0b10010000, + 0b01110000, + 0b00000000, + }, + // e + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01100000, + 0b10110000, + 0b11000000, + 0b01100000, + 0b00000000, + }, + // f + (const uint8_t[]){ + 0b00100000, + 0b01010000, + 0b01000000, + 0b11100000, + 0b01000000, + 0b01000000, + 0b00000000, + }, + // g + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01110000, + 0b10010000, + 0b01100000, + 0b10000000, + 0b01110000, + }, + // h + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b11100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // i + (const uint8_t[]){ + 0b00100000, + 0b00000000, + 0b01100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // j + (const uint8_t[]){ + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01010000, + 0b00100000, + }, + // k + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b10100000, + 0b11000000, + 0b10100000, + 0b10010000, + 0b00000000, + }, + // l + (const uint8_t[]){ + 0b01100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // m + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b10100000, + 0b11110000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // n + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b11100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // o + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01100000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // p + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b11100000, + 0b10010000, + 0b10010000, + 0b11100000, + 0b10000000, + }, + // q + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01110000, + 0b10010000, + 0b10010000, + 0b01110000, + 0b00010000, + }, + // r + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b11100000, + 0b10010000, + 0b10000000, + 0b10000000, + 0b00000000, + }, + // s + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01110000, + 0b11000000, + 0b00110000, + 0b11100000, + 0b00000000, + }, + // t + (const uint8_t[]){ + 0b01000000, + 0b01000000, + 0b11100000, + 0b01000000, + 0b01000000, + 0b00110000, + 0b00000000, + }, + // u + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01110000, + 0b00000000, + }, + // v + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01010000, + 0b01010000, + 0b01010000, + 0b00100000, + 0b00000000, + }, + // w + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b10010000, + 0b10010000, + 0b11110000, + 0b11110000, + 0b00000000, + }, + // x + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b10010000, + 0b01100000, + 0b01100000, + 0b10010000, + 0b00000000, + }, + // y + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b10010000, + 0b10010000, + 0b01010000, + 0b00100000, + 0b01000000, + }, + // z + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b11110000, + 0b00100000, + 0b01000000, + 0b11110000, + 0b00000000, + }, + // braceleft + (const uint8_t[]){ + 0b00010000, + 0b00100000, + 0b01100000, + 0b00100000, + 0b00100000, + 0b00010000, + 0b00000000, + }, + // bar + (const uint8_t[]){ + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // braceright + (const uint8_t[]){ + 0b01000000, + 0b00100000, + 0b00110000, + 0b00100000, + 0b00100000, + 0b01000000, + 0b00000000, + }, + // asciitilde + (const uint8_t[]){ + 0b01010000, + 0b10100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + // space + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // exclamdown + (const uint8_t[]){ + 0b00100000, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // cent + (const uint8_t[]){ + 0b00000000, + 0b00100000, + 0b01110000, + 0b10100000, + 0b10100000, + 0b01110000, + 0b00100000, + }, + // sterling + (const uint8_t[]){ + 0b00000000, + 0b00110000, + 0b01000000, + 0b11100000, + 0b01000000, + 0b10110000, + 0b00000000, + }, + // currency + (const uint8_t[]){ + 0b00000000, + 0b10001000, + 0b01110000, + 0b01010000, + 0b01110000, + 0b10001000, + 0b00000000, + }, + // yen + (const uint8_t[]){ + 0b01010000, + 0b01010000, + 0b00100000, + 0b01110000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // brokenbar + (const uint8_t[]){ + 0b00000000, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // section + (const uint8_t[]){ + 0b00110000, + 0b01000000, + 0b01100000, + 0b01010000, + 0b00110000, + 0b00010000, + 0b01100000, + }, + // dieresis + (const uint8_t[]){ + 0b01010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // copyright + (const uint8_t[]){ + 0b01110000, + 0b10001000, + 0b10101000, + 0b11001000, + 0b10101000, + 0b10001000, + 0b01110000, + }, + // ordfeminine + (const uint8_t[]){ + 0b01100000, + 0b10100000, + 0b01100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // guillemotleft + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01001000, + 0b10010000, + 0b01001000, + 0b00000000, + 0b00000000, + }, + // logicalnot + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00010000, + 0b00000000, + 0b00000000, + }, + // hyphen + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // registered + (const uint8_t[]){ + 0b01110000, + 0b10001000, + 0b11101000, + 0b11001000, + 0b11001000, + 0b10001000, + 0b01110000, + }, + // macron + (const uint8_t[]){ + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // degree + (const uint8_t[]){ + 0b00100000, + 0b01010000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // plusminus + (const uint8_t[]){ + 0b00100000, + 0b00100000, + 0b11111000, + 0b00100000, + 0b00100000, + 0b11111000, + 0b00000000, + }, + // twosuperior + (const uint8_t[]){ + 0b01100000, + 0b00100000, + 0b01000000, + 0b01100000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // threesuperior + (const uint8_t[]){ + 0b01100000, + 0b01100000, + 0b00100000, + 0b01100000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // acute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // mu + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b11100000, + 0b10000000, + }, + // paragraph + (const uint8_t[]){ + 0b01110000, + 0b11010000, + 0b11010000, + 0b01010000, + 0b01010000, + 0b01010000, + 0b00000000, + }, + // periodcentered + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01100000, + 0b01100000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // cedilla + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100000, + 0b01000000, + }, + // onesuperior + (const uint8_t[]){ + 0b00100000, + 0b01100000, + 0b00100000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // ordmasculine + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + }, + // guillemotright + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b10010000, + 0b01001000, + 0b10010000, + 0b00000000, + 0b00000000, + }, + // onequarter + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b10000000, + 0b10010000, + 0b00110000, + 0b01110000, + 0b00010000, + }, + // onehalf + (const uint8_t[]){ + 0b10000000, + 0b10000000, + 0b10000000, + 0b10110000, + 0b00010000, + 0b00100000, + 0b00110000, + }, + // threequarters + (const uint8_t[]){ + 0b11000000, + 0b11000000, + 0b01000000, + 0b11010000, + 0b00110000, + 0b01110000, + 0b00010000, + }, + // questiondown + (const uint8_t[]){ + 0b00100000, + 0b00000000, + 0b00100000, + 0b01000000, + 0b01010000, + 0b00100000, + 0b00000000, + }, + // Agrave + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b11110000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // Aacute + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b11110000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // Acircumflex + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b11110000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // Atilde + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b11110000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // Adieresis + (const uint8_t[]){ + 0b10010000, + 0b01100000, + 0b10010000, + 0b11110000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // Aring + (const uint8_t[]){ + 0b01100000, + 0b01100000, + 0b10010000, + 0b11110000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // AE + (const uint8_t[]){ + 0b01110000, + 0b10100000, + 0b10110000, + 0b11100000, + 0b10100000, + 0b10110000, + 0b00000000, + }, + // Ccedilla + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10000000, + 0b10000000, + 0b10010000, + 0b01100000, + 0b01000000, + }, + // Egrave + (const uint8_t[]){ + 0b11110000, + 0b10000000, + 0b11100000, + 0b10000000, + 0b10000000, + 0b11110000, + 0b00000000, + }, + // Eacute + (const uint8_t[]){ + 0b11110000, + 0b10000000, + 0b11100000, + 0b10000000, + 0b10000000, + 0b11110000, + 0b00000000, + }, + // Ecircumflex + (const uint8_t[]){ + 0b11110000, + 0b10000000, + 0b11100000, + 0b10000000, + 0b10000000, + 0b11110000, + 0b00000000, + }, + // Edieresis + (const uint8_t[]){ + 0b11110000, + 0b10000000, + 0b11100000, + 0b10000000, + 0b10000000, + 0b11110000, + 0b00000000, + }, + // Igrave + (const uint8_t[]){ + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // Iacute + (const uint8_t[]){ + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // Icircumflex + (const uint8_t[]){ + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // Idieresis + (const uint8_t[]){ + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // Eth + (const uint8_t[]){ + 0b11100000, + 0b01010000, + 0b11010000, + 0b01010000, + 0b01010000, + 0b11100000, + 0b00000000, + }, + // Ntilde + (const uint8_t[]){ + 0b10110000, + 0b10010000, + 0b11010000, + 0b10110000, + 0b10110000, + 0b10010000, + 0b00000000, + }, + // Ograve + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // Oacute + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // Ocircumflex + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // Otilde + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // Odieresis + (const uint8_t[]){ + 0b10010000, + 0b01100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // multiply + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b10010000, + 0b01100000, + 0b01100000, + 0b10010000, + 0b00000000, + }, + // Oslash + (const uint8_t[]){ + 0b01110000, + 0b10110000, + 0b10110000, + 0b11010000, + 0b11010000, + 0b11100000, + 0b00000000, + }, + // Ugrave + (const uint8_t[]){ + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // Uacute + (const uint8_t[]){ + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // Ucircumflex + (const uint8_t[]){ + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // Udieresis + (const uint8_t[]){ + 0b10010000, + 0b00000000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // Yacute + (const uint8_t[]){ + 0b01010000, + 0b01010000, + 0b01010000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00000000, + }, + // Thorn + (const uint8_t[]){ + 0b10000000, + 0b11100000, + 0b10010000, + 0b11100000, + 0b10000000, + 0b10000000, + 0b00000000, + }, + // germandbls + (const uint8_t[]){ + 0b01100000, + 0b10010000, + 0b10100000, + 0b10010000, + 0b10010000, + 0b10100000, + 0b00000000, + }, + // agrave + (const uint8_t[]){ + 0b01000000, + 0b00100000, + 0b01110000, + 0b10010000, + 0b10110000, + 0b01010000, + 0b00000000, + }, + // aacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b01110000, + 0b10010000, + 0b10110000, + 0b01010000, + 0b00000000, + }, + // acircumflex + (const uint8_t[]){ + 0b00100000, + 0b01010000, + 0b01110000, + 0b10010000, + 0b10110000, + 0b01010000, + 0b00000000, + }, + // atilde + (const uint8_t[]){ + 0b01010000, + 0b10100000, + 0b01110000, + 0b10010000, + 0b10110000, + 0b01010000, + 0b00000000, + }, + // adieresis + (const uint8_t[]){ + 0b01010000, + 0b00000000, + 0b01110000, + 0b10010000, + 0b10110000, + 0b01010000, + 0b00000000, + }, + // aring + (const uint8_t[]){ + 0b01100000, + 0b01100000, + 0b01110000, + 0b10010000, + 0b10110000, + 0b01010000, + 0b00000000, + }, + // ae + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01110000, + 0b10110000, + 0b10100000, + 0b01110000, + 0b00000000, + }, + // ccedilla + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b00110000, + 0b01000000, + 0b01000000, + 0b00110000, + 0b00100000, + }, + // egrave + (const uint8_t[]){ + 0b01000000, + 0b00100000, + 0b01100000, + 0b10110000, + 0b11000000, + 0b01100000, + 0b00000000, + }, + // eacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b01100000, + 0b10110000, + 0b11000000, + 0b01100000, + 0b00000000, + }, + // ecircumflex + (const uint8_t[]){ + 0b01000000, + 0b10100000, + 0b01100000, + 0b10110000, + 0b11000000, + 0b01100000, + 0b00000000, + }, + // edieresis + (const uint8_t[]){ + 0b10100000, + 0b00000000, + 0b01100000, + 0b10110000, + 0b11000000, + 0b01100000, + 0b00000000, + }, + // igrave + (const uint8_t[]){ + 0b01000000, + 0b00100000, + 0b01100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // iacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b01100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // icircumflex + (const uint8_t[]){ + 0b00100000, + 0b01010000, + 0b01100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // idieresis + (const uint8_t[]){ + 0b01010000, + 0b00000000, + 0b01100000, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + }, + // eth + (const uint8_t[]){ + 0b01000000, + 0b00110000, + 0b01100000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // ntilde + (const uint8_t[]){ + 0b01010000, + 0b10100000, + 0b11100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b00000000, + }, + // ograve + (const uint8_t[]){ + 0b01000000, + 0b00100000, + 0b01100000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // oacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b01100000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // ocircumflex + (const uint8_t[]){ + 0b01100000, + 0b00000000, + 0b01100000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // otilde + (const uint8_t[]){ + 0b01010000, + 0b10100000, + 0b01100000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // odieresis + (const uint8_t[]){ + 0b01010000, + 0b00000000, + 0b01100000, + 0b10010000, + 0b10010000, + 0b01100000, + 0b00000000, + }, + // divide + (const uint8_t[]){ + 0b00000000, + 0b01100000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b01100000, + 0b00000000, + }, + // oslash + (const uint8_t[]){ + 0b00000000, + 0b00000000, + 0b01110000, + 0b10110000, + 0b11010000, + 0b11100000, + 0b00000000, + }, + // ugrave + (const uint8_t[]){ + 0b01000000, + 0b00100000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01110000, + 0b00000000, + }, + // uacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01110000, + 0b00000000, + }, + // ucircumflex + (const uint8_t[]){ + 0b01100000, + 0b00000000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01110000, + 0b00000000, + }, + // udieresis + (const uint8_t[]){ + 0b01010000, + 0b00000000, + 0b10010000, + 0b10010000, + 0b10010000, + 0b01110000, + 0b00000000, + }, + // yacute + (const uint8_t[]){ + 0b00100000, + 0b01000000, + 0b10010000, + 0b10010000, + 0b01010000, + 0b00100000, + 0b01000000, + }, + // thorn + (const uint8_t[]){ + 0b00000000, + 0b10000000, + 0b11100000, + 0b10010000, + 0b10010000, + 0b11100000, + 0b10000000, + }, + } +}; + diff --git a/sketch/lib/src/HasIncludeArduinoGraphics.h b/sketch/lib/src/HasIncludeArduinoGraphics.h new file mode 100644 index 0000000..cc27970 --- /dev/null +++ b/sketch/lib/src/HasIncludeArduinoGraphics.h @@ -0,0 +1,4 @@ +/* +This file is intentionally left blank. +Do not remove this comment. +*/ \ No newline at end of file diff --git a/sketch/lib/src/Image.cpp b/sketch/lib/src/Image.cpp new file mode 100644 index 0000000..a010491 --- /dev/null +++ b/sketch/lib/src/Image.cpp @@ -0,0 +1,60 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#include + +#include "Image.h" + +Image::Image() : + Image(ENCODING_NONE, (const uint8_t*)NULL, 0, 0) +{ +} + +Image::Image(int encoding, const uint8_t* data, int width, int height) : + _encoding(encoding), + _data(data), + _width(width), + _height(height) +{ +} + +Image::Image(int encoding, const uint16_t* data, int width, int height) : + Image(encoding, (const uint8_t*)data, width, height) +{ +} + +Image::Image(int encoding, const uint32_t* data, int width, int height) : + Image(encoding, (const uint8_t*)data, width, height) +{ +} + +Image::~Image() +{ +} + +int Image::encoding() const +{ + return _encoding; +} + +const uint8_t* Image::data() const +{ + return _data; +} + +int Image::width() const +{ + return _width; +} + +int Image::height() const +{ + return _height; +} + +Image::operator bool() const +{ + return (_encoding != ENCODING_NONE && _data != NULL && _width > 0 && _height > 0); +} diff --git a/sketch/lib/src/Image.h b/sketch/lib/src/Image.h new file mode 100644 index 0000000..c8f478f --- /dev/null +++ b/sketch/lib/src/Image.h @@ -0,0 +1,40 @@ +/* + This file is part of the ArduinoGraphics library. + Copyright (c) 2025 Arduino SA. All rights reserved. +*/ + +#ifndef _IMAGE_H +#define _IMAGE_H + +#include + +enum { + ENCODING_NONE = -1, + ENCODING_RGB, + ENCODING_RGB24, + ENCODING_RGB16 +}; + +class Image { +public: + Image(); + Image(int encoding, const uint8_t* data, int width, int height); + Image(int encoding, const uint16_t* data, int width, int height); + Image(int encoding, const uint32_t* data, int width, int height); + virtual ~Image(); + + int encoding() const; + const uint8_t* data() const; + int width() const; + int height() const; + + virtual operator bool() const; + +private: + int _encoding; + const uint8_t* _data; + int _width; + int _height; +}; + +#endif diff --git a/sketch/monitor.h b/sketch/monitor.h new file mode 100644 index 0000000..b6d355e --- /dev/null +++ b/sketch/monitor.h @@ -0,0 +1,196 @@ +/* + This file is part of the Arduino_RouterBridge library. + + Copyright (C) Arduino s.r.l. and/or its affiliated companies + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#pragma once + +#ifndef BRIDGE_MONITOR_H +#define BRIDGE_MONITOR_H + +#include +#include "bridge.h" + +#define MON_CONNECTED_METHOD "mon/connected" +#define MON_RESET_METHOD "mon/reset" +#define MON_READ_METHOD "mon/read" +#define MON_WRITE_METHOD "mon/write" + +#define DEFAULT_MONITOR_BUF_SIZE 512 + +template +class BridgeMonitor: public Stream { + + BridgeClass* bridge; + RingBufferN temp_buffer; + struct k_mutex monitor_mutex{}; + bool _connected = false; + bool _compatibility_mode = true; + +public: + explicit BridgeMonitor(BridgeClass& bridge): bridge(&bridge) {} + + using Print::write; + + bool begin(unsigned long _legacy_baud=0, uint16_t _legacy_config=0) { + // unused parameters for compatibility with Stream + (void)_legacy_baud; + (void)_legacy_config; + + k_mutex_init(&monitor_mutex); + + if (is_connected()) return true; + + k_mutex_lock(&monitor_mutex, K_FOREVER); + bool bridge_started = (*bridge); + if (!bridge_started) { + bridge_started = bridge->begin(); + } + + if (!bridge_started) { + k_mutex_unlock(&monitor_mutex); + return false; + } + + bool out = false; + _connected = bridge->call(MON_CONNECTED_METHOD).result(out) && out; + MsgPack::str_t ver; + _compatibility_mode = !bridge->getRouterVersion(ver); + k_mutex_unlock(&monitor_mutex); + return out; + } + + bool is_connected() { + k_mutex_lock(&monitor_mutex, K_FOREVER); + bool out = _connected; + k_mutex_unlock(&monitor_mutex); + return out; + } + + explicit operator bool() { + k_mutex_lock(&monitor_mutex, K_FOREVER); + bool out = _connected; + if (!_connected) { + bridge->call(MON_CONNECTED_METHOD).result(out); + _connected = out; + } + k_mutex_unlock(&monitor_mutex); + return out; + } + + int read() override { + uint8_t c = 0; + int cch_read; + + cch_read = read(&c, 1); + return cch_read? c : -1; + } + + int read(uint8_t* buffer, size_t size) { + k_mutex_lock(&monitor_mutex, K_FOREVER); + size_t i = 0; + while (temp_buffer.available() && i < size) { + buffer[i++] = temp_buffer.read_char(); + } + k_mutex_unlock(&monitor_mutex); + return (int)i; + } + + int available() override { + k_mutex_lock(&monitor_mutex, K_FOREVER); + int size = temp_buffer.availableForStore(); + if (size > 0) _read(size); + int available = temp_buffer.available(); + k_mutex_unlock(&monitor_mutex); + return available; + } + + int peek() override { + k_mutex_lock(&monitor_mutex, K_FOREVER); + int out = -1; + if (temp_buffer.available()) { + out = temp_buffer.peek(); + } + k_mutex_unlock(&monitor_mutex); + return out; + } + + size_t write(uint8_t c) override { + return write(&c, 1); + } + + size_t write(const uint8_t* buffer, size_t size) override { + + if (!*this) { return 0; } + + String send_buffer; + + for (size_t i = 0; i < size; ++i) { + send_buffer += static_cast(buffer[i]); + } + + size_t written = 0; + + if (_compatibility_mode) { + bridge->call(MON_WRITE_METHOD, send_buffer).result(written); + } else { + bridge->notify(MON_WRITE_METHOD, send_buffer); + written = size; + } + + return written; + } + + bool reset() { + k_mutex_lock(&monitor_mutex, K_FOREVER); + bool res = false; + bridge->call(MON_RESET_METHOD).result(res); + if (res) {_connected = false;} + k_mutex_unlock(&monitor_mutex); + return res; + } + +private: + void _read(size_t size) { + + if (size == 0) return; + + if (!*this) return; + + k_mutex_lock(&monitor_mutex, K_FOREVER); + + MsgPack::arr_t message; + RpcCall async_rpc = bridge->call(MON_READ_METHOD, size); + const bool ret = async_rpc.result(message); + + if (ret) { + for (size_t i = 0; i < message.size(); ++i) { + temp_buffer.store_char(static_cast(message[i])); + } + } + + // if (async_rpc.getErrorCode() > NO_ERR) { + // _connected = false; + // } + + k_mutex_unlock(&monitor_mutex); + } + +}; + +extern BridgeMonitor<> Monitor; + +#ifdef ARDUINO_ROUTERBRIDGE_PROVIDES_SERIAL +/* 'Monitor' is aliased to 'Serial' for compatibility with existing sketches. + * Both identifiers will refer to the same BridgeMonitor instance. + */ +extern BridgeMonitor<> Serial; +#endif + +#endif // BRIDGE_MONITOR_H diff --git a/sketch/request.h b/sketch/request.h new file mode 100644 index 0000000..941dd86 --- /dev/null +++ b/sketch/request.h @@ -0,0 +1,88 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#ifndef RPCLITE_REQUEST_H +#define RPCLITE_REQUEST_H + +#define DEFAULT_RPC_BUFFER_SIZE (DECODER_BUFFER_SIZE / 4) + + +#include "rpclite_utils.h" + +template +class RPCRequest { + +public: + uint8_t buffer[BufferSize]{}; + size_t size = 0; + int type = NO_MSG; + uint32_t msg_id = 0; + MsgPack::str_t method; + MsgPack::Packer packer; + MsgPack::Unpacker unpacker; + + static size_t get_buffer_size() { + return BufferSize; + } + + bool unpack_request_headers(){ + if (size == 0) return false; + + unpacker.clear(); + if (!unpacker.feed(buffer, size)) return false; + + int msg_type; + uint32_t req_id; + MsgPack::str_t req_method; + MsgPack::arr_size_t req_size; + + if (!unpacker.deserialize(req_size, msg_type)) { + return false; // Header not unpackable + } + + if (msg_type == CALL_MSG && req_size.size() == REQUEST_SIZE) { + if (!unpacker.deserialize(req_id, req_method)) { + return false; // Method not unpackable + } + } else if (msg_type == NOTIFY_MSG && req_size.size() == NOTIFY_SIZE) { + if (!unpacker.deserialize(req_method)) { + return false; // Method not unpackable + } + } else { + return false; // Invalid request size/type + } + + method = req_method; + type = msg_type; + msg_id = req_id; + + return true; + + } + + void pack_response_headers(){ + packer.clear(); + MsgPack::arr_size_t resp_size(RESPONSE_SIZE); + if (type == CALL_MSG) packer.serialize(resp_size, RESP_MSG, msg_id); + } + + void reset(){ + size = 0; + type = NO_MSG; + msg_id = 0; + method = ""; + unpacker.clear(); + packer.clear(); + } + +}; + +#endif //RPCLITE_REQUEST_H \ No newline at end of file diff --git a/sketch/routerbridge_provides_serial.h b/sketch/routerbridge_provides_serial.h new file mode 100644 index 0000000..5675197 --- /dev/null +++ b/sketch/routerbridge_provides_serial.h @@ -0,0 +1,18 @@ +/* + This file is part of the Arduino_RouterBridge library. + + Copyright (C) Arduino s.r.l. and/or its affiliated companies + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#pragma once + +/* This file is used by the core to detect that the RouterBridge library does + * provide a Serial implementation via the Monitor object. If this file is not + * found in the include path, newer cores will stop and require the user to + * explicitly update (or install) this library. + */ diff --git a/sketch/rpclite_utils.h b/sketch/rpclite_utils.h new file mode 100644 index 0000000..861eaa5 --- /dev/null +++ b/sketch/rpclite_utils.h @@ -0,0 +1,198 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (C) Arduino s.r.l. and/or its affiliated companies + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#pragma once +#ifndef RPCLITE_UTILS_H +#define RPCLITE_UTILS_H + +#include +#include + +namespace RpcUtils { +namespace detail { + +#define TYPE_ERROR (-1) +#define WRONG_MSG (-2) +#define NO_MSG (-1) +#define CALL_MSG 0 +#define RESP_MSG 1 +#define NOTIFY_MSG 2 + +#define REQUEST_SIZE 4 +#define RESPONSE_SIZE 4 +#define NOTIFY_SIZE 3 + +/////////////////////////////////////// +/// --- deserialization helpers --- /// +/////////////////////////////////////// + +inline bool isValidRpc(int type, size_t size) { + switch (type) { + case CALL_MSG: + return size == REQUEST_SIZE; + case RESP_MSG: + return size == RESPONSE_SIZE; + case NOTIFY_MSG: + return size == NOTIFY_SIZE; + default: + return false; + } +} + +inline bool unpackObject(MsgPack::Unpacker& unpacker); + + +inline bool unpackTypedArray(MsgPack::Unpacker& unpacker, size_t& size, int& type) { + MsgPack::arr_size_t sz; + if (!unpacker.deserialize(sz)) return false; + + size = sz.size(); + + type = WRONG_MSG; + for (size_t i = 0; i < sz.size(); i++) { + if (i==0 && unpacker.deserialize(type)) { + continue; + } + if (!unpackObject(unpacker)) return false; + } + + return true; +} + +inline bool unpackArray(MsgPack::Unpacker& unpacker, size_t& size) { + + if (!unpacker.isArray()) { + return false; // Not an array + } + + MsgPack::arr_size_t sz; + unpacker.deserialize(sz); + + size = 0; + for (size_t i=0; i bytes; + return unpacker.deserialize(bytes); + } + if (unpacker.isArray()){ + static size_t arr_sz; + return unpackArray(unpacker, arr_sz); + } + if (unpacker.isMap()){ + static size_t map_sz; + return unpackMap(unpacker, map_sz); + } + if (unpacker.isFixExt() || unpacker.isExt()){ + static MsgPack::object::ext e; + return unpacker.deserialize(e); + } + if (unpacker.isTimestamp()){ + static MsgPack::object::timespec t; + return unpacker.deserialize(t); + } + + return false; +} + +template +int deserialize_single(MsgPack::Unpacker& unpacker, T& value) { + if (!unpacker.unpackable(value)) return TYPE_ERROR; + unpacker.deserialize(value); + return 0; +} + + +///////////////////////////// +/// --- tuple helpers --- /// +///////////////////////////// + +template +typename std::enable_if::type +deserialize_tuple(MsgPack::Unpacker&, std::tuple&) { + return 0; +} + +template +typename std::enable_if::type +deserialize_tuple(MsgPack::Unpacker& unpacker, std::tuple& out) { + const int res = deserialize_single(unpacker, std::get(out)); + if (res==TYPE_ERROR) return TYPE_ERROR-I; + return deserialize_tuple(unpacker, out); +} + +// Helper to invoke a function with a tuple of arguments +template +auto invoke_with_tuple(F&& f, Tuple&& t, arx::stdx::index_sequence) + -> decltype(f(std::get(std::forward(t))...)) { + return f(std::get(std::forward(t))...); +} + +} // namespace detail +} // namespace RpcUtils + +#endif //RPCLITE_UTILS_H \ No newline at end of file diff --git a/sketch/server.h b/sketch/server.h new file mode 100644 index 0000000..72d40b2 --- /dev/null +++ b/sketch/server.h @@ -0,0 +1,101 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (C) Arduino s.r.l. and/or its affiliated companies + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#ifndef RPCLITE_SERVER_H +#define RPCLITE_SERVER_H + +#include + +#include "request.h" +#include "error.h" +#include "dispatcher.h" +#include "decoder.h" +#include "decoder_manager.h" + +#define MAX_CALLBACKS 100 + +class RPCServer { + +public: + explicit RPCServer(ITransport& t) : decoder(RpcDecoderManager::getInstance().getDecoder(t)) {} + + operator bool() const {return decoder != nullptr;} + + template + bool bind(const MsgPack::str_t& name, F&& func, MsgPack::str_t tag=""){ + return dispatcher.bind(name, func, tag); + } + + bool hasTag(const MsgPack::str_t& name, MsgPack::str_t tag) const { + return dispatcher.hasTag(name, tag); + } + + bool run() { + + RPCRequest<> req; + + if (!get_rpc(req)) return false; // Populate local request + + process_request(req); // Process local data + + return send_response(req); // Send local data + + } + + template + bool get_rpc(RPCRequest& req, MsgPack::str_t tag="") { + decoder->decode(); + + const MsgPack::str_t method = decoder->fetch_rpc_method(); + + if (method == "") return false; + if (tag != "" && !dispatcher.hasTag(method, tag)) return false; + + req.size = decoder->get_request(req.buffer, RpcSize); + return req.size > 0; + } + + template + void process_request(RPCRequest& req) { + + if (!req.unpack_request_headers()) { + req.reset(); + return; + } + + req.pack_response_headers(); + + dispatcher.call(req.method, req.unpacker, req.packer); + + } + + template + bool send_response(const RPCRequest& req) const { + + if (req.type == NO_MSG || req.packer.size() == 0) { + return true; // No response to send + } + + if (req.type == NOTIFY_MSG) return true; + + return decoder->send_response(req.packer); + + } + + uint32_t get_discarded_packets() const {return decoder->get_discarded_packets();} + +private: + RpcDecoder<>* decoder = nullptr; + RpcFunctionDispatcher dispatcher{}; + +}; + +#endif //RPCLITE_SERVER_H diff --git a/sketch/singletons.cpp b/sketch/singletons.cpp new file mode 100644 index 0000000..02ccf16 --- /dev/null +++ b/sketch/singletons.cpp @@ -0,0 +1,24 @@ +/* + This file is part of the Arduino_RouterBridge library. + + Copyright (C) Arduino s.r.l. and/or its affiliated companies + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#include "Arduino_RouterBridge.h" + +#ifndef ARDUINO_ROUTER_SERIAL +#define ARDUINO_ROUTER_SERIAL Serial1 +#endif + +BridgeClass Bridge(ARDUINO_ROUTER_SERIAL); +BridgeMonitor<> Monitor(Bridge); + +#ifdef ARDUINO_ROUTERBRIDGE_PROVIDES_SERIAL +// Alias the 'Serial' object to the above 'Monitor' instance +extern BridgeMonitor<> Serial [[gnu::alias("Monitor")]]; +#endif diff --git a/sketch/tcp_client.h b/sketch/tcp_client.h new file mode 100644 index 0000000..45e153a --- /dev/null +++ b/sketch/tcp_client.h @@ -0,0 +1,225 @@ +/* + This file is part of the Arduino_RouterBridge library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#pragma once + +#ifndef BRIDGE_TCP_CLIENT_H +#define BRIDGE_TCP_CLIENT_H + +#define TCP_CONNECT_METHOD "tcp/connect" +#define TCP_CONNECT_SSL_METHOD "tcp/connectSSL" +#define TCP_CLOSE_METHOD "tcp/close" +#define TCP_WRITE_METHOD "tcp/write" +#define TCP_READ_METHOD "tcp/read" + +#include +#include +#include "bridge.h" + +#define DEFAULT_TCP_CLIENT_BUF_SIZE 512 + + +template +class BridgeTCPClient : public Client { + + BridgeClass* bridge; + uint32_t connection_id{}; + uint32_t read_timeout = 0; + RingBufferN temp_buffer; + struct k_mutex client_mutex{}; + bool _connected = false; + +public: + explicit BridgeTCPClient(BridgeClass& bridge): bridge(&bridge) {} + + BridgeTCPClient(BridgeClass& bridge, uint32_t connection_id, bool connected=true): bridge(&bridge), connection_id(connection_id), _connected {connected} {} + + bool begin() { + k_mutex_init(&client_mutex); + if (!(*bridge)) { + return bridge->begin(); + } + return true; + } + + void setTimeout(const uint32_t ms) { + k_mutex_lock(&client_mutex, K_FOREVER); + read_timeout = ms; + k_mutex_unlock(&client_mutex); + } + + int connect(IPAddress ip, uint16_t port) override { + return connect(ip.toString().c_str(), port); + } + + int connect(const char *host, uint16_t port) override { + + k_mutex_lock(&client_mutex, K_FOREVER); + + String hostname = host; + const bool ok = _connected || bridge->call(TCP_CONNECT_METHOD, hostname, port).result(connection_id); + _connected = ok; + + k_mutex_unlock(&client_mutex); + + return ok? 0 : -1; + } + + int connectSSL(const char *host, uint16_t port, const char *ca_cert) { + + k_mutex_lock(&client_mutex, K_FOREVER); + + String hostname = host; + String ca_cert_str = ca_cert; + + const bool ok = _connected || bridge->call(TCP_CONNECT_SSL_METHOD, hostname, port, ca_cert_str).result(connection_id); + _connected = ok; + k_mutex_unlock(&client_mutex); + + return ok? 0 : -1; + } + + uint32_t getId() { + k_mutex_lock(&client_mutex, K_FOREVER); + const uint32_t out = connection_id; + k_mutex_unlock(&client_mutex); + return out; + } + + size_t write(uint8_t c) override { + return write(&c, 1); + } + + size_t write(const uint8_t *buffer, size_t size) override { + + if (!connected()) return 0; + + MsgPack::arr_t payload; + + for (size_t i = 0; i < size; ++i) { + payload.push_back(buffer[i]); + } + + size_t written; + k_mutex_lock(&client_mutex, K_FOREVER); + const bool ok = bridge->call(TCP_WRITE_METHOD, connection_id, payload).result(written); + k_mutex_unlock(&client_mutex); + return ok? written : 0; + } + + int available() override { + k_mutex_lock(&client_mutex, K_FOREVER); + const int size = temp_buffer.availableForStore(); + if (size > 0) _read(size); + const int _available = temp_buffer.available(); + k_mutex_unlock(&client_mutex); + return _available; + } + + int read() override { + uint8_t c; + read(&c, 1); + return c; + } + + int read(uint8_t *buf, size_t size) override { + k_mutex_lock(&client_mutex, K_FOREVER); + size_t i = 0; + while (temp_buffer.available() && i < size) { + buf[i++] = temp_buffer.read_char(); + } + k_mutex_unlock(&client_mutex); + return (int)i; + } + + int peek() override { + k_mutex_lock(&client_mutex, K_FOREVER); + int out = -1; + if (temp_buffer.available()) { + out = temp_buffer.peek(); + } + k_mutex_unlock(&client_mutex); + return out; + } + + void flush() override { + // No-op: flush is implemented for Client subclasses using an output buffer + } + + void close() { + stop(); + } + + void stop() override { + k_mutex_lock(&client_mutex, K_FOREVER); + String msg; + if (_connected) { + _connected = !bridge->call(TCP_CLOSE_METHOD, connection_id).result(msg); + } + k_mutex_unlock(&client_mutex); + } + + uint8_t connected() override { + k_mutex_lock(&client_mutex, K_FOREVER); + const uint8_t out = _connected? 1 : 0; + k_mutex_unlock(&client_mutex); + return out; + } + + operator bool() override { + return available() || connected(); + } + + using Print::write; + +private: + void _read(size_t size) { + + if (size == 0) return; + + k_mutex_lock(&client_mutex, K_FOREVER); + + if (!_connected) { + k_mutex_unlock(&client_mutex); + return; + } + + MsgPack::arr_t message; + bool ret; + int err; + + if (read_timeout > 0) { + RpcCall async_rpc_timeout = bridge->call(TCP_READ_METHOD, connection_id, size, read_timeout); + ret = async_rpc_timeout.result(message); + err = async_rpc_timeout.getErrorCode(); + } else { + RpcCall async_rpc = bridge->call(TCP_READ_METHOD, connection_id, size); + ret = async_rpc.result(message); + err = async_rpc.getErrorCode(); + } + + if (ret) { + for (size_t i = 0; i < message.size(); ++i) { + temp_buffer.store_char(static_cast(message[i])); + } + } + + if (err > NO_ERR) { + _connected = false; + } + + k_mutex_unlock(&client_mutex); + } + +}; + + +#endif //BRIDGE_TCP_CLIENT_H diff --git a/sketch/tcp_server.h b/sketch/tcp_server.h new file mode 100644 index 0000000..dc863a6 --- /dev/null +++ b/sketch/tcp_server.h @@ -0,0 +1,155 @@ +/* + This file is part of the Arduino_RouterBridge library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#pragma once + +#ifndef BRIDGE_TCP_SERVER_H +#define BRIDGE_TCP_SERVER_H + +#define TCP_LISTEN_METHOD "tcp/listen" +#define TCP_ACCEPT_METHOD "tcp/accept" +#define TCP_CLOSE_LISTENER_METHOD "tcp/closeListener" + + +#include +#include "bridge.h" +#include "tcp_client.h" + +#define DEFAULT_TCP_SERVER_BUF_SIZE 512 + + +template +class BridgeTCPServer final: public Server { + BridgeClass* bridge; + IPAddress _addr{}; + uint16_t _port; + bool _listening = false; + uint32_t listener_id = 0; + uint32_t connection_id = 0; + bool _connected = false; + struct k_mutex server_mutex{}; + +public: + explicit BridgeTCPServer(BridgeClass& bridge, const IPAddress& addr, uint16_t port): bridge(&bridge), _addr(addr), _port(port) {} + + // explicit BridgeTCPServer(BridgeClass& bridge, uint16_t port): bridge(&bridge), _addr(INADDR_NONE), _port(port) {} + + void begin() override { + k_mutex_init(&server_mutex); + + if (!(*bridge)) { + while (!bridge->begin()); + } + + k_mutex_lock(&server_mutex, K_FOREVER); + if (!_listening){ + String hostname = _addr.toString(); + _listening = bridge->call(TCP_LISTEN_METHOD, hostname, _port).result(listener_id); + } + k_mutex_unlock(&server_mutex); + + } + + BridgeTCPClient accept() { + + k_mutex_lock(&server_mutex, K_FOREVER); + + if (!_listening) { // Not listening -> return disconnected (invalid) client + k_mutex_unlock(&server_mutex); + return BridgeTCPClient(*bridge, 0, false); + } + + if (_connected) { // Connection already established return a client copy + k_mutex_unlock(&server_mutex); + return BridgeTCPClient(*bridge, connection_id); + } + + // Accept a connection + const bool ret = bridge->call(TCP_ACCEPT_METHOD, listener_id).result(connection_id); + _connected = ret; + + k_mutex_unlock(&server_mutex); + // If no connection established return a disconnected (invalid) client + return ret? BridgeTCPClient(*bridge, connection_id) : BridgeTCPClient(*bridge, 0, false); + } + + size_t write(uint8_t c) override { + return write(&c, 1); + } + + size_t write(const uint8_t *buf, size_t size) override { + + BridgeTCPClient client = accept(); + if (!client) return 0; + + k_mutex_lock(&server_mutex, K_FOREVER); + size_t written = 0; + if (_connected) { + written = client.write(buf, size); + } + k_mutex_unlock(&server_mutex); + return written; + } + + void close() { + k_mutex_lock(&server_mutex, K_FOREVER); + String msg; + if (_listening){ + _listening = !bridge->call(TCP_CLOSE_LISTENER_METHOD, listener_id).result(msg); + // Debug msg? + } + k_mutex_unlock(&server_mutex); + } + + void disconnect() { + k_mutex_lock(&server_mutex, K_FOREVER); + _connected = false; + connection_id = 0; + k_mutex_unlock(&server_mutex); + } + + bool is_listening() { + k_mutex_lock(&server_mutex, K_FOREVER); + bool out = _listening; + k_mutex_unlock(&server_mutex); + return out; + } + + bool is_connected() { + k_mutex_lock(&server_mutex, K_FOREVER); + bool out = _connected; + k_mutex_unlock(&server_mutex); + return out; + } + + uint16_t getPort() { + k_mutex_lock(&server_mutex, K_FOREVER); + uint16_t port = _port; + k_mutex_unlock(&server_mutex); + return port; + } + + String getAddr() { + k_mutex_lock(&server_mutex, K_FOREVER); + String hostname = _addr.toString(); + k_mutex_unlock(&server_mutex); + return hostname; + } + + operator bool() const { + return is_listening(); + } + + using Print::write; + +}; + +#endif //BRIDGE_TCP_SERVER_H \ No newline at end of file diff --git a/sketch/transport.h b/sketch/transport.h new file mode 100644 index 0000000..615848c --- /dev/null +++ b/sketch/transport.h @@ -0,0 +1,28 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#ifndef RPCLITE_TRANSPORT_H +#define RPCLITE_TRANSPORT_H + +class ITransport { +// Transport abstraction interface + +public: +virtual ~ITransport() = default; + +virtual size_t write(const uint8_t* data, size_t size) = 0; + virtual size_t read(uint8_t* buffer, size_t size) = 0; + virtual size_t read_byte(uint8_t& r) = 0; + virtual bool available() = 0; + //virtual ~ITransport() = default; +}; + +#endif //RPCLITE_TRANSPORT_H diff --git a/sketch/udp_bridge.h b/sketch/udp_bridge.h new file mode 100644 index 0000000..47a54c3 --- /dev/null +++ b/sketch/udp_bridge.h @@ -0,0 +1,343 @@ +/* +This file is part of the Arduino_RouterBridge library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#pragma once + +#ifndef UDP_BRIDGE_H +#define UDP_BRIDGE_H + +#define UDP_CONNECT_METHOD "udp/connect" +#define UDP_CONNECT_MULTI_METHOD "udp/connectMulticast" +#define UDP_CLOSE_METHOD "udp/close" +#define UDP_BEGIN_PACKET_METHOD "udp/beginPacket" +#define UDP_WRITE_METHOD "udp/write" +#define UDP_END_PACKET_METHOD "udp/endPacket" +#define UDP_AWAIT_PACKET_METHOD "udp/awaitPacket" +#define UDP_READ_METHOD "udp/read" +#define UDP_DROP_PACKET_METHOD "udp/dropPacket" + +#include + +#define DEFAULT_UDP_BUF_SIZE 4096 + + +struct BridgeUdpMeta { + MsgPack::str_t host; + uint16_t port; + uint16_t size; + + BridgeUdpMeta() { + host = ""; + port = 0; + size = 0; + } + + MSGPACK_DEFINE(size, host, port); // -> [code, traceback] +}; + +template +class BridgeUDP final: public UDP { + + BridgeClass* bridge; + uint32_t connection_id{}; + uint32_t read_timeout = 1; + RingBufferN temp_buffer; + struct k_mutex udp_mutex{}; + bool _connected = false; + + uint16_t _port{}; // local port to listen on + + // Outbound packets target + String _targetHost{}; + uint16_t _targetPort{}; + + // Inbound packet info + IPAddress _remoteIP{}; // remote IP address for the incoming packet whilst it's being processed + uint16_t _remotePort{}; // remote port for the incoming packet whilst it's being processed + uint16_t _remaining{}; // remaining bytes of incoming packet yet to be processed + BridgeUdpMeta packet_meta{}; + +public: + + explicit BridgeUDP(BridgeClass& bridge): bridge(&bridge) {} + + uint8_t begin(uint16_t port) override { + if (!init()) { + return 0; + } + + k_mutex_lock(&udp_mutex, K_FOREVER); + + bool ok = false; + if (!_connected) { + String hostname = "0.0.0.0"; + ok = bridge->call(UDP_CONNECT_METHOD, hostname, port).result(connection_id); + _connected = ok; + if (_connected) _port = port; + } + + k_mutex_unlock(&udp_mutex); + + return ok? 1 : 0; + } + + void setTimeout(const uint32_t ms) { + k_mutex_lock(&udp_mutex, K_FOREVER); + read_timeout = ms; + k_mutex_unlock(&udp_mutex); + } + + uint8_t beginMulticast(IPAddress ip, uint16_t port) override { + (void)ip; // unused argument + + if (!init()) { + return 0; + } + + k_mutex_lock(&udp_mutex, K_FOREVER); + + bool ok = false; + if (!_connected) { + String hostname = "0.0.0.0"; + ok = bridge->call(UDP_CONNECT_METHOD, hostname, port).result(connection_id); + _connected = ok; + if (_connected) _port = port; + } + + k_mutex_unlock(&udp_mutex); + + return ok? 1 : 0; + } + + void stop() override { + k_mutex_lock(&udp_mutex, K_FOREVER); + + if (_connected) { + String msg; + _connected = !bridge->call(UDP_CLOSE_METHOD, connection_id).result(msg); + } + + k_mutex_unlock(&udp_mutex); + } + + int beginPacket(IPAddress ip, uint16_t port) override { + return beginPacket(ip.toString().c_str(), port); + } + + int beginPacket(const char *host, uint16_t port) override { + if (!connected()) return 0; + bool ok = false; + + k_mutex_lock(&udp_mutex, K_FOREVER); + + _targetHost = host; + _targetPort = port; + bool res = false; + ok = bridge->call(UDP_BEGIN_PACKET_METHOD, connection_id, _targetHost, _targetPort).result(res) && res; + + k_mutex_unlock(&udp_mutex); + + return ok? 1 : 0; + } + + int endPacket() override { + if (!connected()) return 0; + bool ok = false; + + k_mutex_lock(&udp_mutex, K_FOREVER); + int transmitted = 0; + ok = bridge->call(UDP_END_PACKET_METHOD, connection_id).result(transmitted); + + if (ok) { + _targetHost = ""; + _targetPort = 0; + } + + k_mutex_unlock(&udp_mutex); + + return ok? 1 : 0; + } + + size_t write(uint8_t c) override { + return write(&c, 1); + } + + size_t write(const uint8_t *buffer, size_t size) override { + if (!connected()) return 0; + + MsgPack::arr_t payload; + + for (size_t i = 0; i < size; ++i) { + payload.push_back(buffer[i]); + } + + size_t written; + k_mutex_lock(&udp_mutex, K_FOREVER); + const bool ok = bridge->call(UDP_WRITE_METHOD, connection_id, payload).result(written); + k_mutex_unlock(&udp_mutex); + + return ok? written : 0; + } + + using Print::write; + + int parsePacket() override { + k_mutex_lock(&udp_mutex, K_FOREVER); + + dropPacket(); // ensure previous packet is read + + int out = 0; + + const bool ret = _connected && bridge->call(UDP_AWAIT_PACKET_METHOD, connection_id, read_timeout).result(packet_meta); + + if (ret) { + if (!_remoteIP.fromString(packet_meta.host)) { + _remoteIP.fromString("0.0.0.0"); + } + _remotePort = packet_meta.port; + _remaining = packet_meta.size; + out = _remaining; + } + + k_mutex_unlock(&udp_mutex); + + return out; + } + + int dropPacket() { + if (!connected()) return 0; + + bool ok=false; + + k_mutex_lock(&udp_mutex, K_FOREVER); + if (_remaining > temp_buffer.available()) { + bool res = false; + ok = bridge->call(UDP_DROP_PACKET_METHOD, connection_id).result(res) && res; + } + + _remaining = 0; + temp_buffer.clear(); + k_mutex_unlock(&udp_mutex); + + return ok? 1 : 0; + } + + int available() override { + k_mutex_lock(&udp_mutex, K_FOREVER); + const int size = temp_buffer.availableForStore(); + if (size > 0) _read(size); + const int _available = temp_buffer.available(); + k_mutex_unlock(&udp_mutex); + return _available; + } + + int read() override { + uint8_t c; + read(&c, 1); + return c; + } + + // reading stops when the UDP package has been read completely (_remaining = 0) + int read(unsigned char *buffer, size_t len) override { + k_mutex_lock(&udp_mutex, K_FOREVER); + size_t i = 0; + while (_remaining && i < len) { + if (!temp_buffer.available() && !available()) { + k_msleep(1); + continue; + } + buffer[i++] = temp_buffer.read_char(); + _remaining--; + } + k_mutex_unlock(&udp_mutex); + return (int)i; + } + + int read(char *buffer, size_t len) override { + k_mutex_lock(&udp_mutex, K_FOREVER); + size_t i = 0; + while (_remaining && i < len) { + if (!temp_buffer.available() && !available()) { + k_msleep(1); + continue; + } + buffer[i++] = static_cast(temp_buffer.read_char()); + _remaining--; + } + k_mutex_unlock(&udp_mutex); + return (int)i; + } + + int peek() override { + k_mutex_lock(&udp_mutex, K_FOREVER); + int out = -1; + if (_remaining && temp_buffer.available()) { + out = temp_buffer.peek(); + } + k_mutex_unlock(&udp_mutex); + return out; + } + + void flush() override { + // Implemented only when there's a TX buffer + } + + IPAddress remoteIP() override { + k_mutex_lock(&udp_mutex, K_FOREVER); + const IPAddress ip = _remoteIP; + k_mutex_unlock(&udp_mutex); + return ip; + } + + uint16_t remotePort() override { + k_mutex_lock(&udp_mutex, K_FOREVER); + const uint16_t port = _remotePort; + k_mutex_unlock(&udp_mutex); + return port; + } + + bool connected() { + k_mutex_lock(&udp_mutex, K_FOREVER); + const bool ok = _connected; + k_mutex_unlock(&udp_mutex); + return ok; + } + +private: + + bool init() { + k_mutex_init(&udp_mutex); + if (!(*bridge)) { + return bridge->begin(); + } + return true; + } + + void _read(size_t size) { + if (size == 0) return; + + k_mutex_lock(&udp_mutex, K_FOREVER); + + MsgPack::arr_t message; + const bool ret = _connected && bridge->call(UDP_READ_METHOD, connection_id, size, read_timeout).result(message); + + if (ret) { + for (size_t i = 0; i < message.size(); ++i) { + temp_buffer.store_char(static_cast(message[i])); + } + } + + k_mutex_unlock(&udp_mutex); + } + +}; + +#endif //UDP_BRIDGE_H diff --git a/sketch/wrapper.h b/sketch/wrapper.h new file mode 100644 index 0000000..feee71e --- /dev/null +++ b/sketch/wrapper.h @@ -0,0 +1,135 @@ +/* + This file is part of the Arduino_RPClite library. + + Copyright (c) 2025 Arduino SA + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +*/ + +#ifndef RPCLITE_WRAPPER_H +#define RPCLITE_WRAPPER_H + +#include + +#include "error.h" +#include "rpclite_utils.h" + +using namespace RpcUtils::detail; + +#ifdef HANDLE_RPC_ERRORS +#include +#endif + +class IFunctionWrapper { +public: + virtual ~IFunctionWrapper() = default; + virtual bool operator()(MsgPack::Unpacker& unpacker, MsgPack::Packer& packer) = 0; +}; + +template +class RpcFunctionWrapper; + +template +class RpcFunctionWrapper>: public IFunctionWrapper { +public: + explicit RpcFunctionWrapper(std::function func) : _func(func) {} + + R operator()(Args... args) { + return _func(args...); + } + + bool operator()(MsgPack::Unpacker& unpacker, MsgPack::Packer& packer) override { + + MsgPack::object::nil_t nil; + +#ifdef HANDLE_RPC_ERRORS + try { +#endif + + // First check the parameters size + if (!unpacker.isArray()){ + RpcError error(MALFORMED_CALL_ERR, "Unserializable parameters array"); + packer.serialize(error, nil); + return false; + } + + MsgPack::arr_size_t param_size; + + unpacker.deserialize(param_size); + if (param_size.size() < sizeof...(Args)){ + RpcError error(MALFORMED_CALL_ERR, "Missing call parameters (WARNING: Default param resolution is not implemented)"); + packer.serialize(error, nil); + return false; + } + + if (param_size.size() > sizeof...(Args)){ + RpcError error(MALFORMED_CALL_ERR, "Too many parameters"); + packer.serialize(error, nil); + return false; + } + + const int res = handle_call(unpacker, packer); + if (res<0) { + MsgPack::str_t err_msg = "Wrong type parameter in position: "; +#ifdef ARDUINO + err_msg += String(TYPE_ERROR-res); +#else + err_msg += std::to_string(TYPE_ERROR-res); +#endif + RpcError error(MALFORMED_CALL_ERR, err_msg); + packer.serialize(error, nil); + return false; + } + + return true; + +#ifdef HANDLE_RPC_ERRORS + } catch (const std::exception& e) { + // Should be specialized according to the exception type + RpcError error(GENERIC_ERR, "RPC error"); + packer.serialize(error, nil); + return false; + } +#endif + + } + +private: + std::function _func; + + template + typename std::enable_if::value, int>::type + handle_call(MsgPack::Unpacker& unpacker, MsgPack::Packer& packer) { + //unpacker not ready if deserialization fails at this point + std::tuple args; + const int res = deserialize_tuple(unpacker, args); + if (res<0) return res; + MsgPack::object::nil_t nil; + invoke_with_tuple(_func, args, arx::stdx::make_index_sequence{}); + packer.serialize(nil, nil); + return 0; + } + + template + typename std::enable_if::value, int>::type + handle_call(MsgPack::Unpacker& unpacker, MsgPack::Packer& packer) { + //unpacker not ready if deserialization fails at this point + std::tuple args; + const int res = deserialize_tuple(unpacker, args); + if (res<0) return res; + MsgPack::object::nil_t nil; + R out = invoke_with_tuple(_func, args, arx::stdx::make_index_sequence{}); + packer.serialize(nil, out); + return 0; + } +}; + +template::type>::function_type> +auto wrap(F&& f) -> RpcFunctionWrapper* { + return new RpcFunctionWrapper(std::forward(f)); +}; + +#endif \ No newline at end of file