summaryrefslogtreecommitdiff
path: root/framebuffer
diff options
context:
space:
mode:
Diffstat (limited to 'framebuffer')
-rw-r--r--framebuffer/Makefile.defaults84
-rw-r--r--framebuffer/Makefile.target60
-rw-r--r--framebuffer/clipboard.c18
-rw-r--r--framebuffer/clipboard.h (renamed from framebuffer/login.c)11
-rw-r--r--framebuffer/convert_font.c1222
-rw-r--r--framebuffer/convert_image.c1
-rw-r--r--framebuffer/fbtk.h28
-rw-r--r--framebuffer/fbtk/event.c7
-rw-r--r--framebuffer/fbtk/fbtk.c27
-rw-r--r--framebuffer/fbtk/scroll.c41
-rw-r--r--framebuffer/fbtk/text.c2
-rw-r--r--framebuffer/fetch.c (renamed from framebuffer/filetype.c)58
-rw-r--r--framebuffer/fetch.h25
-rw-r--r--framebuffer/findfile.c68
-rw-r--r--framebuffer/font.h2
-rw-r--r--framebuffer/font_freetype.c33
-rw-r--r--framebuffer/font_internal.c400
-rw-r--r--framebuffer/font_internal.h31
-rw-r--r--framebuffer/framebuffer.c131
-rw-r--r--framebuffer/framebuffer.h1
-rw-r--r--framebuffer/gui.c720
-rw-r--r--framebuffer/gui.h12
-rw-r--r--framebuffer/localhistory.c33
-rw-r--r--framebuffer/misc.c38
-rw-r--r--framebuffer/nsfont_bold.c556
-rw-r--r--framebuffer/nsfont_italic.c556
-rw-r--r--framebuffer/nsfont_italic_bold.c556
-rw-r--r--framebuffer/nsfont_regular.c556
l---------framebuffer/res/Messages (renamed from framebuffer/res/messages)0
-rw-r--r--framebuffer/res/fonts/glyph_data9489
-rw-r--r--framebuffer/schedule.c103
-rw-r--r--framebuffer/schedule.h20
-rw-r--r--framebuffer/thumbnail.c2
33 files changed, 11986 insertions, 2905 deletions
diff --git a/framebuffer/Makefile.defaults b/framebuffer/Makefile.defaults
index 6e2a3d159..5fe8e2c40 100644
--- a/framebuffer/Makefile.defaults
+++ b/framebuffer/Makefile.defaults
@@ -2,46 +2,46 @@
# Framebuffer-target-specific options
# ----------------------------------------------------------------------------
- # Optimisation levels
- CFLAGS += -O2
-
- # Framebuffer default surface provider.
- # Valid values are: x, sdl, linux, vnc, able,
- NETSURF_FB_FRONTEND := sdl
-
- # Use libharu to enable PDF export and GTK printing support.
- # Valid options: YES, NO
- NETSURF_USE_HARU_PDF := NO
-
- # Enable NetSurf's use of librosprite for displaying RISC OS Sprites
- # Valid options: YES, NO, AUTO
- NETSURF_USE_ROSPRITE := AUTO
-
- # Library to use for font plotting
- # Valid options: internal, freetype
- NETSURF_FB_FONTLIB := internal
-
- # Default freetype font files
- NETSURF_FB_FONT_SANS_SERIF := DejaVuSans.ttf
- NETSURF_FB_FONT_SANS_SERIF_BOLD := DejaVuSans-Bold.ttf
- NETSURF_FB_FONT_SANS_SERIF_ITALIC := DejaVuSans-Oblique.ttf
- NETSURF_FB_FONT_SANS_SERIF_ITALIC_BOLD := DejaVuSans-BoldOblique.ttf
- NETSURF_FB_FONT_SERIF := DejaVuSerif.ttf
- NETSURF_FB_FONT_SERIF_BOLD := DejaVuSerif-Bold.ttf
- NETSURF_FB_FONT_MONOSPACE := DejaVuSansMono.ttf
- NETSURF_FB_FONT_MONOSPACE_BOLD := DejaVuSansMono-Bold.ttf
- NETSURF_FB_FONT_CURSIVE := Comic_Sans_MS.ttf
- NETSURF_FB_FONT_FANTASY := Impact.ttf
-
- # Default binary install path
- NETSURF_FRAMEBUFFER_BIN := $(PREFIX)/bin/
-
- # Default resource install path
- NETSURF_FRAMEBUFFER_RESOURCES := $(PREFIX)/share/netsurf/
-
- # Default framebuffer search path
- NETSURF_FB_RESPATH := $${HOME}/.netsurf/:$${NETSURFRES}:$(NETSURF_FRAMEBUFFER_RESOURCES):./framebuffer/res
-
- # freetype compiled in font serch path
- NETSURF_FB_FONTPATH := /usr/share/fonts/truetype/ttf-dejavu:/usr/share/fonts/truetype/msttcorefonts
+# Optimisation levels
+CFLAGS += -O2
+
+# Framebuffer default surface provider.
+# Valid values are: x, sdl, linux, vnc, able,
+NETSURF_FB_FRONTEND := sdl
+
+# Use libharu to enable PDF export and GTK printing support.
+# Valid options: YES, NO
+NETSURF_USE_HARU_PDF := NO
+
+# Enable NetSurf's use of librosprite for displaying RISC OS Sprites
+# Valid options: YES, NO, AUTO
+NETSURF_USE_ROSPRITE := AUTO
+
+# Library to use for font plotting
+# Valid options: internal, freetype
+NETSURF_FB_FONTLIB := internal
+
+# Default freetype font files
+NETSURF_FB_FONT_SANS_SERIF := DejaVuSans.ttf
+NETSURF_FB_FONT_SANS_SERIF_BOLD := DejaVuSans-Bold.ttf
+NETSURF_FB_FONT_SANS_SERIF_ITALIC := DejaVuSans-Oblique.ttf
+NETSURF_FB_FONT_SANS_SERIF_ITALIC_BOLD := DejaVuSans-BoldOblique.ttf
+NETSURF_FB_FONT_SERIF := DejaVuSerif.ttf
+NETSURF_FB_FONT_SERIF_BOLD := DejaVuSerif-Bold.ttf
+NETSURF_FB_FONT_MONOSPACE := DejaVuSansMono.ttf
+NETSURF_FB_FONT_MONOSPACE_BOLD := DejaVuSansMono-Bold.ttf
+NETSURF_FB_FONT_CURSIVE := Comic_Sans_MS.ttf
+NETSURF_FB_FONT_FANTASY := Impact.ttf
+
+# Default binary install path
+NETSURF_FRAMEBUFFER_BIN := $(PREFIX)/bin/
+
+# Default resource install path
+NETSURF_FRAMEBUFFER_RESOURCES := $(PREFIX)/share/netsurf/
+
+# Default framebuffer search path
+NETSURF_FB_RESPATH := $${HOME}/.netsurf/:$${NETSURFRES}:$(NETSURF_FRAMEBUFFER_RESOURCES):./framebuffer/res
+
+# freetype compiled in font serch path
+NETSURF_FB_FONTPATH := /usr/share/fonts/truetype/ttf-dejavu:/usr/share/fonts/truetype/msttcorefonts
diff --git a/framebuffer/Makefile.target b/framebuffer/Makefile.target
index d423e298f..44b9626ed 100644
--- a/framebuffer/Makefile.target
+++ b/framebuffer/Makefile.target
@@ -2,8 +2,6 @@
# Framebuffer target setup
# ----------------------------------------------------------------------------
-
-$(eval $(call feature_enabled,MNG,-DWITH_MNG,-lmng,PNG/MNG/JNG (libmng)))
$(eval $(call feature_enabled,PNG,-DWITH_PNG,-lpng,PNG (libpng) ))
ifeq ($(NETSURF_FB_FONTLIB),freetype)
@@ -44,12 +42,11 @@ $(eval $(call pkg_config_find_and_add_enabled,GIF,libnsgif,GIF))
$(eval $(call pkg_config_find_and_add_enabled,MOZJS,mozjs185,JavaScript))
$(eval $(call pkg_config_find_and_add_enabled,JS,mozilla-js,JavaScript))
-CFLAGS += -std=c99 -g -Dsmall $(WARNFLAGS) \
+CFLAGS += -std=c99 -g -Dsmall \
-D_BSD_SOURCE \
-D_XOPEN_SOURCE=600 \
-D_POSIX_C_SOURCE=200112L \
- $(shell $(PKG_CONFIG) --cflags libnsfb libhubbub libcss openssl) \
- $(shell xml2-config --cflags)
+ $(shell $(PKG_CONFIG) --cflags libnsfb libhubbub libcss openssl)
LDFLAGS += -lm -Wl,--whole-archive $(shell $(PKG_CONFIG) --libs libnsfb) -Wl,--no-whole-archive
@@ -73,11 +70,6 @@ endif
# built-in resource setup
# ----------------------------------------------------------------------------
-# We make convert_image depend on fb_bitmap.h so that if we change
-# that header, we get new images built just in case.
-$(TOOLROOT)/convert_image: $(TOOLROOT)/created framebuffer/convert_image.c framebuffer/fbtk.h
- $(VQ)echo " HOST CC: $@"
- $(Q)$(HOST_CC) -o $@ framebuffer/convert_image.c -lpng
FB_IMAGE_left_arrow := framebuffer/res/icons/back.png
FB_IMAGE_right_arrow := framebuffer/res/icons/forward.png
@@ -115,6 +107,14 @@ FB_IMAGE_throbber6 := framebuffer/res/throbber/throbber6.png
FB_IMAGE_throbber7 := framebuffer/res/throbber/throbber7.png
FB_IMAGE_throbber8 := framebuffer/res/throbber/throbber8.png
+# Host tool to convert image bitmaps to source code.
+#
+# convert_image dependd on fb_bitmap.h so that if we change that
+# header, we get new images built.
+$(TOOLROOT)/convert_image: $(TOOLROOT)/created framebuffer/convert_image.c framebuffer/fbtk.h
+ $(VQ)echo " HOST CC: $@"
+ $(Q)$(HOST_CC) -o $@ framebuffer/convert_image.c -lpng
+
# 1: input file
# 2: output file
# 3: bitmap name
@@ -129,7 +129,34 @@ endef
S_IMAGES :=
-$(eval $(foreach V,$(filter FB_IMAGE_%,$(.VARIABLES)),$(call convert_image,$($(V)),$(OBJROOT)/$(patsubst FB_IMAGE_%,%,$(V)).c,$(patsubst FB_IMAGE_%,%,$(V)))))
+$(eval $(foreach V,$(filter FB_IMAGE_%,$(.VARIABLES)),$(call convert_image,$($(V)),$(OBJROOT)/image-$(patsubst FB_IMAGE_%,%,$(V)).c,$(patsubst FB_IMAGE_%,%,$(V)))))
+
+
+# Internal fonts to generate
+FB_FONT_internal_ns-sans := framebuffer/res/fonts/glyph_data
+
+# Internal font conversion
+$(TOOLROOT)/convert_font: $(TOOLROOT)/created framebuffer/convert_font.c
+ $(VQ)echo " HOST CC: $@"
+ $(Q)$(HOST_CC) -o $@ framebuffer/convert_font.c
+
+# 1: input file
+# 2: output source code file
+# 3: output header file
+# 4: font name
+define convert_font
+
+S_FONTS += $(2)
+
+$(2): $(1) $(TOOLROOT)/convert_font
+ $(VQ)echo " FONT: $(1) ($(4))"
+ $(Q)$(TOOLROOT)/convert_font -H $(3) $(1) $(2)
+
+endef
+
+S_FONTS :=
+
+$(eval $(foreach V,$(filter FB_FONT_$(NETSURF_FB_FONTLIB)_%,$(.VARIABLES)),$(call convert_font,$($(V)),$(OBJROOT)/font-$(patsubst FB_FONT_$(NETSURF_FB_FONTLIB)_%,%,$(V)).c,$(OBJROOT)/font-$(patsubst FB_FONT_$(NETSURF_FB_FONTLIB)_%,%,$(V)).h,$(patsubst FB_FONT_$(NETSURF_FB_FONTLIB)_%,%,$(V)))))
# ----------------------------------------------------------------------------
# Source file setup
@@ -137,7 +164,7 @@ $(eval $(foreach V,$(filter FB_IMAGE_%,$(.VARIABLES)),$(call convert_image,$($(V
# S_FRAMEBUFFER are sources purely for the framebuffer build
S_FRAMEBUFFER := gui.c framebuffer.c schedule.c \
- thumbnail.c misc.c bitmap.c filetype.c login.c findfile.c \
+ thumbnail.c misc.c bitmap.c fetch.c findfile.c \
localhistory.c clipboard.c
S_FRAMEBUFFER_FBTK := fbtk.c event.c fill.c bitmap.c user.c window.c \
@@ -145,17 +172,12 @@ S_FRAMEBUFFER_FBTK := fbtk.c event.c fill.c bitmap.c user.c window.c \
S_FRAMEBUFFER += font_$(NETSURF_FB_FONTLIB).c
-ifeq ($(NETSURF_FB_FONTLIB),internal)
-S_FRAMEBUFFER += nsfont_regular.c nsfont_italic.c nsfont_bold.c \
- nsfont_italic_bold.c
-endif
-
S_FRAMEBUFFER := $(addprefix framebuffer/,$(S_FRAMEBUFFER)) $(addprefix framebuffer/fbtk/,$(S_FRAMEBUFFER_FBTK))
# This is the final source build list
# Note this is deliberately *not* expanded here as common and image
# are not yet available
-SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_FRAMEBUFFER) $(S_IMAGES)
+SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_FRAMEBUFFER) $(S_IMAGES) $(S_FONTS)
EXETARGET := nsfb
# ----------------------------------------------------------------------------
@@ -164,7 +186,7 @@ EXETARGET := nsfb
NETSURF_FRAMEBUFFER_RESOURCE_LIST := adblock.css credits.html \
default.css internal.css licence.html \
- netsurf.png quirks.css welcome.html
+ netsurf.png quirks.css welcome.html Messages
install-framebuffer:
$(Q)mkdir -p $(DESTDIR)$(NETSURF_FRAMEBUFFER_BIN)
diff --git a/framebuffer/clipboard.c b/framebuffer/clipboard.c
index 46a1bb018..3729cd49b 100644
--- a/framebuffer/clipboard.c
+++ b/framebuffer/clipboard.c
@@ -23,10 +23,14 @@
#include <assert.h>
#include <stdint.h>
#include <string.h>
+#include <stdlib.h>
+
+#include "utils/log.h"
#include "desktop/browser.h"
#include "desktop/gui.h"
+
#include "framebuffer/gui.h"
-#include "utils/log.h"
+#include "framebuffer/clipboard.h"
static struct gui_clipboard {
@@ -36,15 +40,13 @@ static struct gui_clipboard {
} gui_clipboard;
-
-
/**
* Core asks front end for clipboard contents.
*
* \param buffer UTF-8 text, allocated by front end, ownership yeilded to core
* \param length Byte length of UTF-8 text in buffer
*/
-void gui_get_clipboard(char **buffer, size_t *length)
+static void gui_get_clipboard(char **buffer, size_t *length)
{
*buffer = NULL;
*length = 0;
@@ -73,7 +75,7 @@ void gui_get_clipboard(char **buffer, size_t *length)
* \param styles Array of styles given to text runs, owned by core, or NULL
* \param n_styles Number of text run styles in array
*/
-void gui_set_clipboard(const char *buffer, size_t length,
+static void gui_set_clipboard(const char *buffer, size_t length,
nsclipboard_styles styles[], int n_styles)
{
if (gui_clipboard.buffer_len < length + 1) {
@@ -95,3 +97,9 @@ void gui_set_clipboard(const char *buffer, size_t length,
gui_clipboard.buffer[gui_clipboard.length] = '\0';
}
+static struct gui_clipboard_table clipboard_table = {
+ .get = gui_get_clipboard,
+ .set = gui_set_clipboard,
+};
+
+struct gui_clipboard_table *framebuffer_clipboard_table = &clipboard_table;
diff --git a/framebuffer/login.c b/framebuffer/clipboard.h
index 7a5e195f4..b5f7b0f29 100644
--- a/framebuffer/login.c
+++ b/framebuffer/clipboard.h
@@ -16,10 +16,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "desktop/401login.h"
+#ifndef NETSURF_FB_CLIPBOARD_H
+#define NETSURF_FB_CLIPBOARD_H
-void gui_401login_open(nsurl *url, const char *realm,
- nserror (*cb)(bool proceed, void *pw), void *cbpw)
-{
- cb(false, cbpw);
-}
+extern struct gui_clipboard_table *framebuffer_clipboard_table;
+
+#endif
diff --git a/framebuffer/convert_font.c b/framebuffer/convert_font.c
new file mode 100644
index 000000000..eb8f3cb03
--- /dev/null
+++ b/framebuffer/convert_font.c
@@ -0,0 +1,1222 @@
+/*
+ * Copyright 2014 Michael Drake <tlsa@netsurf-browser.org>
+ * Copyright 2014 Vincent Sanders <vince@netsurf-browser.org>
+ *
+ * This file is part of the convert_font tool used to convert font
+ * glyph data into a compilable representation.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <unistd.h>
+#include <getopt.h>
+
+#define GLYPH_LEN 16
+#define BUCKETS 512
+#define CHUNK_SIZE (64 * 1024)
+#define HEADER_MAX 2000
+
+#define SECTION_SIZE (sizeof(uint16_t) * 256)
+
+const char *labels[4] = {
+ " Regular",
+ " Italic",
+ " Bold",
+ "Bold & Italic"
+};
+
+const char *var_lables[4] = {
+ "fb_regular",
+ "fb_italic",
+ "fb_bold",
+ "fb_bold_italic"
+};
+
+const char *short_labels[4] = {
+ " ",
+ " i",
+ "b ",
+ "bi"
+};
+
+enum font_style {
+ REGULAR = 0,
+ ITALIC = (1 << 0),
+ BOLD = (1 << 1),
+ ITALIC_BOLD = (1 << 2)
+};
+
+enum log_level {
+ LOG_DEBUG,
+ LOG_INFO,
+ LOG_RESULT,
+ LOG_WARNING,
+ LOG_ERROR
+};
+
+enum log_level level;
+
+typedef struct glyph_entry {
+ union {
+ uint32_t u32[GLYPH_LEN / 4];
+ uint8_t u8[GLYPH_LEN];
+ } data;
+ uint32_t index;
+ struct glyph_entry *next;
+} glyph_entry;
+
+/** Scratch glyph for generated code points */
+uint8_t code_point[GLYPH_LEN];
+
+/** Hash table */
+glyph_entry *ht[BUCKETS];
+
+#define LOG(lev, fmt, ...) \
+ if (lev >= level) \
+ printf(fmt, ##__VA_ARGS__);
+
+/**
+ * Get hash for glyph data
+ * \param g Glyph data (GLYPH_LEN bytes)
+ * \return glyph's hash
+ */
+static inline uint32_t glyph_hash(const uint8_t *g)
+{
+ uint32_t hash = 0x811c9dc5;
+ unsigned int len = GLYPH_LEN;
+
+ while (len > 0) {
+ hash *= 0x01000193;
+ hash ^= *g++;
+ len--;
+ }
+
+ return hash;
+}
+
+
+/**
+ * Check whether glyphs are identical (compares glyph data)
+ *
+ * \param g1 First glyph's data (GLYPH_LEN bytes)
+ * \param g2 Second glyph's data (GLYPH_LEN bytes)
+ * \return true iff both glyphs are identical, else false
+ */
+static inline bool glyphs_match(const uint8_t *g1, const uint8_t *g2)
+{
+ return (memcmp(g1, g2, GLYPH_LEN) == 0);
+}
+
+
+/**
+ * Add a glyph to a hash chain (or free, and return pointer to existing glyph)
+ *
+ * Note that if new glyph already exists in chain, it is freed and a pointer to
+ * the existing glyph is returned. If the glyph does not exist in the chain
+ * it is added and its pointer is returned.
+ *
+ * \param head Head of hash chain
+ * \param new New glyph to add (may be freed)
+ * \return pointer to glyph in hash chain
+ */
+static glyph_entry * glyph_add_to_chain(glyph_entry **head, glyph_entry *new)
+{
+ glyph_entry *e = *head;
+
+ if (*head == NULL) {
+ new->next = NULL;
+ *head = new;
+ return new;
+ }
+
+ do {
+ if (glyphs_match(new->data.u8, e->data.u8)) {
+ free(new);
+ return e;
+ }
+ if (e->next == NULL)
+ break;
+ e = e->next;
+ } while (1);
+
+ new->next = e->next;
+ e->next = new;
+ return new;
+}
+
+
+/**
+ * Free a glyph entry chain
+ *
+ * \param head Head of hash chain
+ */
+static void free_chain(glyph_entry *head)
+{
+ glyph_entry *e = head;
+
+ if (head == NULL)
+ return;
+
+ while (e != NULL) {
+ head = e->next;
+ free(e);
+ e = head;
+ };
+}
+
+
+/**
+ * Add new glyph to hash table (or free, and return pointer to existing glyph)
+ *
+ * Note that if new glyph already exists in table, it is freed and a pointer to
+ * the existing glyph is returned. If the glyph does not exist in the table
+ * it is added and its pointer is returned.
+ *
+ * \param new New glyph to add (may be freed)
+ * \return pointer to glyph in hash table
+ */
+static glyph_entry * glyph_add_to_table(glyph_entry *new)
+{
+ uint32_t hash = glyph_hash(new->data.u8);
+
+ return glyph_add_to_chain(&ht[hash % BUCKETS], new);
+}
+
+
+/**
+ * Add new glyph to hash table (or free, and return pointer to existing glyph)
+ *
+ * Note that if new glyph already exists in table, it is freed and a pointer to
+ * the existing glyph is returned. If the glyph does not exist in the table
+ * it is added and its pointer is returned.
+ *
+ * \param new New glyph to add (may be freed)
+ * \return pointer to glyph in hash table
+ */
+static void free_table(void)
+{
+ int i;
+
+ for (i = 0; i < BUCKETS; i++) {
+ free_chain(ht[i]);
+ }
+}
+
+struct parse_context {
+ enum {
+ START,
+ IN_HEADER,
+ BEFORE_ID,
+ GLYPH_ID,
+ BEFORE_GLYPH_DATA,
+ IN_GLYPH_DATA
+ } state; /**< Current parser state */
+
+ union {
+ struct {
+ bool new_line;
+ } in_header;
+ struct {
+ bool new_line;
+ bool u;
+ } before_id;
+ struct {
+ int c;
+ } g_id;
+ struct {
+ bool new_line;
+ bool prev_h;
+ bool prev_s;
+ int c;
+ } before_gd;
+ struct {
+ int line;
+ int pos;
+ int styles;
+ int line_styles;
+ glyph_entry *e[4];
+ } in_gd;
+ } data; /**< The state specific data */
+
+ int id; /**< Current ID */
+
+ int codepoints; /**< Glyphs containing codepoints */
+ int count[4]; /**< Count of glyphs in file */
+};
+
+struct font_data {
+ char header[HEADER_MAX];
+ int header_len;
+
+ uint8_t section_table[4][256];
+ uint8_t sec_count[4];
+ uint16_t *sections[4];
+
+ glyph_entry *e[0xffff];
+ int glyphs;
+};
+
+bool generate_font_header(const char *path, struct font_data *data)
+{
+ FILE *fp;
+ int s;
+
+ fp = fopen(path, "wb");
+ if (fp == NULL) {
+ LOG(LOG_ERROR, "Couldn't open header file \"%s\"\n", path);
+ return false;
+ }
+
+ fprintf(fp, "/*\n");
+ fwrite(data->header, 1, data->header_len, fp);
+ fprintf(fp, " */\n\n");
+ fprintf(fp, "/* Don't edit this file, it was generated from the "
+ "plain text source data. */\n\n");
+
+
+ for (s = 0; s < 4; s++) {
+ fprintf(fp, "const uint8_t *%s_section_table;\n",
+ var_lables[s]);
+ fprintf(fp, "const uint16_t *%s_sections;\n",
+ var_lables[s]);
+
+ }
+
+ fprintf(fp, "const uint8_t *font_glyph_data;\n");
+
+ fprintf(fp, "\n\n");
+
+ fclose(fp);
+
+ return true;
+
+}
+
+bool generate_font_source(const char *path, struct font_data *data)
+{
+ int s, i, y;
+ int limit;
+ FILE *fp;
+
+ fp = fopen(path, "wb");
+ if (fp == NULL) {
+ LOG(LOG_ERROR, "Couldn't open output file \"%s\"\n", path);
+ return false;
+ }
+
+ fprintf(fp, "/*\n");
+ fwrite(data->header, 1, data->header_len, fp);
+ fprintf(fp, " */\n\n");
+ fprintf(fp, "/* Don't edit this file, it was generated from the "
+ "plain text source data. */\n\n");
+
+ fprintf(fp, "#include <stdint.h>\n");
+ fprintf(fp, "\n");
+
+ for (s = 0; s < 4; s++) {
+
+ fprintf(fp, "static const uint8_t %s_section_table_c[256] = {\n",
+ var_lables[s]);
+
+ for (i = 0; i < 256; i++) {
+ if (i == 255)
+ fprintf(fp, "0x%.2X\n",
+ data->section_table[s][i]);
+ else if (i % 8 == 7)
+ fprintf(fp, "0x%.2X,\n",
+ data->section_table[s][i]);
+ else if (i % 8 == 0)
+ fprintf(fp, "\t0x%.2X, ",
+ data->section_table[s][i]);
+ else
+ fprintf(fp, "0x%.2X, ",
+ data->section_table[s][i]);
+ }
+
+ fprintf(fp, "};\nconst uint8_t *%s_section_table = &%s_section_table_c[0];\n\n",
+ var_lables[s], var_lables[s]);
+ fprintf(fp, "static const uint16_t %s_sections_c[%i] = {\n",
+ var_lables[s], data->sec_count[s] * 256);
+
+ limit = data->sec_count[s] * 256;
+ for (i = 0; i < limit; i++) {
+ uint16_t offset = data->sections[s][i];
+ if (i == limit - 1)
+ fprintf(fp, "0x%.4X\n", offset);
+ else if (i % 4 == 3)
+ fprintf(fp, "0x%.4X,\n", offset);
+ else if (i % 4 == 0)
+ fprintf(fp, "\t0x%.4X, ", offset);
+ else
+ fprintf(fp, "0x%.4X, ", offset);
+ }
+
+ fprintf(fp, "};\nconst uint16_t *%s_sections = &%s_sections_c[0];\n\n", var_lables[s], var_lables[s]);
+ }
+
+ fprintf(fp, "static const uint8_t font_glyph_data_c[%i] = {\n",
+ (data->glyphs + 1) * 16);
+
+ fprintf(fp, "\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n"
+ "\t0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n");
+
+ limit = data->glyphs;
+ for (i = 0; i < limit; i++) {
+ glyph_entry *e = data->e[i];
+
+ for (y = 0; y < 16; y++) {
+ if (i == limit - 1 && y == 15)
+ fprintf(fp, "0x%.2X\n", e->data.u8[y]);
+ else if (y % 8 == 7)
+ fprintf(fp, "0x%.2X,\n", e->data.u8[y]);
+ else if (y % 8 == 0)
+ fprintf(fp, "\t0x%.2X, ", e->data.u8[y]);
+ else
+ fprintf(fp, "0x%.2X, ", e->data.u8[y]);
+ }
+ }
+
+ fprintf(fp, "};\n");
+ fprintf(fp, "const uint8_t *font_glyph_data = &font_glyph_data_c[0];\n\n");
+
+ fclose(fp);
+
+ return true;
+}
+
+static bool add_glyph_to_data(glyph_entry *add, int id, int style,
+ struct font_data *d)
+{
+ glyph_entry *e;
+ int offset;
+ int s;
+
+ /* Find out if 'add' is unique, and get its unique table entry */
+ e = glyph_add_to_table(add);
+ if (e == add) {
+ /* Unique glyph */
+ d->e[d->glyphs++] = e;
+ e->index = d->glyphs;
+ if (d->glyphs >= 0xfffd) {
+ LOG(LOG_ERROR, " Too many glyphs for internal data "
+ "representation\n");
+ return false;
+ }
+ } else {
+ /* Duplicate glyph */
+ LOG(LOG_DEBUG, " U+%.4X (%s) is duplicate\n",
+ id, short_labels[style]);
+ }
+
+ /* Find glyph's section */
+ s = id / 256;
+
+ /* Allocate section if needed */
+ if ((s == 0 && d->sections[style] == NULL) ||
+ (s != 0 && d->section_table[style][s] == 0)) {
+ size_t size = (d->sec_count[style] + 1) * SECTION_SIZE;
+ uint16_t *temp = realloc(d->sections[style], size);
+ if (temp == NULL) {
+ LOG(LOG_ERROR, " Couldn't increase sections "
+ "allocation\n");
+ return false;
+ }
+ memset(temp + d->sec_count[style] * 256, 0,
+ SECTION_SIZE);
+ d->section_table[style][s] = d->sec_count[style];
+ d->sections[style] = temp;
+ d->sec_count[style]++;
+ }
+
+ offset = d->section_table[style][s] * 256 + (id & 0xff);
+ d->sections[style][offset] = e->index;
+
+ return true;
+}
+
+
+static bool check_glyph_data_valid(int pos, char c)
+{
+ int offset = pos % 11;
+
+ if (pos == 44) {
+ if (c != '\n') {
+ LOG(LOG_ERROR, " Invalid glyph data: "
+ "expecting '\\n', got '%c' (%i)\n",
+ c, c);
+ return false;
+ } else {
+ return true;
+ }
+ } else if (pos < 3) {
+ if (c != ' ') {
+ LOG(LOG_ERROR, " Invalid glyph data: "
+ "expecting ' ', got '%c' (%i)\n",
+ c, c);
+ return false;
+ } else {
+ return true;
+ }
+ } else if (offset == 0) {
+ if (c != '\n' && c != ' ') {
+ LOG(LOG_ERROR, " Invalid glyph data: "
+ "expecting '\\n' or ' ', "
+ "got '%c' (%i)\n",
+ c, c);
+ return false;
+ } else {
+ return true;
+ }
+ } else if (offset < 3) {
+ if (c != ' ') {
+ LOG(LOG_ERROR, " Invalid glyph data: "
+ "expecting ' ', got '%c' (%i)\n",
+ c, c);
+ return false;
+ } else {
+ return true;
+ }
+ } else if (offset >= 3 && pos < 11) {
+ if (c != '.' && c != '#') {
+ LOG(LOG_ERROR, " Invalid glyph data: "
+ "expecting '.' or '#', "
+ "got '%c' (%i)\n",
+ c, c);
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ /* offset must be >=3 */
+ if (c != '.' && c != '#' && c != ' ') {
+ LOG(LOG_ERROR, " Invalid glyph data: "
+ "expecting '.', '#', or ' ', "
+ "got '%c' (%i)\n",
+ c, c);
+ return false;
+ }
+
+ return true;
+}
+
+#define SEVEN_SET ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | \
+ (1 << 4) | (1 << 5) | (1 << 6))
+
+#define THREE_SSS ((1 << 0) | (1 << 1) | (1 << 2))
+#define THREE_S_S ((1 << 0) | (1 << 2))
+#define THREE__SS ((1 << 0) | (1 << 1) )
+#define THREE_SS_ ( (1 << 1) | (1 << 2))
+#define THREE_S__ (1 << 2)
+#define THREE__S_ (1 << 1)
+#define THREE___S (1 << 0)
+
+uint8_t frag[16][5] = {
+ { THREE_SSS,
+ THREE_S_S,
+ THREE_S_S,
+ THREE_S_S,
+ THREE_SSS },
+
+ { THREE__S_,
+ THREE_SS_,
+ THREE__S_,
+ THREE__S_,
+ THREE_SSS },
+
+ { THREE_SS_,
+ THREE___S,
+ THREE__S_,
+ THREE_S__,
+ THREE_SSS },
+
+ { THREE_SS_,
+ THREE___S,
+ THREE_SS_,
+ THREE___S,
+ THREE_SS_ },
+
+ { THREE_S_S,
+ THREE_S_S,
+ THREE_SSS,
+ THREE___S,
+ THREE___S },
+
+ { THREE_SSS,
+ THREE_S__,
+ THREE_SSS,
+ THREE___S,
+ THREE_SSS },
+
+ { THREE__SS,
+ THREE_S__,
+ THREE_SSS,
+ THREE_S_S,
+ THREE_SSS },
+
+ { THREE_SSS,
+ THREE___S,
+ THREE__S_,
+ THREE__S_,
+ THREE__S_ },
+
+ { THREE_SSS,
+ THREE_S_S,
+ THREE_SSS,
+ THREE_S_S,
+ THREE_SSS },
+
+ { THREE_SSS,
+ THREE_S_S,
+ THREE_SSS,
+ THREE___S,
+ THREE___S },
+
+ { THREE__S_,
+ THREE_S_S,
+ THREE_SSS,
+ THREE_S_S,
+ THREE_S_S },
+
+ { THREE_SS_,
+ THREE_S_S,
+ THREE_SS_,
+ THREE_S_S,
+ THREE_SS_ },
+
+ { THREE__S_,
+ THREE_S_S,
+ THREE_S__,
+ THREE_S_S,
+ THREE__S_ },
+
+ { THREE_SS_,
+ THREE_S_S,
+ THREE_S_S,
+ THREE_S_S,
+ THREE_SS_ },
+
+ { THREE_SSS,
+ THREE_S__,
+ THREE_SS_,
+ THREE_S__,
+ THREE_SSS },
+
+ { THREE_SSS,
+ THREE_S__,
+ THREE_SS_,
+ THREE_S__,
+ THREE_S__ }
+};
+
+void build_codepoint(int id, bool italic, uint8_t *code_point)
+{
+ int shift = 0;
+ int l;
+ int r;
+
+ if (!italic)
+ shift = 1;
+
+ l = (id >> 12);
+ r = 0xf & (id >> 8);
+
+ code_point[ 0] = 0;
+ code_point[ 1] = SEVEN_SET << shift;
+ code_point[ 2] = 0;
+
+ code_point[ 3] = (frag[l][0] << (4 + shift)) | (frag[r][0] << shift);
+ code_point[ 4] = (frag[l][1] << (4 + shift)) | (frag[r][1] << shift);
+ code_point[ 5] = (frag[l][2] << (4 + shift)) | (frag[r][2] << shift);
+ code_point[ 6] = (frag[l][3] << (4 + shift)) | (frag[r][3] << shift);
+ code_point[ 7] = (frag[l][4] << (4 + shift)) | (frag[r][4] << shift);
+
+ code_point[ 8] = 0;
+
+ shift = 1;
+
+ l = 0xf & (id >> 4);
+ r = 0xf & id ;
+
+ code_point[ 9] = (frag[l][0] << (4 + shift)) | (frag[r][0] << shift);
+ code_point[10] = (frag[l][1] << (4 + shift)) | (frag[r][1] << shift);
+ code_point[11] = (frag[l][2] << (4 + shift)) | (frag[r][2] << shift);
+ code_point[12] = (frag[l][3] << (4 + shift)) | (frag[r][3] << shift);
+ code_point[13] = (frag[l][4] << (4 + shift)) | (frag[r][4] << shift);
+
+ code_point[14] = 0;
+ code_point[15] = SEVEN_SET << shift;
+}
+
+#undef SEVEN_SET
+#undef THREE_SSS
+#undef THREE_S_S
+#undef THREE__SS
+#undef THREE_SS_
+#undef THREE_S__
+#undef THREE__S_
+#undef THREE___S
+
+static bool glyph_is_codepoint(const glyph_entry *e, int id, int style)
+{
+ bool italic = false;
+
+ if (style == 1 || style == 3) {
+ italic = true;
+ }
+
+ build_codepoint(id, italic, code_point);
+
+ return glyphs_match(code_point, e->data.u8);
+}
+
+
+static bool parse_glyph_data(struct parse_context *ctx, char c,
+ struct font_data *d)
+{
+ int glyph = ctx->data.in_gd.pos / 11;
+ int g_pos = ctx->data.in_gd.pos % 11 - 3;
+ uint8_t *row;
+ bool ok;
+ int i;
+
+ /* Check that character is valid */
+ if (check_glyph_data_valid(ctx->data.in_gd.pos, c) == false) {
+ LOG(LOG_ERROR, " Error in U+%.4X data: "
+ "glyph line: %i, pos: %i\n",
+ ctx->id,
+ ctx->data.in_gd.line,
+ ctx->data.in_gd.pos);
+ goto error;
+ }
+
+ /* Allocate glyph data if needed */
+ if (ctx->data.in_gd.line == 0 &&
+ (c == '.' || c == '#')) {
+ if (ctx->data.in_gd.e[glyph] == NULL) {
+ ctx->data.in_gd.e[glyph] =
+ calloc(sizeof(struct glyph_entry), 1);
+ if (ctx->data.in_gd.e[glyph] == NULL) {
+ LOG(LOG_ERROR, " Couldn't allocate memory for "
+ "glyph entry\n");
+ goto error;
+ }
+
+ ctx->data.in_gd.styles |= 1 << glyph;
+ }
+ }
+
+ /* Build glyph data */
+ if (c == '#') {
+ row = &ctx->data.in_gd.e[glyph]->data.u8[ctx->data.in_gd.line];
+ *row += 1 << (7 - g_pos);
+
+ ctx->data.in_gd.line_styles |= 1 << glyph;
+ } else if (c == '.') {
+ ctx->data.in_gd.line_styles |= 1 << glyph;
+ }
+
+ /* Deal with current position */
+ if (c == '\n') {
+ if (ctx->data.in_gd.line == 0) {
+ if (ctx->data.in_gd.e[0] == NULL) {
+ LOG(LOG_ERROR, " Error in U+%.4X data: "
+ "\"Regular\" glyph style must "
+ "be present\n", ctx->id);
+ goto error;
+ }
+ } else if (ctx->data.in_gd.styles !=
+ ctx->data.in_gd.line_styles) {
+ LOG(LOG_ERROR, " Error in U+%.4X data: "
+ "glyph line: %i "
+ "styles don't match first line\n",
+ ctx->id,
+ ctx->data.in_gd.line);
+ goto error;
+ }
+
+ ctx->data.in_gd.pos = 0;
+ ctx->data.in_gd.line++;
+ ctx->data.in_gd.line_styles = 0;
+ } else {
+ ctx->data.in_gd.pos++;
+ }
+
+ /* If we've got all the glyph data, tidy up and advance state */
+ if (ctx->data.in_gd.line == 16) {
+ for (i = 0; i < 4; i++) {
+ if (ctx->data.in_gd.e[i] != NULL) {
+ ctx->count[i] += 1;
+ if (glyph_is_codepoint(ctx->data.in_gd.e[i],
+ ctx->id, i)) {
+ LOG(LOG_DEBUG, " U+%.4X (%s) is "
+ "codepoint\n",
+ ctx->id,
+ short_labels[i]);
+ ctx->codepoints += 1;
+ free(ctx->data.in_gd.e[i]);
+ ctx->data.in_gd.e[i] = NULL;
+ continue;
+ }
+
+ ok = add_glyph_to_data(ctx->data.in_gd.e[i],
+ ctx->id, i, d);
+ if (!ok) {
+ goto error;
+ }
+ }
+ }
+
+ ctx->data.before_id.new_line = false;
+ ctx->data.before_id.u = false;
+ ctx->state = BEFORE_ID;
+ }
+
+ return true;
+
+error:
+
+ for (i = 0; i < 4; i++) {
+ free(ctx->data.in_gd.e[i]);
+ }
+
+ return false;
+}
+
+static void parse_init(struct parse_context *ctx)
+{
+ memset(ctx, 0, sizeof(struct parse_context));
+}
+
+static bool get_hex_digit_value(char c, int *v)
+{
+ if (c >= '0' && c <= '9')
+ *v = (c - '0');
+ else if (c >= 'A' && c <= 'F')
+ *v = (10 + c - 'A');
+ else {
+ LOG(LOG_ERROR, "Invalid hex digit '%c' (%i)\n", c, c);
+ return false;
+ }
+
+ return true;
+}
+
+static bool assemble_codepoint(const char* c, int n, int *id)
+{
+ bool ok;
+ int v;
+
+ ok = get_hex_digit_value(*c, &v);
+ if (!ok) {
+ return false;
+ }
+
+ *id += v << (4 * (3 - n));
+
+ return true;
+}
+
+static bool parse_chunk(struct parse_context *ctx, const char *buf, size_t len,
+ struct font_data *d)
+{
+ int i;
+ bool ok;
+ int count[4];
+ const char *pos = buf;
+ const char *end = buf + len;
+
+ for (i = 0; i < 4; i++) {
+ count[i] = ctx->count[i];
+ }
+
+ while (pos < end) {
+ if (*pos == '\r') {
+ LOG(LOG_ERROR, "Detected \'\\r\': Bad line ending\n");
+ return false;
+ }
+
+ switch (ctx->state) {
+ case START:
+ if (*pos != '*') {
+ LOG(LOG_ERROR, "First character must be '*'\n");
+ printf("Got: %c (%i)\n", *pos, *pos);
+ return false;
+ }
+ d->header_len = 0;
+ ctx->data.in_header.new_line = true;
+ ctx->state = IN_HEADER;
+
+ /* Fall through */
+ case IN_HEADER:
+ if (ctx->data.in_header.new_line == true) {
+ if (*pos != '*') {
+ LOG(LOG_INFO, " Got header "
+ "(%i bytes)\n",
+ d->header_len);
+ LOG(LOG_DEBUG, " Header:\n\n%.*s\n",
+ d->header_len,
+ d->header);
+ ctx->data.before_id.new_line = false;
+ ctx->data.before_id.u = false;
+ ctx->state = BEFORE_ID;
+ continue;
+ } else if (*pos == '*') {
+ d->header[d->header_len++] = ' ';
+ }
+ ctx->data.in_header.new_line = false;
+
+ } else if (*pos == '\n') {
+ ctx->data.in_header.new_line = true;
+ }
+
+ if (d->header_len == HEADER_MAX) {
+ LOG(LOG_ERROR, " Header too long "
+ "(>%i bytes)\n",
+ d->header_len);
+ return false;
+ }
+
+ d->header[d->header_len++] = *pos;
+ break;
+
+ case BEFORE_ID:
+ if (*pos == '+' &&
+ ctx->data.before_id.new_line == true &&
+ ctx->data.before_id.u == true) {
+ ctx->data.g_id.c = 0;
+ ctx->id = 0;
+ ctx->state = GLYPH_ID;
+ break;
+
+ } else if (*pos == 'U' &&
+ ctx->data.before_id.new_line == true) {
+ ctx->data.before_id.u = true;
+
+ } else if (*pos == '\n') {
+ ctx->data.before_id.new_line = true;
+ ctx->data.before_id.u = false;
+
+ } else {
+ ctx->data.before_id.new_line = false;
+ ctx->data.before_id.u = false;
+ }
+ break;
+
+ case GLYPH_ID:
+ ok = assemble_codepoint(pos, ctx->data.g_id.c++,
+ &ctx->id);
+ if (!ok) {
+ LOG(LOG_ERROR, " Invalid glyph ID\n");
+ return false;
+ }
+
+ if (ctx->data.g_id.c == 4) {
+ ctx->data.before_gd.new_line = false;
+ ctx->data.before_gd.prev_h = false;
+ ctx->data.before_gd.prev_s = false;
+ ctx->data.before_gd.c = 0;
+ ctx->state = BEFORE_GLYPH_DATA;
+ break;
+ }
+ break;
+
+ case BEFORE_GLYPH_DATA:
+ /* Skip until end of dashed line */
+ if (*pos == '\n' && ctx->data.before_gd.c == 53) {
+ ctx->state = IN_GLYPH_DATA;
+ ctx->data.in_gd.e[0] = NULL;
+ ctx->data.in_gd.e[1] = NULL;
+ ctx->data.in_gd.e[2] = NULL;
+ ctx->data.in_gd.e[3] = NULL;
+ ctx->data.in_gd.line = 0;
+ ctx->data.in_gd.pos = 0;
+ ctx->data.in_gd.line_styles = 0;
+ ctx->data.in_gd.styles = 0;
+ break;
+
+ } else if (*pos == '\n') {
+ ctx->data.before_gd.new_line = true;
+ ctx->data.before_gd.prev_h = false;
+ ctx->data.before_gd.prev_s = false;
+ ctx->data.before_gd.c = 0;
+ } else if (*pos == '-' &&
+ ctx->data.before_gd.new_line == true) {
+ assert(ctx->data.before_gd.c == 0);
+ ctx->data.before_gd.new_line = false;
+ ctx->data.before_gd.c++;
+ ctx->data.before_gd.prev_h = true;
+ } else if (*pos == ' ' &&
+ ctx->data.before_gd.prev_h == true) {
+ assert(ctx->data.before_gd.prev_s == false);
+ ctx->data.before_gd.c++;
+ ctx->data.before_gd.prev_h = false;
+ ctx->data.before_gd.prev_s = true;
+ } else if (*pos == '-' &&
+ ctx->data.before_gd.prev_s == true) {
+ assert(ctx->data.before_gd.prev_h == false);
+ ctx->data.before_gd.c++;
+ ctx->data.before_gd.prev_h = true;
+ ctx->data.before_gd.prev_s = false;
+ } else {
+ ctx->data.before_gd.new_line = false;
+ ctx->data.before_gd.prev_h = false;
+ ctx->data.before_gd.prev_s = false;
+ ctx->data.before_gd.c = 0;
+ }
+ break;
+
+ case IN_GLYPH_DATA:
+ ok = parse_glyph_data(ctx, *pos, d);
+ if (!ok) {
+ return false;
+ }
+
+ break;
+ }
+
+ pos++;
+ }
+
+ for (i = 0; i < 4; i++) {
+ LOG(LOG_DEBUG, " %s: %i gylphs\n", labels[i],
+ ctx->count[i] - count[i]);
+ }
+
+ return true;
+}
+
+
+bool load_font(const char *path, struct font_data **data)
+{
+ struct parse_context ctx;
+ struct font_data *d;
+ size_t file_len;
+ size_t done;
+ size_t len;
+ int count;
+ char *buf;
+ FILE *fp;
+ bool ok;
+ int i;
+
+ *data = NULL;
+
+ fp = fopen(path, "rb");
+ if (fp == NULL) {
+ LOG(LOG_ERROR, "Couldn't open font data file\n");
+ return false;
+ }
+
+ d = calloc(sizeof(struct font_data), 1);
+ if (d == NULL) {
+ LOG(LOG_ERROR, "Couldn't allocate memory for font data\n");
+ fclose(fp);
+ return false;
+ }
+
+ /* Find filesize */
+ fseek(fp, 0L, SEEK_END);
+ file_len = ftell(fp);
+ if (file_len == -1) {
+ LOG(LOG_ERROR, "Could not size input file\n");
+ free(d);
+ fclose(fp);
+ return false;
+ }
+ fseek(fp, 0L, SEEK_SET);
+ LOG(LOG_DEBUG, "Input size: %zu bytes\n", file_len);
+
+ /* Allocate buffer for data chunks */
+ buf = malloc(CHUNK_SIZE);
+ if (buf == NULL) {
+ LOG(LOG_ERROR, "Couldn't allocate memory for input buffer\n");
+ free(d);
+ fclose(fp);
+ return false;
+ }
+
+ /* Initialise parser */
+ parse_init(&ctx);
+
+ LOG(LOG_DEBUG, "Using chunk size of %i bytes\n", CHUNK_SIZE);
+
+ /* Parse the input file in chunks */
+ for (done = 0; done < file_len; done += CHUNK_SIZE) {
+ LOG(LOG_INFO, "Parsing input chunk %zu\n", done / CHUNK_SIZE);
+
+ /* Read chunk */
+ len = fread(buf, 1, CHUNK_SIZE, fp);
+ if (file_len - done < CHUNK_SIZE &&
+ len != file_len - done) {
+ LOG(LOG_WARNING, "Last chunk has suspicious size\n");
+ } else if (file_len - done >= CHUNK_SIZE &&
+ len != CHUNK_SIZE) {
+ LOG(LOG_ERROR, "Problem reading file\n");
+ free(buf);
+ free(d);
+ fclose(fp);
+ return false;
+ }
+
+ /* Parse chunk */
+ ok = parse_chunk(&ctx, buf, len, d);
+ if (!ok) {
+ free(buf);
+ free(d);
+ fclose(fp);
+ return false;
+ }
+ LOG(LOG_DEBUG, "Parsed %zu bytes\n", done + len);
+ }
+
+ fclose(fp);
+
+ if (ctx.state != BEFORE_ID) {
+ LOG(LOG_ERROR, "Unexpected end of file\n");
+ free(buf);
+ free(d);
+ return false;
+ }
+
+ LOG(LOG_INFO, "Parsing complete:\n");
+ count = 0;
+ for (i = 0; i < 4; i++) {
+ LOG(LOG_INFO, " %s: %i gylphs\n", labels[i], ctx.count[i]);
+ count += ctx.count[i];
+ }
+
+ LOG(LOG_RESULT, " Total %i gylphs "
+ "(of which %i unique, %i codepoints, %i duplicates)\n",
+ count, d->glyphs, ctx.codepoints,
+ count - d->glyphs - ctx.codepoints);
+
+ free(buf);
+
+ *data = d;
+ return true;
+}
+
+static void log_usage(const char *argv0)
+{
+ level = LOG_INFO;
+ LOG(LOG_INFO,
+ "Usage:\n"
+ "\t%s [options] <in_file> <out_file>\n"
+ "\n"
+ "Options:\n"
+ "\t--help -h Display this text\n"
+ "\t--quiet -q Don't show warnings\n"
+ "\t--verbose -v Verbose output\n"
+ "\t--debug -d Full debug output\n",
+ argv0);
+}
+
+int main(int argc, char** argv)
+{
+ const char *in_path = NULL;
+ const char *out_path = NULL;
+ char *header_path = NULL;
+ struct font_data *data;
+ bool ok;
+ int i;
+ int opt;
+
+ level = LOG_RESULT;
+
+ /* Handle program arguments */
+ struct option long_options[] = {
+ { "help", no_argument, NULL, 'h' },
+ { "quiet", no_argument, NULL, 'q' },
+ { "verbose", no_argument, NULL, 'v' },
+ { "debug", no_argument, NULL, 'd' },
+ { "header", required_argument, NULL, 'H' },
+ };
+
+ while ((opt = getopt_long(argc, argv, "hqvdH:", long_options, NULL)) != -1) {
+ switch (opt) {
+ case 'q':
+ level = LOG_WARNING;
+ break;
+
+ case 'v':
+ level = LOG_INFO;
+ break;
+
+ case 'd':
+ level = LOG_DEBUG;
+ break;
+
+ case 'H':
+ header_path = strdup(optarg);
+ break;
+
+ case 'h':
+ log_usage(argv[0]);
+ free(header_path);
+ return EXIT_SUCCESS;
+
+ default:
+ log_usage(argv[0]);
+ free(header_path);
+ return EXIT_FAILURE;
+ }
+ }
+
+ if ((argc - optind) < 2) {
+ log_usage(argv[0]);
+ free(header_path);
+ return EXIT_FAILURE;
+ }
+
+ in_path = argv[optind];
+ out_path = argv[optind + 1];
+
+ LOG(LOG_DEBUG, "Using input path: \"%s\"\n", in_path);
+ LOG(LOG_DEBUG, "Using output path: \"%s\"\n", out_path);
+
+ ok = load_font(in_path, &data);
+ if (!ok) {
+ free_table();
+ free(header_path);
+ return EXIT_FAILURE;
+ }
+
+ ok = generate_font_source(out_path, data);
+ if (ok && (header_path != NULL)) {
+ ok = generate_font_header(header_path, data);
+ }
+ free(header_path);
+ free_table();
+ for (i = 0; i < 4; i++) {
+ free(data->sections[i]);
+ }
+ free(data);
+ if (!ok) {
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/framebuffer/convert_image.c b/framebuffer/convert_image.c
index bf47a3515..838a90703 100644
--- a/framebuffer/convert_image.c
+++ b/framebuffer/convert_image.c
@@ -159,6 +159,7 @@ main(int argc, char **argv)
if (br < 0) {
printf("Error reading input: %s\n", strerror(errno));
+ fclose(f);
return 1;
}
diff --git a/framebuffer/fbtk.h b/framebuffer/fbtk.h
index 220700fef..aff281439 100644
--- a/framebuffer/fbtk.h
+++ b/framebuffer/fbtk.h
@@ -270,7 +270,7 @@ bool fbtk_get_caret(fbtk_widget_t *widget, int *x, int *y, int *height);
/******************* Widget Manipulation **********************/
-/** Change the widget's position and size.
+/** Change the widget's position and size. (Doesn't redraw)
*
*/
bool fbtk_set_pos_and_size(fbtk_widget_t *widget, int x, int y, int width, int height);
@@ -312,7 +312,8 @@ int fbtk_destroy_widget(fbtk_widget_t *widget);
/********************************* Widgets *********************************/
-/** Create a window widget.
+/**
+ * Create a window widget.
*
* @param parent The parent window or the root widget for a top level window.
* @param x The x location relative to the parent window.
@@ -323,7 +324,7 @@ int fbtk_destroy_widget(fbtk_widget_t *widget);
* window.
* @param height The height of the window limited in a similar way to the
* /a width.
- * @param c The background colour.
+ * @param bg The background colour.
* @return new window widget handle or NULL on error.
*/
fbtk_widget_t *fbtk_create_window(fbtk_widget_t *parent, int x, int y, int width, int height, colour bg);
@@ -368,6 +369,27 @@ bool fbtk_set_scroll_parameters(fbtk_widget_t *widget, int min, int max, int thu
bool fbtk_set_scroll_position(fbtk_widget_t *widget, int pos);
+/** Move and/or resize a horizontal scroll widget
+ *
+ * @param vscroll the horizontal scroll widget
+ * @param x new x pos
+ * @param y new y pos
+ * @param width new width
+ * @param height new height
+ */
+void fbtk_reposition_hscroll(fbtk_widget_t *scrollh,
+ int x, int y, int width, int height);
+
+/** Move and/or resize a vertical scroll widget
+ *
+ * @param vscroll the vertical scroll widget
+ * @param x new x pos
+ * @param y new y pos
+ * @param width new width
+ * @param height new height
+ */
+void fbtk_reposition_vscroll(fbtk_widget_t *scrollv,
+ int x, int y, int width, int height);
diff --git a/framebuffer/fbtk/event.c b/framebuffer/fbtk/event.c
index bd018c52c..2ef36321e 100644
--- a/framebuffer/fbtk/event.c
+++ b/framebuffer/fbtk/event.c
@@ -248,6 +248,13 @@ fbtk_event(fbtk_widget_t *root, nsfb_event_t *event, int timeout)
timeout = 0;
break;
+ case NSFB_EVENT_RESIZE:
+ /* Try to resize framebuffer */
+ gui_resize(root,
+ event->value.resize.w,
+ event->value.resize.h);
+ break;
+
default:
break;
}
diff --git a/framebuffer/fbtk/fbtk.c b/framebuffer/fbtk/fbtk.c
index 984748402..cb8aec57f 100644
--- a/framebuffer/fbtk/fbtk.c
+++ b/framebuffer/fbtk/fbtk.c
@@ -209,6 +209,29 @@ fbtk_set_pos_and_size(fbtk_widget_t *widget,
int x, int y,
int width, int height)
{
+ if (widget->parent != NULL) {
+ fbtk_widget_t *parent = widget->parent;
+
+ /* make new window fit inside parent */
+ if (width == 0) {
+ width = parent->width - x;
+ } else if (width < 0) {
+ width = parent->width + width - x;
+ }
+ if ((width + x) > parent->width) {
+ width = parent->width - x;
+ }
+
+ if (height == 0) {
+ height = parent->height - y;
+ } else if (height < 0) {
+ height = parent->height + height - y;
+ }
+ if ((height + y) > parent->height) {
+ height = parent->height - y;
+ }
+ }
+
if ((widget->x != x) ||
(widget->y != y) ||
(widget->width != width) ||
@@ -217,10 +240,6 @@ fbtk_set_pos_and_size(fbtk_widget_t *widget,
widget->y = y;
widget->width = width;
widget->height = height;
- /* @todo This should limit the redrawn area to the sum
- * of the old and new widget dimensions, not redraw the lot.
- */
- fbtk_request_redraw(widget->parent);
return true;
}
return false;
diff --git a/framebuffer/fbtk/scroll.c b/framebuffer/fbtk/scroll.c
index 0ce56a6ee..e91c3ef6e 100644
--- a/framebuffer/fbtk/scroll.c
+++ b/framebuffer/fbtk/scroll.c
@@ -18,6 +18,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <assert.h>
+
#include <stdbool.h>
#include <libnsfb.h>
@@ -272,6 +274,26 @@ fbtk_create_vscroll(fbtk_widget_t *parent,
return neww;
}
+
+/* exported function documented in fbtk.h */
+void
+fbtk_reposition_vscroll(fbtk_widget_t *vscroll,
+ int x,
+ int y,
+ int width,
+ int height)
+{
+ assert(vscroll->type == FB_WIDGET_TYPE_VSCROLL);
+
+ fbtk_set_pos_and_size(vscroll, x, y + scrollu.height,
+ width, height - scrollu.height - scrolld.height);
+ fbtk_set_pos_and_size(vscroll->u.scroll.btnul,
+ x, y, width, scrollu.height);
+ fbtk_set_pos_and_size(vscroll->u.scroll.btndr,
+ x, y + height - scrolld.height,
+ width, scrolld.height);
+}
+
/* Horizontal scroll widget */
static int
@@ -488,6 +510,25 @@ fbtk_create_hscroll(fbtk_widget_t *parent,
return neww;
}
+/* exported function documented in fbtk.h */
+void
+fbtk_reposition_hscroll(fbtk_widget_t *scrollh,
+ int x,
+ int y,
+ int width,
+ int height)
+{
+ assert(scrollh->type == FB_WIDGET_TYPE_HSCROLL);
+
+ fbtk_set_pos_and_size(scrollh, x + scrolll.width, y,
+ width - scrolll.width - scrollr.width, height);
+ fbtk_set_pos_and_size(scrollh->u.scroll.btnul,
+ x, y, scrolll.width, height);
+ fbtk_set_pos_and_size(scrollh->u.scroll.btndr,
+ x + width - scrollr.width, y,
+ scrollr.width, height);
+}
+
/* exported function documented in fbtk.h */
bool
diff --git a/framebuffer/fbtk/text.c b/framebuffer/fbtk/text.c
index a4562289b..b05271b44 100644
--- a/framebuffer/fbtk/text.c
+++ b/framebuffer/fbtk/text.c
@@ -66,7 +66,7 @@ fb_text_font_style(fbtk_widget_t *widget, int *font_height, int *padding,
*padding += widget->height / 6;
*font_height = widget->height - *padding - *padding;
#else
- *font_height = font_regular.height;
+ *font_height = FB_FONT_HEIGHT;
*padding = (widget->height - *padding - *font_height) / 2;
#endif
diff --git a/framebuffer/filetype.c b/framebuffer/fetch.c
index 84e286d0c..b32a95168 100644
--- a/framebuffer/filetype.c
+++ b/framebuffer/fetch.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2003 James Bursa <bursa@users.sourceforge.net>
+ * Copyright 2014 Vincent Sanders <vince@netsurf-browser.org>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -16,17 +16,54 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+/** \file
+ * Interfaces for fetch table.
+ */
+
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include "content/fetch.h"
+#include <limits.h>
+
+#include "utils/nsurl.h"
#include "utils/log.h"
-#include "utils/utils.h"
+#include "utils/filepath.h"
+#include "utils/file.h"
+#include "desktop/gui.h"
+
+#include "framebuffer/findfile.h"
+#include "framebuffer/fetch.h"
+
+
/**
- * filetype -- determine the MIME type of a local file
+ * Translate resource to full url.
+ *
+ * Transforms a resource: path into a full URL. The returned URL
+ * is used as the target for a redirect. The caller takes ownership of
+ * the returned nsurl including unrefing it when finished with it.
+ *
+ * \param path The path of the resource to locate.
+ * \return A string containing the full URL of the target object or
+ * NULL if no suitable resource can be found.
*/
+static nsurl *get_resource_url(const char *path)
+{
+ char buf[PATH_MAX];
+ nsurl *url = NULL;
-const char *fetch_filetype(const char *unix_path)
+ if (strcmp(path, "favicon.ico") == 0)
+ path = "favicon.png";
+
+ netsurf_path_to_nsurl(filepath_sfind(respaths, buf, path), &url);
+
+ return url;
+}
+
+/**
+ * filetype -- determine the MIME type of a local file
+ */
+static const char *fetch_filetype(const char *unix_path)
{
int l;
LOG(("unix path %s", unix_path));
@@ -52,8 +89,11 @@ const char *fetch_filetype(const char *unix_path)
return "text/html";
}
+/* table for fetch operations */
+static struct gui_fetch_table fetch_table = {
+ .filetype = fetch_filetype,
-char *fetch_mimetype(const char *ro_path)
-{
- return strdup("text/plain");
-}
+ .get_resource_url = get_resource_url,
+};
+
+struct gui_fetch_table *framebuffer_fetch_table = &fetch_table;
diff --git a/framebuffer/fetch.h b/framebuffer/fetch.h
new file mode 100644
index 000000000..718b08300
--- /dev/null
+++ b/framebuffer/fetch.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2014 Vincent Sanders <vince@netsurf-browser.org>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#ifndef NETSURF_FB_FETCH_H
+#define NETSURF_FB_FETCH_H
+
+struct gui_fetch_table *framebuffer_fetch_table;
+
+#endif
diff --git a/framebuffer/findfile.c b/framebuffer/findfile.c
index 821a66305..67312f452 100644
--- a/framebuffer/findfile.c
+++ b/framebuffer/findfile.c
@@ -16,19 +16,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <limits.h>
-#include <unistd.h>
-#include <stdbool.h>
#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <curl/curl.h>
#include "utils/filepath.h"
-#include "utils/log.h"
-#include "utils/url.h"
-#include "desktop/gui.h"
#include "framebuffer/findfile.h"
@@ -57,64 +47,6 @@ fb_init_resource(const char *resource_path)
}
-char *path_to_url(const char *path)
-{
- int urllen;
- char *url;
-
- if (path == NULL)
- return NULL;
-
- urllen = strlen(path) + FILE_SCHEME_PREFIX_LEN + 1;
- url = malloc(urllen);
-
- if (*path == '/') {
- path++; /* file: paths are already absolute */
- }
-
- snprintf(url, urllen, "%s%s", FILE_SCHEME_PREFIX, path);
-
- return url;
-}
-
-
-char *url_to_path(const char *url)
-{
- char *path;
- char *respath;
- url_func_result res; /* result from url routines */
-
- res = url_path(url, &path);
- if (res != URL_FUNC_OK) {
- return NULL;
- }
-
- res = url_unescape(path, &respath);
- free(path);
- if (res != URL_FUNC_OK) {
- return NULL;
- }
-
- return respath;
-}
-
-nsurl *gui_get_resource_url(const char *path)
-{
- char buf[PATH_MAX];
- char *raw;
- nsurl *url = NULL;
-
- if (strcmp(path, "favicon.ico") == 0)
- path = "favicon.png";
-
- raw = path_to_url(filepath_sfind(respaths, buf, path));
- if (raw != NULL) {
- nsurl_create(raw, &url);
- free(raw);
- }
-
- return url;
-}
/*
* Local Variables:
diff --git a/framebuffer/font.h b/framebuffer/font.h
index 5ae5bb3ad..6350421e7 100644
--- a/framebuffer/font.h
+++ b/framebuffer/font.h
@@ -21,6 +21,8 @@
#include "utils/utf8.h"
+extern struct gui_utf8_table *framebuffer_utf8_table;
+
bool fb_font_init(void);
bool fb_font_finalise(void);
diff --git a/framebuffer/font_freetype.c b/framebuffer/font_freetype.c
index 521a5bc5f..4381db62a 100644
--- a/framebuffer/font_freetype.c
+++ b/framebuffer/font_freetype.c
@@ -23,13 +23,14 @@
#include <ft2build.h>
#include FT_CACHE_H
-#include "css/css.h"
-#include "css/utils.h"
-#include "render/font.h"
#include "utils/filepath.h"
#include "utils/utf8.h"
#include "utils/log.h"
#include "utils/nsoption.h"
+#include "css/css.h"
+#include "css/utils.h"
+#include "render/font.h"
+#include "desktop/gui.h"
#include "framebuffer/gui.h"
#include "framebuffer/font.h"
@@ -74,30 +75,6 @@ enum fb_face_e {
static fb_faceid_t *fb_faces[FB_FACE_COUNT];
-
-utf8_convert_ret utf8_to_local_encoding(const char *string,
- size_t len,
- char **result)
-{
- return utf8_to_enc(string, "UTF-8", len, result);
-}
-
-utf8_convert_ret utf8_from_local_encoding(const char *string,
- size_t len,
- char **result)
-{
- *result = malloc(len + 1);
- if (*result == NULL) {
- return UTF8_CONVERT_NOMEM;
- }
-
- memcpy(*result, string, len);
-
- (*result)[len] = '\0';
-
- return UTF8_CONVERT_OK;
-}
-
/* map cache manager handle to face id */
static FT_Error ft_face_requester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *face )
{
@@ -581,6 +558,8 @@ const struct font_functions nsfont = {
nsfont_split
};
+struct gui_utf8_table *framebuffer_utf8_table = NULL;
+
/*
* Local Variables:
* c-basic-offset:8
diff --git a/framebuffer/font_internal.c b/framebuffer/font_internal.c
index dc1b35820..9b850d5c8 100644
--- a/framebuffer/font_internal.c
+++ b/framebuffer/font_internal.c
@@ -19,16 +19,170 @@
#include <inttypes.h>
#include <string.h>
-
#include <assert.h>
-#include "css/css.h"
-#include "render/font.h"
+
#include "utils/nsoption.h"
#include "utils/utf8.h"
+#include "desktop/gui.h"
+#include "css/css.h"
+#include "render/font.h"
#include "framebuffer/gui.h"
#include "framebuffer/font.h"
+#include <font-ns-sans.h>
+
+#define GLYPH_LEN 16
+
+uint8_t code_point[GLYPH_LEN];
+uint8_t glyph_x2[GLYPH_LEN * 4];
+
+#define SEVEN_SET ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | \
+ (1 << 4) | (1 << 5) | (1 << 6))
+
+#define THREE_SSS ((1 << 0) | (1 << 1) | (1 << 2))
+#define THREE_S_S ((1 << 0) | (1 << 2))
+#define THREE__SS ((1 << 0) | (1 << 1) )
+#define THREE_SS_ ( (1 << 1) | (1 << 2))
+#define THREE_S__ (1 << 2)
+#define THREE__S_ (1 << 1)
+#define THREE___S (1 << 0)
+
+uint8_t frag[16][5] = {
+ { THREE_SSS,
+ THREE_S_S,
+ THREE_S_S,
+ THREE_S_S,
+ THREE_SSS },
+
+ { THREE__S_,
+ THREE_SS_,
+ THREE__S_,
+ THREE__S_,
+ THREE_SSS },
+
+ { THREE_SS_,
+ THREE___S,
+ THREE__S_,
+ THREE_S__,
+ THREE_SSS },
+
+ { THREE_SS_,
+ THREE___S,
+ THREE_SS_,
+ THREE___S,
+ THREE_SS_ },
+
+ { THREE_S_S,
+ THREE_S_S,
+ THREE_SSS,
+ THREE___S,
+ THREE___S },
+
+ { THREE_SSS,
+ THREE_S__,
+ THREE_SSS,
+ THREE___S,
+ THREE_SSS },
+
+ { THREE__SS,
+ THREE_S__,
+ THREE_SSS,
+ THREE_S_S,
+ THREE_SSS },
+
+ { THREE_SSS,
+ THREE___S,
+ THREE__S_,
+ THREE__S_,
+ THREE__S_ },
+
+ { THREE_SSS,
+ THREE_S_S,
+ THREE_SSS,
+ THREE_S_S,
+ THREE_SSS },
+
+ { THREE_SSS,
+ THREE_S_S,
+ THREE_SSS,
+ THREE___S,
+ THREE___S },
+
+ { THREE__S_,
+ THREE_S_S,
+ THREE_SSS,
+ THREE_S_S,
+ THREE_S_S },
+
+ { THREE_SS_,
+ THREE_S_S,
+ THREE_SS_,
+ THREE_S_S,
+ THREE_SS_ },
+
+ { THREE__S_,
+ THREE_S_S,
+ THREE_S__,
+ THREE_S_S,
+ THREE__S_ },
+
+ { THREE_SS_,
+ THREE_S_S,
+ THREE_S_S,
+ THREE_S_S,
+ THREE_SS_ },
+
+ { THREE_SSS,
+ THREE_S__,
+ THREE_SS_,
+ THREE_S__,
+ THREE_SSS },
+
+ { THREE_SSS,
+ THREE_S__,
+ THREE_SS_,
+ THREE_S__,
+ THREE_S__ }
+};
+
+static uint8_t * get_codepoint(uint32_t id, bool italic)
+{
+ int shift = 0;
+ int l;
+ int r;
+
+ if (!italic)
+ shift = 1;
+
+ l = (id >> 12);
+ r = 0xf & (id >> 8);
+
+ code_point[ 0] = SEVEN_SET << shift;
+
+ code_point[ 2] = (frag[l][0] << (4 + shift)) | (frag[r][0] << shift);
+ code_point[ 3] = (frag[l][1] << (4 + shift)) | (frag[r][1] << shift);
+ code_point[ 4] = (frag[l][2] << (4 + shift)) | (frag[r][2] << shift);
+ code_point[ 5] = (frag[l][3] << (4 + shift)) | (frag[r][3] << shift);
+ code_point[ 6] = (frag[l][4] << (4 + shift)) | (frag[r][4] << shift);
+
+ shift = 1;
+
+ l = 0xf & (id >> 4);
+ r = 0xf & id;
+
+ code_point[ 8] = (frag[l][0] << (4 + shift)) | (frag[r][0] << shift);
+ code_point[ 9] = (frag[l][1] << (4 + shift)) | (frag[r][1] << shift);
+ code_point[10] = (frag[l][2] << (4 + shift)) | (frag[r][2] << shift);
+ code_point[11] = (frag[l][3] << (4 + shift)) | (frag[r][3] << shift);
+ code_point[12] = (frag[l][4] << (4 + shift)) | (frag[r][4] << shift);
+
+ code_point[14] = SEVEN_SET << shift;
+
+ return (uint8_t *)code_point;
+}
+
+
bool fb_font_init(void)
{
return true;
@@ -39,36 +193,132 @@ bool fb_font_finalise(void)
return true;
}
-const struct fb_font_desc*
-fb_get_font(const plot_font_style_t *fstyle)
+enum fb_font_style
+fb_get_font_style(const plot_font_style_t *fstyle)
+{
+ enum fb_font_style style = FB_REGULAR;
+
+ if (fstyle->weight >= 700)
+ style |= FB_BOLD;
+ if ((fstyle->flags & FONTF_ITALIC) || (fstyle->flags & FONTF_OBLIQUE))
+ style |= FB_ITALIC;
+
+ return style;
+}
+
+int
+fb_get_font_size(const plot_font_style_t *fstyle)
+{
+ int size = fstyle->size * 10 /
+ (((nsoption_int(font_min_size) * 3 +
+ nsoption_int(font_size)) / 4) * FONT_SIZE_SCALE);
+ if (size > 2)
+ size = 2;
+ else if (size <= 0)
+ size = 1;
+
+ return size;
+}
+
+/** Lookup table to scale 4 bits to 8 bits, so e.g. 0101 --> 00110011 */
+const uint8_t glyph_lut[16] = {
+ 0x00, 0x03, 0x0c, 0x0f,
+ 0x30, 0x33, 0x3c, 0x3f,
+ 0xc0, 0xc3, 0xcc, 0xcf,
+ 0xf0, 0xf3, 0xfc, 0xff
+};
+
+static const uint8_t *
+glyph_scale_2(const uint8_t *glyph_data)
+{
+ const uint8_t *glyph_max = glyph_data + GLYPH_LEN;
+ uint8_t *pos = glyph_x2;
+
+ do {
+ *pos++ = glyph_lut[*glyph_data >> 4];
+ *pos++ = glyph_lut[*glyph_data & 0xf];
+ *pos++ = glyph_lut[*glyph_data >> 4];
+ *pos++ = glyph_lut[*glyph_data & 0xf];
+ } while (++glyph_data < glyph_max);
+
+ return glyph_x2;
+}
+
+const uint8_t *
+fb_get_glyph(uint32_t ucs4, enum fb_font_style style, int scale)
{
- if (fstyle->weight >= 700) {
- if ((fstyle->flags & FONTF_ITALIC) ||
- (fstyle->flags & FONTF_OBLIQUE)) {
- return &font_italic_bold;
- } else {
- return &font_bold;
+ const uint8_t *glyph_data;
+ unsigned int section;
+ unsigned int offset;
+ uint16_t g_offset;
+
+ /* Internal font has no glyphs beyond U+FFFF and there isn't
+ * space to render a >4 digit codepoint; just show replacement
+ * character. */
+ if (ucs4 > 0xffff)
+ ucs4 = 0xfffd;
+
+ switch (style) {
+ case FB_BOLD_ITALIC:
+ section = fb_bold_italic_section_table[ucs4 / 256];
+ if (section != 0 || ucs4 / 256 == 0) {
+ offset = section * 256 + (ucs4 & 0xff);
+ g_offset = fb_bold_italic_sections[offset] * 16;
+ if (g_offset != 0) {
+ glyph_data = &font_glyph_data[g_offset];
+ break;
+ }
+ }
+ case FB_BOLD:
+ section = fb_bold_section_table[ucs4 / 256];
+ if (section != 0 || ucs4 / 256 == 0) {
+ offset = section * 256 + (ucs4 & 0xff);
+ g_offset = fb_bold_sections[offset] * 16;
+ if (g_offset != 0) {
+ glyph_data = &font_glyph_data[g_offset];
+ break;
+ }
}
- } else {
- if ((fstyle->flags & FONTF_ITALIC) ||
- (fstyle->flags & FONTF_OBLIQUE)) {
- return &font_italic;
- } else {
- return &font_regular;
+ case FB_ITALIC:
+ section = fb_italic_section_table[ucs4 / 256];
+ if (section != 0 || ucs4 / 256 == 0) {
+ offset = section * 256 + (ucs4 & 0xff);
+ g_offset = fb_italic_sections[offset] * 16;
+ if (g_offset != 0) {
+ glyph_data = &font_glyph_data[g_offset];
+ break;
+ }
}
+ case FB_REGULAR:
+ section = fb_regular_section_table[ucs4 / 256];
+ if (section != 0 || ucs4 / 256 == 0) {
+ offset = section * 256 + (ucs4 & 0xff);
+ g_offset = fb_regular_sections[offset] * 16;
+ if (g_offset != 0) {
+ glyph_data = &font_glyph_data[g_offset];
+ break;
+ }
+ }
+ default:
+ glyph_data = get_codepoint(ucs4, style & FB_ITALIC);
+ break;
}
-}
-utf8_convert_ret utf8_to_font_encoding(const struct fb_font_desc* font,
- const char *string,
- size_t len,
- char **result)
-{
- return utf8_to_enc(string, font->encoding, len, result);
+ switch (scale) {
+ case 1:
+ break;
+ case 2:
+ glyph_data = glyph_scale_2(glyph_data);
+ break;
+ default:
+ assert(scale >= 1 && scale <= 2);
+ break;
+ }
+ return glyph_data;
}
-utf8_convert_ret utf8_to_local_encoding(const char *string,
+static nserror utf8_to_local(const char *string,
size_t len,
char **result)
{
@@ -76,28 +326,41 @@ utf8_convert_ret utf8_to_local_encoding(const char *string,
}
-utf8_convert_ret utf8_from_local_encoding(const char *string,
+static nserror utf8_from_local(const char *string,
size_t len,
char **result)
{
*result = malloc(len + 1);
if (*result == NULL) {
- return UTF8_CONVERT_NOMEM;
+ return NSERROR_NOMEM;
}
memcpy(*result, string, len);
(*result)[len] = '\0';
- return UTF8_CONVERT_OK;
+ return NSERROR_OK;
}
+
static bool nsfont_width(const plot_font_style_t *fstyle,
const char *string, size_t length,
int *width)
{
- const struct fb_font_desc* fb_font = fb_get_font(fstyle);
- *width = fb_font->width * utf8_bounded_length(string, length);
+ size_t nxtchr = 0;
+
+ *width = 0;
+ while (nxtchr < length) {
+ uint32_t ucs4;
+ ucs4 = utf8_to_ucs4(string + nxtchr, length - nxtchr);
+ if (codepoint_displayable(ucs4)) {
+ *width += FB_FONT_WIDTH;
+ }
+
+ nxtchr = utf8_next(string, length, nxtchr);
+ }
+
+ *width *= fb_get_font_size(fstyle);
return true;
}
@@ -117,11 +380,26 @@ static bool nsfont_position_in_string(const plot_font_style_t *fstyle,
const char *string, size_t length,
int x, size_t *char_offset, int *actual_x)
{
- const struct fb_font_desc* fb_font = fb_get_font(fstyle);
- *char_offset = (x + fb_font->width / 2) / fb_font->width;
- if (*char_offset > length)
- *char_offset = length;
- *actual_x = *char_offset * fb_font->width;
+ const int width = fb_get_font_size(fstyle) * FB_FONT_WIDTH;
+ size_t nxtchr = 0;
+ int x_pos = 0;
+
+ while (nxtchr < length) {
+ uint32_t ucs4;
+ if (abs(x_pos - x) <= (width / 2))
+ break;
+
+ ucs4 = utf8_to_ucs4(string + nxtchr, length - nxtchr);
+ if (codepoint_displayable(ucs4)) {
+ x_pos += width;
+ }
+
+ nxtchr = utf8_next(string, length, nxtchr);
+ }
+
+ *actual_x = x_pos;
+
+ *char_offset = nxtchr;
return true;
}
@@ -154,26 +432,38 @@ static bool nsfont_split(const plot_font_style_t *fstyle,
const char *string, size_t length,
int x, size_t *char_offset, int *actual_x)
{
+ const int width = fb_get_font_size(fstyle) * FB_FONT_WIDTH;
+ size_t nxtchr = 0;
+ int last_space_x = 0;
+ int last_space_idx = 0;
- const struct fb_font_desc* fb_font = fb_get_font(fstyle);
- int c_off = *char_offset = x / fb_font->width;
- if (*char_offset > length) {
- *char_offset = length;
- } else {
- while (*char_offset > 0) {
- if (string[*char_offset] == ' ')
- break;
- (*char_offset)--;
+ *actual_x = 0;
+ while (nxtchr < length) {
+ uint32_t ucs4;
+
+ if (string[nxtchr] == ' ') {
+ last_space_x = *actual_x;
+ last_space_idx = nxtchr;
}
- if (*char_offset == 0) {
- *char_offset = c_off;
- while (*char_offset < length &&
- string[*char_offset] != ' ') {
- (*char_offset)++;
- }
+
+ ucs4 = utf8_to_ucs4(string + nxtchr, length - nxtchr);
+ if (codepoint_displayable(ucs4)) {
+ *actual_x += width;
+ }
+
+ if (*actual_x > x && last_space_idx != 0) {
+ /* string has exceeded available width and we've
+ * found a space; return previous space */
+ *actual_x = last_space_x;
+ *char_offset = last_space_idx;
+ return true;
}
+
+ nxtchr = utf8_next(string, length, nxtchr);
}
- *actual_x = *char_offset * fb_font->width;
+
+ *char_offset = nxtchr;
+
return true;
}
@@ -183,6 +473,14 @@ const struct font_functions nsfont = {
nsfont_split
};
+static struct gui_utf8_table utf8_table = {
+ .utf8_to_local = utf8_to_local,
+ .local_to_utf8 = utf8_from_local,
+};
+
+struct gui_utf8_table *framebuffer_utf8_table = &utf8_table;
+
+
/*
* Local Variables:
* c-basic-offset:8
diff --git a/framebuffer/font_internal.h b/framebuffer/font_internal.h
index 5b0f30ba1..d066f6bf4 100644
--- a/framebuffer/font_internal.h
+++ b/framebuffer/font_internal.h
@@ -19,24 +19,31 @@
#ifndef NETSURF_FB_FONT_INTERNAL_H
#define NETSURF_FB_FONT_INTERNAL_H
+#include <stdbool.h>
+
struct fb_font_desc {
const char *name;
- int width, height;
- const char *encoding;
- const uint32_t *data;
+ int width, height, pitch;
+};
+
+#define FB_FONT_WIDTH 8
+#define FB_FONT_HEIGHT 16
+#define FB_FONT_PITCH 8
+
+enum fb_font_style {
+ FB_REGULAR = 0,
+ FB_ITALIC = (1 << 0),
+ FB_BOLD = (1 << 1),
+ FB_BOLD_ITALIC = (FB_ITALIC | FB_BOLD)
};
-extern const struct fb_font_desc font_regular;
-extern const struct fb_font_desc font_italic;
-extern const struct fb_font_desc font_bold;
-extern const struct fb_font_desc font_italic_bold;
+enum fb_font_style fb_get_font_style(const plot_font_style_t *fstyle);
+int fb_get_font_size(const plot_font_style_t *fstyle);
-extern const struct fb_font_desc* fb_get_font(const plot_font_style_t *fstyle);
+const uint8_t *fb_get_glyph(uint32_t ucs4, enum fb_font_style style, int scale);
-extern utf8_convert_ret utf8_to_font_encoding(const struct fb_font_desc* font,
- const char *string,
- size_t len,
- char **result);
+#define codepoint_displayable(u) \
+ (!(u >= 0x200b && u <= 0x200f))
#endif /* NETSURF_FB_FONT_INTERNAL_H */
diff --git a/framebuffer/framebuffer.c b/framebuffer/framebuffer.c
index c2d73acb0..a0f39707c 100644
--- a/framebuffer/framebuffer.c
+++ b/framebuffer/framebuffer.c
@@ -125,42 +125,40 @@ framebuffer_plot_text(int x, int y, const char *text, size_t length,
static bool framebuffer_plot_text(int x, int y, const char *text, size_t length,
const plot_font_style_t *fstyle)
{
- const struct fb_font_desc* fb_font = fb_get_font(fstyle);
- const uint32_t *chrp;
- char *buffer = NULL;
- int chr;
- int blen;
+ enum fb_font_style style = fb_get_font_style(fstyle);
+ int size = fb_get_font_size(fstyle);
+ const uint8_t *chrp;
+ size_t nxtchr = 0;
nsfb_bbox_t loc;
+ uint32_t ucs4;
+ int p = FB_FONT_PITCH * size;
+ int w = FB_FONT_WIDTH * size;
+ int h = FB_FONT_HEIGHT * size;
- utf8_to_font_encoding(fb_font, text, length, &buffer);
- if (buffer == NULL)
- return true;
-
- /* y is given as the baseline, at 3/4 from top.
- * we need it to the top */
- y -= ((fb_font->height * 3) / 4);
+ y -= ((h * 3) / 4);
+ /* the coord is the bottom-left of the pixels offset by 1 to make
+ * it work since fb coords are the top-left of pixels */
+ y += 1;
- /* the coord is the bottom-left of the pixels offset by 1 to make
- * it work since fb coords are the top-left of pixels
- */
- y += 1;
+ while (nxtchr < length) {
+ ucs4 = utf8_to_ucs4(text + nxtchr, length - nxtchr);
+ nxtchr = utf8_next(text, length, nxtchr);
- blen = strlen(buffer);
+ if (!codepoint_displayable(ucs4))
+ continue;
- for (chr = 0; chr < blen; chr++) {
loc.x0 = x;
loc.y0 = y;
- loc.x1 = loc.x0 + fb_font->width;
- loc.y1 = loc.y0 + fb_font->height;
+ loc.x1 = loc.x0 + w;
+ loc.y1 = loc.y0 + h;
- chrp = fb_font->data + ((unsigned char)buffer[chr] * fb_font->height);
- nsfb_plot_glyph1(nsfb, &loc, (uint8_t *)chrp, 32, fstyle->foreground);
+ chrp = fb_get_glyph(ucs4, style, size);
+ nsfb_plot_glyph1(nsfb, &loc, chrp, p, fstyle->foreground);
- x += fb_font->width;
+ x += w;
}
- free(buffer);
return true;
}
#endif
@@ -347,6 +345,42 @@ const struct plotter_table fb_plotters = {
};
+static bool framebuffer_format_from_bpp(int bpp, enum nsfb_format_e *fmt)
+{
+ switch (bpp) {
+ case 32:
+ *fmt = NSFB_FMT_XRGB8888;
+ break;
+
+ case 24:
+ *fmt = NSFB_FMT_RGB888;
+ break;
+
+ case 16:
+ *fmt = NSFB_FMT_RGB565;
+ break;
+
+ case 8:
+ *fmt = NSFB_FMT_I8;
+ break;
+
+ case 4:
+ *fmt = NSFB_FMT_I4;
+ break;
+
+ case 1:
+ *fmt = NSFB_FMT_I1;
+ break;
+
+ default:
+ LOG(("Bad bits per pixel (%d)\n", bpp));
+ return false;
+ }
+
+ return true;
+}
+
+
nsfb_t *
framebuffer_initialise(const char *fename, int width, int height, int bpp)
@@ -355,34 +389,8 @@ framebuffer_initialise(const char *fename, int width, int height, int bpp)
enum nsfb_format_e fbfmt;
/* bpp is a proxy for the framebuffer format */
- switch (bpp) {
- case 32:
- fbfmt = NSFB_FMT_XRGB8888;
- break;
-
- case 24:
- fbfmt = NSFB_FMT_RGB888;
- break;
-
- case 16:
- fbfmt = NSFB_FMT_RGB565;
- break;
-
- case 8:
- fbfmt = NSFB_FMT_I8;
- break;
-
- case 4:
- fbfmt = NSFB_FMT_I4;
- break;
-
- case 1:
- fbfmt = NSFB_FMT_I1;
- break;
-
- default:
- LOG(("Bad bits per pixel (%d)\n", bpp));
- return NULL;
+ if (framebuffer_format_from_bpp(bpp, &fbfmt) == false) {
+ return NULL;
}
fbtype = nsfb_type_from_name(fename);
@@ -415,6 +423,25 @@ framebuffer_initialise(const char *fename, int width, int height, int bpp)
}
+bool
+framebuffer_resize(nsfb_t *nsfb, int width, int height, int bpp)
+{
+ enum nsfb_format_e fbfmt;
+
+ /* bpp is a proxy for the framebuffer format */
+ if (framebuffer_format_from_bpp(bpp, &fbfmt) == false) {
+ return false;
+ }
+
+ if (nsfb_set_geometry(nsfb, width, height, fbfmt) == -1) {
+ LOG(("Unable to change surface geometry\n"));
+ return false;
+ }
+
+ return true;
+
+}
+
void
framebuffer_finalise(void)
{
diff --git a/framebuffer/framebuffer.h b/framebuffer/framebuffer.h
index 0e46cb1f5..5204dbd92 100644
--- a/framebuffer/framebuffer.h
+++ b/framebuffer/framebuffer.h
@@ -3,6 +3,7 @@
extern const struct plotter_table fb_plotters;
nsfb_t *framebuffer_initialise(const char *fename, int width, int height, int bpp);
+bool framebuffer_resize(nsfb_t *nsfb, int width, int height, int bpp);
void framebuffer_finalise(void);
bool framebuffer_set_cursor(struct fbtk_bitmap *bm);
diff --git a/framebuffer/gui.c b/framebuffer/gui.c
index b4bb3ef43..4069df2c2 100644
--- a/framebuffer/gui.c
+++ b/framebuffer/gui.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 Vincent Sanders <vince@simtec.co.uk>
+ * Copyright 2008, 2014 Vincent Sanders <vince@netsurf-browser.org>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -31,19 +31,17 @@
#include <libnsfb_plot.h>
#include <libnsfb_event.h>
-#include "desktop/browser_private.h"
+#include "desktop/browser_history.h"
#include "desktop/gui.h"
#include "desktop/mouse.h"
#include "desktop/plotters.h"
#include "desktop/netsurf.h"
+#include "utils/utils.h"
#include "utils/nsoption.h"
#include "utils/filepath.h"
#include "utils/log.h"
#include "utils/messages.h"
-#include "utils/schedule.h"
#include "utils/types.h"
-#include "utils/url.h"
-#include "utils/utils.h"
#include "desktop/textinput.h"
#include "render/form.h"
@@ -54,9 +52,10 @@
#include "framebuffer/findfile.h"
#include "framebuffer/image_data.h"
#include "framebuffer/font.h"
+#include "framebuffer/clipboard.h"
+#include "framebuffer/fetch.h"
#include "content/urldb.h"
-#include "desktop/local_history.h"
#include "content/fetch.h"
#define NSFB_TOOLBAR_DEFAULT_LAYOUT "blfsrutc"
@@ -122,9 +121,8 @@ static void
widget_scroll_y(struct gui_window *gw, int y, bool abs)
{
struct browser_widget_s *bwidget = fbtk_get_userpw(gw->browser);
- int content_height;
+ int content_width, content_height;
int height;
- float scale = gw->bw->scale;
LOG(("window scroll"));
if (abs) {
@@ -133,7 +131,8 @@ widget_scroll_y(struct gui_window *gw, int y, bool abs)
bwidget->pany += y;
}
- content_height = content_get_height(gw->bw->current_content) * scale;
+ browser_window_get_extents(gw->bw, true,
+ &content_width, &content_height);
height = fbtk_get_height(gw->browser);
@@ -160,9 +159,8 @@ static void
widget_scroll_x(struct gui_window *gw, int x, bool abs)
{
struct browser_widget_s *bwidget = fbtk_get_userpw(gw->browser);
- int content_width;
+ int content_width, content_height;
int width;
- float scale = gw->bw->scale;
if (abs) {
bwidget->panx = x - bwidget->scrollx;
@@ -170,7 +168,8 @@ widget_scroll_x(struct gui_window *gw, int x, bool abs)
bwidget->panx += x;
}
- content_width = content_get_width(gw->bw->current_content) * scale;
+ browser_window_get_extents(gw->bw, true,
+ &content_width, &content_height);
width = fbtk_get_width(gw->browser);
@@ -329,6 +328,7 @@ fb_redraw(fbtk_widget_t *widget,
.plot = &fb_plotters
};
nsfb_t *nsfb = fbtk_get_nsfb(widget);
+ float scale = browser_window_get_scale(bw);
LOG(("%d,%d to %d,%d",
bwidget->redraw_box.x0,
@@ -354,8 +354,8 @@ fb_redraw(fbtk_widget_t *widget,
clip.y1 = bwidget->redraw_box.y1;
browser_window_redraw(bw,
- (x - bwidget->scrollx) / bw->scale,
- (y - bwidget->scrolly) / bw->scale,
+ (x - bwidget->scrollx) / scale,
+ (y - bwidget->scrolly) / scale,
&clip, &ctx);
if (fbtk_get_caret(widget, &caret_x, &caret_y, &caret_h)) {
@@ -555,104 +555,9 @@ static bool nslog_stream_configure(FILE *fptr)
return true;
}
-/** Entry point from OS.
- *
- * /param argc The number of arguments in the string vector.
- * /param argv The argument string vector.
- * /return The return code to the OS
- */
-int
-main(int argc, char** argv)
-{
- struct browser_window *bw;
- char *options;
- char *messages;
- nsurl *url;
- nserror ret;
- nsfb_t *nsfb;
-
- respaths = fb_init_resource(NETSURF_FB_RESPATH":"NETSURF_FB_FONTPATH);
-
- /* initialise logging. Not fatal if it fails but not much we
- * can do about it either.
- */
- nslog_init(nslog_stream_configure, &argc, argv);
-
- /* user options setup */
- ret = nsoption_init(set_defaults, &nsoptions, &nsoptions_default);
- if (ret != NSERROR_OK) {
- die("Options failed to initialise");
- }
- options = filepath_find(respaths, "Choices");
- nsoption_read(options, nsoptions);
- free(options);
- nsoption_commandline(&argc, argv, nsoptions);
-
- /* common initialisation */
- messages = filepath_find(respaths, "Messages");
- ret = netsurf_init(messages);
- free(messages);
- if (ret != NSERROR_OK) {
- die("NetSurf failed to initialise");
- }
-
- /* Override, since we have no support for non-core SELECT menu */
- nsoption_set_bool(core_select_menu, true);
-
- if (process_cmdline(argc,argv) != true)
- die("unable to process command line.\n");
-
- nsfb = framebuffer_initialise(fename, fewidth, feheight, febpp);
- if (nsfb == NULL)
- die("Unable to initialise framebuffer");
-
- framebuffer_set_cursor(&pointer_image);
-
- if (fb_font_init() == false)
- die("Unable to initialise the font system");
-
- fbtk = fbtk_init(nsfb);
-
- fbtk_enable_oskb(fbtk);
-
- urldb_load_cookies(nsoption_charp(cookie_file));
-
- /* create an initial browser window */
-
- LOG(("calling browser_window_create"));
-
- ret = nsurl_create(feurl, &url);
- if (ret == NSERROR_OK) {
- ret = browser_window_create(BROWSER_WINDOW_VERIFIABLE |
- BROWSER_WINDOW_HISTORY,
- url,
- NULL,
- NULL,
- &bw);
- nsurl_unref(url);
- }
- if (ret != NSERROR_OK) {
- warn_user(messages_get_errorcode(ret), 0);
- } else {
- netsurf_main_loop();
-
- browser_window_destroy(bw);
- }
-
- netsurf_exit();
-
- if (fb_font_finalise() == false)
- LOG(("Font finalisation failed."));
- /* finalise options */
- nsoption_finalise(nsoptions, nsoptions_default);
-
- return 0;
-}
-
-void
-gui_poll(bool active)
+static void framebuffer_poll(bool active)
{
nsfb_event_t event;
int timeout; /* timeout in miliseconds */
@@ -660,10 +565,6 @@ gui_poll(bool active)
/* run the scheduler and discover how long to wait for the next event */
timeout = schedule_run();
- /* if active do not wait for event, return immediately */
- if (active)
- timeout = 0;
-
/* if redraws are pending do not wait for event, return immediately */
if (fbtk_get_redraw_pending(fbtk))
timeout = 0;
@@ -678,8 +579,7 @@ gui_poll(bool active)
}
-void
-gui_quit(void)
+static void gui_quit(void)
{
LOG(("gui_quit"));
@@ -695,7 +595,7 @@ fb_browser_window_click(fbtk_widget_t *widget, fbtk_callback_info *cbi)
struct gui_window *gw = cbi->context;
struct browser_widget_s *bwidget = fbtk_get_userpw(widget);
browser_mouse_state mouse;
- float scale = gw->bw->scale;
+ float scale = browser_window_get_scale(gw->bw);
int x = (cbi->x + bwidget->scrollx) / scale;
int y = (cbi->y + bwidget->scrolly) / scale;
unsigned int time_now;
@@ -847,8 +747,9 @@ fb_browser_window_move(fbtk_widget_t *widget, fbtk_callback_info *cbi)
browser_mouse_state mouse = 0;
struct gui_window *gw = cbi->context;
struct browser_widget_s *bwidget = fbtk_get_userpw(widget);
- int x = (cbi->x + bwidget->scrollx) / gw->bw->scale;
- int y = (cbi->y + bwidget->scrolly) / gw->bw->scale;
+ float scale = browser_window_get_scale(gw->bw);
+ int x = (cbi->x + bwidget->scrollx) / scale;
+ int y = (cbi->y + bwidget->scrolly) / scale;
if (gui_drag.state == GUI_DRAG_PRESSED &&
(abs(x - gui_drag.x) > 5 ||
@@ -1080,8 +981,8 @@ fb_leftarrow_click(fbtk_widget_t *widget, fbtk_callback_info *cbi)
if (cbi->event->type != NSFB_EVENT_KEY_UP)
return 0;
- if (history_back_available(bw->history))
- history_back(bw, bw->history);
+ if (browser_window_back_available(bw))
+ browser_window_history_back(bw, false);
fb_update_back_forward(gw);
@@ -1098,8 +999,8 @@ fb_rightarrow_click(fbtk_widget_t *widget, fbtk_callback_info *cbi)
if (cbi->event->type != NSFB_EVENT_KEY_UP)
return 0;
- if (history_forward_available(bw->history))
- history_forward(bw, bw->history);
+ if (browser_window_forward_available(bw))
+ browser_window_history_forward(bw, false);
fb_update_back_forward(gw);
return 1;
@@ -1186,14 +1087,8 @@ fb_url_enter(void *pw, char *text)
if (error != NSERROR_OK) {
warn_user(messages_get_errorcode(error), 0);
} else {
- browser_window_navigate(bw,
- url,
- NULL,
- BROWSER_WINDOW_HISTORY |
- BROWSER_WINDOW_VERIFIABLE,
- NULL,
- NULL,
- NULL);
+ browser_window_navigate(bw, url, NULL, BW_NAVIGATE_HISTORY,
+ NULL, NULL, NULL);
nsurl_unref(url);
}
@@ -1334,6 +1229,7 @@ create_toolbar(struct gui_window *gw,
&history_image,
fb_localhistory_btn_clik,
gw);
+ gw->history = widget;
break;
case 'f': /* forward */
@@ -1361,6 +1257,7 @@ create_toolbar(struct gui_window *gw,
&stop_image_g,
fb_close_click,
gw->bw);
+ gw->close = widget;
break;
case 's': /* stop */
@@ -1374,6 +1271,7 @@ create_toolbar(struct gui_window *gw,
&stop_image,
fb_stop_click,
gw->bw);
+ gw->stop = widget;
break;
case 'r': /* reload */
@@ -1387,6 +1285,7 @@ create_toolbar(struct gui_window *gw,
&reload,
fb_reload_click,
gw->bw);
+ gw->reload = widget;
break;
case 't': /* throbber/activity indicator */
@@ -1461,6 +1360,155 @@ create_toolbar(struct gui_window *gw,
return toolbar;
}
+
+/** Resize a toolbar.
+ *
+ * @param gw Parent window
+ * @param toolbar_height The height in pixels of the toolbar
+ * @param padding The padding in pixels round each element of the toolbar
+ * @param toolbar_layout A string defining which buttons and controls
+ * should be added to the toolbar. May be empty
+ * string to disable the bar.
+ */
+static void
+resize_toolbar(struct gui_window *gw,
+ int toolbar_height,
+ int padding,
+ const char *toolbar_layout)
+{
+ fbtk_widget_t *widget;
+
+ int xpos; /* The position of the next widget. */
+ int xlhs = 0; /* extent of the left hand side widgets */
+ int xdir = 1; /* the direction of movement + or - 1 */
+ const char *itmtype; /* type of the next item */
+ int x = 0, y = 0, w = 0, h = 0;
+
+ if (gw->toolbar == NULL) {
+ return;
+ }
+
+ if (toolbar_layout == NULL) {
+ toolbar_layout = NSFB_TOOLBAR_DEFAULT_LAYOUT;
+ }
+
+ itmtype = toolbar_layout;
+
+ if (*itmtype == 0) {
+ return;
+ }
+
+ fbtk_set_pos_and_size(gw->toolbar, 0, 0, 0, toolbar_height);
+
+ xpos = padding;
+
+ /* loop proceeds creating widget on the left hand side until
+ * it runs out of layout or encounters a url bar declaration
+ * wherupon it works backwards from the end of the layout
+ * untill the space left is for the url bar
+ */
+ while (itmtype >= toolbar_layout && xdir != 0) {
+
+ switch (*itmtype) {
+ case 'b': /* back */
+ widget = gw->back;
+ x = (xdir == 1) ? xpos : xpos - left_arrow.width;
+ y = padding;
+ w = left_arrow.width;
+ h = -padding;
+ break;
+
+ case 'l': /* local history */
+ widget = gw->history;
+ x = (xdir == 1) ? xpos : xpos - history_image.width;
+ y = padding;
+ w = history_image.width;
+ h = -padding;
+ break;
+
+ case 'f': /* forward */
+ widget = gw->forward;
+ x = (xdir == 1) ? xpos : xpos - right_arrow.width;
+ y = padding;
+ w = right_arrow.width;
+ h = -padding;
+ break;
+
+ case 'c': /* close the current window */
+ widget = gw->close;
+ x = (xdir == 1) ? xpos : xpos - stop_image_g.width;
+ y = padding;
+ w = stop_image_g.width;
+ h = -padding;
+ break;
+
+ case 's': /* stop */
+ widget = gw->stop;
+ x = (xdir == 1) ? xpos : xpos - stop_image.width;
+ y = padding;
+ w = stop_image.width;
+ h = -padding;
+ break;
+
+ case 'r': /* reload */
+ widget = gw->reload;
+ x = (xdir == 1) ? xpos : xpos - reload.width;
+ y = padding;
+ w = reload.width;
+ h = -padding;
+ break;
+
+ case 't': /* throbber/activity indicator */
+ widget = gw->throbber;
+ x = (xdir == 1) ? xpos : xpos - throbber0.width;
+ y = padding;
+ w = throbber0.width;
+ h = -padding;
+ break;
+
+
+ case 'u': /* url bar*/
+ if (xdir == -1) {
+ /* met the u going backwards add url
+ * now we know available extent
+ */
+ widget = gw->url;
+ x = xlhs;
+ y = padding;
+ w = xpos - xlhs;
+ h = -padding;
+
+ /* toolbar is complete */
+ xdir = 0;
+ break;
+ }
+ /* met url going forwards, note position and
+ * reverse direction
+ */
+ itmtype = toolbar_layout + strlen(toolbar_layout);
+ xdir = -1;
+ xlhs = xpos;
+ w = fbtk_get_width(gw->toolbar);
+ xpos = 2 * w;
+ widget = gw->toolbar;
+ break;
+
+ default:
+ widget = NULL;
+ break;
+
+ }
+
+ if (widget != NULL) {
+ if (widget != gw->toolbar)
+ fbtk_set_pos_and_size(widget, x, y, w, h);
+ xpos += xdir * (w + padding);
+ }
+
+ itmtype += xdir;
+ }
+}
+
/** Routine called when "stripped of focus" event occours for browser widget.
*
* @param widget The widget reciving "stripped of focus" event.
@@ -1497,6 +1545,14 @@ create_browser_widget(struct gui_window *gw, int toolbar_height, int furniture_w
}
static void
+resize_browser_widget(struct gui_window *gw, int x, int y,
+ int width, int height)
+{
+ fbtk_set_pos_and_size(gw->browser, x, y, width, height);
+ browser_window_reformat(gw->bw, false, width, height);
+}
+
+static void
create_normal_browser_window(struct gui_window *gw, int furniture_width)
{
fbtk_widget_t *widget;
@@ -1517,6 +1573,7 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width)
2,
FB_FRAME_COLOUR,
nsoption_charp(fb_toolbar_layout));
+ gw->toolbar = toolbar;
/* set the actually created toolbar height */
if (toolbar != NULL) {
@@ -1578,6 +1635,8 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width)
fbtk_set_handler(widget, FBTK_CBT_POINTERENTER, set_ptr_default_move, NULL);
}
+ gw->bottom_right = widget;
+
/* create vertical scrollbar */
gw->vscroll = fbtk_create_vscroll(gw->window,
fbtk_get_width(gw->window) - furniture_width,
@@ -1596,11 +1655,86 @@ create_normal_browser_window(struct gui_window *gw, int furniture_width)
fbtk_set_focus(gw->browser);
}
+static void
+resize_normal_browser_window(struct gui_window *gw, int furniture_width)
+{
+ bool resized;
+ int width, height;
+ int statusbar_width;
+ int toolbar_height = fbtk_get_height(gw->toolbar);
+
+ /* Resize the main window widget */
+ resized = fbtk_set_pos_and_size(gw->window, 0, 0, 0, 0);
+ if (!resized)
+ return;
+
+ width = fbtk_get_width(gw->window);
+ height = fbtk_get_height(gw->window);
+ statusbar_width = nsoption_int(toolbar_status_size) * width / 10000;
+
+ resize_toolbar(gw, toolbar_height, 2,
+ nsoption_charp(fb_toolbar_layout));
+ fbtk_set_pos_and_size(gw->status,
+ 0, height - furniture_width,
+ statusbar_width, furniture_width);
+ fbtk_reposition_hscroll(gw->hscroll,
+ statusbar_width, height - furniture_width,
+ width - statusbar_width - furniture_width,
+ furniture_width);
+ fbtk_set_pos_and_size(gw->bottom_right,
+ width - furniture_width, height - furniture_width,
+ furniture_width, furniture_width);
+ fbtk_reposition_vscroll(gw->vscroll,
+ width - furniture_width,
+ toolbar_height, furniture_width,
+ height - toolbar_height - furniture_width);
+ resize_browser_widget(gw,
+ 0, toolbar_height,
+ width - furniture_width,
+ height - furniture_width - toolbar_height);
+}
+
+static void gui_window_add_to_window_list(struct gui_window *gw)
+{
+ gw->next = NULL;
+ gw->prev = NULL;
+
+ if (window_list == NULL) {
+ window_list = gw;
+ } else {
+ window_list->prev = gw;
+ gw->next = window_list;
+ window_list = gw;
+ }
+}
+
+static void gui_window_remove_from_window_list(struct gui_window *gw)
+{
+ struct gui_window *list;
+
+ for (list = window_list; list != NULL; list = list->next) {
+ if (list != gw)
+ continue;
+
+ if (list == window_list) {
+ window_list = list->next;
+ if (window_list != NULL)
+ window_list->prev = NULL;
+ } else {
+ list->prev->next = list->next;
+ if (list->next != NULL) {
+ list->next->prev = list->prev;
+ }
+ }
+ break;
+ }
+}
+
-struct gui_window *
-gui_create_browser_window(struct browser_window *bw,
- struct browser_window *clone,
- bool new_tab)
+static struct gui_window *
+gui_window_create(struct browser_window *bw,
+ struct gui_window *existing,
+ gui_window_create_flags flags)
{
struct gui_window *gw;
@@ -1609,8 +1743,7 @@ gui_create_browser_window(struct browser_window *bw,
if (gw == NULL)
return NULL;
- /* seems we need to associate the gui window with the underlying
- * browser window
+ /* associate the gui window with the underlying browser window
*/
gw->bw = bw;
@@ -1620,30 +1753,29 @@ gui_create_browser_window(struct browser_window *bw,
/* map and request redraw of gui window */
fbtk_set_mapping(gw->window, true);
+ /* Add it to the window list */
+ gui_window_add_to_window_list(gw);
+
return gw;
}
-void
+static void
gui_window_destroy(struct gui_window *gw)
{
+ gui_window_remove_from_window_list(gw);
+
fbtk_destroy_widget(gw->window);
free(gw);
}
-void
-gui_window_set_title(struct gui_window *g, const char *title)
-{
- LOG(("%p, %s", g, title));
-}
-
-void
+static void
gui_window_redraw_window(struct gui_window *g)
{
fb_queue_redraw(g->browser, 0, 0, fbtk_get_width(g->browser), fbtk_get_height(g->browser) );
}
-void
+static void
gui_window_update_box(struct gui_window *g, const struct rect *rect)
{
struct browser_widget_s *bwidget = fbtk_get_userpw(g->browser);
@@ -1654,71 +1786,68 @@ gui_window_update_box(struct gui_window *g, const struct rect *rect)
rect->y1 - bwidget->scrolly);
}
-bool
+static bool
gui_window_get_scroll(struct gui_window *g, int *sx, int *sy)
{
struct browser_widget_s *bwidget = fbtk_get_userpw(g->browser);
+ float scale = browser_window_get_scale(g->bw);
- *sx = bwidget->scrollx / g->bw->scale;
- *sy = bwidget->scrolly / g->bw->scale;
+ *sx = bwidget->scrollx / scale;
+ *sy = bwidget->scrolly / scale;
return true;
}
-void
+static void
gui_window_set_scroll(struct gui_window *gw, int sx, int sy)
{
struct browser_widget_s *bwidget = fbtk_get_userpw(gw->browser);
+ float scale = browser_window_get_scale(gw->bw);
assert(bwidget);
- widget_scroll_x(gw, sx * gw->bw->scale, true);
- widget_scroll_y(gw, sy * gw->bw->scale, true);
+ widget_scroll_x(gw, sx * scale, true);
+ widget_scroll_y(gw, sy * scale, true);
}
-void
-gui_window_scroll_visible(struct gui_window *g, int x0, int y0,
- int x1, int y1)
-{
- LOG(("%s:(%p, %d, %d, %d, %d)", __func__, g, x0, y0, x1, y1));
-}
-void
+static void
gui_window_get_dimensions(struct gui_window *g,
int *width,
int *height,
bool scaled)
{
+ float scale = browser_window_get_scale(g->bw);
+
*width = fbtk_get_width(g->browser);
*height = fbtk_get_height(g->browser);
if (scaled) {
- *width /= g->bw->scale;
- *height /= g->bw->scale;
+ *width /= scale;
+ *height /= scale;
}
}
-void
+static void
gui_window_update_extent(struct gui_window *gw)
{
- float scale = gw->bw->scale;
+ int w, h;
+ browser_window_get_extents(gw->bw, true, &w, &h);
- fbtk_set_scroll_parameters(gw->hscroll, 0,
- content_get_width(gw->bw->current_content) * scale,
+ fbtk_set_scroll_parameters(gw->hscroll, 0, w,
fbtk_get_width(gw->browser), 100);
- fbtk_set_scroll_parameters(gw->vscroll, 0,
- content_get_height(gw->bw->current_content) * scale,
+ fbtk_set_scroll_parameters(gw->vscroll, 0, h,
fbtk_get_height(gw->browser), 100);
}
-void
+static void
gui_window_set_status(struct gui_window *g, const char *text)
{
fbtk_set_text(g->status, text);
}
-void
+static void
gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape)
{
switch (shape) {
@@ -1748,12 +1877,7 @@ gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape)
}
}
-void
-gui_window_hide_pointer(struct gui_window *g)
-{
-}
-
-void
+static void
gui_window_set_url(struct gui_window *g, const char *url)
{
fbtk_set_text(g->url, url);
@@ -1812,18 +1936,18 @@ throbber_advance(void *pw)
if (g->throbber_index >= 0) {
fbtk_set_bitmap(g->throbber, image);
- schedule(10, throbber_advance, g);
+ framebuffer_schedule(100, throbber_advance, g);
}
}
-void
+static void
gui_window_start_throbber(struct gui_window *g)
{
g->throbber_index = 0;
- schedule(10, throbber_advance, g);
+ framebuffer_schedule(100, throbber_advance, g);
}
-void
+static void
gui_window_stop_throbber(struct gui_window *gw)
{
gw->throbber_index = -1;
@@ -1850,7 +1974,7 @@ gui_window_remove_caret_cb(fbtk_widget_t *widget)
}
}
-void
+static void
gui_window_place_caret(struct gui_window *g, int x, int y, int height,
const struct rect *clip)
{
@@ -1868,7 +1992,7 @@ gui_window_place_caret(struct gui_window *g, int x, int y, int height,
y + height - bwidget->scrolly);
}
-void
+static void
gui_window_remove_caret(struct gui_window *g)
{
int c_x, c_y, c_h;
@@ -1879,115 +2003,179 @@ gui_window_remove_caret(struct gui_window *g)
}
}
-void
-gui_window_new_content(struct gui_window *g)
+static void framebuffer_window_reformat(struct gui_window *gw)
{
-}
+ /** @todo if we ever do zooming reformat should be implemented */
+ LOG(("window:%p", gw));
-bool
-gui_window_scroll_start(struct gui_window *g)
-{
- return true;
+ /*
+ browser_window_reformat(gw->bw, false, width, height);
+ */
}
-bool
-gui_window_drag_start(struct gui_window *g, gui_drag_type type,
- const struct rect *rect)
-{
- return true;
-}
+static struct gui_window_table framebuffer_window_table = {
+ .create = gui_window_create,
+ .destroy = gui_window_destroy,
+ .redraw = gui_window_redraw_window,
+ .update = gui_window_update_box,
+ .get_scroll = gui_window_get_scroll,
+ .set_scroll = gui_window_set_scroll,
+ .get_dimensions = gui_window_get_dimensions,
+ .update_extent = gui_window_update_extent,
+ .reformat = framebuffer_window_reformat,
-void
-gui_window_save_link(struct gui_window *g, const char *url, const char *title)
-{
-}
+ .set_url = gui_window_set_url,
+ .set_status = gui_window_set_status,
+ .set_pointer = gui_window_set_pointer,
+ .place_caret = gui_window_place_caret,
+ .remove_caret = gui_window_remove_caret,
+ .start_throbber = gui_window_start_throbber,
+ .stop_throbber = gui_window_stop_throbber,
+};
-/**
- * set favicon
- */
-void
-gui_window_set_icon(struct gui_window *g, hlcache_handle *icon)
-{
-}
-/**
- * set gui display of a retrieved favicon representing the search provider
- * \param ico may be NULL for local calls; then access current cache from
- * search_web_ico()
+static struct gui_browser_table framebuffer_browser_table = {
+ .poll = framebuffer_poll,
+ .schedule = framebuffer_schedule,
+
+ .quit = gui_quit,
+};
+
+/** Entry point from OS.
+ *
+ * /param argc The number of arguments in the string vector.
+ * /param argv The argument string vector.
+ * /return The return code to the OS
*/
-void
-gui_window_set_search_ico(hlcache_handle *ico)
+int
+main(int argc, char** argv)
{
-}
+ struct browser_window *bw;
+ char *options;
+ char *messages;
+ nsurl *url;
+ nserror ret;
+ nsfb_t *nsfb;
+ struct netsurf_table framebuffer_table = {
+ .browser = &framebuffer_browser_table,
+ .window = &framebuffer_window_table,
+ .clipboard = framebuffer_clipboard_table,
+ .fetch = framebuffer_fetch_table,
+ .utf8 = framebuffer_utf8_table,
+ };
-struct gui_download_window *
-gui_download_window_create(download_context *ctx, struct gui_window *parent)
-{
- return NULL;
-}
+ ret = netsurf_register(&framebuffer_table);
+ if (ret != NSERROR_OK) {
+ die("NetSurf operation table failed registration");
+ }
-nserror
-gui_download_window_data(struct gui_download_window *dw,
- const char *data,
- unsigned int size)
-{
- return NSERROR_OK;
-}
+ respaths = fb_init_resource(NETSURF_FB_RESPATH":"NETSURF_FB_FONTPATH);
-void
-gui_download_window_error(struct gui_download_window *dw,
- const char *error_msg)
-{
-}
+ /* initialise logging. Not fatal if it fails but not much we
+ * can do about it either.
+ */
+ nslog_init(nslog_stream_configure, &argc, argv);
-void
-gui_download_window_done(struct gui_download_window *dw)
-{
-}
+ /* user options setup */
+ ret = nsoption_init(set_defaults, &nsoptions, &nsoptions_default);
+ if (ret != NSERROR_OK) {
+ die("Options failed to initialise");
+ }
+ options = filepath_find(respaths, "Choices");
+ nsoption_read(options, nsoptions);
+ free(options);
+ nsoption_commandline(&argc, argv, nsoptions);
-void
-gui_drag_save_object(gui_save_type type,
- hlcache_handle *c,
- struct gui_window *w)
-{
-}
+ /* common initialisation */
+ messages = filepath_find(respaths, "Messages");
+ ret = netsurf_init(messages, NULL);
+ free(messages);
+ if (ret != NSERROR_OK) {
+ die("NetSurf failed to initialise");
+ }
-void
-gui_drag_save_selection(struct gui_window *g, const char *selection)
-{
-}
+ /* Override, since we have no support for non-core SELECT menu */
+ nsoption_set_bool(core_select_menu, true);
-void
-gui_start_selection(struct gui_window *g)
-{
-}
+ if (process_cmdline(argc,argv) != true)
+ die("unable to process command line.\n");
-void
-gui_clear_selection(struct gui_window *g)
-{
-}
+ nsfb = framebuffer_initialise(fename, fewidth, feheight, febpp);
+ if (nsfb == NULL)
+ die("Unable to initialise framebuffer");
-void
-gui_create_form_select_menu(struct browser_window *bw,
- struct form_control *control)
-{
-}
+ framebuffer_set_cursor(&pointer_image);
-void
-gui_launch_url(const char *url)
-{
+ if (fb_font_init() == false)
+ die("Unable to initialise the font system");
+
+ fbtk = fbtk_init(nsfb);
+
+ fbtk_enable_oskb(fbtk);
+
+ urldb_load_cookies(nsoption_charp(cookie_file));
+
+ /* create an initial browser window */
+
+ LOG(("calling browser_window_create"));
+
+ ret = nsurl_create(feurl, &url);
+ if (ret == NSERROR_OK) {
+ ret = browser_window_create(BW_CREATE_HISTORY,
+ url,
+ NULL,
+ NULL,
+ &bw);
+ nsurl_unref(url);
+ }
+ if (ret != NSERROR_OK) {
+ warn_user(messages_get_errorcode(ret), 0);
+ } else {
+ netsurf_main_loop();
+
+ browser_window_destroy(bw);
+ }
+
+ netsurf_exit();
+
+ if (fb_font_finalise() == false)
+ LOG(("Font finalisation failed."));
+
+ /* finalise options */
+ nsoption_finalise(nsoptions, nsoptions_default);
+
+ return 0;
}
-void
-gui_cert_verify(nsurl *url,
- const struct ssl_cert_info *certs,
- unsigned long num,
- nserror (*cb)(bool proceed, void *pw),
- void *cbpw)
+void gui_resize(fbtk_widget_t *root, int width, int height)
{
- cb(false, cbpw);
+ struct gui_window *gw;
+ nsfb_t *nsfb = fbtk_get_nsfb(root);
+
+ /* Enforce a minimum */
+ if (width < 300)
+ width = 300;
+ if (height < 200)
+ height = 200;
+
+ if (framebuffer_resize(nsfb, width, height, febpp) == false) {
+ return;
+ }
+
+ fbtk_set_pos_and_size(root, 0, 0, width, height);
+
+ fewidth = width;
+ feheight = height;
+
+ for (gw = window_list; gw != NULL; gw = gw->next) {
+ resize_normal_browser_window(gw,
+ nsoption_int(fb_furniture_size));
+ }
+
+ fbtk_request_redraw(root);
}
+
/*
* Local Variables:
* c-basic-offset:8
diff --git a/framebuffer/gui.h b/framebuffer/gui.h
index c1fa3cc1d..e102b2551 100644
--- a/framebuffer/gui.h
+++ b/framebuffer/gui.h
@@ -20,6 +20,7 @@
#define NETSURF_FB_GUI_H
typedef struct fb_cursor_s fb_cursor_t;
+typedef struct fbtk_widget_s fbtk_widget_t;
/* bounding box */
typedef struct nsfb_bbox_s bbox_t;
@@ -41,16 +42,25 @@ struct gui_window {
struct fbtk_widget_s *window;
struct fbtk_widget_s *back;
struct fbtk_widget_s *forward;
+ struct fbtk_widget_s *history;
+ struct fbtk_widget_s *stop;
+ struct fbtk_widget_s *reload;
+ struct fbtk_widget_s *close;
struct fbtk_widget_s *url;
struct fbtk_widget_s *status;
struct fbtk_widget_s *throbber;
struct fbtk_widget_s *hscroll;
struct fbtk_widget_s *vscroll;
struct fbtk_widget_s *browser;
+ struct fbtk_widget_s *toolbar;
+ struct fbtk_widget_s *bottom_right;
int throbber_index;
struct gui_localhistory *localhistory;
+
+ struct gui_window *next;
+ struct gui_window *prev;
};
@@ -59,6 +69,8 @@ extern struct gui_window *window_list;
struct gui_localhistory *fb_create_localhistory(struct browser_window *bw, struct fbtk_widget_s *parent, int furniture_width);
void fb_localhistory_map(struct gui_localhistory * glh);
+void gui_resize(fbtk_widget_t *root, int width, int height);
+
#endif /* NETSURF_FB_GUI_H */
diff --git a/framebuffer/localhistory.c b/framebuffer/localhistory.c
index d4820980f..caacae7e5 100644
--- a/framebuffer/localhistory.c
+++ b/framebuffer/localhistory.c
@@ -16,44 +16,21 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <limits.h>
-#include <unistd.h>
-#include <assert.h>
-#include <string.h>
#include <stdbool.h>
#include <stdlib.h>
+#include <limits.h>
#include <libnsfb.h>
#include <libnsfb_plot.h>
#include <libnsfb_event.h>
-#include "desktop/browser_private.h"
-#include "desktop/gui.h"
+#include "utils/types.h"
+#include "desktop/browser_history.h"
#include "desktop/plotters.h"
-#include "desktop/netsurf.h"
-#include "utils/nsoption.h"
-#include "utils/log.h"
-#include "utils/url.h"
-#include "utils/messages.h"
-#include "utils/utils.h"
-#include "desktop/textinput.h"
-#include "render/form.h"
#include "framebuffer/gui.h"
#include "framebuffer/fbtk.h"
#include "framebuffer/framebuffer.h"
-#include "framebuffer/schedule.h"
-#include "framebuffer/findfile.h"
-#include "framebuffer/image_data.h"
-#include "framebuffer/font.h"
-
-#include "content/urldb.h"
-#include "desktop/local_history.h"
-#include "content/fetch.h"
static int
localhistory_redraw(fbtk_widget_t *widget, fbtk_callback_info *cbi)
@@ -77,7 +54,7 @@ localhistory_redraw(fbtk_widget_t *widget, fbtk_callback_info *cbi)
nsfb_plot_rectangle_fill(fbtk_get_nsfb(widget), &rbox, 0xffffffff);
- history_redraw_rectangle(glh->bw->history,
+ browser_window_history_redraw_rectangle(glh->bw,
glh->scrollx,
glh->scrolly,
fbtk_get_width(widget) + glh->scrollx,
@@ -97,7 +74,7 @@ localhistory_click(fbtk_widget_t *widget, fbtk_callback_info *cbi)
if (cbi->event->type != NSFB_EVENT_KEY_UP)
return 0;
- history_click(glh->bw, glh->bw->history, cbi->x, cbi->y, false);
+ browser_window_history_click(glh->bw, cbi->x, cbi->y, false);
fbtk_set_mapping(glh->window, false);
diff --git a/framebuffer/misc.c b/framebuffer/misc.c
index 2dd03677d..0a45b2842 100644
--- a/framebuffer/misc.c
+++ b/framebuffer/misc.c
@@ -24,7 +24,6 @@
#include "utils/log.h"
#include "utils/messages.h"
#include "utils/utils.h"
-#include "utils/url.h"
void warn_user(const char *warning, const char *detail)
{
@@ -37,40 +36,3 @@ void die(const char *error)
exit(1);
}
-/**
- * Return the filename part of a full path
- *
- * \param path full path and filename
- * \return filename (will be freed with free())
- */
-char *filename_from_path(char *path)
-{
- char *leafname;
-
- leafname = strrchr(path, '/');
- if (!leafname)
- leafname = path;
- else
- leafname += 1;
-
- return strdup(leafname);
-}
-
-/**
- * Add a path component/filename to an existing path
- *
- * \param path buffer containing path + free space
- * \param length length of buffer "path"
- * \param newpart string containing path component to add to path
- * \return true on success
- */
-
-bool path_add_part(char *path, int length, const char *newpart)
-{
- if(path[strlen(path) - 1] != '/')
- strncat(path, "/", length);
-
- strncat(path, newpart, length);
-
- return true;
-}
diff --git a/framebuffer/nsfont_bold.c b/framebuffer/nsfont_bold.c
deleted file mode 100644
index 6ea4d71cd..000000000
--- a/framebuffer/nsfont_bold.c
+++ /dev/null
@@ -1,556 +0,0 @@
-/*
- * Licensed under the MIT License,
- * http://www.opensource.org/licenses/mit-license.php
- *
- * Copyright Tim Tyler
- * Copyright Michael Drake <tlsa@netsurf-browser.org>
- *
- * This font is based on the "Default" font with Zap 1.47 [TEST], which
- * was created for Zap by Tim Tyler. It was converted to a plain text
- * format and many glyphs added for use in the NetSurf project.
- *
- * Plain text font data:
- * http://source.netsurf-browser.org/?p=art.git;a=blob_plain;f=fonts/netsurf/glyph_data;hb=HEAD
- *
- * Zap: http://zap.tartarus.org/
- * NetSurf: http://www.netsurf-browser.org/
- *
- * Thanks to Tim Tyler for the original font and his permission to use it.
- * Thanks to James Aylett for helping track down Tim.
- * Thanks to Christian Ludlam for helping with Zap font info.
- *
- * Please contact Michael Drake if you want to contribute gylphs to
- * this font.
- */
-
-/* Don't edit this file, it was generated from the plain text source data. */
-
-#include "desktop/plotters.h"
-#include "utils/utf8.h"
-
-#include "framebuffer/font_internal.h"
-
-#define FONTDATAMAX 4096
-
-static const uint32_t fontdata_bold[FONTDATAMAX] = {
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xE4, 0xAC, 0xA4, 0xA4, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEC, 0xA2, 0xA4, 0xA8, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEC, 0xA2, 0xAC, 0xA2, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEA, 0xAA, 0xAE, 0xA2, 0xE2, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xA8, 0xAE, 0xA2, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xE6, 0xA8, 0xAE, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xA2, 0xA4, 0xA4, 0xE4, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xAA, 0xAE, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xAA, 0xAE, 0xA2, 0xE2, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xE4, 0xAA, 0xAE, 0xAA, 0xEA, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEC, 0xAA, 0xAC, 0xAA, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xE4, 0xAA, 0xA8, 0xAA, 0xE4, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEC, 0xAA, 0xAA, 0xAA, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xA8, 0xAC, 0xA8, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xA8, 0xAC, 0xA8, 0xE8, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xCA, 0x4A, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x44, 0xCC, 0x44, 0x44, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4C, 0xC2, 0x44, 0x48, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4C, 0xC2, 0x4C, 0x42, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4A, 0xCA, 0x4E, 0x42, 0xE2, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xC8, 0x4E, 0x42, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x46, 0xC8, 0x4E, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xC2, 0x44, 0x44, 0xE4, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xCA, 0x4E, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xCA, 0x4E, 0x42, 0xE2, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x44, 0xCA, 0x4E, 0x4A, 0xEA, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4C, 0xCA, 0x4C, 0x4A, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x44, 0xCA, 0x48, 0x4A, 0xE4, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4C, 0xCA, 0x4A, 0x4A, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xC8, 0x4C, 0x48, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xC8, 0x4C, 0x48, 0xE8, 0x00, 0xFE,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
- 0x1C, 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x6C, 0x6C, 0xFE, 0xFE, 0xFE, 0x6C, 0x6C,
- 0xFE, 0xFE, 0xFE, 0x6C, 0x6C, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x7C, 0xFE, 0xF6, 0xF0, 0xF8, 0x7C,
- 0x3E, 0x1E, 0xDE, 0xFE, 0x7C, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE6, 0xEE, 0x1C,
- 0x38, 0x70, 0xEE, 0xCE, 0x0E, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xF8, 0xF8, 0xF8, 0xF8, 0x76, 0xFE,
- 0xFE, 0xEC, 0xEE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x06, 0x0C, 0x1C, 0x38, 0x38, 0x70, 0x70, 0x70,
- 0x70, 0x70, 0x38, 0x38, 0x1C, 0x0C, 0x06, 0x00,
- 0x60, 0x30, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E,
- 0x0E, 0x0E, 0x1C, 0x1C, 0x38, 0x30, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x10, 0x54, 0xFE, 0x7C, 0x38,
- 0x7C, 0xFE, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0xFE,
- 0xFE, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x38, 0x78, 0x70, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE,
- 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1E, 0x3C,
- 0x78, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x7C, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0x7C, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x38, 0x78, 0x78, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0x0E, 0x0E, 0x7E, 0xFC,
- 0xE0, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0x0E, 0x0E, 0x3C, 0x3C,
- 0x0E, 0x0E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x0C, 0x1C, 0x3C, 0x7C, 0x6C, 0xEC,
- 0xFE, 0xFE, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0xE0, 0xE0, 0xFC, 0xFE, 0x0E,
- 0x0E, 0x0E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFC, 0xE0, 0xE0, 0xFC, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0x0E, 0x0E, 0x1C, 0x1C, 0x1C,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xEE, 0xFE, 0x7C, 0xFE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xEE, 0xEE, 0xFE, 0x7E,
- 0x0E, 0x0E, 0x0E, 0x7C, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00,
- 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00,
- 0x00, 0x18, 0x38, 0x38, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x06, 0x0E, 0x1C, 0x38, 0x70,
- 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00,
- 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x60, 0x70, 0x38, 0x1C, 0x0E,
- 0x0E, 0x1C, 0x38, 0x70, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0x0E, 0x0E, 0x3E, 0x7C,
- 0x70, 0x00, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xEE, 0xEE, 0xFE, 0xFE,
- 0xEC, 0xE0, 0xE0, 0xFC, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFE,
- 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0xFC, 0xFE, 0xEE, 0xEE, 0xEE, 0xFC, 0xFC,
- 0xEE, 0xEE, 0xEE, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xEE, 0xE0, 0xE0, 0xE0,
- 0xE0, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xF8, 0xFC, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0xF8, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0xE0, 0xE0, 0xE0, 0xF8, 0xF8,
- 0xE0, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0xE0, 0xE0, 0xE0, 0xF8, 0xF8,
- 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xEE, 0xE0, 0xE0, 0xFE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFE, 0xFE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0x38, 0x38, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
- 0x0E, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xE0, 0xE6, 0xEE, 0xFE, 0xFC, 0xF8, 0xF0,
- 0xF8, 0xFC, 0xFE, 0xEE, 0xE6, 0x00, 0x00, 0x00,
- 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
- 0xE0, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0xEE, 0xFE, 0xFE, 0xFE, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0xCE, 0xEE, 0xEE, 0xFE, 0xFE, 0xFE, 0xFE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xE6, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xFC, 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFE,
- 0xFC, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xFE, 0xFE, 0xFE, 0x7E, 0x06, 0x00, 0x00,
- 0x00, 0xFC, 0xFE, 0xEE, 0xEE, 0xEE, 0xFE, 0xFC,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xE0, 0xE0, 0xFC, 0x7E,
- 0x0E, 0x0E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0x38, 0x38, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
- 0x6C, 0x7C, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
- 0xFE, 0xFE, 0xFE, 0xEE, 0x44, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0x7C, 0x38, 0x38,
- 0x7C, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x7C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0x0E, 0x0E, 0x1C, 0x38, 0x38,
- 0x70, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x3E, 0x38, 0x38, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x3E, 0x3E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, 0xF0, 0x78,
- 0x3C, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
- 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x7C, 0xEE, 0xC6, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00,
- 0x00, 0x00, 0x00, 0x30, 0x38, 0x18, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x0E,
- 0x7E, 0xFE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xFC, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0xEE,
- 0xE0, 0xE0, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x7E, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0xEE,
- 0xFE, 0xFE, 0xE0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7E, 0x70, 0x70, 0x70, 0xF8, 0xF8,
- 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x0E, 0x7E, 0x7C,
- 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xFC, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x38, 0x00, 0x78, 0x78, 0x38,
- 0x38, 0x38, 0x38, 0x7C, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x1C, 0x00, 0x3C, 0x3C, 0x1C,
- 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x7C, 0x78,
- 0x00, 0xE0, 0xE0, 0xE0, 0xE6, 0xEE, 0xFE, 0xFC,
- 0xF8, 0xFC, 0xFE, 0xEE, 0xE6, 0x00, 0x00, 0x00,
- 0x00, 0x78, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFE, 0xFE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0xFC, 0xE0, 0xE0, 0xE0,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x0E, 0x0F, 0x0F,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xFE, 0xE0,
- 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0xE0,
- 0xFC, 0x7E, 0x0E, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x30, 0x70, 0x70, 0xFC, 0xFC, 0x70,
- 0x70, 0x70, 0x70, 0x7E, 0x3E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE,
- 0xFE, 0xFE, 0xFE, 0xEE, 0x44, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE,
- 0x7C, 0x7C, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xFE, 0x7E, 0x0E, 0x0E, 0xFE, 0xFC,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x1E,
- 0x3C, 0x78, 0xF0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3E, 0x38, 0x38, 0x38, 0xF0, 0xF0,
- 0x38, 0x38, 0x38, 0x3E, 0x1E, 0x00, 0x00, 0x00,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00,
- 0x00, 0xF0, 0xF8, 0x38, 0x38, 0x38, 0x1E, 0x1E,
- 0x38, 0x38, 0x38, 0xF8, 0xF0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x66, 0xFE, 0xFE, 0xCC, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0x28, 0x4C, 0x48, 0x48, 0x00, 0xFE,
- 0x00, 0x38, 0x7C, 0xEE, 0xE0, 0xFC, 0xE0, 0xF8,
- 0xE0, 0xE0, 0xEE, 0x7C, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x38, 0x38, 0x18, 0x30, 0x00,
- 0x00, 0x3E, 0x7E, 0x70, 0x70, 0x70, 0xF8, 0xF8,
- 0x70, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xEE, 0xEE, 0x66, 0xCC, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xDB, 0xDB, 0xDB, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x38, 0x38, 0x38, 0xFE, 0xFE, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00,
- 0x00, 0x38, 0x38, 0x38, 0xFE, 0xFE, 0x38, 0xFE,
- 0xFE, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00,
- 0x00, 0x7C, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xCE, 0x1C,
- 0x38, 0x70, 0xE0, 0xDB, 0x1B, 0x00, 0x00, 0x00,
- 0xEE, 0x7C, 0x00, 0x7C, 0xFE, 0xEE, 0xE0, 0xFC,
- 0x7E, 0x0E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x1C,
- 0x38, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x00, 0x00,
- 0x00, 0x7F, 0xFF, 0xEE, 0xEE, 0xEE, 0xEF, 0xEF,
- 0xEE, 0xEE, 0xEE, 0xFF, 0x7F, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0xEE, 0x7C, 0x00, 0xFE, 0xFE, 0x0E, 0x1E, 0x3C,
- 0x78, 0xF0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x30, 0x30, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x36, 0x6C, 0x6C, 0x6C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x36, 0x36, 0x36, 0x6C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E,
- 0x7E, 0x7E, 0x7E, 0x3C, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7B, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xF1, 0xFB, 0x5F, 0x55, 0x51, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0x7C, 0x38, 0x00, 0x7E, 0xFE, 0xE0,
- 0xFC, 0x7E, 0x0E, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x38,
- 0x1C, 0x0E, 0x1C, 0x38, 0x70, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xFE, 0xFA,
- 0xDE, 0xDE, 0xFC, 0xFE, 0x6E, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0x7C, 0x38, 0x00, 0xFE, 0xFE, 0x1E,
- 0x3C, 0x78, 0xF0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0x7C,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00,
- 0x00, 0x00, 0x00, 0x10, 0x10, 0x7C, 0xFE, 0xD6,
- 0xD0, 0xD0, 0xD6, 0xFE, 0x7C, 0x10, 0x10, 0x00,
- 0x00, 0x3C, 0x7E, 0x76, 0x70, 0xFC, 0xFC, 0xFC,
- 0x70, 0x76, 0xFE, 0xFE, 0xDC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0x7C, 0xFE,
- 0xFE, 0xFE, 0xFE, 0x7C, 0xEE, 0xEE, 0x00, 0x00,
- 0x00, 0x00, 0xEE, 0xEE, 0xEE, 0x7C, 0x38, 0xFE,
- 0x38, 0xFE, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x38, 0x00,
- 0x00, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x3C, 0x7C, 0x7C, 0x70, 0x3C, 0x7E, 0x66,
- 0x7E, 0x3C, 0x0E, 0x3E, 0x3E, 0x3C, 0x00, 0x00,
- 0x00, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x3C, 0x7E, 0xC3, 0x99, 0xBD, 0xA5, 0xA1,
- 0xA5, 0xBD, 0x99, 0xC3, 0x7E, 0x3C, 0x00, 0x00,
- 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x7C, 0x00, 0xFC,
- 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E,
- 0x7C, 0xF8, 0xF8, 0x7C, 0x3E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x06, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x3C, 0x7E, 0xC3, 0xB9, 0xBD, 0xA5, 0xB9,
- 0xB9, 0xA5, 0xA5, 0xC3, 0x7E, 0x3C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x78, 0xFC, 0xCC, 0xFC, 0x78, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x38, 0xFE, 0xFE, 0xFE, 0x38,
- 0x38, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xF0, 0xF8, 0x18, 0x78, 0xF0, 0xC0,
- 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xF0, 0xF8, 0x18, 0x30, 0x18, 0xF8,
- 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x38, 0x70, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0xFC, 0xE0, 0xE0, 0xC0,
- 0x00, 0x00, 0x00, 0x7F, 0xDB, 0xDB, 0xDB, 0x7B,
- 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38,
- 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x1C, 0x0C, 0x1C, 0x18, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0xE0, 0x60, 0x60, 0x60, 0xF0,
- 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xF8, 0x88, 0xF8, 0x70, 0x00, 0xF8,
- 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8,
- 0x6C, 0x36, 0x36, 0x6C, 0xD8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0xE0, 0x62, 0x66, 0xFE, 0x1C,
- 0x38, 0x76, 0xEE, 0xD6, 0x3E, 0x3E, 0x06, 0x00,
- 0x00, 0x00, 0x60, 0xE0, 0x62, 0x66, 0xFE, 0x1C,
- 0x38, 0x70, 0xFC, 0xC6, 0x0C, 0x18, 0x1E, 0x00,
- 0x00, 0x00, 0xE0, 0x30, 0x62, 0x36, 0xEE, 0x1C,
- 0x3A, 0x76, 0xEE, 0xD6, 0x3E, 0x3E, 0x06, 0x00,
- 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x1C, 0x1C,
- 0x7C, 0xF8, 0xE0, 0xEE, 0xEE, 0xFE, 0x7C, 0x00,
- 0x00, 0xE0, 0x70, 0x00, 0x10, 0x38, 0x7C, 0xEE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1C, 0x00, 0x10, 0x38, 0x7C, 0xEE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6C, 0xC6, 0x10, 0x38, 0x7C, 0xEE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0xDC, 0x00, 0x10, 0x38, 0x7C, 0xEE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0xEE, 0x10, 0x38, 0x7C, 0xEE, 0xFE,
- 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6C, 0x38, 0x38, 0x7C, 0xEE, 0xFE,
- 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x3F, 0x7F, 0xFE, 0xEE, 0xFF, 0xFF,
- 0xFE, 0xEE, 0xEF, 0xEF, 0xEF, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xE0, 0xE0, 0xE0, 0xE0,
- 0xE0, 0xE0, 0xEE, 0xFE, 0x7C, 0x0E, 0x6E, 0x7C,
- 0x00, 0x70, 0x38, 0x00, 0xFE, 0xFE, 0xE0, 0xE0,
- 0xF8, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x38, 0x00, 0xFE, 0xFE, 0xE0, 0xE0,
- 0xF8, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xEE, 0x00, 0xFE, 0xFE, 0xE0, 0xE0,
- 0xF8, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0xEE, 0xEE, 0x00, 0xFE, 0xFE, 0xE0, 0xE0, 0xF8,
- 0xF8, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0x38, 0x00, 0x38, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x38, 0x00, 0x38, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6C, 0x38, 0x38, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0xEE, 0xEE, 0x00, 0x38, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xF8, 0xFC, 0xEE, 0xEE, 0xEE, 0xFE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0xF8, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0xDC, 0x00, 0xEE, 0xEE, 0xEE, 0xF6,
- 0xFE, 0xDE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0x38, 0x00, 0x7C, 0xFE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x38, 0x00, 0x7C, 0xFE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xEE, 0x00, 0x7C, 0xFE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0xDC, 0x00, 0x7C, 0xFE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0xEE, 0xEE, 0x00, 0x7C, 0xFE, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xEE, 0x7C,
- 0x38, 0x38, 0x7C, 0xEE, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x7A, 0xFC, 0xEE, 0xEE, 0xEE, 0xFE, 0xFE,
- 0xFE, 0xEE, 0xEE, 0xFE, 0x7C, 0x80, 0x00, 0x00,
- 0x00, 0x70, 0x38, 0x00, 0xEE, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x38, 0x00, 0xEE, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xEE, 0x00, 0xEE, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0xEE, 0xEE, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x38, 0x00, 0xEE, 0xEE, 0xEE, 0xEE,
- 0x7C, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xE0, 0xE0, 0xFC, 0xFE, 0xEE, 0xEE,
- 0xEE, 0xFE, 0xFC, 0xE0, 0xE0, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xEE, 0xEE, 0xEE, 0xFE, 0xFC,
- 0xEE, 0xEE, 0xEE, 0xFE, 0xFC, 0xE0, 0xC0, 0x00,
- 0x00, 0x00, 0x70, 0x38, 0x00, 0x7C, 0x7E, 0x0E,
- 0x7E, 0xFE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x38, 0x00, 0x7C, 0x7E, 0x0E,
- 0x7E, 0xFE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x7C, 0xEE, 0x00, 0x7C, 0x7E, 0x0E,
- 0x7E, 0xFE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x76, 0xDC, 0x00, 0x7C, 0x7E, 0x0E,
- 0x7E, 0xFE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xEE, 0xEE, 0x00, 0x7C, 0x7E, 0x0E,
- 0x7E, 0xFE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6C, 0x38, 0x00, 0x7C, 0x7E, 0x0E,
- 0x7E, 0xFE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x74, 0x7E, 0x7E, 0x1A,
- 0x7E, 0xFE, 0xD8, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE,
- 0xEE, 0xE0, 0xEE, 0xFE, 0x7C, 0x1C, 0x7E, 0x7C,
- 0x00, 0x00, 0x70, 0x38, 0x00, 0x7C, 0xFE, 0xEE,
- 0xFE, 0xFE, 0xE0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x70, 0x00, 0x7C, 0xFE, 0xEE,
- 0xFE, 0xFE, 0xE0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x7C, 0xEE, 0x00, 0x7C, 0xFE, 0xEE,
- 0xFE, 0xFE, 0xE0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xEE, 0xEE, 0x00, 0x7C, 0xFE, 0xEE,
- 0xFE, 0xFE, 0xE0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x70, 0x38, 0x00, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x38, 0x00, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x7C, 0xEE, 0x00, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xEE, 0xEE, 0x00, 0x38, 0x38, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0xEC, 0x7C, 0xF8, 0xFC, 0x7E, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0xFE, 0xDC, 0x00, 0xFC, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xE0, 0x70, 0x00, 0x7C, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x70, 0x00, 0x7C, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x7C, 0xEE, 0x00, 0x7C, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0xFE, 0xDC, 0x00, 0x7C, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xEE, 0xEE, 0x00, 0x7C, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0xFE,
- 0xFE, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x7C, 0xFE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0xE0, 0x70, 0x00, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x70, 0x00, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x7C, 0xEE, 0x00, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xEE, 0xEE, 0x00, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x38, 0x00, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x0E, 0xFE, 0xFC,
- 0x00, 0x00, 0xE0, 0xE0, 0xFC, 0xFE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xFE, 0xFC, 0xE0, 0xE0,
- 0x00, 0x00, 0xEE, 0xEE, 0x00, 0xEE, 0xEE, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x0E, 0xFE, 0xFC,
-};
-
-const struct fb_font_desc font_bold = {
- .name = "NetSurf Bold",
- .width = 8,
- .height = 16,
- .encoding = "CP1252",
- .data = fontdata_bold,
-};
diff --git a/framebuffer/nsfont_italic.c b/framebuffer/nsfont_italic.c
deleted file mode 100644
index 9dc29553a..000000000
--- a/framebuffer/nsfont_italic.c
+++ /dev/null
@@ -1,556 +0,0 @@
-/*
- * Licensed under the MIT License,
- * http://www.opensource.org/licenses/mit-license.php
- *
- * Copyright Tim Tyler
- * Copyright Michael Drake <tlsa@netsurf-browser.org>
- *
- * This font is based on the "Default" font with Zap 1.47 [TEST], which
- * was created for Zap by Tim Tyler. It was converted to a plain text
- * format and many glyphs added for use in the NetSurf project.
- *
- * Plain text font data:
- * http://source.netsurf-browser.org/?p=art.git;a=blob_plain;f=fonts/netsurf/glyph_data;hb=HEAD
- *
- * Zap: http://zap.tartarus.org/
- * NetSurf: http://www.netsurf-browser.org/
- *
- * Thanks to Tim Tyler for the original font and his permission to use it.
- * Thanks to James Aylett for helping track down Tim.
- * Thanks to Christian Ludlam for helping with Zap font info.
- *
- * Please contact Michael Drake if you want to contribute gylphs to
- * this font.
- */
-
-/* Don't edit this file, it was generated from the plain text source data. */
-
-#include "desktop/plotters.h"
-#include "utils/utf8.h"
-
-#include "framebuffer/font_internal.h"
-
-#define FONTDATAMAX 4096
-
-static const uint32_t fontdata_italic[FONTDATAMAX] = {
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xE4, 0xAC, 0xA4, 0xA4, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEC, 0xA2, 0xA4, 0xA8, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEC, 0xA2, 0xAC, 0xA2, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEA, 0xAA, 0xAE, 0xA2, 0xE2, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xA8, 0xAE, 0xA2, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xE6, 0xA8, 0xAE, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xA2, 0xA4, 0xA4, 0xE4, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xAA, 0xAE, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xAA, 0xAE, 0xA2, 0xE2, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xE4, 0xAA, 0xAE, 0xAA, 0xEA, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEC, 0xAA, 0xAC, 0xAA, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xE4, 0xAA, 0xA8, 0xAA, 0xE4, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEC, 0xAA, 0xAA, 0xAA, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xA8, 0xAC, 0xA8, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xA8, 0xAC, 0xA8, 0xE8, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xCA, 0x4A, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x44, 0xCC, 0x44, 0x44, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4C, 0xC2, 0x44, 0x48, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4C, 0xC2, 0x4C, 0x42, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4A, 0xCA, 0x4E, 0x42, 0xE2, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xC8, 0x4E, 0x42, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x46, 0xC8, 0x4E, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xC2, 0x44, 0x44, 0xE4, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xCA, 0x4E, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xCA, 0x4E, 0x42, 0xE2, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x44, 0xCA, 0x4E, 0x4A, 0xEA, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4C, 0xCA, 0x4C, 0x4A, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x44, 0xCA, 0x48, 0x4A, 0xE4, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4C, 0xCA, 0x4A, 0x4A, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xC8, 0x4C, 0x48, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xC8, 0x4C, 0x48, 0xE8, 0x00, 0xFE,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x06, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x0C,
- 0x0C, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1B, 0x1B, 0x36, 0x36, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1B, 0x1B, 0x1B, 0x7F, 0x7F, 0x36, 0x36,
- 0xFF, 0xFF, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x3E, 0x7F, 0x6B, 0x68, 0x78, 0x3C,
- 0x1E, 0x16, 0xD6, 0xFE, 0x7C, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xCE, 0x1C,
- 0x38, 0x70, 0xE6, 0xC6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x3E, 0x36, 0x36, 0x3C, 0x39, 0x7F,
- 0x6E, 0xCC, 0xCC, 0xFE, 0x7A, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x06, 0x0C, 0x0C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x06, 0x0E, 0x1C, 0x38, 0x30, 0x60, 0x60, 0xC0,
- 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x30, 0x00,
- 0x18, 0x1C, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06,
- 0x0C, 0x0C, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x36, 0x36, 0x1C, 0x7F,
- 0xFE, 0x38, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E,
- 0xFC, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x38, 0x70, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFC,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x1C,
- 0x38, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x33, 0x67, 0x6E, 0x76,
- 0xE6, 0xCC, 0xCC, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x06, 0x0E, 0x1E, 0x3C, 0x0C, 0x0C, 0x18,
- 0x18, 0x18, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x03, 0x07, 0x1E, 0x7C,
- 0x60, 0xC0, 0xC0, 0xFC, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x03, 0x06, 0x1E, 0x1E,
- 0x06, 0x06, 0xCC, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E, 0x36, 0x7F,
- 0x7F, 0x0C, 0x0C, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x1F, 0x30, 0x30, 0x7C, 0x7E, 0x06,
- 0x06, 0x06, 0xCE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x0F, 0x1F, 0x38, 0x30, 0x60, 0x7C, 0x7E,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x3F, 0x7F, 0x63, 0x03, 0x06, 0x06, 0x0C,
- 0x0C, 0x18, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x33, 0x33, 0x1E, 0x7C,
- 0x66, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x63, 0x63, 0x7E, 0x3E,
- 0x06, 0x0C, 0x1C, 0xF8, 0xF0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00,
- 0x00, 0x00, 0x18, 0x38, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0x70,
- 0x70, 0x38, 0x1C, 0x0C, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x00,
- 0x7C, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x0E,
- 0x1C, 0x38, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x33, 0x03, 0x07, 0x0E,
- 0x1C, 0x18, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x63, 0x6F, 0x6B, 0x6B,
- 0xCF, 0xCE, 0xC0, 0xFC, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x33, 0x66, 0x7E, 0x7E,
- 0x66, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x3F, 0x33, 0x63, 0x63, 0x7E, 0x7C,
- 0x66, 0xC6, 0xC6, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x30, 0x60, 0x60, 0x60,
- 0x60, 0xC0, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x3F, 0x33, 0x63, 0x63, 0x63, 0x63,
- 0xC3, 0xC6, 0xCE, 0xFC, 0xF8, 0x00, 0x00, 0x00,
- 0x00, 0x3F, 0x3F, 0x30, 0x30, 0x60, 0x7C, 0x7C,
- 0x60, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x3F, 0x3F, 0x30, 0x30, 0x60, 0x7C, 0x7C,
- 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x30, 0x60, 0x60, 0x6E,
- 0x6E, 0xC6, 0xCE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x33, 0x33, 0x33, 0x63, 0x66, 0x7E, 0x7E,
- 0xC6, 0xC6, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00,
- 0x00, 0x3F, 0x3F, 0x0C, 0x0C, 0x18, 0x18, 0x18,
- 0x18, 0x30, 0x30, 0xFC, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06,
- 0x06, 0x0C, 0xCC, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x30, 0x30, 0x33, 0x36, 0x7C, 0x78, 0x70,
- 0x78, 0xF8, 0xDC, 0xCE, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60,
- 0x60, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x33, 0x33, 0x3F, 0x3F, 0x7F, 0x6B, 0x66,
- 0x66, 0xC6, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00,
- 0x00, 0x33, 0x33, 0x3B, 0x3B, 0x7B, 0x7E, 0x6E,
- 0x6E, 0xCE, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x33, 0x63, 0x66, 0x66,
- 0xC6, 0xCC, 0xCC, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x3F, 0x33, 0x33, 0x67, 0x7E, 0x7C,
- 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x33, 0x63, 0x66, 0x66,
- 0xC6, 0xF6, 0xDC, 0xF8, 0x7C, 0x0C, 0x00, 0x00,
- 0x00, 0x3E, 0x3F, 0x33, 0x33, 0x63, 0x7E, 0x7C,
- 0x6E, 0xC6, 0xC6, 0xCC, 0xCC, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x60, 0x60, 0x7C, 0x3E,
- 0x06, 0x06, 0xCE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x7F, 0x18, 0x18, 0x30, 0x30, 0x30,
- 0x30, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x33, 0x33, 0x33, 0x33, 0x63, 0x66, 0x66,
- 0x66, 0xC6, 0xCC, 0xFC, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x33, 0x33, 0x33, 0x33, 0x63, 0x63, 0x66,
- 0x66, 0x6C, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x33, 0x33, 0x33, 0x33, 0x63, 0x63, 0x6B,
- 0x6B, 0xFE, 0xFE, 0xEE, 0x44, 0x00, 0x00, 0x00,
- 0x00, 0x63, 0x63, 0x63, 0x77, 0x3E, 0x1C, 0x38,
- 0x7C, 0xEE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x3C, 0x18,
- 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x7F, 0x03, 0x07, 0x0E, 0x0C, 0x18,
- 0x38, 0x70, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x0F, 0x0F, 0x0C, 0x0C, 0x18, 0x18, 0x18,
- 0x18, 0x30, 0x30, 0x3E, 0x3E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70,
- 0x38, 0x1C, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x1F, 0x03, 0x03, 0x06, 0x06, 0x06,
- 0x06, 0x0C, 0x0C, 0x7C, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x0E, 0x1F, 0x3B, 0x63, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00,
- 0x00, 0x00, 0x00, 0x0C, 0x0E, 0x0C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3E, 0x06,
- 0x7E, 0xFC, 0xCC, 0xFC, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x18, 0x30, 0x30, 0x3E, 0x7F, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x66,
- 0xC0, 0xC0, 0xCC, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x03, 0x03, 0x03, 0x06, 0x3E, 0x7E, 0x66,
- 0xC6, 0xCC, 0xCC, 0xFC, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x66,
- 0xFE, 0xFC, 0xC0, 0xFC, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x0F, 0x0C, 0x18, 0x7E, 0x7E, 0x30,
- 0x30, 0x30, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7E, 0x0C, 0xFC, 0xF8,
- 0x00, 0x00, 0x30, 0x30, 0x30, 0x6E, 0x7F, 0x73,
- 0x63, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x06, 0x00, 0x1C, 0x3C, 0x0C,
- 0x0C, 0x18, 0x18, 0x7C, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x03, 0x03, 0x00, 0x0E, 0x1E, 0x06,
- 0x06, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0xF8, 0xF0,
- 0x00, 0x30, 0x30, 0x30, 0x33, 0x67, 0x6E, 0x7C,
- 0x7C, 0xDC, 0xCE, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x0E, 0x06, 0x06, 0x0C, 0x0C, 0x0C,
- 0x0C, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x7F, 0x7F,
- 0x6B, 0xD6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x7E, 0x76,
- 0x66, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0x66,
- 0x66, 0xCC, 0xCC, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3F, 0x33,
- 0x63, 0x66, 0x66, 0xFE, 0xFC, 0xC0, 0xC0, 0xC0,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x0C, 0x0E, 0x0E,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x7F, 0x70,
- 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x60,
- 0x7C, 0x3E, 0x06, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x06, 0x06, 0x0C, 0x0C, 0x3F, 0x3F, 0x18,
- 0x18, 0x30, 0x30, 0x3E, 0x1C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x66,
- 0x66, 0x66, 0xCC, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66,
- 0xCC, 0xCC, 0xF8, 0x70, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63,
- 0x6B, 0xDE, 0xFE, 0xFE, 0x6C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x77,
- 0x3E, 0x7C, 0xEE, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7E, 0x0C, 0xFC, 0xF8,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x07,
- 0x1E, 0x78, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x0E, 0x0C, 0x0C, 0x18, 0x70, 0x70,
- 0x18, 0x18, 0x30, 0x38, 0x1C, 0x00, 0x00, 0x00,
- 0x06, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x0C,
- 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x00,
- 0x00, 0x38, 0x1C, 0x0C, 0x18, 0x18, 0x0E, 0x0E,
- 0x18, 0x30, 0x30, 0x70, 0xE0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1D, 0x3F, 0x37, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0x28, 0x4C, 0x48, 0x48, 0x00, 0xFE,
- 0x00, 0x06, 0x0F, 0x1B, 0x18, 0x7E, 0x30, 0x7C,
- 0x60, 0x60, 0x6C, 0x3C, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x10, 0x20, 0x00,
- 0x00, 0x07, 0x0F, 0x0C, 0x18, 0x7E, 0x7E, 0x30,
- 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0x80, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x66, 0x66, 0x44, 0x88, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xDB, 0xDB, 0x00, 0x00, 0x00,
- 0x00, 0x06, 0x06, 0x06, 0x1F, 0x3F, 0x0C, 0x0C,
- 0x0C, 0x18, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00,
- 0x00, 0x06, 0x06, 0x06, 0x1F, 0x3F, 0x0C, 0x3F,
- 0x3F, 0x18, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00,
- 0x00, 0x3E, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x63, 0x06,
- 0x0C, 0x30, 0x60, 0xDB, 0x9B, 0x00, 0x00, 0x00,
- 0x63, 0x3E, 0x00, 0x1E, 0x3F, 0x33, 0x60, 0x7C,
- 0x3E, 0x06, 0xCE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E,
- 0x1C, 0x30, 0x38, 0x1C, 0x0C, 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x3F, 0x33, 0x33, 0x66, 0x67, 0x67,
- 0x66, 0xCC, 0xCC, 0xFF, 0x7F, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x63, 0x3E, 0x00, 0x7F, 0x7F, 0x03, 0x07, 0x0E,
- 0x18, 0x70, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x04, 0x08, 0x10, 0x18, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0C, 0x04, 0x08, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x09, 0x12, 0x1B, 0x36, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1B, 0x1B, 0x09, 0x12, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x3F,
- 0x3F, 0x7E, 0x7E, 0x3C, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x19, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xFB, 0xFF, 0x55, 0xA2, 0xA2, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x63, 0x36, 0x1C, 0x00, 0x3F, 0x7F, 0x60,
- 0x7C, 0x3E, 0x06, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1C,
- 0x0E, 0x0C, 0x1C, 0x38, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7F, 0x6D,
- 0x6F, 0xDE, 0xD8, 0xFE, 0x6E, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x63, 0x36, 0x1C, 0x00, 0x7F, 0x7F, 0x07,
- 0x1E, 0x78, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x33, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x3C,
- 0x18, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00,
- 0x0C, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x00,
- 0x00, 0x00, 0x00, 0x04, 0x04, 0x3E, 0x7F, 0x6B,
- 0x68, 0xD0, 0xD6, 0xFE, 0x7C, 0x20, 0x20, 0x00,
- 0x00, 0x0F, 0x1F, 0x19, 0x18, 0x30, 0x7C, 0x7C,
- 0x30, 0x60, 0xE6, 0xFE, 0xDC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x19, 0x33, 0x1E, 0x3F,
- 0x33, 0x66, 0x7E, 0x3C, 0x66, 0xCC, 0x00, 0x00,
- 0x00, 0x00, 0x19, 0x19, 0x19, 0x1E, 0x0C, 0x3F,
- 0x0C, 0x7E, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x06, 0x06, 0x0C, 0x0C, 0x00,
- 0x00, 0x18, 0x18, 0x30, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x0E, 0x18, 0x18, 0x3C, 0x7E, 0x66,
- 0x7E, 0x3C, 0x18, 0x18, 0x70, 0xE0, 0x00, 0x00,
- 0x00, 0x00, 0x33, 0x66, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1F, 0x21, 0x21, 0x4D, 0x51, 0x51,
- 0x91, 0xA1, 0x9A, 0x82, 0x7C, 0x38, 0x00, 0x00,
- 0x00, 0x1C, 0x02, 0x1E, 0x22, 0x3C, 0x00, 0x7C,
- 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B,
- 0x36, 0xD8, 0xD8, 0x6C, 0x36, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1E, 0x3E, 0x06, 0x0C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1F, 0x21, 0x49, 0x55, 0x55, 0x59,
- 0x99, 0xA5, 0xA5, 0x82, 0x7E, 0x78, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x3F, 0x3C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x06, 0x06, 0x3F, 0x3F, 0x0C,
- 0x0C, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3C, 0x3E, 0x06, 0x3C, 0x78, 0x60,
- 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3C, 0x3E, 0x06, 0x18, 0x0C, 0x7C,
- 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33,
- 0x33, 0x66, 0x66, 0x7E, 0x7C, 0xC0, 0xC0, 0x80,
- 0x00, 0x00, 0x00, 0x3F, 0x6F, 0xDB, 0xDB, 0x7B,
- 0x1B, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C,
- 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x1C, 0x0C, 0x1C, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x38, 0x18, 0x30, 0x30, 0x78,
- 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x1E, 0x22, 0x3C, 0x18, 0x00, 0x3C,
- 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C,
- 0x36, 0x36, 0x36, 0x6C, 0xD8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x30, 0x10, 0x23, 0x76, 0x0C,
- 0x18, 0x64, 0xCC, 0x94, 0x3E, 0x08, 0x08, 0x00,
- 0x00, 0x00, 0x10, 0x30, 0x10, 0x23, 0x76, 0x0C,
- 0x18, 0x60, 0xDC, 0x82, 0x1C, 0x20, 0x3C, 0x00,
- 0x00, 0x00, 0x38, 0x04, 0x18, 0x0B, 0x76, 0x0C,
- 0x18, 0x64, 0xCC, 0x96, 0x3E, 0x08, 0x08, 0x00,
- 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C,
- 0x3C, 0x70, 0xC0, 0xC6, 0xC6, 0xFC, 0x78, 0x00,
- 0x00, 0x18, 0x0C, 0x00, 0x04, 0x1C, 0x36, 0x63,
- 0x7F, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x03, 0x06, 0x00, 0x04, 0x1C, 0x36, 0x63,
- 0x7F, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1B, 0x11, 0x04, 0x1C, 0x36, 0x63,
- 0x7F, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x1D, 0x37, 0x00, 0x04, 0x1C, 0x36, 0x63,
- 0x7F, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x1B, 0x1B, 0x04, 0x0E, 0x36, 0x63, 0x7F,
- 0x7F, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x11, 0x0E, 0x0E, 0x36, 0x63, 0x7F,
- 0x7F, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x0F, 0x1F, 0x3B, 0x66, 0x7F, 0x7F,
- 0x66, 0xCC, 0xCC, 0xCF, 0xCF, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x33, 0x30, 0x60, 0x60, 0x60,
- 0x60, 0xC0, 0xC6, 0xFE, 0x7C, 0x1C, 0xCC, 0x78,
- 0x00, 0x0C, 0x06, 0x00, 0x3F, 0x7F, 0x60, 0x78,
- 0x78, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x03, 0x06, 0x00, 0x3F, 0x7F, 0x60, 0x78,
- 0x78, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1B, 0x00, 0x3F, 0x7F, 0x60, 0x78,
- 0x78, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x1B, 0x1B, 0x00, 0x3F, 0x3F, 0x60, 0x60, 0x78,
- 0x78, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x06, 0x00, 0x1F, 0x1F, 0x0C, 0x0C,
- 0x0C, 0x18, 0x18, 0x7C, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x03, 0x06, 0x00, 0x1F, 0x1F, 0x0C, 0x0C,
- 0x0C, 0x18, 0x18, 0x7C, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x06, 0x09, 0x1F, 0x1F, 0x0C, 0x0C, 0x0C,
- 0x0C, 0x18, 0x18, 0x7C, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1B, 0x1B, 0x00, 0x1F, 0x1F, 0x0C, 0x0C,
- 0x0C, 0x18, 0x18, 0x7C, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1E, 0x1F, 0x1B, 0x33, 0x33, 0x7B,
- 0x33, 0x66, 0x6E, 0x7C, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x1D, 0x37, 0x00, 0x31, 0x63, 0x73, 0x7B,
- 0x7F, 0xDE, 0xCE, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x06, 0x00, 0x3E, 0x7F, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x03, 0x06, 0x00, 0x3E, 0x7F, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1B, 0x00, 0x3E, 0x7F, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1D, 0x37, 0x00, 0x3E, 0x7F, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1B, 0x1B, 0x00, 0x3E, 0x7F, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x77, 0x3E,
- 0x1C, 0x38, 0x7C, 0xEE, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x1D, 0x3E, 0x37, 0x6B, 0x6B, 0x6B, 0xD6,
- 0xD6, 0xD6, 0xEE, 0x7C, 0xB8, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x06, 0x00, 0x33, 0x33, 0x63, 0x66,
- 0x66, 0xC6, 0xCE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x03, 0x06, 0x00, 0x33, 0x33, 0x63, 0x66,
- 0x66, 0xC6, 0xCE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1B, 0x00, 0x33, 0x33, 0x63, 0x66,
- 0x66, 0xC6, 0xCE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x1B, 0x1B, 0x00, 0x33, 0x33, 0x63, 0x63, 0x63,
- 0x66, 0xC6, 0xCE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x06, 0x0C, 0x00, 0x33, 0x33, 0x66, 0x6E,
- 0x7C, 0x38, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x1F, 0x3F, 0x33, 0x33,
- 0x3F, 0x7C, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1F, 0x1B, 0x1B, 0x33, 0x3F, 0x3E,
- 0x33, 0x66, 0x66, 0x7E, 0x7C, 0xC0, 0x80, 0x00,
- 0x00, 0x00, 0x0C, 0x06, 0x00, 0x3F, 0x7F, 0x63,
- 0x63, 0xCE, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x0C, 0x00, 0x3F, 0x7F, 0x63,
- 0x63, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x0E, 0x1B, 0x00, 0x3F, 0x7F, 0x63,
- 0x63, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1D, 0x37, 0x00, 0x3F, 0x7F, 0x63,
- 0x63, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x3F, 0x7F, 0x63,
- 0x63, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1B, 0x0E, 0x00, 0x3E, 0x7F, 0x63,
- 0x63, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x3F, 0x0D,
- 0x1F, 0x7E, 0xD8, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F,
- 0x63, 0xC0, 0xC6, 0xFE, 0x7C, 0x30, 0xF8, 0xF0,
- 0x00, 0x00, 0x0C, 0x06, 0x00, 0x3E, 0x7F, 0x63,
- 0x7F, 0xFE, 0xC0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x0C, 0x00, 0x3E, 0x7F, 0x63,
- 0x7F, 0xFE, 0xC0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x0E, 0x1B, 0x00, 0x3E, 0x7F, 0x63,
- 0x7F, 0xFE, 0xC0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x3E, 0x7F, 0x63,
- 0x7F, 0xFE, 0xC0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0C, 0x06, 0x00, 0x0C, 0x0C, 0x0C,
- 0x0C, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x03, 0x06, 0x00, 0x0C, 0x0C, 0x0C,
- 0x0C, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x06, 0x0F, 0x19, 0x00, 0x0C, 0x0C, 0x0C,
- 0x0C, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x0C, 0x0C, 0x0C,
- 0x0C, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x1B, 0x1F, 0x3E, 0x37, 0x3E, 0x7F, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1D, 0x3F, 0x37, 0x00, 0x7E, 0x7F, 0x63,
- 0x63, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x0C, 0x00, 0x3E, 0x7F, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x0C, 0x00, 0x3E, 0x7F, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x0E, 0x1B, 0x00, 0x3E, 0x7F, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1D, 0x3F, 0x37, 0x00, 0x3E, 0x7F, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x3E, 0x7F, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x3F,
- 0x7E, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, 0x67,
- 0x6B, 0xD6, 0xE6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x0C, 0x00, 0x63, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x0C, 0x00, 0x63, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x0E, 0x1B, 0x00, 0x63, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x63, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x03, 0x06, 0x00, 0x63, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7E, 0x0C, 0xF8, 0xF0,
- 0x00, 0x00, 0x18, 0x18, 0x18, 0x3E, 0x3F, 0x33,
- 0x33, 0x66, 0x66, 0x7E, 0x7C, 0xC0, 0xC0, 0xC0,
- 0x00, 0x00, 0x00, 0x1B, 0x00, 0x63, 0x63, 0x63,
- 0x63, 0xC6, 0xC6, 0xFE, 0x7E, 0x0C, 0xF8, 0xF0,
-};
-
-const struct fb_font_desc font_italic = {
- .name = "NetSurf Italic",
- .width = 8,
- .height = 16,
- .encoding = "CP1252",
- .data = fontdata_italic,
-};
diff --git a/framebuffer/nsfont_italic_bold.c b/framebuffer/nsfont_italic_bold.c
deleted file mode 100644
index d70794668..000000000
--- a/framebuffer/nsfont_italic_bold.c
+++ /dev/null
@@ -1,556 +0,0 @@
-/*
- * Licensed under the MIT License,
- * http://www.opensource.org/licenses/mit-license.php
- *
- * Copyright Tim Tyler
- * Copyright Michael Drake <tlsa@netsurf-browser.org>
- *
- * This font is based on the "Default" font with Zap 1.47 [TEST], which
- * was created for Zap by Tim Tyler. It was converted to a plain text
- * format and many glyphs added for use in the NetSurf project.
- *
- * Plain text font data:
- * http://source.netsurf-browser.org/?p=art.git;a=blob_plain;f=fonts/netsurf/glyph_data;hb=HEAD
- *
- * Zap: http://zap.tartarus.org/
- * NetSurf: http://www.netsurf-browser.org/
- *
- * Thanks to Tim Tyler for the original font and his permission to use it.
- * Thanks to James Aylett for helping track down Tim.
- * Thanks to Christian Ludlam for helping with Zap font info.
- *
- * Please contact Michael Drake if you want to contribute gylphs to
- * this font.
- */
-
-/* Don't edit this file, it was generated from the plain text source data. */
-
-#include "desktop/plotters.h"
-#include "utils/utf8.h"
-
-#include "framebuffer/font_internal.h"
-
-#define FONTDATAMAX 4096
-
-static const uint32_t fontdata_italic_bold[FONTDATAMAX] = {
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xE4, 0xAC, 0xA4, 0xA4, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEC, 0xA2, 0xA4, 0xA8, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEC, 0xA2, 0xAC, 0xA2, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEA, 0xAA, 0xAE, 0xA2, 0xE2, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xA8, 0xAE, 0xA2, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xE6, 0xA8, 0xAE, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xA2, 0xA4, 0xA4, 0xE4, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xAA, 0xAE, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xAA, 0xAE, 0xA2, 0xE2, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xE4, 0xAA, 0xAE, 0xAA, 0xEA, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEC, 0xAA, 0xAC, 0xAA, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xE4, 0xAA, 0xA8, 0xAA, 0xE4, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEC, 0xAA, 0xAA, 0xAA, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xA8, 0xAC, 0xA8, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0xA8, 0xAC, 0xA8, 0xE8, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xCA, 0x4A, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x44, 0xCC, 0x44, 0x44, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4C, 0xC2, 0x44, 0x48, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4C, 0xC2, 0x4C, 0x42, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4A, 0xCA, 0x4E, 0x42, 0xE2, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xC8, 0x4E, 0x42, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x46, 0xC8, 0x4E, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xC2, 0x44, 0x44, 0xE4, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xCA, 0x4E, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xCA, 0x4E, 0x42, 0xE2, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x44, 0xCA, 0x4E, 0x4A, 0xEA, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4C, 0xCA, 0x4C, 0x4A, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x44, 0xCA, 0x48, 0x4A, 0xE4, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4C, 0xCA, 0x4A, 0x4A, 0xEC, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xC8, 0x4C, 0x48, 0xEE, 0x00, 0xFE,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0x4E, 0xC8, 0x4C, 0x48, 0xE8, 0x00, 0xFE,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C, 0x1C, 0x1C,
- 0x1C, 0x00, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x36, 0x36, 0x7F, 0x7F, 0x7F, 0x36, 0x6C,
- 0xFE, 0xFE, 0xFE, 0x6C, 0x6C, 0x00, 0x00, 0x00,
- 0x00, 0x08, 0x3E, 0x7F, 0x7B, 0x78, 0x7C, 0x7C,
- 0x3E, 0x1E, 0xDE, 0xFE, 0x7C, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x70, 0x73, 0x77, 0x0E,
- 0x3C, 0x70, 0xEE, 0xCE, 0x0E, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x3E, 0x7E, 0x7C, 0x7C, 0x3B, 0xFE,
- 0xFE, 0xEC, 0xEE, 0xFE, 0x74, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x06, 0x0E, 0x1C, 0x1C, 0x38, 0x38, 0x70,
- 0x70, 0x70, 0x38, 0x38, 0x1C, 0x0C, 0x06, 0x00,
- 0x60, 0x30, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x0E,
- 0x1C, 0x1C, 0x38, 0x38, 0x70, 0x60, 0xC0, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x2A, 0x7F, 0x3E, 0x18,
- 0x7C, 0xFE, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x7E,
- 0x7E, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x38, 0x78, 0x70, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE,
- 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x3C,
- 0x78, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x3E, 0x77, 0x77, 0x77, 0x77, 0xEE,
- 0xEE, 0xEE, 0xEE, 0x7C, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x1C, 0x3C, 0x3C, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x07, 0x07, 0x3E, 0x7C,
- 0xE0, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x07, 0x07, 0x1E, 0x3C,
- 0x0E, 0x0E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x06, 0x0E, 0x1E, 0x3E, 0x76, 0xEC,
- 0xFE, 0xFE, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x7F, 0x70, 0x70, 0x7C, 0x7E, 0x0E,
- 0x0E, 0x0E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7E, 0x70, 0x70, 0x7C, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x7F, 0x07, 0x07, 0x0E, 0x0E, 0x1C,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x77, 0x7F, 0x3E, 0x7E,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x77, 0x77, 0x7F, 0x3E,
- 0x0E, 0x0E, 0x0E, 0x7C, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x00,
- 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x00,
- 0x00, 0x18, 0x38, 0x38, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x1C, 0x70,
- 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00,
- 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x30, 0x38, 0x1C, 0x0E, 0x0E,
- 0x0E, 0x1C, 0x38, 0x70, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x07, 0x07, 0x1E, 0x7C,
- 0x70, 0x00, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x77, 0x77, 0x7F, 0xFE,
- 0xEC, 0xE0, 0xE0, 0xFC, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x77, 0x77, 0x76, 0xFE,
- 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x7E, 0x7F, 0x77, 0x77, 0x77, 0x7E, 0xFC,
- 0xEE, 0xEE, 0xEE, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x77, 0x70, 0x70, 0xE0,
- 0xE0, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0x7E, 0x77, 0x77, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0xF8, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x7F, 0x70, 0x70, 0x70, 0x7C, 0xF8,
- 0xE0, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x7F, 0x70, 0x70, 0x70, 0x7C, 0xF8,
- 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x77, 0x70, 0x70, 0xFE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7E, 0xFE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x7F, 0x1C, 0x1C, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x06, 0x0E,
- 0x0E, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0x70, 0x72, 0x77, 0x7F, 0x7E, 0xF8,
- 0xF8, 0xFC, 0xFE, 0xEE, 0xE6, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xE0,
- 0xE0, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x63, 0x77, 0x7F, 0x7F, 0x7F, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x67, 0x77, 0x77, 0x7F, 0x7F, 0x7E, 0xFE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xE6, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x77, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7E, 0x7F, 0x77, 0x77, 0x77, 0x77, 0xFE,
- 0xFC, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x77, 0x77, 0x76, 0xEE,
- 0xEE, 0xFE, 0xFE, 0xFE, 0x7E, 0x06, 0x00, 0x00,
- 0x00, 0x7E, 0x7F, 0x77, 0x77, 0x77, 0x7E, 0xFC,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x70, 0x70, 0x7C, 0x3E,
- 0x0E, 0x0E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x7F, 0x1C, 0x1C, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0xEE,
- 0x6C, 0x7C, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0xEE,
- 0xFE, 0xFE, 0xFE, 0xEE, 0x44, 0x00, 0x00, 0x00,
- 0x00, 0x77, 0x77, 0x77, 0x77, 0x3E, 0x1C, 0x38,
- 0x7C, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x77, 0x77, 0x77, 0x77, 0x77, 0x3E, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x7F, 0x07, 0x07, 0x0E, 0x1C, 0x38,
- 0x70, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x3E, 0x3E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x70, 0x78, 0x38,
- 0x1C, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7E, 0x7E, 0x0E, 0x0E, 0x0E, 0x0E, 0x1C,
- 0x1C, 0x1C, 0x1C, 0xFC, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x08, 0x1C, 0x3E, 0x77, 0x63, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x1C, 0x0C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3E, 0x0E,
- 0x3E, 0x7E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x38, 0x38, 0x70, 0x7C, 0x7E, 0x6E,
- 0xEE, 0xEE, 0xEE, 0xFC, 0xF8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xEE,
- 0xE0, 0xE0, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x07, 0x07, 0x07, 0x3F, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xEE,
- 0xFE, 0xFC, 0xE0, 0xFC, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x3F, 0x38, 0x38, 0x70, 0x7C, 0x7C,
- 0x70, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x1C, 0xFC, 0xF8,
- 0x00, 0x00, 0x70, 0x70, 0x70, 0x7C, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0E, 0x0E, 0x00, 0x1E, 0x3E, 0x1C,
- 0x1C, 0x38, 0x38, 0x7C, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0E, 0x0E, 0x00, 0x1E, 0x3E, 0x0E,
- 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0xF8, 0xF0,
- 0x00, 0x38, 0x38, 0x38, 0x3A, 0x7F, 0x7E, 0x7C,
- 0x70, 0xF8, 0xFC, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x3C, 0x3C, 0x1C, 0x1C, 0x38, 0x38, 0x38,
- 0x38, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7E, 0xFE,
- 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0xF8, 0xE0, 0xE0, 0xE0,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0x7C, 0x1C, 0x1E, 0x1E,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x7E, 0x70,
- 0x70, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3E, 0x70,
- 0x7C, 0x3E, 0x0E, 0x7C, 0xF8, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x38, 0x38, 0x70, 0x7C, 0x7C, 0x70,
- 0xE0, 0xE0, 0xE0, 0xFC, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x76, 0xEE,
- 0xFE, 0xFE, 0xFE, 0xEE, 0x44, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x76, 0x7E,
- 0x38, 0x7C, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xFE, 0x7E, 0x1C, 0x1C, 0xFC, 0xF8,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7E, 0x1E,
- 0x3C, 0x78, 0xF0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x0F, 0x1F, 0x1C, 0x1C, 0x1C, 0x78, 0xF0,
- 0x38, 0x38, 0x38, 0x3E, 0x1E, 0x00, 0x00, 0x00,
- 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00,
- 0x00, 0x78, 0x7C, 0x1C, 0x1C, 0x1C, 0x0F, 0x1E,
- 0x38, 0x38, 0x38, 0xF8, 0xF0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x66, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0x00, 0x77, 0x55, 0x55, 0x55, 0x77,
- 0x00, 0xEE, 0x28, 0x4C, 0x48, 0x48, 0x00, 0xFE,
- 0x00, 0x06, 0x1F, 0x3B, 0x70, 0xFE, 0x70, 0xF8,
- 0xE0, 0xE0, 0xEE, 0xFC, 0x70, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x38, 0x38, 0x30, 0x60, 0x00,
- 0x00, 0x1F, 0x3F, 0x38, 0x38, 0x70, 0x7C, 0x7C,
- 0x70, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xCC, 0x98, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xDB, 0xDB, 0xDB, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x7F, 0x7F, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00,
- 0x00, 0x1C, 0x1C, 0x1C, 0x7F, 0x7F, 0x1C, 0xFE,
- 0xFE, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00,
- 0x00, 0x3E, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x1C,
- 0x38, 0x70, 0xE0, 0xDB, 0x1B, 0x00, 0x00, 0x00,
- 0x77, 0x3E, 0x00, 0x3E, 0x7F, 0x77, 0x70, 0x7C,
- 0x3E, 0x0E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x1C,
- 0x38, 0x70, 0x38, 0x1C, 0x0E, 0x06, 0x00, 0x00,
- 0x00, 0x3F, 0x7F, 0x77, 0x77, 0x77, 0x77, 0xEF,
- 0xEE, 0xEE, 0xEE, 0xFF, 0x7F, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x77, 0x3E, 0x00, 0x7F, 0x7F, 0x07, 0x0E, 0x1C,
- 0x38, 0x70, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0C, 0x18, 0x18, 0x18, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1B, 0x36, 0x36, 0x36, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1B, 0x1B, 0x1B, 0x36, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x7E,
- 0x7E, 0x7E, 0x7E, 0x3C, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x3B, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x79, 0x7F, 0x2F, 0x29, 0x29, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x77, 0x3E, 0x1C, 0x00, 0x1F, 0x3E, 0x70,
- 0x7C, 0x3E, 0x0E, 0x7C, 0xF8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x38,
- 0x1C, 0x0E, 0x1C, 0x38, 0x70, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x7F, 0xFA,
- 0xDE, 0xDE, 0xFC, 0xFE, 0x6E, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x77, 0x3E, 0x1C, 0x00, 0x7F, 0x7E, 0x1E,
- 0x3C, 0x78, 0xF0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x3B, 0x00, 0x77, 0x77, 0x77, 0x77, 0x3E,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x00,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x08, 0x3E, 0x7F, 0xD6,
- 0xD0, 0xD0, 0xD6, 0xFE, 0x7C, 0x10, 0x10, 0x00,
- 0x00, 0x1E, 0x3F, 0x3B, 0x38, 0x7E, 0x7E, 0xFC,
- 0x70, 0x76, 0xFE, 0xFE, 0xDC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x3E, 0xFE,
- 0xFE, 0xFE, 0xFE, 0x7C, 0xEE, 0xEE, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x77, 0x3E, 0x1C, 0xFE,
- 0x38, 0xFE, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x00,
- 0x00, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3E, 0x3E, 0x38, 0x1E, 0x3F, 0x66,
- 0x7E, 0x3C, 0x0E, 0x3E, 0x3E, 0x3C, 0x00, 0x00,
- 0x00, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x61, 0x4D, 0x5D, 0x51, 0xA1,
- 0xA5, 0xBD, 0x99, 0xC3, 0x7E, 0x3C, 0x00, 0x00,
- 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00, 0xFC,
- 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E,
- 0x7C, 0xF8, 0xF8, 0x7C, 0x3E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x03, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3F, 0x61, 0x59, 0x5D, 0x55, 0xB9,
- 0xB9, 0xA5, 0xA5, 0xC3, 0x7E, 0x3C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x3C, 0x7E, 0x66, 0x7E, 0x3C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x1C, 0x7F, 0x7F, 0x7F, 0x38,
- 0x38, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x78, 0x7C, 0x0C, 0x3C, 0x78, 0xC0,
- 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x78, 0x7C, 0x0C, 0x18, 0x0C, 0xF8,
- 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x1C, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0xFC, 0xE0, 0xE0, 0xC0,
- 0x00, 0x00, 0x00, 0x3F, 0x6D, 0x6D, 0x6D, 0x7A,
- 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x38,
- 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x1C, 0x0C, 0x1C, 0x18, 0x00, 0x00,
- 0x00, 0x00, 0x30, 0x70, 0x30, 0x30, 0x30, 0xF0,
- 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x7C, 0x44, 0x7C, 0x38, 0x00, 0xF8,
- 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8,
- 0x6C, 0x36, 0x36, 0x6C, 0xD8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x30, 0x70, 0x31, 0x33, 0x7F, 0x1C,
- 0x38, 0x76, 0xEE, 0xD6, 0x3E, 0x3E, 0x06, 0x00,
- 0x00, 0x00, 0x30, 0x70, 0x31, 0x33, 0x7F, 0x1C,
- 0x38, 0x70, 0xFC, 0xC6, 0x0C, 0x18, 0x1E, 0x00,
- 0x00, 0x00, 0x70, 0x18, 0x31, 0x1B, 0x77, 0x1C,
- 0x3A, 0x76, 0xEE, 0xD6, 0x3E, 0x3E, 0x06, 0x00,
- 0x00, 0x00, 0x0E, 0x0E, 0x0E, 0x00, 0x0E, 0x1C,
- 0x7C, 0xF8, 0xE0, 0xEE, 0xEE, 0xFE, 0x7C, 0x00,
- 0x00, 0x70, 0x38, 0x00, 0x08, 0x1C, 0x3E, 0xEE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x0E, 0x00, 0x08, 0x1C, 0x3E, 0xEE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x36, 0x63, 0x08, 0x1C, 0x3E, 0xEE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x3B, 0x6E, 0x00, 0x08, 0x1C, 0x3E, 0xEE,
- 0xFE, 0xFE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x77, 0x77, 0x08, 0x1C, 0x3E, 0x76, 0xFE,
- 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x36, 0x1C, 0x1C, 0x3E, 0x76, 0xFE,
- 0xFE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x0F, 0x1F, 0x3F, 0x7F, 0x77, 0x7F, 0xFF,
- 0xFE, 0xEE, 0xEF, 0xEF, 0xEF, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x70, 0x70, 0x70, 0xE0,
- 0xE0, 0xE0, 0xEE, 0xFE, 0x7C, 0x0E, 0x6E, 0x7C,
- 0x00, 0x38, 0x1C, 0x00, 0x7F, 0x7F, 0x70, 0xE0,
- 0xF8, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1C, 0x00, 0x7F, 0x7F, 0x70, 0xE0,
- 0xF8, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x77, 0x00, 0x7F, 0x7F, 0x70, 0xE0,
- 0xF8, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x77, 0x77, 0x00, 0x7F, 0x7F, 0x70, 0x70, 0xF8,
- 0xF8, 0xE0, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1C, 0x00, 0x1C, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x36, 0x1C, 0x1C, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x77, 0x77, 0x00, 0x1C, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7C, 0x7E, 0x77, 0x77, 0x76, 0xFE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0xF8, 0x00, 0x00, 0x00,
- 0x00, 0x3B, 0x6E, 0x00, 0x77, 0x77, 0x76, 0xF6,
- 0xFE, 0xDE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x1C, 0x00, 0x3E, 0x7F, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1C, 0x00, 0x3E, 0x7F, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x77, 0x00, 0x3E, 0x7F, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x3B, 0x6E, 0x00, 0x3E, 0x7F, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x77, 0x77, 0x00, 0x3E, 0x7F, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x76, 0x7C,
- 0x38, 0x38, 0x7C, 0xEE, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x3D, 0x7E, 0x77, 0x77, 0x77, 0x7E, 0xFE,
- 0xFE, 0xEE, 0xEE, 0xFE, 0x7C, 0x80, 0x00, 0x00,
- 0x00, 0x38, 0x1C, 0x00, 0x77, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1C, 0x00, 0x77, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x77, 0x00, 0x77, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x77, 0x77, 0x00, 0x77, 0x77, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1C, 0x00, 0x77, 0x77, 0x76, 0xEE,
- 0x7C, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x70, 0x70, 0x7E, 0x7F, 0x76, 0xEE,
- 0xEE, 0xFE, 0xFC, 0xE0, 0xE0, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x7F, 0x77, 0x77, 0x77, 0x7E, 0xFC,
- 0xEE, 0xEE, 0xEE, 0xFE, 0xFC, 0xE0, 0xC0, 0x00,
- 0x00, 0x00, 0x70, 0x38, 0x00, 0x3C, 0x3E, 0x0E,
- 0x3E, 0x7E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x38, 0x00, 0x3C, 0x3E, 0x0E,
- 0x3E, 0x7E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x7C, 0xEE, 0x00, 0x3C, 0x3E, 0x0E,
- 0x3E, 0x7E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x76, 0xDC, 0x00, 0x3C, 0x3E, 0x0E,
- 0x3E, 0x7E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xEE, 0xEE, 0x00, 0x3C, 0x3E, 0x0E,
- 0x3E, 0x7E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6C, 0x38, 0x00, 0x3C, 0x3E, 0x0E,
- 0x3E, 0x7E, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x3A, 0x3F, 0x3F, 0x1A,
- 0x7E, 0xFE, 0xD8, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFE,
- 0xEE, 0xE0, 0xEE, 0xFE, 0x7C, 0x1C, 0x7E, 0x7C,
- 0x00, 0x00, 0x38, 0x1C, 0x00, 0x3E, 0x7F, 0xEE,
- 0xFE, 0xFE, 0xE0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x38, 0x00, 0x3E, 0x7F, 0xEE,
- 0xFE, 0xFE, 0xE0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x3E, 0x77, 0x00, 0x3E, 0x7F, 0xEE,
- 0xFE, 0xFE, 0xE0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x00, 0x3E, 0x7F, 0xEE,
- 0xFE, 0xFE, 0xE0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0E, 0x1C, 0x00, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x3E, 0x77, 0x00, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x00, 0x1C, 0x1C, 0x38,
- 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0x3E, 0x7C, 0x7E, 0x3F, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x3B, 0x7F, 0x6E, 0x00, 0x7E, 0x7F, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x70, 0x38, 0x00, 0x3C, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x38, 0x00, 0x3C, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x3E, 0x77, 0x00, 0x3C, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x3B, 0x7F, 0x6E, 0x00, 0x3C, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x00, 0x3C, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x00, 0xFE,
- 0xFE, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x01, 0x3E, 0x7E, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7C, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0x70, 0x38, 0x00, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x38, 0x00, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x3E, 0x77, 0x00, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x00, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0E, 0x1C, 0x00, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x0E, 0xFE, 0xFC,
- 0x00, 0x00, 0x70, 0x70, 0x7E, 0x7F, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xEE, 0xFE, 0xFC, 0xE0, 0xE0,
- 0x00, 0x00, 0x77, 0x77, 0x00, 0x77, 0x76, 0xEE,
- 0xEE, 0xEE, 0xEE, 0xFE, 0x7E, 0x0E, 0xFE, 0xFC,
-};
-
-const struct fb_font_desc font_italic_bold = {
- .name = "NetSurf Italic Bold",
- .width = 8,
- .height = 16,
- .encoding = "CP1252",
- .data = fontdata_italic_bold,
-};
diff --git a/framebuffer/nsfont_regular.c b/framebuffer/nsfont_regular.c
deleted file mode 100644
index 829e3876b..000000000
--- a/framebuffer/nsfont_regular.c
+++ /dev/null
@@ -1,556 +0,0 @@
-/*
- * Licensed under the MIT License,
- * http://www.opensource.org/licenses/mit-license.php
- *
- * Copyright Tim Tyler
- * Copyright Michael Drake <tlsa@netsurf-browser.org>
- *
- * This font is based on the "Default" font with Zap 1.47 [TEST], which
- * was created for Zap by Tim Tyler. It was converted to a plain text
- * format and many glyphs added for use in the NetSurf project.
- *
- * Plain text font data:
- * http://source.netsurf-browser.org/?p=art.git;a=blob_plain;f=fonts/netsurf/glyph_data;hb=HEAD
- *
- * Zap: http://zap.tartarus.org/
- * NetSurf: http://www.netsurf-browser.org/
- *
- * Thanks to Tim Tyler for the original font and his permission to use it.
- * Thanks to James Aylett for helping track down Tim.
- * Thanks to Christian Ludlam for helping with Zap font info.
- *
- * Please contact Michael Drake if you want to contribute gylphs to
- * this font.
- */
-
-/* Don't edit this file, it was generated from the plain text source data. */
-
-#include "desktop/plotters.h"
-#include "utils/utf8.h"
-
-#include "framebuffer/font_internal.h"
-
-#define FONTDATAMAX 4096
-
-static const uint32_t fontdata_regular[FONTDATAMAX] = {
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xE4, 0xAC, 0xA4, 0xA4, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEC, 0xA2, 0xA4, 0xA8, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEC, 0xA2, 0xAC, 0xA2, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEA, 0xAA, 0xAE, 0xA2, 0xE2, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xA8, 0xAE, 0xA2, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xE6, 0xA8, 0xAE, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xA2, 0xA4, 0xA4, 0xE4, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xAA, 0xAE, 0xAA, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xAA, 0xAE, 0xA2, 0xE2, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xE4, 0xAA, 0xAE, 0xAA, 0xEA, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEC, 0xAA, 0xAC, 0xAA, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xE4, 0xAA, 0xA8, 0xAA, 0xE4, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEC, 0xAA, 0xAA, 0xAA, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xA8, 0xAC, 0xA8, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0xA8, 0xAC, 0xA8, 0xE8, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xCA, 0x4A, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x44, 0xCC, 0x44, 0x44, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4C, 0xC2, 0x44, 0x48, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4C, 0xC2, 0x4C, 0x42, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4A, 0xCA, 0x4E, 0x42, 0xE2, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xC8, 0x4E, 0x42, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x46, 0xC8, 0x4E, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xC2, 0x44, 0x44, 0xE4, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xCA, 0x4E, 0x4A, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xCA, 0x4E, 0x42, 0xE2, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x44, 0xCA, 0x4E, 0x4A, 0xEA, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4C, 0xCA, 0x4C, 0x4A, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x44, 0xCA, 0x48, 0x4A, 0xE4, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4C, 0xCA, 0x4A, 0x4A, 0xEC, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xC8, 0x4C, 0x48, 0xEE, 0x00, 0xFE,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0x4E, 0xC8, 0x4C, 0x48, 0xE8, 0x00, 0xFE,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x6C, 0x6C, 0x6C, 0x6C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x6C, 0x6C, 0x6C, 0xFE, 0xFE, 0x6C, 0x6C,
- 0xFE, 0xFE, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x7C, 0xFE, 0xD6, 0xD0, 0xF0, 0x7C,
- 0x1E, 0x16, 0xD6, 0xFE, 0x7C, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xCE, 0x1C,
- 0x38, 0x70, 0xE6, 0xC6, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xF8, 0xD8, 0xD8, 0xF8, 0x72, 0xFE,
- 0xDE, 0xCC, 0xCC, 0xFE, 0x7A, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x06, 0x0E, 0x1C, 0x18, 0x38, 0x30, 0x30, 0x30,
- 0x30, 0x38, 0x18, 0x1C, 0x0E, 0x06, 0x00, 0x00,
- 0x60, 0x70, 0x38, 0x18, 0x1C, 0x0C, 0x0C, 0x0C,
- 0x0C, 0x1C, 0x18, 0x38, 0x70, 0x60, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x6C, 0x6C, 0x38, 0xFE,
- 0xFE, 0x38, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x7E,
- 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x38, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x1C,
- 0x38, 0x70, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xCE, 0xCE, 0xD6, 0xD6,
- 0xE6, 0xE6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x38, 0x78, 0x78, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0x06, 0x06, 0x3E, 0x7C,
- 0xE0, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0x06, 0x06, 0x3C, 0x3C,
- 0x06, 0x06, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x0C, 0x1C, 0x3C, 0x7C, 0xEC, 0xFE,
- 0xFE, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0xFC, 0xFE,
- 0x06, 0x06, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x3C, 0x7C, 0xE0, 0xC0, 0xC0, 0xFC, 0xFE,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0xC6, 0x0E, 0x0C, 0x1C, 0x18,
- 0x38, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0xC6, 0x7C, 0x7C,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0xC6, 0xFE, 0x7E,
- 0x06, 0x06, 0x0E, 0x7C, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
- 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
- 0x00, 0x18, 0x18, 0x38, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0x70,
- 0x38, 0x1C, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x00,
- 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x70, 0x38, 0x1C, 0x0E, 0x0E,
- 0x1C, 0x38, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0x06, 0x1E, 0x3C,
- 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xCE, 0xDE, 0xD6, 0xD6,
- 0xDE, 0xCC, 0xC0, 0xFC, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0xC6, 0xFE, 0xFE,
- 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0xFC, 0xFE, 0xC6, 0xC6, 0xC6, 0xFC, 0xFC,
- 0xC6, 0xC6, 0xC6, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0,
- 0xC0, 0xC0, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xF8, 0xFC, 0xCE, 0xC6, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xCE, 0xFC, 0xF8, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8,
- 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8,
- 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xC0, 0xC0, 0xDE, 0xDE,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0xFE,
- 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x7E, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x7E, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
- 0x0C, 0x0C, 0xCC, 0xFC, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0xC0, 0xC6, 0xCE, 0xDC, 0xF8, 0xF0, 0xE0,
- 0xF0, 0xF8, 0xDC, 0xCE, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
- 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0xC6, 0xEE, 0xFE, 0xFE, 0xFE, 0xD6,
- 0xD6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0xC6, 0xE6, 0xE6, 0xF6, 0xF6, 0xDE,
- 0xDE, 0xCE, 0xCE, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xFC, 0xFE, 0xC6, 0xC6, 0xC6, 0xFE, 0xFC,
- 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xD6, 0xDE, 0xFE, 0x7C, 0x06, 0x00, 0x00,
- 0x00, 0xFC, 0xFE, 0xC6, 0xC6, 0xC6, 0xFC, 0xFC,
- 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xC0, 0xC0, 0xFC, 0x7E,
- 0x06, 0x06, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x7E, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xEE,
- 0x6C, 0x7C, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6,
- 0xD6, 0xFE, 0xFE, 0xEE, 0x44, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0xC6, 0xC6, 0xEE, 0x7C, 0x38, 0x38,
- 0x7C, 0xEE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xEE, 0x7C, 0x38,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0xFE, 0x0E, 0x0C, 0x1C, 0x18, 0x38,
- 0x30, 0x70, 0x60, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x3E, 0x3E, 0x30, 0x30, 0x30, 0x30, 0x30,
- 0x30, 0x30, 0x30, 0x3E, 0x3E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70,
- 0x38, 0x1C, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0x7C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
- 0x0C, 0x0C, 0x0C, 0x7C, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x7C, 0xEE, 0xC6, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00,
- 0x00, 0x00, 0x30, 0x30, 0x18, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x06,
- 0x7E, 0xFE, 0xC6, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0xC6,
- 0xC0, 0xC0, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x06, 0x06, 0x06, 0x06, 0x7E, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0xC6,
- 0xFE, 0xFE, 0xC0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x1E, 0x3E, 0x30, 0x30, 0x30, 0x78, 0x78,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x06, 0x7E, 0x7C,
- 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xDC, 0xFE, 0xE6,
- 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x38, 0x18,
- 0x18, 0x18, 0x18, 0x3C, 0x3C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0C, 0x0C, 0x00, 0x1C, 0x1C, 0x0C,
- 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x7C, 0x78,
- 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC6, 0xCE, 0xDC,
- 0xF8, 0xF8, 0xDC, 0xCE, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFE, 0xFE,
- 0xD6, 0xD6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xFE, 0xE6,
- 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0xFC, 0xC0, 0xC0, 0xC0,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x06, 0x07, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0xFE, 0xE0,
- 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0xC0,
- 0xFC, 0x7C, 0x06, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x30, 0x30, 0x30, 0x7C, 0xFC, 0x30,
- 0x30, 0x30, 0x30, 0x3E, 0x1E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xEE, 0x7C, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6,
- 0xD6, 0xD6, 0xFE, 0xFE, 0x6C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xEE,
- 0x7C, 0x7C, 0xEE, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x06, 0xFE, 0xFC,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x0E,
- 0x3C, 0x78, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x0E, 0x1E, 0x18, 0x18, 0x18, 0x70, 0x70,
- 0x18, 0x18, 0x18, 0x1E, 0x0E, 0x00, 0x00, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
- 0x00, 0x70, 0x78, 0x18, 0x18, 0x18, 0x0E, 0x0E,
- 0x18, 0x18, 0x18, 0x78, 0x70, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x76, 0xFE, 0xDC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xFE, 0x00, 0xEE, 0xAA, 0xAA, 0xAA, 0xEE,
- 0x00, 0xEE, 0x28, 0x4C, 0x48, 0x48, 0x00, 0xFE,
- 0x00, 0x18, 0x3C, 0x66, 0x60, 0xFC, 0x60, 0xF8,
- 0x60, 0x60, 0x66, 0x3C, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x08, 0x10, 0x00,
- 0x00, 0x1E, 0x3E, 0x30, 0x30, 0x30, 0x78, 0x78,
- 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0x60, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x66, 0x66, 0x22, 0x44, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xDB, 0xDB, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x18, 0x18, 0x7E, 0x7E, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00,
- 0x00, 0x18, 0x18, 0x18, 0x7E, 0x7E, 0x18, 0x7E,
- 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00,
- 0x00, 0x7C, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xC6, 0x0C,
- 0x18, 0x30, 0x60, 0xDB, 0x9B, 0x00, 0x00, 0x00,
- 0xC6, 0x7C, 0x00, 0x7C, 0xFE, 0xC6, 0xC0, 0xFC,
- 0x7E, 0x06, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1C,
- 0x38, 0x30, 0x38, 0x1C, 0x0C, 0x00, 0x00, 0x00,
- 0x00, 0x7F, 0xFF, 0xCC, 0xCC, 0xCC, 0xCF, 0xCF,
- 0xCC, 0xCC, 0xCC, 0xFF, 0x7F, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0xC6, 0x7C, 0x00, 0xFE, 0xFE, 0x06, 0x0C, 0x18,
- 0x30, 0x60, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x20, 0x30, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x30, 0x30, 0x10, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x24, 0x48, 0x6C, 0x6C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x36, 0x36, 0x12, 0x24, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E,
- 0x7E, 0x7E, 0x7E, 0x3C, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x32, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xF1, 0xFB, 0x5F, 0x55, 0x51, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0x6C, 0x38, 0x00, 0x7E, 0xFE, 0xC0,
- 0xFC, 0x7C, 0x06, 0xFE, 0xFC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38,
- 0x1C, 0x0C, 0x1C, 0x38, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xFE, 0xDA,
- 0xDE, 0xDE, 0xD8, 0xFE, 0x6E, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x38, 0x6C, 0x54, 0xF6, 0xEE,
- 0x6C, 0x7C, 0x28, 0x38, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0xC6, 0x6C, 0x38, 0x00, 0xFE, 0xFE, 0x0E,
- 0x3C, 0x78, 0xE0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xEE, 0x7C,
- 0x38, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
- 0x00, 0x00, 0x00, 0x10, 0x10, 0x7C, 0xFE, 0xD6,
- 0xD0, 0xD0, 0xD6, 0xFE, 0x7C, 0x10, 0x10, 0x00,
- 0x00, 0x3C, 0x7E, 0x66, 0x60, 0x60, 0xF8, 0xF8,
- 0x60, 0x60, 0xE6, 0xFE, 0xDC, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x3C, 0x7E,
- 0x66, 0x66, 0x7E, 0x3C, 0x66, 0x66, 0x00, 0x00,
- 0x00, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E,
- 0x18, 0x7E, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00,
- 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x3C, 0x7C, 0x60, 0x60, 0x3C, 0x7E, 0x66,
- 0x7E, 0x3C, 0x06, 0x06, 0x3E, 0x3C, 0x00, 0x00,
- 0x00, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x3C, 0x7E, 0xC3, 0x99, 0xBD, 0xA5, 0xA1,
- 0xA5, 0xBD, 0x99, 0xC3, 0x7E, 0x3C, 0x00, 0x00,
- 0x00, 0x70, 0x08, 0x78, 0x88, 0x78, 0x00, 0xF8,
- 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36,
- 0x6C, 0xD8, 0xD8, 0x6C, 0x36, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x7E, 0x7E, 0x06, 0x02, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x3C, 0x7E, 0xC3, 0xB9, 0xBD, 0xA5, 0xB9,
- 0xB9, 0xA5, 0xA5, 0xC3, 0x7E, 0x3C, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x78, 0xFC, 0xCC, 0xFC, 0x78, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x7E, 0x18,
- 0x18, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xF0, 0xF8, 0x18, 0x78, 0xF0, 0xC0,
- 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xF0, 0xF8, 0x18, 0x30, 0x18, 0xF8,
- 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x30, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66,
- 0x66, 0x66, 0x66, 0x7E, 0x7C, 0x60, 0x60, 0xC0,
- 0x00, 0x00, 0x00, 0x7F, 0xDB, 0xDB, 0xDB, 0x7B,
- 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
- 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x1C, 0x0C, 0x1C, 0x18, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0xE0, 0x60, 0x60, 0x60, 0xF0,
- 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xF8, 0x88, 0xF8, 0x70, 0x00, 0xF8,
- 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8,
- 0x6C, 0x36, 0x36, 0x6C, 0xD8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0xC0, 0x42, 0x46, 0xEC, 0x18,
- 0x30, 0x64, 0xCC, 0x94, 0x3E, 0x04, 0x04, 0x00,
- 0x00, 0x00, 0x40, 0xC0, 0x42, 0x46, 0xEC, 0x18,
- 0x30, 0x60, 0xDC, 0x82, 0x0C, 0x10, 0x1E, 0x00,
- 0x00, 0x00, 0xE0, 0x10, 0x62, 0x16, 0xEC, 0x18,
- 0x30, 0x64, 0xCC, 0x96, 0x3E, 0x04, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18,
- 0x78, 0xF0, 0xC0, 0xC6, 0xC6, 0xFE, 0x7C, 0x00,
- 0x00, 0x60, 0x30, 0x00, 0x10, 0x38, 0x6C, 0xC6,
- 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x18, 0x00, 0x10, 0x38, 0x6C, 0xC6,
- 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6C, 0x44, 0x10, 0x38, 0x6C, 0xC6,
- 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0xDC, 0x00, 0x10, 0x38, 0x6C, 0xC6,
- 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x6C, 0x6C, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xFE,
- 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x44, 0x38, 0x38, 0x6C, 0xC6, 0xFE,
- 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x1F, 0x3F, 0x7C, 0xEC, 0xCC, 0xFE, 0xFE,
- 0xCC, 0xCC, 0xCC, 0xCF, 0xCF, 0x00, 0x00, 0x00,
- 0x00, 0x7C, 0xFE, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0,
- 0xC0, 0xC0, 0xC6, 0xFE, 0x7C, 0x0E, 0x66, 0x3C,
- 0x00, 0x30, 0x18, 0x00, 0xFE, 0xFE, 0xC0, 0xF0,
- 0xF0, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x18, 0x00, 0xFE, 0xFE, 0xC0, 0xF0,
- 0xF0, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6C, 0x00, 0xFE, 0xFE, 0xC0, 0xF0,
- 0xF0, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x6C, 0x6C, 0x00, 0xFE, 0xFE, 0xC0, 0xC0, 0xF0,
- 0xF0, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00, 0x00,
- 0x00, 0x30, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x24, 0x18, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x66, 0x66, 0x00, 0x18, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x78, 0x7C, 0x6E, 0x66, 0x66, 0xF6,
- 0x66, 0x66, 0x6E, 0x7C, 0x78, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0xDC, 0x00, 0xC6, 0xC6, 0xE6, 0xF6,
- 0xFE, 0xDE, 0xCE, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x30, 0x18, 0x00, 0x7C, 0xFE, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x18, 0x00, 0x7C, 0xFE, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6C, 0x00, 0x7C, 0xFE, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0xDC, 0x00, 0x7C, 0xFE, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x6C, 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xEE, 0x7C,
- 0x38, 0x38, 0x7C, 0xEE, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x7E, 0xFE, 0xC6, 0xC6, 0xCE, 0xCE, 0xD6,
- 0xD6, 0xE6, 0xE6, 0xFE, 0x7C, 0x80, 0x00, 0x00,
- 0x00, 0x30, 0x18, 0x00, 0xC6, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x18, 0x00, 0xC6, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x6C, 0x6C, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x0C, 0x18, 0x00, 0x66, 0x66, 0x66, 0x7E,
- 0x3C, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x60, 0x7C, 0x7E, 0x66, 0x66,
- 0x7E, 0x7C, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
- 0x00, 0x3C, 0x7E, 0x66, 0x66, 0x66, 0x7E, 0x7C,
- 0x66, 0x66, 0x66, 0x7E, 0x7C, 0xE0, 0xC0, 0x00,
- 0x00, 0x00, 0x30, 0x18, 0x00, 0x7E, 0xFE, 0xC6,
- 0xC6, 0xCE, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x30, 0x00, 0x7E, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7E, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x76, 0xDC, 0x00, 0x7E, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x7E, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x38, 0x6C, 0x38, 0x00, 0x7E, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x7E, 0x1A,
- 0x3E, 0x7E, 0xD8, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE,
- 0xC6, 0xC0, 0xC6, 0xFE, 0x7C, 0x18, 0x7C, 0x78,
- 0x00, 0x00, 0x30, 0x18, 0x00, 0x7C, 0xFE, 0xC6,
- 0xFE, 0xFE, 0xC0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x30, 0x00, 0x7C, 0xFE, 0xC6,
- 0xFE, 0xFE, 0xC0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7C, 0xFE, 0xC6,
- 0xFE, 0xFE, 0xC0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x7C, 0xFE, 0xC6,
- 0xFE, 0xFE, 0xC0, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x30, 0x18, 0x00, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x18, 0x3C, 0x66, 0x00, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x66, 0x66, 0x00, 0x18, 0x18, 0x18,
- 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x6C, 0x7C, 0xF8, 0xDC, 0x7C, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0xFE, 0xDC, 0x00, 0xFC, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x30, 0x00, 0x7C, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x30, 0x00, 0x7C, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6C, 0x00, 0x7C, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x76, 0xFE, 0xDC, 0x00, 0x7C, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x7C, 0xFE, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7E,
- 0x7E, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x7C, 0xFE, 0xCE,
- 0xD6, 0xD6, 0xE6, 0xFE, 0x7C, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0x60, 0x30, 0x00, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x18, 0x30, 0x00, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x38, 0x6C, 0x00, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x6C, 0x6C, 0x00, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0C, 0x18, 0x00, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x06, 0xFC, 0xF8,
- 0x00, 0x00, 0x60, 0x60, 0x60, 0x7C, 0x7E, 0x66,
- 0x66, 0x66, 0x66, 0x7E, 0x7C, 0x60, 0x60, 0x60,
- 0x00, 0x00, 0x6C, 0x6C, 0x00, 0xC6, 0xC6, 0xC6,
- 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x06, 0xFE, 0xFC,
-};
-
-const struct fb_font_desc font_regular = {
- .name = "NetSurf Regular",
- .width = 8,
- .height = 16,
- .encoding = "CP1252",
- .data = fontdata_regular,
-};
diff --git a/framebuffer/res/messages b/framebuffer/res/Messages
index f4a4d2bba..f4a4d2bba 120000
--- a/framebuffer/res/messages
+++ b/framebuffer/res/Messages
diff --git a/framebuffer/res/fonts/glyph_data b/framebuffer/res/fonts/glyph_data
new file mode 100644
index 000000000..c4bb2b1cb
--- /dev/null
+++ b/framebuffer/res/fonts/glyph_data
@@ -0,0 +1,9489 @@
+* Licensed under the MIT License,
+* http://www.opensource.org/licenses/mit-license.php
+*
+* Copyright Tim Tyler
+* Copyright Michael Drake <tlsa@netsurf-browser.org>
+*
+* This font is based on the "Default" font with Zap 1.47 [TEST], which
+* was created for Zap by Tim Tyler. It was converted to a plain text
+* format and many glyphs added for use in the NetSurf project.
+*
+* Plain text font data:
+* http://git.netsurf-browser.org/art.git/plain/fonts/netsurf/glyph_data
+*
+* Zap: http://zap.tartarus.org/
+* NetSurf: http://www.netsurf-browser.org/
+*
+* Thanks to Tim Tyler for the original font and his permission to use it.
+* Thanks to James Aylett for helping track down Tim.
+* Thanks to Christian Ludlam for helping with Zap font info.
+*
+* Please contact Michael Drake if you want to contribute gylphs to
+* this font.
+
+-----------------------------------------------------
+ Regular Italic Bold Bold &
+ Italic
+-----------------------------------------------------
+U+0000 - NULL <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.###. ###.###. ###.###. ###.###.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0001 - START OF HEADING <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###..#.. ###..#.. ###..#.. ###..#..
+ #.#.##.. #.#.##.. #.#.##.. #.#.##..
+ #.#..#.. #.#..#.. #.#..#.. #.#..#..
+ #.#..#.. #.#..#.. #.#..#.. #.#..#..
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0002 - START OF TEXT <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.##.. ###.##.. ###.##.. ###.##..
+ #.#...#. #.#...#. #.#...#. #.#...#.
+ #.#..#.. #.#..#.. #.#..#.. #.#..#..
+ #.#.#... #.#.#... #.#.#... #.#.#...
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0003 - END OF TEXT <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.##.. ###.##.. ###.##.. ###.##..
+ #.#...#. #.#...#. #.#...#. #.#...#.
+ #.#.##.. #.#.##.. #.#.##.. #.#.##..
+ #.#...#. #.#...#. #.#...#. #.#...#.
+ ###.##.. ###.##.. ###.##.. ###.##..
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0004 - END OF TRANSMISSION <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.#.#. ###.#.#. ###.#.#. ###.#.#.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ #.#.###. #.#.###. #.#.###. #.#.###.
+ #.#...#. #.#...#. #.#...#. #.#...#.
+ ###...#. ###...#. ###...#. ###...#.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0005 - ENQUIRY <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.###. ###.###. ###.###. ###.###.
+ #.#.#... #.#.#... #.#.#... #.#.#...
+ #.#.###. #.#.###. #.#.###. #.#.###.
+ #.#...#. #.#...#. #.#...#. #.#...#.
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0006 - ACKNOWLEDGE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###..##. ###..##. ###..##. ###..##.
+ #.#.#... #.#.#... #.#.#... #.#.#...
+ #.#.###. #.#.###. #.#.###. #.#.###.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0007 - BELL <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.###. ###.###. ###.###. ###.###.
+ #.#...#. #.#...#. #.#...#. #.#...#.
+ #.#..#.. #.#..#.. #.#..#.. #.#..#..
+ #.#..#.. #.#..#.. #.#..#.. #.#..#..
+ ###..#.. ###..#.. ###..#.. ###..#..
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0008 - BACKSPACE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.###. ###.###. ###.###. ###.###.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ #.#.###. #.#.###. #.#.###. #.#.###.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0009 - CHARACTER TABULATION <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.###. ###.###. ###.###. ###.###.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ #.#.###. #.#.###. #.#.###. #.#.###.
+ #.#...#. #.#...#. #.#...#. #.#...#.
+ ###...#. ###...#. ###...#. ###...#.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+000A - LINE FEED (LF) <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###..#.. ###..#.. ###..#.. ###..#..
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ #.#.###. #.#.###. #.#.###. #.#.###.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ ###.#.#. ###.#.#. ###.#.#. ###.#.#.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+000B - LINE TABULATION <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.##.. ###.##.. ###.##.. ###.##..
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ #.#.##.. #.#.##.. #.#.##.. #.#.##..
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ ###.##.. ###.##.. ###.##.. ###.##..
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+000C - FORM FEED (FF) <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###..#.. ###..#.. ###..#.. ###..#..
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ #.#.#... #.#.#... #.#.#... #.#.#...
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ ###..#.. ###..#.. ###..#.. ###..#..
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+000D - CARRIAGE RETURN (CR) <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.##.. ###.##.. ###.##.. ###.##..
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ #.#.#.#. #.#.#.#. #.#.#.#. #.#.#.#.
+ ###.##.. ###.##.. ###.##.. ###.##..
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+000E - SHIFT OUT <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.###. ###.###. ###.###. ###.###.
+ #.#.#... #.#.#... #.#.#... #.#.#...
+ #.#.##.. #.#.##.. #.#.##.. #.#.##..
+ #.#.#... #.#.#... #.#.#... #.#.#...
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+000F - SHIFT IN <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.###. ###.###. ###.###. ###.###.
+ #.#.#... #.#.#... #.#.#... #.#.#...
+ #.#.##.. #.#.##.. #.#.##.. #.#.##..
+ #.#.#... #.#.#... #.#.#... #.#.#...
+ ###.#... ###.#... ###.#... ###.#...
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0010 - DATA LINK ESCAPE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..###. .#..###. .#..###. .#..###.
+ ##..#.#. ##..#.#. ##..#.#. ##..#.#.
+ .#..#.#. .#..#.#. .#..#.#. .#..#.#.
+ .#..#.#. .#..#.#. .#..#.#. .#..#.#.
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0011 - DEVICE CONTROL ONE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#...#.. .#...#.. .#...#.. .#...#..
+ ##..##.. ##..##.. ##..##.. ##..##..
+ .#...#.. .#...#.. .#...#.. .#...#..
+ .#...#.. .#...#.. .#...#.. .#...#..
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0012 - DEVICE CONTROL TWO <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..##.. .#..##.. .#..##.. .#..##..
+ ##....#. ##....#. ##....#. ##....#.
+ .#...#.. .#...#.. .#...#.. .#...#..
+ .#..#... .#..#... .#..#... .#..#...
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0013 - DEVICE CONTROL THREE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..##.. .#..##.. .#..##.. .#..##..
+ ##....#. ##....#. ##....#. ##....#.
+ .#..##.. .#..##.. .#..##.. .#..##..
+ .#....#. .#....#. .#....#. .#....#.
+ ###.##.. ###.##.. ###.##.. ###.##..
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0014 - DEVICE CONTROL FOUR <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..#.#. .#..#.#. .#..#.#. .#..#.#.
+ ##..#.#. ##..#.#. ##..#.#. ##..#.#.
+ .#..###. .#..###. .#..###. .#..###.
+ .#....#. .#....#. .#....#. .#....#.
+ ###...#. ###...#. ###...#. ###...#.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0015 - NEGATIVE ACKNOWLEDGE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..###. .#..###. .#..###. .#..###.
+ ##..#... ##..#... ##..#... ##..#...
+ .#..###. .#..###. .#..###. .#..###.
+ .#....#. .#....#. .#....#. .#....#.
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0016 - SYNCHRONOUS IDLE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#...##. .#...##. .#...##. .#...##.
+ ##..#... ##..#... ##..#... ##..#...
+ .#..###. .#..###. .#..###. .#..###.
+ .#..#.#. .#..#.#. .#..#.#. .#..#.#.
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0017 - END OF TRANSMISSION BLOCK <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..###. .#..###. .#..###. .#..###.
+ ##....#. ##....#. ##....#. ##....#.
+ .#...#.. .#...#.. .#...#.. .#...#..
+ .#...#.. .#...#.. .#...#.. .#...#..
+ ###..#.. ###..#.. ###..#.. ###..#..
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0018 - CANCEL <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..###. .#..###. .#..###. .#..###.
+ ##..#.#. ##..#.#. ##..#.#. ##..#.#.
+ .#..###. .#..###. .#..###. .#..###.
+ .#..#.#. .#..#.#. .#..#.#. .#..#.#.
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0019 - END OF MEDIUM <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..###. .#..###. .#..###. .#..###.
+ ##..#.#. ##..#.#. ##..#.#. ##..#.#.
+ .#..###. .#..###. .#..###. .#..###.
+ .#....#. .#....#. .#....#. .#....#.
+ ###...#. ###...#. ###...#. ###...#.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+001A - SUBSTITUTE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#...#.. .#...#.. .#...#.. .#...#..
+ ##..#.#. ##..#.#. ##..#.#. ##..#.#.
+ .#..###. .#..###. .#..###. .#..###.
+ .#..#.#. .#..#.#. .#..#.#. .#..#.#.
+ ###.#.#. ###.#.#. ###.#.#. ###.#.#.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+001B - ESCAPE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..##.. .#..##.. .#..##.. .#..##..
+ ##..#.#. ##..#.#. ##..#.#. ##..#.#.
+ .#..##.. .#..##.. .#..##.. .#..##..
+ .#..#.#. .#..#.#. .#..#.#. .#..#.#.
+ ###.##.. ###.##.. ###.##.. ###.##..
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+001C - INFORMATION SEPARATOR FOUR <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#...#.. .#...#.. .#...#.. .#...#..
+ ##..#.#. ##..#.#. ##..#.#. ##..#.#.
+ .#..#... .#..#... .#..#... .#..#...
+ .#..#.#. .#..#.#. .#..#.#. .#..#.#.
+ ###..#.. ###..#.. ###..#.. ###..#..
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+001D - INFORMATION SEPARATOR THREE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..##.. .#..##.. .#..##.. .#..##..
+ ##..#.#. ##..#.#. ##..#.#. ##..#.#.
+ .#..#.#. .#..#.#. .#..#.#. .#..#.#.
+ .#..#.#. .#..#.#. .#..#.#. .#..#.#.
+ ###.##.. ###.##.. ###.##.. ###.##..
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+001E - INFORMATION SEPARATOR TWO <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..###. .#..###. .#..###. .#..###.
+ ##..#... ##..#... ##..#... ##..#...
+ .#..##.. .#..##.. .#..##.. .#..##..
+ .#..#... .#..#... .#..#... .#..#...
+ ###.###. ###.###. ###.###. ###.###.
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+001F - INFORMATION SEPARATOR ONE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ .#..###. .#..###. .#..###. .#..###.
+ ##..#... ##..#... ##..#... ##..#...
+ .#..##.. .#..##.. .#..##.. .#..##..
+ .#..#... .#..#... .#..#... .#..#...
+ ###.#... ###.#... ###.#... ###.#...
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+0020 - SPACE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0021 - EXCLAMATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...##... .....##. ...###.. ....###.
+ ...##... .....##. ...###.. ....###.
+ ...##... .....##. ...###.. ....###.
+ ...##... .....##. ...###.. ....###.
+ ...##... ....##.. ...###.. ...###..
+ ...##... ....##.. ...###.. ...###..
+ ...##... ....##.. ...###.. ...###..
+ ...##... ....##.. ...###.. ...###..
+ ...##... ...##... ........ ........
+ ........ ........ ...###.. ..###...
+ ...##... ...##... ...###.. ..###...
+ ...##... ...##... ...###.. ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0022 - QUOTATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##.##.. ...##.## ###.###. .###.###
+ .##.##.. ...##.## ###.###. .###.###
+ .##.##.. ..##.##. ###.###. .###.###
+ .##.##.. ..##.##. ###.###. .###.###
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0023 - NUMBER SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .##.##.. ...##.## .##.##.. ..##.##.
+ .##.##.. ...##.## .##.##.. ..##.##.
+ .##.##.. ...##.## #######. .#######
+ #######. .####### #######. .#######
+ #######. .####### #######. .#######
+ .##.##.. ..##.##. .##.##.. ..##.##.
+ .##.##.. ..##.##. .##.##.. .##.##..
+ #######. ######## #######. #######.
+ #######. ######## #######. #######.
+ .##.##.. .##.##.. #######. #######.
+ .##.##.. .##.##.. .##.##.. .##.##..
+ .##.##.. .##.##.. .##.##.. .##.##..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0024 - DOLLAR SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...#.... .....#.. ...#.... ....#...
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##.#.##. .##.#.## ####.##. .####.##
+ ##.#.... .##.#... ####.... .####...
+ ####.... .####... #####... .#####..
+ .#####.. ..####.. .#####.. .#####..
+ ...####. ...####. ..#####. ..#####.
+ ...#.##. ...#.##. ...####. ...####.
+ ##.#.##. ##.#.##. ##.####. ##.####.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ...#.... ..#..... ...#.... ...#....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0025 - PERCENT SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ###..... .###....
+ ##...##. ##...##. ###..##. .###..##
+ ##..###. ##..###. ###.###. .###.###
+ ...###.. ...###.. ...###.. ....###.
+ ..###... ..###... ..###... ..####..
+ .###.... .###.... .###.... .###....
+ ###..##. ###..##. ###.###. ###.###.
+ ##...##. ##...##. ##..###. ##..###.
+ ........ ........ ....###. ....###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0026 - AMPERSAND
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .###.... ...###.. .###.... ...###..
+ #####... ..#####. #####... ..#####.
+ ##.##... ..##.##. #####... .######.
+ ##.##... ..##.##. #####... .#####..
+ #####... ..####.. #####... .#####..
+ .###..#. ..###..# .###.##. ..###.##
+ #######. .####### #######. #######.
+ ##.####. .##.###. #######. #######.
+ ##..##.. ##..##.. ###.##.. ###.##..
+ ##..##.. ##..##.. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .####.#. .####.#. .###.##. .###.#..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0027 - APOSTROPHE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0028 - LEFT PARENTHESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ .....##. .....##. .....##. ......##
+ ....###. ....###. ....##.. .....##.
+ ...###.. ...###.. ...###.. ....###.
+ ...##... ..###... ..###... ...###..
+ ..###... ..##.... ..###... ...###..
+ ..##.... .##..... .###.... ..###...
+ ..##.... .##..... .###.... ..###...
+ ..##.... ##...... .###.... .###....
+ ..##.... ##...... .###.... .###....
+ ..###... ##...... .###.... .###....
+ ...##... ##...... ..###... ..###...
+ ...###.. ##...... ..###... ..###...
+ ....###. ###..... ...###.. ...###..
+ .....##. .###.... ....##.. ....##..
+ ........ ..##.... .....##. .....##.
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0029 - RIGHT PARENTHESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ .##..... ...##... .##..... .##.....
+ .###.... ...###.. ..##.... ..##....
+ ..###... ....###. ..###... ..###...
+ ...##... .....##. ...###.. ...###..
+ ...###.. .....##. ...###.. ...###..
+ ....##.. .....##. ....###. ....###.
+ ....##.. .....##. ....###. ....###.
+ ....##.. .....##. ....###. ....###.
+ ....##.. ....##.. ....###. ...###..
+ ...###.. ....##.. ....###. ...###..
+ ...##... ...##... ...###.. ..###...
+ ..###... ..###... ...###.. ..###...
+ .###.... .###.... ..###... .###....
+ .##..... ###..... ..##.... .##.....
+ ........ ##...... .##..... ##......
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+002A - ASTERISK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ...#.... ....#...
+ .##.##.. ..##.##. .#.#.#.. ..#.#.#.
+ .##.##.. ..##.##. #######. .#######
+ ..###... ...###.. .#####.. ..#####.
+ #######. .####### ..###... ...##...
+ #######. #######. .#####.. .#####..
+ ..###... ..###... #######. #######.
+ .##.##.. .##.##.. .#.#.#.. .#.#.#..
+ .##.##.. .##.##.. ...#.... ...#....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+002B - PLUS SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ........ ........ ........
+ ...##... ...##... ..###... ...###..
+ .######. ...##... ..###... ...###..
+ .######. .######. #######. .######.
+ ...##... ######.. #######. .######.
+ ...##... ..##.... ..###... ..###...
+ ........ ..##.... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+002C - COMMA
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ...##... ..###... ..###...
+ ..###... ..###... .####... .####...
+ ..##.... .###.... .###.... .###....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+002D - HYPHEN-MINUS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .######. .######. ........ ........
+ .######. ######.. #######. #######.
+ ........ ........ #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+002E - FULL STOP
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+002F - SOLIDUS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .....##. .....##. ....###. .....###
+ ....###. ....###. ...####. ....####
+ ...###.. ...###.. ..####.. ..####..
+ ..###... ..###... .####... .####...
+ .###.... .###.... ####.... ####....
+ ###..... ###..... ###..... ###.....
+ ##...... ##...... ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0030 - DIGIT ZERO
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. ..###... ...###..
+ #######. ..###### .#####.. ..#####.
+ ##...##. ..##..## ###.###. .###.###
+ ##..###. ..##..## ###.###. .###.###
+ ##..###. .##..### ###.###. .###.###
+ ##.#.##. .##.###. ###.###. .###.###
+ ##.#.##. .###.##. ###.###. ###.###.
+ ###..##. ###..##. ###.###. ###.###.
+ ###..##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ #######. ######.. .#####.. .#####..
+ .#####.. .####... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0031 - DIGIT ONE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...##... .....##. ...##... ....##..
+ ..###... ....###. ..###... ...###..
+ .####... ...####. .####... ..####..
+ .####... ..####.. .####... ..####..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0032 - DIGIT TWO
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ .....##. ......## ....###. .....###
+ .....##. .....### ....###. .....###
+ ..#####. ...####. .######. ..#####.
+ .#####.. .#####.. ######.. .#####..
+ ###..... .##..... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ #######. ######.. #######. #######.
+ #######. ######.. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0033 - DIGIT THREE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ .....##. ......## ....###. .....###
+ .....##. .....##. ....###. .....###
+ ..####.. ...####. ..####.. ...####.
+ ..####.. ...####. ..####.. ..####..
+ .....##. .....##. ....###. ....###.
+ .....##. .....##. ....###. ....###.
+ ##...##. ##..##.. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0034 - DIGIT FOUR
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .....#.. .......# .....#.. ......#.
+ ....##.. ......## ....##.. .....##.
+ ...###.. .....### ...###.. ....###.
+ ..####.. ....#### ..####.. ...####.
+ .#####.. ...####. .#####.. ..#####.
+ ###.##.. ..##.##. .##.##.. .###.##.
+ #######. .####### ###.##.. ###.##..
+ #######. .####### #######. #######.
+ ....##.. ....##.. #######. #######.
+ ....##.. ....##.. ...###.. ...###..
+ ....##.. ...##... ...###.. ...###..
+ ....##.. ...##... ...###.. ...###..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0035 - DIGIT FIVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. ...##### #######. .#######
+ #######. ...##### #######. .#######
+ ##...... ..##.... ###..... .###....
+ ##...... ..##.... ###..... .###....
+ ##...... .#####.. ######.. .#####..
+ ######.. .######. #######. .######.
+ #######. .....##. ....###. ....###.
+ .....##. .....##. ....###. ....###.
+ .....##. .....##. ....###. ....###.
+ ##...##. ##..###. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0036 - DIGIT SIX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..####.. ....#### .#####.. ..#####.
+ .#####.. ...##### ######.. .######.
+ ###..... ..###... ###..... .###....
+ ##...... ..##.... ###..... .###....
+ ##...... .##..... ######.. .#####..
+ ######.. .#####.. #######. .######.
+ #######. .######. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0037 - DIGIT SEVEN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. ..###### #######. .#######
+ #######. .####### #######. .#######
+ ##...##. .##...## ....###. .....###
+ ....###. ......## ....###. .....###
+ ....##.. .....##. ...###.. ....###.
+ ...###.. .....##. ...###.. ....###.
+ ...##... ....##.. ...###.. ...###..
+ ..###... ....##.. ..###... ..###...
+ ..##.... ...##... ..###... ..###...
+ ..##.... ...##... ..###... ..###...
+ ..##.... ..##.... ..###... ..###...
+ ..##.... ..##.... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0038 - DIGIT EIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## #######. .#######
+ .#####.. ...####. .#####.. ..#####.
+ .#####.. .#####.. #######. .######.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0039 - DIGIT NINE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ #######. .######. #######. .#######
+ .######. ..#####. .######. ..#####.
+ .....##. .....##. ....###. ....###.
+ .....##. ....##.. ....###. ....###.
+ ....###. ...###.. ....###. ....###.
+ .#####.. #####... .#####.. .#####..
+ .####... ####.... .####... .####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+003A - COLON
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ........ ........ ........
+ ...##... ...##... ..###... ..###...
+ ........ ...##... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+003B - SEMICOLON
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ........ ...##... ...##...
+ ...##... ...##... ..###... ..###...
+ ..###... ..###... ..###... ..###...
+ ..##.... ..##.... ..##.... ..##....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+003C - LESS-THAN SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .....##. .....##. ........ ........
+ ....###. ....###. .....##. ......##
+ ...###.. ...###.. ....###. .....###
+ ..###... ..###... ...###.. ....###.
+ .###.... .###.... ..###... ...###..
+ .###.... .###.... .###.... .###....
+ ..###... .###.... .###.... .###....
+ ...###.. ..###... ..###... ..###...
+ ....###. ...###.. ...###.. ...###..
+ .....##. ....##.. ....###. ....###.
+ ........ ........ .....##. .....##.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+003D - EQUALS SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .######. ..#####. ........ ........
+ .######. .#####.. #######. .#######
+ ........ ........ #######. .#######
+ ........ ........ ........ ........
+ .######. .#####.. ........ ........
+ .######. #####... #######. #######.
+ ........ ........ #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+003E - GREATER-THAN SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..... ...##... ........ ........
+ .###.... ...##... .##..... ..##....
+ ..###... ....##.. .###.... ..###...
+ ...###.. ....##.. ..###... ...###..
+ ....###. .....##. ...###.. ....###.
+ ....###. ....###. ....###. ....###.
+ ...###.. ...###.. ....###. ....###.
+ ..###... ..###... ...###.. ...###..
+ .###.... .###.... ..###... ..###...
+ .##..... .##..... .###.... .###....
+ ........ ........ .##..... .##.....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+003F - QUESTION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ....###. .....###
+ .....##. ......## ....###. .....###
+ ...####. .....### ..#####. ...####.
+ ..####.. ....###. .#####.. .#####..
+ ..##.... ...###.. .###.... .###....
+ ..##.... ...##... ........ ........
+ ........ ........ .###.... .###....
+ ..##.... ..##.... .###.... .###....
+ ..##.... ..##.... ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0040 - COMMERCIAL AT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##..###. .##...## ###.###. .###.###
+ ##.####. .##.#### ###.###. .###.###
+ ##.#.##. .##.#.## #######. .#######
+ ##.#.##. .##.#.## #######. #######.
+ ##.####. ##..#### ###.##.. ###.##..
+ ##..##.. ##..###. ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ######.. ######.. ######.. ######..
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0041 - LATIN CAPITAL LETTER A
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.###
+ #######. .######. ###.###. .###.##.
+ #######. .######. #######. #######.
+ ##...##. .##..##. #######. #######.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0042 - LATIN CAPITAL LETTER B
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ######.. ..#####. ######.. .######.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ######.. .######. ######.. .######.
+ ######.. .#####.. ######.. ######..
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ ######.. ######.. ######.. ######..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0043 - LATIN CAPITAL LETTER C
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...... ..##.... ###.###. .###.###
+ ##...... .##..... ###..... .###....
+ ##...... .##..... ###..... .###....
+ ##...... .##..... ###..... ###.....
+ ##...... .##..... ###..... ###.....
+ ##...... ##...... ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0044 - LATIN CAPITAL LETTER D
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #####... ..#####. #####... .#####..
+ ######.. ..###### ######.. .######.
+ ##..###. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##....## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##..###. ##..###. ###.###. ###.###.
+ ######.. ######.. ######.. ######..
+ #####... #####... #####... #####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0045 - LATIN CAPITAL LETTER E
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. ..###### #######. .#######
+ #######. ..###### #######. .#######
+ ##...... ..##.... ###..... .###....
+ ##...... ..##.... ###..... .###....
+ ##...... .##..... ###..... .###....
+ #####... .#####.. #####... .#####..
+ #####... .#####.. #####... #####...
+ ##...... .##..... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0046 - LATIN CAPITAL LETTER F
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. ..###### #######. .#######
+ #######. ..###### #######. .#######
+ ##...... ..##.... ###..... .###....
+ ##...... ..##.... ###..... .###....
+ ##...... .##..... ###..... .###....
+ #####... .#####.. #####... .#####..
+ #####... .#####.. #####... #####...
+ ##...... .##..... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0047 - LATIN CAPITAL LETTER G
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...... ..##.... ###.###. .###.###
+ ##...... .##..... ###..... .###....
+ ##.####. .##..... ###..... .###....
+ ##.####. .##.###. #######. #######.
+ ##...##. .##.###. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..###. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0048 - LATIN CAPITAL LETTER H
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.###
+ #######. .######. #######. .######.
+ #######. .######. #######. #######.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0049 - LATIN CAPITAL LETTER I
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .######. ..###### #######. .#######
+ .######. ..###### #######. .#######
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ...##... ..###... ...###..
+ ...##... ...##... ..###... ...###..
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ .######. ######.. #######. #######.
+ .######. ######.. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+004A - LATIN CAPITAL LETTER J
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ....##.. ......## ....###. .....###
+ ....##.. ......## ....###. .....###
+ ....##.. ......## ....###. .....###
+ ....##.. ......## ....###. .....###
+ ....##.. .....##. ....###. .....###
+ ....##.. .....##. ....###. .....##.
+ ....##.. .....##. ....###. ....###.
+ ....##.. .....##. ....###. ....###.
+ ....##.. ....##.. ###.###. ###.###.
+ ##..##.. ##..##.. ###.###. ###.###.
+ ######.. ######.. #######. #######.
+ .####... .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+004B - LATIN CAPITAL LETTER K
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...... ..##.... ###..... .###....
+ ##...##. ..##.... ###..##. .###....
+ ##..###. ..##..## ###.###. .###..#.
+ ##.###.. ..##.##. #######. .###.###
+ #####... .#####.. ######.. .#######
+ ####.... .####... #####... .######.
+ ###..... .###.... ####.... #####...
+ ####.... .####... #####... #####...
+ #####... #####... ######.. ######..
+ ##.###.. ##.###.. #######. #######.
+ ##..###. ##..###. ###.###. ###.###.
+ ##...##. ##...##. ###..##. ###..##.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+004C - LATIN CAPITAL LETTER L
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...... ..##.... ###..... .###....
+ ##...... ..##.... ###..... .###....
+ ##...... ..##.... ###..... .###....
+ ##...... ..##.... ###..... .###....
+ ##...... .##..... ###..... .###....
+ ##...... .##..... ###..... .###....
+ ##...... .##..... ###..... ###.....
+ ##...... .##..... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+004D - LATIN CAPITAL LETTER M
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. ..##..## ##...##. .##...##
+ ##...##. ..##..## ###.###. .###.###
+ ###.###. ..###### #######. .#######
+ #######. ..###### #######. .#######
+ #######. .####### #######. .#######
+ #######. .##.#.## #######. .######.
+ ##.#.##. .##..##. ###.###. ###.###.
+ ##.#.##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+004E - LATIN CAPITAL LETTER N
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. ..##..## ##..###. .##..###
+ ##...##. ..##..## ###.###. .###.###
+ ###..##. ..###.## ###.###. .###.###
+ ###..##. ..###.## #######. .#######
+ ####.##. .####.## #######. .#######
+ ####.##. .######. #######. .######.
+ ##.####. .##.###. #######. #######.
+ ##.####. .##.###. #######. #######.
+ ##..###. ##..###. #######. #######.
+ ##..###. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###..##. ###..##.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+004F - LATIN CAPITAL LETTER O
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.##.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0050 - LATIN CAPITAL LETTER P
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ######.. ..#####. ######.. .######.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##..### ###.###. .###.###
+ #######. .######. ###.###. .###.###
+ ######.. .#####.. #######. #######.
+ ##...... .##..... ######.. ######..
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0051 - LATIN CAPITAL LETTER Q
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.##.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##.#.##. ####.##. #######. #######.
+ ##.####. ##.###.. #######. #######.
+ #######. #####... #######. #######.
+ .#####.. .#####.. .######. .######.
+ .....##. ....##.. .....##. .....##.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0052 - LATIN CAPITAL LETTER R
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ######.. ..#####. ######.. .######.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ######.. .######. #######. .######.
+ ######.. .#####.. ######.. ######..
+ ##...##. .##.###. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0053 - LATIN CAPITAL LETTER S
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...... .##..... ###..... .###....
+ ##...... .##..... ###..... .###....
+ ######.. .#####.. ######.. .#####..
+ .######. ..#####. .######. ..#####.
+ .....##. .....##. ....###. ....###.
+ .....##. .....##. ....###. ....###.
+ ##...##. ##..###. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0054 - LATIN CAPITAL LETTER T
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .######. .####### #######. .#######
+ .######. .####### #######. .#######
+ ...##... ...##... ..###... ...###..
+ ...##... ...##... ..###... ...###..
+ ...##... ..##.... ..###... ...###..
+ ...##... ..##.... ..###... ...###..
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... .##..... ..###... ..###...
+ ...##... .##..... ..###... ..###...
+ ...##... .##..... ..###... ..###...
+ ...##... .##..... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0055 - LATIN CAPITAL LETTER U
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.##.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0056 - LATIN CAPITAL LETTER V
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ###.###. .##..##. ###.###. ###.###.
+ .##.##.. .##..##. .##.##.. .##.##..
+ .#####.. .##.##.. .#####.. .#####..
+ ..###... ..###... ..###... ..###...
+ ..###... ..###... ..###... ..###...
+ ...#.... ...#.... ...#.... ...#....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0057 - LATIN CAPITAL LETTER W
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##.#.##. .##.#.## ###.###. ###.###.
+ ##.#.##. .##.#.## #######. #######.
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ###.###. ###.###. ###.###. ###.###.
+ .#...#.. .#...#.. .#...#.. .#...#..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0058 - LATIN CAPITAL LETTER X
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ###.###. .###.### ###.###. .###.###
+ .#####.. ..#####. .#####.. ..#####.
+ ..###... ...###.. ..###... ...###..
+ ..###... ..###... ..###... ..###...
+ .#####.. .#####.. .#####.. .#####..
+ ###.###. ###.###. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0059 - LATIN CAPITAL LETTER Y
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. .##..##. ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.###
+ ###.###. ..####.. ###.###. .###.###
+ .#####.. ..####.. .#####.. ..#####.
+ ..###... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... .##..... ..###... ..###...
+ ...##... .##..... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+005A - LATIN CAPITAL LETTER Z
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ #######. .####### #######. .#######
+ ....###. ......## ....###. .....###
+ ....##.. .....### ....###. .....###
+ ...###.. ....###. ...###.. ....###.
+ ...##... ....##.. ..###... ...###..
+ ..###... ...##... ..###... ..###...
+ ..##.... ..###... .###.... .###....
+ .###.... .###.... ###..... ###.....
+ .##..... ###..... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+005B - LEFT SQUARE BRACKET
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..#####. ....#### ..#####. ...#####
+ ..#####. ....#### ..#####. ...#####
+ ..##.... ....##.. ..###... ...###..
+ ..##.... ....##.. ..###... ...###..
+ ..##.... ...##... ..###... ...###..
+ ..##.... ...##... ..###... ...###..
+ ..##.... ...##... ..###... ..###...
+ ..##.... ...##... ..###... ..###...
+ ..##.... ..##.... ..###... ..###...
+ ..##.... ..##.... ..###... ..###...
+ ..#####. ..#####. ..#####. ..#####.
+ ..#####. ..#####. ..#####. ..#####.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+005C - REVERSE SOLIDUS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ .#...... ..#.....
+ ##...... ##...... ###..... .###....
+ ###..... ###..... ####.... .####...
+ .###.... .###.... .####... ..###...
+ ..###... ..###... ..####.. ...###..
+ ...###.. ...###.. ...####. ...####.
+ ....###. ....###. ....###. ....###.
+ .....##. .....##. .....#.. .....#..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+005D - RIGHT SQUARE BRACKET
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...##### ######.. .######.
+ .#####.. ...##### ######.. .######.
+ ....##.. ......## ...###.. ....###.
+ ....##.. ......## ...###.. ....###.
+ ....##.. .....##. ...###.. ....###.
+ ....##.. .....##. ...###.. ....###.
+ ....##.. .....##. ...###.. ...###..
+ ....##.. .....##. ...###.. ...###..
+ ....##.. ....##.. ...###.. ...###..
+ ....##.. ....##.. ...###.. ...###..
+ .#####.. .#####.. ######.. ######..
+ .#####.. .#####.. ######.. ######..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+005E - CIRCUMFLEX ACCENT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...#.... .....#.. ...#.... ....#...
+ ..###... ....###. ..###... ...###..
+ .#####.. ...##### .#####.. ..#####.
+ ###.###. ..###.## ###.###. .###.###
+ ##...##. .##...## ##...##. .##...##
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+005F - LOW LINE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ######## #######. ######## ########
+ ######## #######. ######## ########
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0060 - GRAVE ACCENT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..##.... ........ ........ ........
+ ..##.... ....##.. ..##.... ...##...
+ ...##... ....###. ..###... ...###..
+ ....#... ....##.. ...##... ....##..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0061 - LATIN SMALL LETTER A
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .#####.. ..####.. .#####.. ..####..
+ .######. ..#####. .######. ..#####.
+ .....##. .....##. ....###. ....###.
+ .######. .######. .######. ..#####.
+ #######. ######.. #######. .######.
+ ##...##. ##..##.. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .######. .#####.. .######. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0062 - LATIN SMALL LETTER B
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...... ...##... ###..... ..###...
+ ##...... ...##... ###..... ..###...
+ ##...... ..##.... ###..... ..###...
+ ##...... ..##.... ###..... .###....
+ ######.. ..#####. ######.. .#####..
+ #######. .####### #######. .######.
+ ##...##. .##...## ###.###. .##.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. ######..
+ ######.. ######.. ######.. #####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0063 - LATIN SMALL LETTER C
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .#####.. ..####.. .#####.. ..####..
+ #######. .######. #######. .######.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...##. ##..##.. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0064 - LATIN SMALL LETTER D
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .....##. ......## ....###. .....###
+ .....##. ......## ....###. .....###
+ .....##. ......## ....###. .....###
+ .....##. .....##. ....###. .....###
+ .######. ..#####. .######. ..######
+ #######. .######. #######. .######.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .######. .#####.. .######. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0065 - LATIN SMALL LETTER E
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .#####.. ..####.. .#####.. ..####..
+ #######. .######. #######. .######.
+ ##...##. .##..##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ #######. ######.. #######. ######..
+ ##...... ##...... ###..... ###.....
+ #######. ######.. #######. ######..
+ .######. .#####.. .######. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0066 - LATIN SMALL LETTER F
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...####. .....### ..#####. ...#####
+ ..#####. ....#### .######. ..######
+ ..##.... ....##.. .###.... ..###...
+ ..##.... ...##... .###.... ..###...
+ ..##.... .######. .###.... .###....
+ .####... .######. #####... .#####..
+ .####... ..##.... #####... .#####..
+ ..##.... ..##.... .###.... .###....
+ ..##.... ..##.... .###.... ###.....
+ ..##.... .##..... .###.... ###.....
+ ..##.... .##..... .###.... ###.....
+ ..##.... .##..... .###.... ###.....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0067 - LATIN SMALL LETTER G
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .######. ..###### .######. ..#####.
+ #######. .####### #######. .######.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .######. .######. .######. .#####..
+ .....##. ....##.. ....###. ...###..
+ .######. ######.. .######. ######..
+ .#####.. #####... .#####.. #####...
+-----------------------------------------------------
+U+0068 - LATIN SMALL LETTER H
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##...... ..##.... ###..... .###....
+ ##...... ..##.... ###..... .###....
+ ##...... ..##.... ###..... .###....
+ ##.###.. .##.###. ######.. .#####..
+ #######. .####### #######. .######.
+ ###..##. .###..## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0069 - LATIN SMALL LETTER I
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ....###.
+ ...##... .....##. ..###... ....###.
+ ........ ........ ........ ........
+ ..###... ...###.. .####... ...####.
+ ..###... ..####.. .####... ..#####.
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ..####.. .#####.. .#####.. .#####..
+ ..####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+006A - LATIN SMALL LETTER J
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ....##.. ......## ...###.. ....###.
+ ....##.. ......## ...###.. ....###.
+ ........ ........ ........ ........
+ ...###.. ....###. ..####.. ...####.
+ ...###.. ...####. ..####.. ..#####.
+ ....##.. .....##. ...###.. ....###.
+ ....##.. .....##. ...###.. ...###..
+ ....##.. ....##.. ...###.. ...###..
+ ....##.. ....##.. ...###.. ...###..
+ ....##.. ....##.. ...###.. ...###..
+ ....##.. ....##.. ...###.. ..###...
+ ....##.. ...##... ...###.. ..###...
+ .#####.. #####... .#####.. #####...
+ .####... ####.... .####... ####....
+-----------------------------------------------------
+U+006B - LATIN SMALL LETTER K
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...... ..##.... ###..... ..###...
+ ##...... ..##.... ###..... ..###...
+ ##...... ..##.... ###..... ..###...
+ ##...... ..##..## ###..##. ..###.#.
+ ##...##. .##..### ###.###. .#######
+ ##..###. .##.###. #######. .######.
+ ##.###.. .#####.. ######.. .#####..
+ #####... .#####.. #####... .###....
+ #####... ##.###.. ######.. #####...
+ ##.###.. ##..###. #######. ######..
+ ##..###. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###..##. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+006C - LATIN SMALL LETTER L
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..###... ....###. .####... ..####..
+ ..###... ....###. .####... ..####..
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... .###....
+ ...##... ...##... ..###... .###....
+ ...##... ...##... ..###... .###....
+ ...##... ...##... ..###... .###....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+006D - LATIN SMALL LETTER M
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ###.##.. .###.##. ###.##.. .###.#..
+ #######. .####### #######. .######.
+ #######. .####### #######. #######.
+ ##.#.##. .##.#.## #######. #######.
+ ##.#.##. ##.#.##. #######. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+006E - LATIN SMALL LETTER N
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##.###.. .##.##.. ######.. .#####..
+ #######. .######. #######. .######.
+ ###..##. .###.##. ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+006F - LATIN SMALL LETTER O
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .#####.. ..####.. .#####.. ..####..
+ #######. .######. #######. .######.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ #######. ######.. #######. ######..
+ .#####.. .####... .#####.. .####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0070 - LATIN SMALL LETTER P
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ######.. ..#####. ######.. .#####..
+ #######. ..###### #######. .######.
+ ##...##. ..##..## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ #######. #######. #######. ######..
+ ######.. ######.. ######.. #####...
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+-----------------------------------------------------
+U+0071 - LATIN SMALL LETTER Q
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .######. ..###### .######. ..#####.
+ #######. .####### #######. .######.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. ######..
+ .######. .#####.. .######. .#####..
+ .....##. ....##.. ....###. ...###..
+ .....### ....###. ....#### ...####.
+ .....### ....###. ....#### ...####.
+-----------------------------------------------------
+U+0072 - LATIN SMALL LETTER R
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##.####. .##.#### ##.####. .###.##.
+ #######. .####### #######. .######.
+ ###..... .###.... ###..... .###....
+ ##...... .##..... ###..... .###....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0073 - LATIN SMALL LETTER S
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .######. ..###### .######. ...#####
+ #######. .####### #######. ..#####.
+ ##...... .##..... ###..... .###....
+ ######.. .#####.. ######.. .#####..
+ .#####.. ..#####. .######. ..#####.
+ .....##. .....##. ....###. ....###.
+ #######. #######. #######. .#####..
+ ######.. ######.. ######.. #####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0074 - LATIN SMALL LETTER T
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...#.... .....##. ...#.... ..###...
+ ..##.... .....##. ..##.... ..###...
+ ..##.... ....##.. .###.... ..###...
+ ..##.... ....##.. .###.... .###....
+ .#####.. ..###### ######.. .#####..
+ ######.. ..###### ######.. .#####..
+ ..##.... ...##... .###.... .###....
+ ..##.... ...##... .###.... ###.....
+ ..##.... ..##.... .###.... ###.....
+ ..##.... ..##.... .###.... ###.....
+ ..#####. ..#####. .######. ######..
+ ...####. ...###.. ..#####. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0075 - LATIN SMALL LETTER U
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.##.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ ##..###. ##..##.. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .###.##. .###.##. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0076 - LATIN SMALL LETTER V
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##...##. .##..##. ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.##.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ###.###. ##..##.. ###.###. ###.###.
+ .#####.. #####... .#####.. .#####..
+ ..###... .###.... ..###... ..###...
+ ...#.... ..#..... ...#.... ...#....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0077 - LATIN SMALL LETTER W
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##.#.##. .##.#.## #######. #######.
+ ##.#.##. ##.####. #######. #######.
+ #######. #######. #######. #######.
+ #######. #######. ###.###. ###.###.
+ .##.##.. .##.##.. .#...#.. .#...#..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0078 - LATIN SMALL LETTER X
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ###.###. .###.### ###.###. .######.
+ .#####.. ..#####. .#####.. ..###...
+ .#####.. .#####.. .#####.. .#####..
+ ###.###. ###.###. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0079 - LATIN SMALL LETTER Y
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. #######. #######.
+ #######. #######. .######. .######.
+ .######. .######. ....###. ...###..
+ .....##. ....##.. ....###. ...###..
+ #######. ######.. #######. ######..
+ ######.. #####... ######.. #####...
+-----------------------------------------------------
+U+007A - LATIN SMALL LETTER Z
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ #######. .####### #######. .######.
+ ....###. .....### ...####. ...####.
+ ..####.. ...####. ..####.. ..####..
+ .####... .####... .####... .####...
+ ###..... ###..... ####.... ####....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+007B - LEFT CURLY BRACKET
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ....###. .....### ...####. ....####
+ ...####. ....###. ..#####. ...#####
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ...##... ..###... ...###..
+ .###.... .###.... ####.... .####...
+ .###.... .###.... ####.... ####....
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...####. ..###... ..#####. ..#####.
+ ....###. ...###.. ...####. ...####.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+007C - VERTICAL LINE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+007D - RIGHT CURLY BRACKET
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .###.... ..###... ####.... .####...
+ .####... ...###.. #####... .#####..
+ ...##... ....##.. ..###... ...###..
+ ...##... ...##... ..###... ...###..
+ ...##... ...##... ..###... ...###..
+ ....###. ....###. ...####. ....####
+ ....###. ....###. ...####. ...####.
+ ...##... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ .####... .###.... #####... #####...
+ .###.... ###..... ####.... ####....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+007E - TILDE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .###.##. ...###.# .##..##. ..##..##
+ #######. ..###### #######. .#######
+ ##.###.. ..##.### #######. .#######
+ ........ ........ ##..##.. .##..##.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+007F - DELETE <CONTROL>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ ........ ........ ........ ........
+ ###.###. .###.### ###.###. .###.###
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ #.#.#.#. .#.#.#.# #.#.#.#. .#.#.#.#
+ ###.###. .###.### ###.###. .###.###
+ ........ ........ ........ ........
+ ###.###. ###.###. ###.###. ###.###.
+ ..#.#... ..#.#... ..#.#... ..#.#...
+ .#..##.. .#..##.. .#..##.. .#..##..
+ .#..#... .#..#... .#..#... .#..#...
+ .#..#... .#..#... .#..#... .#..#...
+ ........ ........ ........ ........
+ #######. #######. #######. #######.
+-----------------------------------------------------
+U+00A0 - NO-BREAK SPACE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00A1 - INVERTED EXCLAMATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ........ ........ ........ ........
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00A2 - CENT SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...#.... .....#.. ...#.... ....#...
+ ...#.... .....#.. ...#.... ....#...
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##.#.##. .##.#.## ##.#.##. ##.#.##.
+ ##.#.... .##.#... ##.#.... ##.#....
+ ##.#.... ##.#.... ##.#.... ##.#....
+ ##.#.##. ##.#.##. ##.#.##. ##.#.##.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ...#.... ..#..... ...#.... ...#....
+ ...#.... ..#..... ...#.... ...#....
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00A3 - POUND SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..####.. ....#### ..####.. ...####.
+ .######. ...##### .######. ..######
+ .##..##. ...##..# .###.##. ..###.##
+ .##..... ...##... .###.... ..###...
+ .##..... ..##.... ######.. .######.
+ #####... .#####.. ######.. .######.
+ #####... .#####.. ######.. ######..
+ .##..... ..##.... .###.... .###....
+ .##..... .##..... .###.##. .###.##.
+ ###..##. ###..##. #######. #######.
+ #######. #######. #######. #######.
+ ##.###.. ##.###.. ##.###.. ##.###..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00A4 - CURRENCY SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..##. ...##..# ###.###. .###.###
+ .##..##. ..##..## ###.###. .###.###
+ ..####.. ...####. .#####.. ..#####.
+ .######. ..###### #######. #######.
+ .##..##. ..##..## #######. #######.
+ .##..##. .##..##. #######. #######.
+ .######. .######. #######. #######.
+ ..####.. ..####.. .#####.. .#####..
+ .##..##. .##..##. ###.###. ###.###.
+ .##..##. ##..##.. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00A5 - YEN SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..##. ...##..# ###.###. .###.###
+ .##..##. ...##..# ###.###. .###.###
+ .##..##. ...##..# ###.###. .###.###
+ ..####.. ...####. .#####.. ..#####.
+ ...##... ....##.. ..###... ...###..
+ .######. ..###### #######. #######.
+ ...##... ....##.. ..###... ..###...
+ .######. .######. #######. #######.
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00A6 - BROKEN BAR
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00A7 - SECTION SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..####.. .....### ..####.. ...####.
+ .#####.. ....###. .#####.. ..#####.
+ .##..... ...##... .#####.. ..#####.
+ .##..... ...##... .###.... ..###...
+ ..####.. ..####.. ..####.. ...####.
+ .######. .######. .######. ..######
+ .##..##. .##..##. .##..##. .##..##.
+ .######. .######. .######. .######.
+ ..####.. ..####.. ..####.. ..####..
+ .....##. ...##... ....###. ....###.
+ .....##. ...##... ..#####. ..#####.
+ ..#####. .###.... ..#####. ..#####.
+ ..####.. ###..... ..####.. ..####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00A8 - DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ###.###. .###.###
+ .##..##. ..##..## ###.###. .###.###
+ .##..##. .##..##. ###.###. .###.###
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00A9 - COPYRIGHT SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..####.. ....###. ..####.. ...####.
+ .######. ...##### .######. ..######
+ ##....## ..#....# ##....## .##....#
+ #..##..# ..#....# #..##..# .#..##.#
+ #.####.# .#..##.# #.####.# .#.###.#
+ #.#..#.# .#.#...# #.#..#.# .#.#...#
+ #.#....# .#.#...# #.#....# #.#....#
+ #.#..#.# #..#...# #.#..#.# #.#..#.#
+ #.####.# #.#....# #.####.# #.####.#
+ #..##..# #..##.#. #..##..# #..##..#
+ ##....## #.....#. ##....## ##....##
+ .######. .#####.. .######. .######.
+ ..####.. ..###... ..####.. ..####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00AA - FEMININE ORDINAL INDICATOR
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .###.... ...###.. .####... ..####..
+ ....#... ......#. ....##.. .....##.
+ .####... ...####. .#####.. ..#####.
+ #...#... ..#...#. ##..##.. .##..##.
+ .####... ..####.. .#####.. ..#####.
+ ........ ........ ........ ........
+ #####... .#####.. ######.. ######..
+ #####... .#####.. ######.. ######..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00AB - LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..##.##. ...##.## ..#####. ..#####.
+ .##.##.. ..##.##. .#####.. .#####..
+ ##.##... ##.##... #####... #####...
+ ##.##... ##.##... #####... #####...
+ .##.##.. .##.##.. .#####.. .#####..
+ ..##.##. ..##.##. ..#####. ..#####.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00AC - NOT SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .######. ...####. .######. ..######
+ .######. ..#####. .######. ..######
+ .....##. .....##. .######. ..######
+ ......#. ....##.. .....##. ......##
+ ........ ........ ......#. .......#
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00AD - SOFT HYPHEN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .######. ..###### .######. .######.
+ ........ ........ .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00AE - REGISTERED SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..####.. ....###. ..####.. ...####.
+ .######. ...##### .######. ..######
+ ##....## ..#....# ##....## .##....#
+ #.###..# .#..#..# #.###..# .#.##..#
+ #.####.# .#.#.#.# #.####.# .#.###.#
+ #.#..#.# .#.#.#.# #.#..#.# .#.#.#.#
+ #.###..# .#.##..# #.###..# #.###..#
+ #.###..# #..##..# #.###..# #.###..#
+ #.#..#.# #.#..#.# #.#..#.# #.#..#.#
+ #.#..#.# #.#..#.# #.#..#.# #.#..#.#
+ ##....## #.....#. ##....## ##....##
+ .######. .######. .######. .######.
+ ..####.. .####... ..####.. ..####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00AF - MACRON
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .######. ...##### #######. .#######
+ ........ ........ #######. .#######
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00B0 - DEGREE SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .####... ...####. .####... ..####..
+ ######.. ..###### ######.. .######.
+ ##..##.. ..##..## ##..##.. .##..##.
+ ######.. ..###### ######.. .######.
+ .####... ..####.. .####... ..####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00B1 - PLUS-MINUS SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. #######. .#######
+ .######. ..###### #######. .#######
+ .######. ..###### #######. .#######
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ........ ........ ........ ........
+ .######. .######. #######. #######.
+ .######. .######. #######. #######.
+ ........ ........ #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00B2 - SUPERSCRIPT TWO
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ####.... ..####.. ####.... .####...
+ #####... ..#####. #####... .#####..
+ ...##... .....##. ...##... ....##..
+ .####... ..####.. .####... ..####..
+ ####.... .####... ####.... .####...
+ ##...... .##..... ##...... ##......
+ #####... .#####.. #####... #####...
+ #####... .#####.. #####... #####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00B3 - SUPERSCRIPT THREE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ####.... ..####.. ####.... .####...
+ #####... ..#####. #####... .#####..
+ ...##... .....##. ...##... ....##..
+ ..##.... ...##... ..##.... ...##...
+ ...##... ....##.. ...##... ....##..
+ #####... .#####.. #####... #####...
+ ####.... .####... ####.... ####....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00B4 - ACUTE ACCENT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ...###..
+ ..##.... ....##.. .###.... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00B5 - MICRO SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..##. ..##..## ###.###. .###.###
+ .##..##. ..##..## ###.###. ###.###.
+ .##..##. ..##..## ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ .######. .######. #######. #######.
+ .#####.. .#####.. ######.. ######..
+ .##..... ##...... ###..... ###.....
+ .##..... ##...... ###..... ###.....
+ ##...... #....... ##...... ##......
+-----------------------------------------------------
+U+00B6 - PILCROW SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .####### ..###### .####### ..######
+ ##.##.## .##.#### ##.##.## .##.##.#
+ ##.##.## ##.##.## ##.##.## .##.##.#
+ ##.##.## ##.##.## ##.##.## .##.##.#
+ .####.## .####.## .####.## .####.#.
+ ...##.## ...##.## ...##.## ..##.##.
+ ...##.## ..##.##. ...##.## ..##.##.
+ ...##.## ..##.##. ...##.## ..##.##.
+ ...##.## ..##.##. ...##.## ..##.##.
+ ...##.## ..##.##. ...##.## ..##.##.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00B7 - MIDDLE DOT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00B8 - CEDILLA
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ...##... ...##... ...##...
+ ...###.. ...###.. ...###.. ...###..
+ ....##.. ....##.. ....##.. ....##..
+ ...###.. ...###.. ...###.. ...###..
+ ...##... ..##.... ...##... ...##...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00B9 - SUPERSCRIPT ONE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..... ...##... .##..... ..##....
+ ###..... ..###... ###..... .###....
+ .##..... ...##... .##..... ..##....
+ .##..... ..##.... .##..... ..##....
+ .##..... ..##.... .##..... ..##....
+ ####.... .####... ####.... ####....
+ ####.... .####... ####.... ####....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00BA - MASCULINE ORDINAL INDICATOR
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .###.... ....##.. .###.... ..###...
+ #####... ...####. #####... .#####..
+ #...#... ..#...#. #...#... .#...#..
+ #####... ..####.. #####... .#####..
+ .###.... ...##... .###.... ..###...
+ ........ ........ ........ ........
+ #####... ..####.. #####... #####...
+ #####... .####... #####... #####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00BB - RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##.##... .##.##.. ##.##... ##.##...
+ .##.##.. ..##.##. .##.##.. .##.##..
+ ..##.##. ..##.##. ..##.##. ..##.##.
+ ..##.##. ..##.##. ..##.##. ..##.##.
+ .##.##.. .##.##.. .##.##.. .##.##..
+ ##.##... ##.##... ##.##... ##.##...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00BC - VULGAR FRACTION ONE QUARTER
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .#...... ...#.... .##..... ..##....
+ ##...... ..##.... ###..... .###....
+ .#....#. ...#.... .##...#. ..##...#
+ .#...##. ..#...## .##..##. ..##..##
+ ###.##.. .###.##. #######. .#######
+ ...##... ....##.. ...###.. ...###..
+ ..##.... ...##... ..###... ..###...
+ .##..#.. .##..#.. .###.##. .###.##.
+ ##..##.. ##..##.. ###.###. ###.###.
+ #..#.#.. #..#.#.. ##.#.##. ##.#.##.
+ ..#####. ..#####. ..#####. ..#####.
+ .....#.. ....#... ..#####. ..#####.
+ .....#.. ....#... .....##. .....##.
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00BD - VULGAR FRACTION ONE HALF
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .#...... ...#.... .##..... ..##....
+ ##...... ..##.... ###..... .###....
+ .#....#. ...#.... .##...#. ..##...#
+ .#...##. ..#...## .##..##. ..##..##
+ ###.##.. .###.##. #######. .#######
+ ...##... ....##.. ...###.. ...###..
+ ..##.... ...##... ..###... ..###...
+ .##..... .##..... .###.... .###....
+ ##.###.. ##.###.. ######.. ######..
+ #.....#. #.....#. ##...##. ##...##.
+ ....##.. ...###.. ....##.. ....##..
+ ...#.... ..#..... ...##... ...##...
+ ...####. ..####.. ...####. ...####.
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00BE - VULGAR FRACTION THREE QUARTERS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ###..... ..###... ###..... .###....
+ ...#.... .....#.. ..##.... ...##...
+ .##...#. ...##... .##...#. ..##...#
+ ...#.##. ....#.## ..##.##. ...##.##
+ ###.##.. .###.##. ###.###. .###.###
+ ...##... ....##.. ...###.. ...###..
+ ..##.... ...##... ..###.#. ..###.#.
+ .##..#.. .##..#.. .###.##. .###.##.
+ ##..##.. ##..##.. ###.###. ###.###.
+ #..#.##. #..#.##. ##.#.##. ##.#.##.
+ ..#####. ..#####. ..#####. ..#####.
+ .....#.. ....#... ..#####. ..#####.
+ .....#.. ....#... .....##. .....##.
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00BF - INVERTED QUESTION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ...###.. ....###.
+ ...##... .....##. ...###.. ....###.
+ ...##... .....##. ...###.. ....###.
+ ........ ........ ........ ........
+ ...##... ....##.. ...###.. ....###.
+ ...##... ....##.. ...###.. ...###..
+ .####... ..####.. .#####.. .#####..
+ ####.... .###.... #####... #####...
+ ##...... ##...... ###..... ###.....
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00C0 - LATIN CAPITAL LETTER A WITH GRAVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .##..... ...##... ###..... .###....
+ ..##.... ....##.. .###.... ..###...
+ ........ ........ ........ ........
+ ...#.... .....#.. ...#.... ....#...
+ ..###... ...###.. ..###... ...###..
+ .##.##.. ..##.##. .#####.. ..#####.
+ ##...##. .##...## ###.###. ###.###.
+ #######. .####### #######. #######.
+ #######. #######. #######. #######.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00C1 - LATIN CAPITAL LETTER A WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ....##.. ......## ....###. .....###
+ ...##... .....##. ...###.. ....###.
+ ........ ........ ........ ........
+ ...#.... .....#.. ...#.... ....#...
+ ..###... ...###.. ..###... ...###..
+ .##.##.. ..##.##. .#####.. ..#####.
+ ##...##. .##...## ###.###. ###.###.
+ #######. .####### #######. #######.
+ #######. #######. #######. #######.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00C2 - LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..###... ....###. ..###... ...###..
+ .##.##.. ...##.## .##.##.. ..##.##.
+ .#...#.. ...#...# ##...##. .##...##
+ ...#.... .....#.. ...#.... ....#...
+ ..###... ...###.. ..###... ...###..
+ .##.##.. ..##.##. .#####.. ..#####.
+ ##...##. .##...## ###.###. ###.###.
+ #######. .####### #######. #######.
+ #######. #######. #######. #######.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00C3 - LATIN CAPITAL LETTER A WITH TILDE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .###.##. ...###.# .###.##. ..###.##
+ ##.###.. ..##.### ##.###.. .##.###.
+ ........ ........ ........ ........
+ ...#.... .....#.. ...#.... ....#...
+ ..###... ...###.. ..###... ...###..
+ .##.##.. ..##.##. .#####.. ..#####.
+ ##...##. .##...## ###.###. ###.###.
+ #######. .####### #######. #######.
+ #######. #######. #######. #######.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00C4 - LATIN CAPITAL LETTER A WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ .##.##.. ........ ........ ........
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ...##.## ###.###. .###.###
+ ...#.... .....#.. ...#.... ....#...
+ ..###... ....###. ..###... ...###..
+ .##.##.. ..##.##. .#####.. ..#####.
+ ##...##. .##...## ###.###. .###.##.
+ #######. .####### #######. #######.
+ #######. .####### #######. #######.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00C5 - LATIN CAPITAL LETTER A WITH RING ABOVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..###... ....###. ..###... ...###..
+ .#...#.. ...#...# .##.##.. ..##.##.
+ ..###... ....###. ..###... ...###..
+ ..###... ....###. ..###... ...###..
+ .##.##.. ..##.##. .#####.. ..#####.
+ ##...##. .##...## ###.###. .###.##.
+ #######. .####### #######. #######.
+ #######. .####### #######. #######.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00C6 - LATIN CAPITAL LETTER AE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...##### .....### ...##### ....####
+ ..###### ....#### ..###### ...#####
+ .#####.. ...##### .####### ..######
+ ###.##.. ..###.## #######. .#######
+ ##..##.. .##..##. ###.###. .###.###
+ #######. .####### ######## .#######
+ #######. .####### ######## ########
+ ##..##.. .##..##. #######. #######.
+ ##..##.. ##..##.. ###.###. ###.###.
+ ##..##.. ##..##.. ###.#### ###.####
+ ##..#### ##..#### ###.#### ###.####
+ ##..#### ##..#### ###.#### ###.####
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00C7 - LATIN CAPITAL LETTER C WITH CEDILLA
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...... ..##.... ###..... .###....
+ ##...... .##..... ###..... .###....
+ ##...... .##..... ###..... .###....
+ ##...... .##..... ###..... ###.....
+ ##...... .##..... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ....###. ...###.. ....###. ....###.
+ .##..##. ##..##.. .##.###. .##.###.
+ ..####.. .####... .#####.. .#####..
+-----------------------------------------------------
+U+00C8 - LATIN CAPITAL LETTER E WITH GRAVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..##.... ....##.. .###.... ..###...
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ #######. ..###### #######. .#######
+ #######. .####### #######. .#######
+ ##...... .##..... ###..... .###....
+ ####.... .####... ###..... ###.....
+ ####.... .####... #####... #####...
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00C9 - LATIN CAPITAL LETTER E WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ #######. ..###### #######. .#######
+ #######. .####### #######. .#######
+ ##...... .##..... ###..... .###....
+ ####.... .####... ###..... ###.....
+ ####.... .####... #####... #####...
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00CA - LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..###... ....###. .#####.. ..#####.
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ #######. ..###### #######. .#######
+ #######. .####### #######. .#######
+ ##...... .##..... ###..... .###....
+ ####.... .####... ###..... ###.....
+ ####.... .####... #####... #####...
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00CB - LATIN CAPITAL LETTER E WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ .##.##.. ...##.## ###.###. .###.###
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ #######. ..###### #######. .#######
+ #######. ..###### #######. .#######
+ ##...... .##..... ###..... .###....
+ ##...... .##..... ###..... .###....
+ ####.... .####... #####... #####...
+ ####.... .####... #####... #####...
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00CC - LATIN CAPITAL LETTER I WITH GRAVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..##.... ....##.. .###.... ..###...
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ ...##... ...##### ..###... ...###..
+ ...##... ...##### ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... .#####.. ..###... ..###...
+ ...##... .#####.. ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00CD - LATIN CAPITAL LETTER I WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ ...##... ...##### ..###... ...###..
+ ...##... ...##### ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... .#####.. ..###... ..###...
+ ...##... .#####.. ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00CE - LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ...###..
+ ..#..#.. ....#..# .##.##.. ..##.##.
+ ...##... ...##### ..###... ...###..
+ ...##... ...##### ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... .#####.. ..###... ..###...
+ ...##... .#####.. ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00CF - LATIN CAPITAL LETTER I WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .##..##. ...##.## ###.###. .###.###
+ .##..##. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ ...##... ...##### ..###... ...###..
+ ...##... ...##### ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... .#####.. ..###... ..###...
+ ...##... .#####.. ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00D0 - LATIN CAPITAL LETTER ETH
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .####... ...####. #####... .#####..
+ .#####.. ...##### ######.. .######.
+ .##.###. ...##.## ###.###. .###.###
+ .##..##. ..##..## ###.###. .###.###
+ .##..##. ..##..## ###.###. .###.##.
+ ####.##. .####.## #######. #######.
+ .##..##. ..##..## ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ .##.###. .##.###. ###.###. ###.###.
+ .#####.. .#####.. ######.. ######..
+ .####... .####... #####... #####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00D1 - LATIN CAPITAL LETTER N WITH TILDE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .###.##. ...###.# .###.##. ..###.##
+ ##.###.. ..##.### ##.###.. .##.###.
+ ........ ........ ........ ........
+ ##...##. ..##...# ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ###..##. .###..## ###.###. .###.##.
+ ####.##. .####.## ####.##. ####.##.
+ #######. .####### #######. #######.
+ ##.####. ##.####. ##.####. ##.####.
+ ##..###. ##..###. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00D2 - LATIN CAPITAL LETTER O WITH GRAVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..##.... ....##.. .###.... ..###...
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00D3 - LATIN CAPITAL LETTER O WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00D4 - LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..###... ....###. .#####.. ..#####.
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00D5 - LATIN CAPITAL LETTER O WITH TILDE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .###.##. ...###.# .###.##. ..###.##
+ ##.###.. ..##.### ##.###.. .##.###.
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00D6 - LATIN CAPITAL LETTER O WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ###.###. .###.###
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ...##.## ........ ........
+ .#####.. ........ .#####.. ..#####.
+ #######. ..#####. #######. .#######
+ ##...##. .####### ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00D7 - MULTIPLICATION SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##...##. .##...## ##...##. .##...##
+ ###.###. .###.### ###.###. .###.##.
+ .#####.. ..#####. .#####.. .#####..
+ ..###... ...###.. ..###... ..###...
+ ..###... ..###... ..###... ..###...
+ .#####.. .#####.. .#####.. .#####..
+ ###.###. ###.###. ###.###. ###.###.
+ ##...##. ##...##. ##...##. ##...##.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00D8 - LATIN CAPITAL LETTER O WITH STROKE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .######. ...###.# .####.#. ..####.#
+ #######. ..#####. ######.. .######.
+ ##...##. ..##.### ###.###. .###.###
+ ##...##. .##.#.## ###.###. .###.###
+ ##..###. .##.#.## ###.###. .###.###
+ ##..###. .##.#.## #######. .######.
+ ##.#.##. ##.#.##. #######. #######.
+ ##.#.##. ##.#.##. #######. #######.
+ ###..##. ##.#.##. ###.###. ###.###.
+ ###..##. ###.###. ###.###. ###.###.
+ #######. .#####.. #######. #######.
+ .#####.. #.###... .#####.. .#####..
+ #....... ........ #....... #.......
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00D9 - LATIN CAPITAL LETTER U WITH GRAVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..##.... ....##.. .###.... ..###...
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..###. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00DA - LATIN CAPITAL LETTER U WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..###. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00DB - LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..###... ....###. .#####.. ..#####.
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..###. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00DC - LATIN CAPITAL LETTER U WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ .##.##.. ...##.## ###.###. .###.###
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##..###. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00DD - LATIN CAPITAL LETTER Y WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ....##.. .....##. ...###.. ....###.
+ ...##... ....##.. ..###... ...###..
+ ........ ........ ........ ........
+ .##..##. ..##..## ###.###. .###.###
+ .##..##. ..##..## ###.###. .###.###
+ .##..##. .##..##. ###.###. .###.##.
+ .######. .##.###. ###.###. ###.###.
+ ..####.. .#####.. .#####.. .#####..
+ ...##... ..###... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... .##..... ..###... ..###...
+ ...##... .##..... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00DE - LATIN CAPITAL LETTER THORN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..... ...##... ###..... .###....
+ .##..... ...##... ###..... .###....
+ .#####.. ...##### ######.. .######.
+ .######. ..###### #######. .#######
+ .##..##. ..##..## ###.###. .###.##.
+ .##..##. ..##..## ###.###. ###.###.
+ .######. ..###### ###.###. ###.###.
+ .#####.. .#####.. #######. #######.
+ .##..... .##..... ######.. ######..
+ .##..... .##..... ###..... ###.....
+ .##..... .##..... ###..... ###.....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00DF - LATIN SMALL LETTER SHARP S
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..####.. ....###. .#####.. ..#####.
+ .######. ...##### #######. .#######
+ .##..##. ...##.## ###.###. .###.###
+ .##..##. ...##.## ###.###. .###.###
+ .##..##. ..##..## ###.###. .###.###
+ .######. ..###### #######. .######.
+ .#####.. ..#####. ######.. ######..
+ .##..##. ..##..## ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ .######. .######. #######. #######.
+ .#####.. .#####.. ######.. ######..
+ ###..... ##...... ###..... ###.....
+ ##...... #....... ##...... ##......
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00E0 - LATIN SMALL LETTER A WITH GRAVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..##.... ....##.. .###.... .###....
+ ...##... .....##. ..###... ..###...
+ ........ ........ ........ ........
+ .######. ..###### .#####.. ..####..
+ #######. .####### .######. ..#####.
+ ##...##. .##...## ....###. ....###.
+ ##...##. .##...## .######. ..#####.
+ ##..###. ##..###. #######. .######.
+ ##..###. ##..###. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .###.##. .###.##. .######. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00E1 - LATIN SMALL LETTER A WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... .....##. ...###.. ...###..
+ ..##.... ....##.. ..###... ..###...
+ ........ ........ ........ ........
+ .######. ..###### .#####.. ..####..
+ #######. .####### .######. ..#####.
+ ##...##. .##...## ....###. ....###.
+ ##...##. .##...## .######. ..#####.
+ ##...##. ##...##. #######. .######.
+ ##..###. ##..###. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .###.##. .###.##. .######. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00E2 - LATIN SMALL LETTER A WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...#.... .....#.. ..###... ..###...
+ ..###... ....###. .#####.. .#####..
+ .##.##.. ...##.## ###.###. ###.###.
+ ........ ........ ........ ........
+ .######. ..###### .#####.. ..####..
+ #######. .####### .######. ..#####.
+ ##...##. .##...## ....###. ....###.
+ ##...##. .##...## .######. ..#####.
+ ##...##. ##...##. #######. .######.
+ ##..###. ##..###. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .###.##. .###.##. .######. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00E3 - LATIN SMALL LETTER A WITH TILDE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .###.##. ...###.# .###.##. .###.##.
+ ##.###.. ..##.### ##.###.. ##.###..
+ ........ ........ ........ ........
+ .######. ..###### .#####.. ..####..
+ #######. .####### .######. ..#####.
+ ##...##. .##...## ....###. ....###.
+ ##...##. .##...## .######. ..#####.
+ ##...##. ##...##. #######. .######.
+ ##..###. ##..###. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .###.##. .###.##. .######. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00E4 - LATIN SMALL LETTER A WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##.##.. ...##.## ###.###. ###.###.
+ .##.##.. ...##.## ###.###. ###.###.
+ ........ ........ ........ ........
+ .######. ..###### .#####.. ..####..
+ #######. .####### .######. ..#####.
+ ##...##. .##...## ....###. ....###.
+ ##...##. .##...## .######. ..#####.
+ ##...##. ##...##. #######. .######.
+ ##..###. ##..###. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .###.##. .###.##. .######. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00E5 - LATIN SMALL LETTER A WITH RING ABOVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..###... ....###. ..###... ..###...
+ .##.##.. ...##.## .##.##.. .##.##..
+ ..###... ....###. ..###... ..###...
+ ........ ........ ........ ........
+ .######. ..#####. .#####.. ..####..
+ #######. .####### .######. ..#####.
+ ##...##. .##...## ....###. ....###.
+ ##...##. .##...## .######. ..#####.
+ ##...##. ##...##. #######. .######.
+ ##..###. ##..###. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .###.##. .###.##. .######. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00E6 - LATIN SMALL LETTER AE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ .###.#.. ..###.#.
+ .###.#.. ..###.#. .######. ..######
+ .######. ..###### .######. ..######
+ ...##.#. ....##.# ...##.#. ...##.#.
+ ..#####. ...##### .######. .######.
+ .######. .######. #######. #######.
+ ##.##... ##.##... ##.##... ##.##...
+ #######. #######. #######. #######.
+ .#####.. .#####.. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00E7 - LATIN SMALL LETTER C WITH CEDILLA
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. #######.
+ ##...##. .##...## ###.###. ###.###.
+ ##...... ##...... ###..... ###.....
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ...##... ..##.... ...###.. ...###..
+ .#####.. #####... .######. .######.
+ .####... ####.... .#####.. .#####..
+-----------------------------------------------------
+U+00E8 - LATIN SMALL LETTER E WITH GRAVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..##.... ....##.. .###.... ..###...
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. ###.###.
+ #######. .####### #######. #######.
+ #######. #######. #######. #######.
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00E9 - LATIN SMALL LETTER E WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ...###..
+ ..##.... ....##.. .###.... ..###...
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. ###.###.
+ #######. .####### #######. #######.
+ #######. #######. #######. #######.
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0118 - LATIN CAPITAL LETTER E WITH OGONEK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ #######. ..###### #######. .#######
+ #######. ..###### #######. .#######
+ ##...... ..##.... ###..... .###....
+ ##...... ..##.... ###..... .###....
+ ##...... .##..... ###..... .###....
+ #####... .#####.. #####... .#####..
+ #####... .#####.. #####... #####...
+ ##...... .##..... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ....##.. ...##... ....###. ...###..
+ ...##... .###.... ..###... .###....
+ ....###. ..###... ...####. .####...
+-----------------------------------------------------
+U+0119 - LATIN SMALL LETTER E WITH OGONEK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .#####.. ..####.. .#####.. ..####..
+ #######. .######. #######. .######.
+ ##...##. .##..##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ #######. ######.. #######. ######..
+ ##...... ##...... ###..... ###.....
+ #######. ######.. #######. ######..
+ .######. .#####.. .######. .#####..
+ ....##.. ...##... ....###. ...###..
+ ...##... .###.... ..###... .###....
+ ....###. ..###... ...####. .####...
+-----------------------------------------------------
+U+00EA - LATIN SMALL LETTER E WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...#.... .....#.. ..###... ...###..
+ ..###... ....###. .#####.. ..#####.
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. ###.###.
+ #######. .####### #######. #######.
+ #######. #######. #######. #######.
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00EB - LATIN SMALL LETTER E WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##.##.. ...##.## ###.###. .###.###
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. ###.###.
+ #######. .####### #######. #######.
+ #######. #######. #######. #######.
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00EC - LATIN SMALL LETTER I WITH GRAVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..##.... ....##.. .###.... ..###...
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00ED - LATIN SMALL LETTER I WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00EE - LATIN SMALL LETTER I WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ...###..
+ ..####.. ....#### .#####.. ..#####.
+ .##..##. ...##..# ###.###. .###.###
+ ........ ........ ........ ........
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00EF - LATIN SMALL LETTER I WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..##. ...##.## ###.###. .###.###
+ .##..##. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00F0 - LATIN SMALL LETTER ETH
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .##.##.. ...##.## ###.##.. .###.##.
+ .#####.. ...##### .#####.. ..#####.
+ #####... ..#####. #####... .#####..
+ ##.###.. ..##.### ######.. .######.
+ .#####.. ..#####. .######. ..######
+ #######. .####### #######. .######.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00F1 - LATIN SMALL LETTER N WITH TILDE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .###.##. ...###.# .###.##. ..###.##
+ #######. ..###### #######. .#######
+ ##.###.. ..##.### ##.###.. .##.###.
+ ........ ........ ........ ........
+ ######.. .######. ######.. .######.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00F2 - LATIN SMALL LETTER O WITH GRAVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..... ...##... ###..... .###....
+ ..##.... ....##.. .###.... ..###...
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..####..
+ #######. .####### #######. .######.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. ######..
+ .#####.. .#####.. .#####.. .####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00F3 - LATIN SMALL LETTER O WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ...###..
+ ..##.... ....##.. .###.... ..###...
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..####..
+ #######. .####### #######. .######.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. ######..
+ .#####.. .#####.. .#####.. .####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00F4 - LATIN SMALL LETTER O WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...#.... .....#.. ..###... ...###..
+ ..###... ....###. .#####.. ..#####.
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..####..
+ #######. .####### #######. .######.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. ######..
+ .#####.. .#####.. .#####.. .####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00F5 - LATIN SMALL LETTER O WITH TILDE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .###.##. ...###.# .###.##. ..###.##
+ #######. ..###### #######. .#######
+ ##.###.. ..##.### ##.###.. .##.###.
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..####..
+ #######. .####### #######. .######.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. ######..
+ .#####.. .#####.. .#####.. .####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00F6 - LATIN SMALL LETTER O WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##.##.. ...##.## ###.###. .###.###
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..####..
+ #######. .####### #######. .######.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. ######..
+ .#####.. .#####.. .#####.. .####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00F7 - DIVISION SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ........ ........ ........ ........
+ .######. ..###### #######. #######.
+ .######. .######. #######. #######.
+ ........ ........ ........ ........
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00F8 - LATIN SMALL LETTER O WITH STROKE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ......#. ........ ......#. .......#
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .######.
+ ##..###. .##..### ###.###. ###.###.
+ ##.#.##. .##.#.## ###.###. ###.###.
+ ##.#.##. ##.#.##. ###.###. ###.###.
+ ###..##. ###..##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ #....... ........ #....... #.......
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00F9 - LATIN SMALL LETTER U WITH GRAVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..... ...##... ###..... .###....
+ ..##.... ....##.. .###.... ..###...
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00FA - LATIN SMALL LETTER U WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ...###..
+ ..##.... ....##.. .###.... ..###...
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00FB - LATIN SMALL LETTER U WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...#.... .....#.. ..###... ...###..
+ ..###... ....###. .#####.. ..#####.
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00FC - LATIN SMALL LETTER U WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##.##.. ...##.## ###.###. .###.###
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+00FD - LATIN SMALL LETTER Y WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ .....##. ....##.. ....###. ....###.
+ ######.. #####... #######. #######.
+ #####... ####.... ######.. ######..
+-----------------------------------------------------
+U+00FE - LATIN SMALL LETTER THORN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..... ...##... ###..... .###....
+ .##..... ...##... ###..... .###....
+ .##..... ...##... ######.. .######.
+ .#####.. ..#####. #######. .#######
+ .######. ..###### ###.###. .###.##.
+ .##..##. ..##..## ###.###. ###.###.
+ .##..##. ..##..## ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ .######. .######. ###.###. ###.###.
+ .#####.. .#####.. #######. #######.
+ .##..... ##...... ######.. ######..
+ .##..... ##...... ###..... ###.....
+ .##..... ##...... ###..... ###.....
+-----------------------------------------------------
+U+00FF - LATIN SMALL LETTER Y WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##.##.. ........ ###.###. .###.###
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.##.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ .....##. ....##.. ....###. ....###.
+ #######. #####... #######. #######.
+ ######.. ####.... ######.. ######..
+-----------------------------------------------------
+U+0102 - LATIN CAPITAL LETTER A WITH BREVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ #######. .######. #######. .######.
+ ........ ........ ........ ........
+ ...#.... .....#.. ...#.... ....#...
+ ..###... ...###.. ..###... ...###..
+ .##.##.. ..##.##. .#####.. ..#####.
+ ##...##. .##...## ###.###. ###.###.
+ #######. .####### #######. #######.
+ #######. #######. #######. #######.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0103 - LATIN SMALL LETTER A WITH BREVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##..##. ###.###. .#######
+ .#####.. ..####.. .#####.. ..####..
+ ........ ........ ........ ........
+ .######. ..###### .#####.. ..####..
+ #######. .####### .######. ..#####.
+ ##...##. .##...## ....###. ....###.
+ ##...##. .##...## .######. ..#####.
+ ##...##. ##...##. #######. .######.
+ ##..###. ##..###. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .###.##. .###.##. .######. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0104 - LATIN CAPITAL LETTER A WITH OGONEK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. ..##..## ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.###
+ #######. .######. ###.###. .###.##.
+ #######. .######. #######. #######.
+ ##...##. .##..##. #######. #######.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ##...##. ##..##.. ###.###. ###.###.
+ ....##.. ...##... ....###. ...###..
+ ...##... .###.... ..###... .###....
+ ....###. ..###... ...####. .####...
+-----------------------------------------------------
+U+0105 - LATIN SMALL LETTER A WITH OGONEK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .######. ..###### .#####.. ..####..
+ #######. .####### .######. ..#####.
+ ##...##. .##...## ....###. ....###.
+ ##...##. .##...## .######. ..#####.
+ ##...##. ##...##. #######. .######.
+ ##..###. ##..###. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .###.##. .###.##. .######. .#####..
+ ....##.. ...##... ....###. ...###..
+ ...##... .###.... ..###... .###....
+ ....###. ..###... ...####. .####...
+-----------------------------------------------------
+U+0106 - LATIN CAPITAL LETTER C WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...... .##..... ###.###. .###.###
+ ##...... .##..... ###..... .###....
+ ##...... .##..... ###..... ###.....
+ ##...... .##..... ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0107 - LATIN SMALL LETTER C WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ .#####.. ..####.. .#####.. ..####..
+ #######. .######. #######. .######.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...##. ##..##.. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+010C - LATIN CAPITAL LETTER C WITH CARON
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ##...##. .##...## ###.###. .###.###
+ .#####.. ..#####. .#####.. ..#####.
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...... .##..... ###.###. .###.###
+ ##...... .##..... ###..... .###....
+ ##...... .##..... ###..... ###.....
+ ##...... .##..... ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ #######. #######. #######. #######.
+ .#####.. .#####.. .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0141 - LATIN CAPITAL LETTER L WITH STROKE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .##..... ...##... .###.... ..###...
+ .##..... ...##... .###.... ..###...
+ .##..... ...##... .###.... ..###.#.
+ .##.#... ...##.#. .###.##. ..#####.
+ .####... ..#####. .######. ..####..
+ .###.... ..####.. .#####.. ..###...
+ ###..... .###.... ####.... ####....
+ ###..... .###.... ####.... ####....
+ .##..... .##..... .###.... .###....
+ .##..... .##..... .###.... .###....
+ .######. .######. .######. .######.
+ .######. .######. .######. .######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0142 - LATIN SMALL LETTER L WITH STROKE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..###... ....###. .####... ..####..
+ ..###... ....###. .####... ..####..
+ ...##... .....##. ..###... ...###.#
+ ...##.#. .....### ..#####. ...#####
+ ...####. ....#### ..#####. ..#####.
+ ..####.. ...####. .#####.. .#####..
+ .####... ..####.. .####... #####...
+ .#.##... ..#.##.. .####... #.###...
+ ...##... ...##... ..###... .###....
+ ...##... ...##... ..###... .###....
+ ...##... ...##... ..###... .###....
+ ...##... ...##... ..###... .###....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0143 - LATIN CAPITAL LETTER N WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ ##...##. ..##...# ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ###..##. .###..## ###.###. .###.##.
+ ####.##. .####.## ####.##. ####.##.
+ #######. .####### #######. #######.
+ ##.####. ##.####. ##.####. ##.####.
+ ##..###. ##..###. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0144 - LATIN SMALL LETTER N WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ ######.. .######. ######.. .######.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+010D - LATIN SMALL LETTER C WITH CARON
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ .##.##.. ..##.##. .#####.. ..#####.
+ ..###... ...###.. ..###... ...###..
+ ........ ........ ........ ........
+ .#####.. ..####.. .#####.. ..####..
+ #######. .######. #######. .######.
+ ##...##. .##..##. ###.###. ###.###.
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ ##...##. ##..##.. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0152 - LATIN CAPITAL LIGATURE OE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .####### ...##### .####### ..######
+ ######## ..###### ######## .#######
+ ##..##.. ..##..## ###.###. .###.###
+ ##..##.. ..##..## ###.###. .###.###
+ ##..##.. .##..##. ###.###. .###.###
+ ##..#### .##..### ###.#### .###.###
+ ##..#### .##..### ###.#### ###.####
+ ##..##.. .##..##. ###.###. ###.###.
+ ##..##.. ##..##.. ###.###. ###.###.
+ ##..##.. ##..##.. ###.###. ###.###.
+ ######## ######## ######## ########
+ .####### .####### .####### .#######
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0153 - LATIN SMALL LIGATURE OE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##.##.. ..##.##. .##.##.. ..##.##.
+ #######. .####### #######. .#######
+ ##.##.#. .##.##.# #####.#. #####.#.
+ ##.####. .##.#### ##.####. ##.####.
+ ##.####. ##.####. ##.####. ##.####.
+ ##.##... ##.##... ######.. ######..
+ #######. #######. #######. #######.
+ .##.###. .##.###. .##.###. .##.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+015A - LATIN CAPITAL LETTER S WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...... .##..... ###..... .###....
+ ######.. .#####.. ######.. .#####..
+ .######. ..#####. .######. ..#####.
+ .....##. .....##. ....###. ....###.
+ ##...##. ##..###. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+015B - LATIN SMALL LETTER S WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... .....##. ...###.. ...###..
+ ..##.... ....##.. ..###... ..###...
+ ........ ........ ........ ........
+ .######. ..###### .######. ...#####
+ #######. .####### #######. ..#####.
+ ##...... .##..... ###..... .###....
+ ######.. .#####.. ######.. .#####..
+ .#####.. ..#####. .######. ..#####.
+ .....##. .....##. ....###. ....###.
+ #######. #######. #######. .#####..
+ ######.. ######.. ######.. #####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0160 LATIN CAPITAL LETTER S WITH CARON
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ##...##. .##...## ###.###. .###.###
+ .#####.. ..#####. .#####.. ..#####.
+ ........ ........ ........ ........
+ .#####.. ...####. .#####.. ..#####.
+ #######. ..###### #######. .#######
+ ##...##. ..##..## ###.###. .###.###
+ ##...... .##..... ###..... .###....
+ ######.. .#####.. ######.. .#####..
+ .######. ..#####. .######. ..#####.
+ .....##. .....##. ....###. ....###.
+ ##...##. ##..###. ###.###. ###.###.
+ #######. ######.. #######. #######.
+ .#####.. .####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0161 - LATIN SMALL LETTER S WITH CARON
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ .##.##.. ..##.##. .#####.. ..#####.
+ ..###... ...###.. ..###... ...###..
+ ........ ........ ........ ........
+ .######. ..###### .######. ...#####
+ #######. .####### #######. ..#####.
+ ##...... .##..... ###..... .###....
+ ######.. .#####.. ######.. .#####..
+ .#####.. ..#####. .######. ..#####.
+ .....##. .....##. ....###. ....###.
+ #######. #######. #######. .#####..
+ ######.. ######.. ######.. #####...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0174 - LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..###... ........ ........ ........
+ .##.##.. ....###. .#####.. ..#####.
+ ##...##. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ ##...##. ..##...# ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. ###.###.
+ ##.#.##. .##.#.## #######. #######.
+ ##.#.##. ##.#.##. #######. #######.
+ #######. #######. #######. #######.
+ ###.###. ###.###. ###.###. ###.###.
+ .#...#.. .#...#.. .#...#.. .#...#..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0175 - LATIN SMALL LETTER W WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ...#.... ....#...
+ ...#.... .....#.. ..###... ...###..
+ ..###... ....###. .#####.. ..#####.
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##.#.##. ##.#.##. #######. #######.
+ ##.#.##. ##.#.##. #######. #######.
+ #######. #######. #######. #######.
+ .##.##.. .##.##.. .##.##.. .##.##..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0176 - LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##... ........ ........ ........
+ ..####.. ....#### .#####.. ..#####.
+ .##..##. ...##..# ###.###. .###.###
+ ........ ........ ........ ........
+ .##..##. ...##.## ###.###. .###.###
+ .##..##. ..##..## ###.###. .###.###
+ .##..##. ..##..## ###.###. .###.###
+ ..####.. ...####. .#####.. .#####..
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0177 - LATIN SMALL LETTER Y WITH CIRCUMFLEX
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ...#.... ....#...
+ ...#.... .....#.. ..###... ...###..
+ ..###... ....###. .#####.. ..#####.
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. .##...## ###.###. ###.###.
+ ##...##. ##...##. ###.###. ###.###.
+ ##...##. ##...##. #######. #######.
+ #######. ##...##. #######. #######.
+ .######. .######. .######. .######.
+ .....##. ....##.. .....##. .....##.
+ #######. #####... #######. #######.
+ ######.. ####.... ######.. ######..
+-----------------------------------------------------
+U+0178 - LATIN CAPITAL LETTER Y WITH DIAERESIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .##.##.. ..##..## ###.###. ..###.##
+ ........ ........ ........ ........
+ ##...##. .##..##. ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.###
+ ##...##. .##..##. ###.###. .###.###
+ ###.###. ..####.. ###.###. .###.###
+ .#####.. ..####.. .#####.. ..#####.
+ ..###... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ...##... .##..... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0179 - LATIN CAPITAL LETTER Z WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ....##.. ......## ...###.. ....###.
+ ...##... .....##. ..###... ...###..
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ #######. .####### #######. .#######
+ .....##. ......## ....###. .....###
+ ....##.. .....### ...####. ....###.
+ ...##... ....###. ..####.. ...###..
+ ..##.... ...##... .####... ..###...
+ .##..... .###.... ####.... .###....
+ ##...... ###..... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+017A - LATIN SMALL LETTER Z WITH ACUTE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... .....##. ...###.. ...###..
+ ..##.... ....##.. ..###... ..###...
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ #######. .####### #######. .######.
+ ....###. .....### ...####. ...####.
+ ..####.. ...####. ..####.. ..####..
+ .####... .####... .####... .####...
+ ###..... ###..... ####.... ####....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+017B - LATIN CAPITAL LETTER Z WITH DOT ABOVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##... ....##.. ...##... ....###.
+ ...##... ....##.. ...##... ....###.
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ #######. .####### #######. .#######
+ .....##. ......## ....###. .....###
+ ....##.. .....### ...####. ....###.
+ ...##... ....###. ..####.. ...###..
+ ..##.... ...##... .####... ..###...
+ .##..... .###.... ####.... .###....
+ ##...... ###..... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+017C - LATIN SMALL LETTER Z WITH DOT ABOVE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ....##.. ...##... ....###.
+ ...##... ....##.. ...##... ....###.
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ #######. .####### #######. .######.
+ ....###. .....### ...####. ...####.
+ ..####.. ...####. ..####.. ..####..
+ .####... .####... .####... .####...
+ ###..... ###..... ####.... ####....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+017D - LATIN CAPITAL LETTER Z WITH CARON
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ##...##. .##...## ###.###. .###.###
+ .#####.. ..#####. .#####.. ..#####.
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ #######. .####### #######. .#######
+ .....##. ......## ....###. .....###
+ ....##.. .....### ...####. ....###.
+ ...##... ....###. ..####.. ...###..
+ ..##.... ...##... .####... ..###...
+ .##..... .###.... ####.... .###....
+ ##...... ###..... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+017E - LATIN SMALL LETTER Z WITH CARON
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ##...##. .##...## ###.###. .###.###
+ .##.##.. ..##.##. .#####.. ..#####.
+ ..###... ...###.. ..###... ...###..
+ ........ ........ ........ ........
+ #######. .####### #######. .#######
+ #######. .####### #######. .######.
+ ....###. .....### ...####. ...####.
+ ..####.. ...####. ..####.. ..####..
+ .####... .####... .####... .####...
+ ###..... ###..... ####.... ####....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+0192 - LATIN SMALL LETTER F WITH HOOK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...####. .....### ..#####. ...#####
+ ..#####. ....#### .######. ..######
+ ..##.... ....##.. .###.... ..###...
+ ..##.... ...##... .###.... ..###...
+ ..##.... .######. .###.... .###....
+ .####... .######. #####... .#####..
+ .####... ..##.... #####... .#####..
+ ..##.... ..##.... .###.... .###....
+ ..##.... ..##.... .###.... ###.....
+ ..##.... .##..... .###.... ###.....
+ ..##.... .##..... .###.... ###.....
+ ..##.... .##..... .###.... ###.....
+ ####.... ##...... ####.... ##......
+ .##..... #....... ###..... ##......
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+02C6 - MODIFIER LETTER CIRCUMFLEX ACCENT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ ##...##. .##...## ###.###. .###.###
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+02DC - SMALL TILDE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..##..#. ...##..# .####.## ..###.##
+ .#..##.. ..#..##. ##.####. .##.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+1EC6 - LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..###... ....###. .#####.. ..#####.
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ #######. ..###### #######. .#######
+ #######. .####### #######. .#######
+ ##...... .##..... ###..... .###....
+ ####.... .####... ###..... ###.....
+ ####.... .####... #####... #####...
+ ##...... ##...... ###..... ###.....
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ #######. #######. #######. #######.
+ ........ ........ ........ ........
+ ...##... ..##.... ...##... ..###...
+ ...##... ..##.... ...##... ..###...
+-----------------------------------------------------
+U+1EC7 - LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...#.... .....#.. ..###... ...###..
+ ..###... ....###. .#####.. ..#####.
+ .##.##.. ...##.## ###.###. .###.###
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. ..#####.
+ #######. .####### #######. .#######
+ ##...##. .##...## ###.###. ###.###.
+ #######. .####### #######. #######.
+ #######. #######. #######. #######.
+ ##...... ##...... ###..... ###.....
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ ........ ........ ........ ........
+ ...##... ..##.... ...##... ..###...
+ ...##... ..##.... ...##... ..###...
+-----------------------------------------------------
+U+2013 - EN DASH
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..####.. ...####. ..####.. ..####..
+ ........ ........ ..####.. ..####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2014 - EM DASH
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ #######. .####### #######. #######.
+ ........ ........ #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2018 - LEFT SINGLE QUOTATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...#.... .....#.. ...##... ....##..
+ ..#..... ....#... ..##.... ...##...
+ ..##.... ...#.... ..##.... ...##...
+ ..##.... ...##... ..##.... ...##...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2019 - RIGHT SINGLE QUOTATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..##.... ....##.. ..##.... ...##...
+ ..##.... .....#.. ..##.... ...##...
+ ...#.... ....#... ..##.... ...##...
+ ..#..... ...#.... .##..... ..##....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+201A - SINGLE LOW-9 QUOTATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ....#... ...#.... ...##... ..##....
+ ...#.... ..#..... ..##.... .##.....
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+201C - LEFT DOUBLE QUOTATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..#..#.. ....#..# ..##.##. ...##.##
+ .#..#... ...#..#. .##.##.. ..##.##.
+ .##.##.. ...##.## .##.##.. ..##.##.
+ .##.##.. ..##.##. .##.##.. ..##.##.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+201D - RIGHT DOUBLE QUOTATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..##.##. ...##.## ..##.##. ...##.##
+ ..##.##. ...##.## ..##.##. ...##.##
+ ...#..#. ....#..# ..##.##. ...##.##
+ ..#..#.. ...#..#. .##.##.. ..##.##.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+201E - DOUBLE LOW-9 QUATATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..##. .##..##. ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ ..#...#. .#...#.. .##..##. ##..##..
+ .#...#.. #...#... ##..##.. #..##...
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2020 - DAGGER
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ .######. ...##### ..###... ...###..
+ .######. ..###### #######. .#######
+ ...##... ....##.. #######. .#######
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2021 - DOUBLE DAGGER
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ ...##... .....##. ..###... ...###..
+ .######. ...##### #######. .#######
+ .######. ..###### #######. .#######
+ ...##... ....##.. ..###... ...###..
+ .######. ..###### #######. #######.
+ .######. ..###### #######. #######.
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ...##... ..##.... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2022 - BULLET
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..####.. ...####. ..####.. ...####.
+ .######. ..###### .######. .######.
+ .######. ..###### .######. .######.
+ .######. .######. .######. .######.
+ .######. .######. .######. .######.
+ ..####.. ..####.. ..####.. ..####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2023 - TRIANGULAR BULLET
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##..... ...##... ........ ..##....
+ .###.... ...##... .##..... ..###...
+ .####... ...###.. .###.... ..####..
+ .#####.. ..####.. .####... ..#####.
+ .######. ..#####. .#####.. ..######
+ .######. ..#####. .######. .#######
+ .#####.. ..####.. .######. .######.
+ .####... .####... .#####.. .#####..
+ .###.... .###.... .####... .####...
+ .##..... .##..... .###.... .###....
+ ........ ........ .##..... .##.....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2026 - HORIZONTAL ELLIPSIS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ##.##.## ##.##.##
+ ##.##.## ##.##.## ##.##.## ##.##.##
+ ##.##.## ##.##.## ##.##.## ##.##.##
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2030 - PER MILLE SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##....#. .##....# ##...##. .##...##
+ ##...##. .##...## ##..###. .##..###
+ ....##.. .....##. ...###.. ...###..
+ ...##... ....##.. ..###... ..###...
+ ..##.... ..##.... .###.... .###....
+ .##..... .##..... ###..... ###.....
+ ##.##.## ##.##.## ##.##.## ##.##.##
+ #..##.## #..##.## ...##.## ...##.##
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2031 - PER TEN THOUSAND SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ##....#. .##....# ##...##. .##...##
+ ##...##. .##...## ##..###. .##..###
+ ....##.. .....##. ...###.. ...###..
+ ...##... ....##.. ..###... ..###...
+ ..##.... ..##.... .###.... .###....
+ .##..... .##..... ###..... ###.....
+ ##.#.#.# ##.#.#.# ##.#.#.# ##.#.#.#
+ #..#.#.# #..#.#.# ...#.#.# ...#.#.#
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2039 - SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ .....##. ......##
+ ....##.. .....##. ....###. .....###
+ ...###.. ....###. ...###.. ...###..
+ ..###... ...###.. ..###... ..###...
+ ..##.... ..##.... .###.... .###....
+ ..###... ..###... ..###... ..###...
+ ...###.. ...###.. ...###.. ...###..
+ ....##.. ....##.. ....###. ....###.
+ ........ ........ .....##. .....##.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+203A - SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ .##..... ..##....
+ ..##.... ...##... .###.... ..###...
+ ..###... ...###.. ..###... ..###...
+ ...###.. ....###. ...###.. ...###..
+ ....##.. ....##.. ....###. ....###.
+ ...###.. ...###.. ...###.. ...###..
+ ..###... ..###... ..###... ..###...
+ ..##.... ..##.... .###.... .###....
+ ........ ........ .##..... .##.....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+20AC - EURO SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ...##... .....##. ..###... .....##.
+ ..####.. ....#### .#####.. ...#####
+ .##..##. ...##.## ###.###. ..###.##
+ .##..... ...##... ###..... .###....
+ ######.. .######. ######.. #######.
+ .##..... ..##.... ###..... .###....
+ #####... .#####.. #####... #####...
+ .##..... .##..... ###..... ###.....
+ .##..... .##..... ###..... ###.....
+ .##..##. .##.##.. ###.###. ###.###.
+ ..####.. ..####.. .#####.. ######..
+ ...##... ..##.... ..###... .###....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2122 - TRADE MARK SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ####...# #####.## ####...# .####..#
+ #####.## ######## #####.## .#######
+ .#.##### .#.#.#.# .#.##### ..#.####
+ .#.#.#.# #.#...#. .#.#.#.# ..#.#..#
+ .#.#...# #.#...#. .#.#...# ..#.#..#
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2190 - LEFTWARDS ARROW
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ........ ........ ........
+ ..##.... .....#.. ...##... ....##..
+ .##..... ...##... ..##.... ...##...
+ #######. ..##.... .######. ..######
+ #######. .####### #######. #######.
+ .##..... .####### .######. .######.
+ ..##.... .##..... ..##.... ..##....
+ ...##... ..##.... ...##... ...##...
+ ........ ...##... ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2191 - UPWARDS ARROW
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##... ....##.. ...#.... ....#...
+ ..####.. ...####. ..###... ...###..
+ .######. ..#####. .#####.. .#####..
+ ##.##.## .#..##.# #######. #######.
+ #..##..# #..##..# #.###.#. #.###.#.
+ ...##... ...##... ..###... ..###...
+ ...##... ...##... ..###... ..###...
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2192 - RIGHTWARDS ARROW
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..##.... ........ ........ ........
+ ...##... ....##.. ..##.... ...##...
+ ....##.. ....##.. ...##... ....##..
+ #######. .....##. ######.. .######.
+ #######. .####### #######. #######.
+ ....##.. .####### ######.. ######..
+ ...##... ....##.. ...##... ...##...
+ ..##.... ...##... ..##.... ..##....
+ ........ ..##.... ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2193 - DOWNWARDS ARROW
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ ...##... ....##.. ..###... ...###..
+ #..##..# .#..##.. #.###.#. #.###.#.
+ ##.##.## .##.##.# #######. #######.
+ .######. .######. .#####.. .#####..
+ ..####.. ..####.. ..###... ..###...
+ ...##... ...##... ...#.... ...#....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+21E6 - LEFTWARDS WHITE ARROW
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...#.... ....##.. ...#.... ....#...
+ ..##.... ...##... ..##.... ...##...
+ .######. ..###### .######. ..#####.
+ #######. .####### #######. #######.
+ ##...##. .##...## #######. #######.
+ #######. #######. #######. #######.
+ .######. .######. .######. .######.
+ ..##.... ..##.... ..##.... ..##....
+ ...#.... ...#.... ...#.... ...#....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+21E7 - UPWARDS WHITE ARROW
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...#.... ....#... ...#.... ....#...
+ ..###... ...###.. ..###... ...###..
+ .##.##.. ..##.##. .#####.. ..#####.
+ ##...##. .##...#. #######. .######.
+ ###.###. ##....## #######. #######.
+ ###.###. ###.#### #######. #######.
+ ..#.#... .##.##.. .#####.. .#####..
+ ..#.#... ##.##... .#####.. .#####..
+ ..###... #####... .#####.. .#####..
+ ..###... #####... .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+21E8 - RIGHTWARDS WHITE ARROW
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...#.... .....#.. ...#.... ....#...
+ ...##... ....##.. ...##... ....##..
+ ######.. .######. ######.. .######.
+ #######. .####### #######. #######.
+ ##...##. .##...## #######. #######.
+ #######. #######. #######. #######.
+ ######.. ######.. ######.. ######..
+ ...##... ...##... ...##... ...##...
+ ...#.... ...#.... ...#.... ...#....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+21E9 - DOWNWARDS WHITE ARROW
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .#####.. ...##### .#####.. ..#####.
+ .#####.. ...##### .#####.. ..#####.
+ .##.##.. ...##.## .#####.. ..#####.
+ .##.##.. ..##.##. .#####.. .#####..
+ ###.###. ..##.##. #######. #######.
+ ###.###. ###...## #######. #######.
+ ##...##. ##...##. #######. #######.
+ .##.##.. .##.##.. .#####.. .#####..
+ ..###... ..###... ..###... ..###...
+ ...#.... ..#..... ...#.... ...#....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2212 - MINUS SIGN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .#####.. ..#####. .#####.. .#####..
+ ........ ........ .#####.. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+23CE - RETURN SYMBOL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ...##.## ........ .....### ......##
+ ..##..## ....#... ...#.### ....#.##
+ .##...## ...##.## ..##.### ...##.##
+ ######## ..##..## .####### ..######
+ #######. .####### ######## ########
+ .##..... .####### .######. .######.
+ ..##.... .##..... ..##.... ..##....
+ ...##... ..##.... ...#.... ...#....
+ ........ ...##... ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+240C - SYMBOL FOR FORM FEED
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ####.... ..####.. ####.... .####...
+ ####.... ..####.. ####.... .####...
+ ##..#### .##..### ##..#### .##..###
+ ###.#### .###.### ###.#### .###.###
+ ###.##.. .###.##. ###.##.. .###.##.
+ ##..###. ##...### ##..###. ##..###.
+ ##..###. ##..#### ##..###. ##..###.
+ ##..##.. ##..##.. ##..##.. ##..##..
+ ....##.. ....##.. ....##.. ....##..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2500 - BOX DRAWINGS LIGHT HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2501 - BOX DRAWINGS HEAVY HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ########
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2502 - BOX DRAWINGS LIGHT VERTICAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2503 - BOX DRAWINGS HEAVY VERTICAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2504 - BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ #.#..#.#
+ #.#..#.#
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2505 - BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ #.#..#.#
+ #.#..#.#
+ #.#..#.#
+ #.#..#.#
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2506 - BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ........
+ ........
+ ...##...
+ ...##...
+ ...##...
+ ........
+ ........
+ ...##...
+ ...##...
+ ...##...
+ ........
+ ........
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2507 - BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ........
+ ........
+ ..####..
+ ..####..
+ ..####..
+ ........
+ ........
+ ..####..
+ ..####..
+ ..####..
+ ........
+ ........
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2508 - BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ #.#.#.#.
+ #.#.#.#.
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2509 - BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ #.#.#.#.
+ #.#.#.#.
+ #.#.#.#.
+ #.#.#.#.
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+250A - BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ...##...
+ ...##...
+ ........
+ ........
+ ...##...
+ ...##...
+ ........
+ ........
+ ...##...
+ ...##...
+ ........
+ ........
+ ...##...
+ ...##...
+ ........
+-----------------------------------------------------
+U+250B - BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ..####..
+ ..####..
+ ........
+ ........
+ ..####..
+ ..####..
+ ........
+ ........
+ ..####..
+ ..####..
+ ........
+ ........
+ ..####..
+ ..####..
+ ........
+-----------------------------------------------------
+U+250C - BOX DRAWINGS LIGHT DOWN AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ...#####
+ ...#####
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+250D - BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ...#####
+ ...#####
+ ...#####
+ ...#####
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+250E - BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ..######
+ ..######
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+250F - BOX DRAWINGS HEAVY DOWN AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ..######
+ ..######
+ ..######
+ ..######
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2510 - BOX DRAWINGS LIGHT DOWN AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ #####...
+ #####...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2511 - BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ #####...
+ #####...
+ #####...
+ #####...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2512 - BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ######..
+ ######..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2513 - BOX DRAWINGS HEAVY DOWN AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ######..
+ ######..
+ ######..
+ ######..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2514 - BOX DRAWINGS LIGHT UP AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...#####
+ ...#####
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2515 - BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...#####
+ ...#####
+ ...#####
+ ...#####
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2516 - BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..######
+ ..######
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2517 - BOX DRAWINGS HEAVY UP AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..######
+ ..######
+ ..######
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2518 - BOX DRAWINGS LIGHT UP AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ #####...
+ #####...
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2519 - BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ #####...
+ #####...
+ #####...
+ #####...
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+251A - BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ######..
+ ######..
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+251B - BOX DRAWINGS HEAVY UP AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ######..
+ ######..
+ ######..
+ ######..
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+251C - BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...#####
+ ...#####
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+251D - BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...#####
+ ...#####
+ ...#####
+ ...#####
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+251E - BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..######
+ ..######
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+251F - BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ..######
+ ..######
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2520 - BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..######
+ ..######
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2521 - BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..######
+ ..######
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2522 - BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ..######
+ ..######
+ ..######
+ ..######
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2523 - BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..######
+ ..######
+ ..######
+ ..######
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2524 - BOX DRAWINGS LIGHT VERTICAL AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ #####...
+ #####...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2525 - BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ #####...
+ #####...
+ #####...
+ #####...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2526 - BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ######..
+ ######..
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2527 - BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ######..
+ ######..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2528 - BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ######..
+ ######..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2529 - BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ######..
+ ######..
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+252A - BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ######..
+ ######..
+ ######..
+ ######..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+252B - BOX DRAWINGS HEAVY VERTICAL AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ######..
+ ######..
+ ######..
+ ######..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+252C - BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+252D - BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ #####...
+ ########
+ ########
+ #####...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+252E - BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ...#####
+ ########
+ ########
+ ...#####
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+252F - BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ########
+ ########
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2530 - BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2531 - BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ######..
+ ########
+ ########
+ ######..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2532 - BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ..######
+ ########
+ ########
+ ..######
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2533 - BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ########
+ ########
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2534 - BOX DRAWINGS LIGHT UP AND HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ########
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2535 - BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ #####...
+ ########
+ ########
+ #####...
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2536 - BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...#####
+ ########
+ ########
+ ...#####
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2537 - BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ########
+ ########
+ ########
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2538 - BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ########
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2539 - BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ######..
+ ########
+ ########
+ ######..
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+253A - BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..######
+ ########
+ ########
+ ..######
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+253B - BOX DRAWINGS HEAVY UP AND HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ########
+ ########
+ ########
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+253C - BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ########
+ ########
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+253D - BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ #####...
+ ########
+ ########
+ #####...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+253E - BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...#####
+ ########
+ ########
+ ...#####
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+253F - BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ########
+ ########
+ ########
+ ########
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2540 - BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ########
+ ########
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2541 - BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ########
+ ########
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2542 - BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ########
+ ########
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2543 - BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ######..
+ ########
+ ########
+ ######..
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2544 - BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..######
+ ########
+ ########
+ ..######
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2545 - BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ######..
+ ########
+ ########
+ ######..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2546 - BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ..######
+ ########
+ ########
+ ..######
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2547 - BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ########
+ ########
+ ########
+ ########
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2548 - BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ########
+ ########
+ ########
+ ########
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+2549 - BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ######..
+ ########
+ ########
+ ######..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+254A - BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..######
+ ########
+ ########
+ ..######
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+254B - BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ########
+ ########
+ ########
+ ########
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+254C - BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ .##..##.
+ .##..##.
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+254D - BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ .##..##.
+ .##..##.
+ .##..##.
+ .##..##.
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+254E - BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ........
+ ........
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ........
+ ........
+-----------------------------------------------------
+U+254F - BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ........
+ ........
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ........
+ ........
+-----------------------------------------------------
+U+2550 - BOX DRAWINGS DOUBLE HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ........
+ ........
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2551 - BOX DRAWINGS DOUBLE VERTICAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2552 - BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ...#####
+ ...##...
+ ...##...
+ ...#####
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2553 - BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ..######
+ ..######
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2554 - BOX DRAWINGS DOUBLE DOWN AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ..######
+ ..#.....
+ ..#.....
+ ..#..###
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2555 - BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ #####...
+ ...##...
+ ...##...
+ #####...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2556 - BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ######..
+ ######..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2557 - BOX DRAWINGS DOUBLE DOWN AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ######..
+ .....#..
+ .....#..
+ ###..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2558 - BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...#####
+ ...##...
+ ...##...
+ ...#####
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2559 - BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..######
+ ..######
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+255A - BOX DRAWINGS DOUBLE UP AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..###
+ ..#.....
+ ..#.....
+ ..######
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+255B - BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ #####...
+ ...##...
+ ...##...
+ #####...
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+255C - BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ######..
+ ######..
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+255D - BOX DRAWINGS DOUBLE UP AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ###..#..
+ .....#..
+ .....#..
+ ######..
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+255E - BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...#####
+ ...##...
+ ...##...
+ ...#####
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+255F - BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..###
+ ..#..###
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2560 - BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..###
+ ..#.....
+ ..#.....
+ ..#..###
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2561 - BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ #####...
+ ...##...
+ ...##...
+ #####...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2562 - BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ###..#..
+ ###..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2563 - BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ###..#..
+ .....#..
+ .....#..
+ ###..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2564 - BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ........
+ ........
+ ########
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2565 - BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2566 - BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ........
+ ........
+ ###..###
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+2567 - BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ########
+ ........
+ ........
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2568 - BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ########
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2569 - BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ###..###
+ ........
+ ........
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+256A - BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ########
+ ...##...
+ ...##...
+ ########
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+256B - BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ########
+ ########
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+256C - BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ###..###
+ ........
+ ........
+ ###..###
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+-----------------------------------------------------
+U+256D - BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ......##
+ ....####
+ ....##..
+ ....##..
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+256E - BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ##......
+ ####....
+ ..##....
+ ..##....
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+256F - BOX DRAWINGS LIGHT ARC UP AND LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ..##....
+ ..##....
+ ####....
+ ##......
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2570 - BOX DRAWINGS LIGHT ARC UP AND RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ....##..
+ ....##..
+ ....####
+ ......##
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2571 - BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ .......#
+ ......##
+ ......##
+ .....##.
+ .....##.
+ ....##..
+ ....##..
+ ...##...
+ ...##...
+ ..##....
+ ..##....
+ .##.....
+ .##.....
+ ##......
+ ##......
+ #.......
+-----------------------------------------------------
+U+2572 - BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ #.......
+ ##......
+ ##......
+ .##.....
+ .##.....
+ ..##....
+ ..##....
+ ...##...
+ ...##...
+ ....##..
+ ....##..
+ .....##.
+ .....##.
+ ......##
+ ......##
+ .......#
+-----------------------------------------------------
+U+2573 - BOX DRAWINGS LIGHT DIAGONAL CROSS
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ #......#
+ ##....##
+ ##....##
+ .##..##.
+ .##..##.
+ ..####..
+ ..####..
+ ...##...
+ ...##...
+ ..####..
+ ..####..
+ .##..##.
+ .##..##.
+ ##....##
+ ##....##
+ #......#
+-----------------------------------------------------
+U+2574 - BOX DRAWINGS LIGHT LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ####....
+ ####....
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2575 - BOX DRAWINGS LIGHT UP
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2576 - BOX DRAWINGS LIGHT RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ....####
+ ....####
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2577 - BOX DRAWINGS LIGHT DOWN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2578 - BOX DRAWINGS HEAVY LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ####....
+ ####....
+ ####....
+ ####....
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2579 - BOX DRAWINGS HEAVY UP
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+257A - BOX DRAWINGS HEAVY RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ....####
+ ....####
+ ....####
+ ....####
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+257B - BOX DRAWINGS HEAVY DOWN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+257C - BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ....####
+ ########
+ ########
+ ....####
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+257D - BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+-----------------------------------------------------
+U+257E - BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ####....
+ ########
+ ########
+ ####....
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+257F - BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ..####..
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+ ...##...
+-----------------------------------------------------
+U+2580 - UPPER HALF BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2581 - LOWER ONE EIGHTH BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+-----------------------------------------------------
+U+2582 - LOWER ONE QUARTER BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ########
+ ########
+-----------------------------------------------------
+U+2583 - LOWER THREE EIGHTHS BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+-----------------------------------------------------
+U+2584 - LOWER HALF BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+-----------------------------------------------------
+U+2585 - LOWER FIVE EIGHTHS BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+-----------------------------------------------------
+U+2586 - LOWER THREE QUARTERS BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+-----------------------------------------------------
+U+2587 - LOWER SEVEN EIGHTHS BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+-----------------------------------------------------
+U+2588 - FULL BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+-----------------------------------------------------
+U+2589 - LEFT SEVEN EIGHTHS BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+ #######.
+-----------------------------------------------------
+U+258A - LEFT THREE QUARTERS BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+ ######..
+-----------------------------------------------------
+U+258B - LEFT FIVE EIGHTHS BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+ #####...
+-----------------------------------------------------
+U+258C - LEFT HALF BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+-----------------------------------------------------
+U+258D - LEFT THREE EIGHTHS BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+ ###.....
+-----------------------------------------------------
+U+258E - LEFT ONE QUARTER BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+ ##......
+-----------------------------------------------------
+U+258F - LEFT ONE EIGHTH BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+ #.......
+-----------------------------------------------------
+U+2590 - RIGHT HALF BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+-----------------------------------------------------
+U+2591 - LIGHT SHADE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ..#...#.
+ #...#...
+ ..#...#.
+ #...#...
+ ..#...#.
+ #...#...
+ ..#...#.
+ #...#...
+ ..#...#.
+ #...#...
+ ..#...#.
+ #...#...
+ ..#...#.
+ #...#...
+ ..#...#.
+ #...#...
+-----------------------------------------------------
+U+2592 - MEDIUM SHADE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ .#.#.#.#
+ #.#.#.#.
+ .#.#.#.#
+ #.#.#.#.
+ .#.#.#.#
+ #.#.#.#.
+ .#.#.#.#
+ #.#.#.#.
+ .#.#.#.#
+ #.#.#.#.
+ .#.#.#.#
+ #.#.#.#.
+ .#.#.#.#
+ #.#.#.#.
+ .#.#.#.#
+ #.#.#.#.
+-----------------------------------------------------
+U+2593 - DARK SHADE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ##.###.#
+ .###.###
+ ##.###.#
+ .###.###
+ ##.###.#
+ .###.###
+ ##.###.#
+ .###.###
+ ##.###.#
+ .###.###
+ ##.###.#
+ .###.###
+ ##.###.#
+ .###.###
+ ##.###.#
+ .###.###
+-----------------------------------------------------
+U+2594 - UPPER ONE EIGHTH BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ########
+ ########
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2595 - RIGHT ONE EIGHTH BLOCK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+ .......#
+-----------------------------------------------------
+U+2596 - QUADRANT LOWER LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+-----------------------------------------------------
+U+2597 - QUADRANT LOWER RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+-----------------------------------------------------
+U+2598 - QUADRANT UPPER LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2599 - QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+-----------------------------------------------------
+U+259A - QUADRANT UPPER LEFT AND LOWER RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+-----------------------------------------------------
+U+259B - QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+-----------------------------------------------------
+U+259C - QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+-----------------------------------------------------
+U+259D - QUADRANT UPPER RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+259E - QUADRANT UPPER RIGHT AND LOWER LEFT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+ ####....
+-----------------------------------------------------
+U+259F - QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ....####
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+ ########
+-----------------------------------------------------
+U+25F0 - WHITE SQUARE WITH UPPER LEFT QUADRANT
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ #######. ..###### #######. .#######
+ #######. ..##.### #######. .#######
+ ##.#.##. ..##.### ##.#.##. .##.#.##
+ ##.#.##. .##.#.## ##.#.##. .##.#.##
+ ##.#.##. .##.#.## ##.#.##. .##.#.#.
+ ####.##. .####.## ####.##. ####.##.
+ ####.##. .####.## ####.##. ####.##.
+ ##...##. ##...##. ##...##. ##...##.
+ ##...##. ##...##. ##...##. ##...##.
+ ##...##. ##...##. ##...##. ##...##.
+ #######. #######. #######. #######.
+ #######. ######.. #######. #######.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+25AA - BLACK SMALL SQUARE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..####.. ...####. ..#####. ..#####.
+ ..####.. ...####. ..#####. ..#####.
+ ..####.. ..####.. ..#####. .#####..
+ ..####.. ..####.. ..#####. .#####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+25B2 - BLACK UP-POINTING TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ...#....
+ ...#....
+ ..###...
+ ..###...
+ .#####..
+ .#####..
+ #######.
+ #######.
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25B3 - WHITE UP-POINTING TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ...#....
+ ...#....
+ ..###...
+ ..#.#...
+ .##.##..
+ .#...#..
+ ##...##.
+ #######.
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25B4 - BLACK UP-POINTING SMALL TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ...#....
+ ...#....
+ ..###...
+ ..###...
+ .#####..
+ .#####..
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25B5 - WHITE UP-POINTING SMALL TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ ...#....
+ ...#....
+ ..###...
+ ..#.#...
+ .##.##..
+ .#####..
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25B6 - BLACK RIGHT-POINTING TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ #.......
+ ###.....
+ #####...
+ #######.
+ #######.
+ #####...
+ ###.....
+ #.......
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25B7 - WHITE RIGHT-POINTING TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ #.......
+ ###.....
+ #.###...
+ #....##.
+ #....##.
+ #.###...
+ ###.....
+ #.......
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25B8 - BLACK RIGHT-POINTING SMALL TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ .#......
+ .###....
+ .#####..
+ .#####..
+ .###....
+ .#......
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25B9 - WHITE RIGHT-POINTING SMALL TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ .#......
+ .###....
+ .#..##..
+ .#..##..
+ .###....
+ .#......
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25BA - BLACK RIGHT-POINTING POINTER
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ #.......
+ ###.....
+ #####...
+ #######.
+ #######.
+ #####...
+ ###.....
+ #.......
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25BB - WHITE RIGHT-POINTING POINTER
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ #.......
+ ###.....
+ #.###...
+ #....##.
+ #....##.
+ #.###...
+ ###.....
+ #.......
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25BC - BLACK DOWN-POINTING TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ #######.
+ #######.
+ .#####..
+ .#####..
+ ..###...
+ ..###...
+ ...#....
+ ...#....
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25BD - WHITE DOWN-POINTING TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ #######.
+ ##...##.
+ .#...#..
+ .##.##..
+ ..#.#...
+ ..###...
+ ...#....
+ ...#....
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25BE - BLACK DOWN-POINTING SMALL TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ .#####..
+ .#####..
+ ..###...
+ ..###...
+ ...#....
+ ...#....
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25BF - WHITE DOWN-POINTING SMALL TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ .#####..
+ .##.##..
+ ..#.#...
+ ..###...
+ ...#....
+ ...#....
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25C0 - BLACK LEFT-POINTING TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ......#.
+ ....###.
+ ..#####.
+ #######.
+ #######.
+ ..#####.
+ ....###.
+ ......#.
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25C1 - WHITE LEFT-POINTING TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ......#.
+ ....###.
+ ..###.#.
+ ##....#.
+ ##....#.
+ ..###.#.
+ ....###.
+ ......#.
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25C2 - BLACK LEFT-POINTING SMALL TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ .....#..
+ ...###..
+ .#####..
+ .#####..
+ ...###..
+ .....#..
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25C3 - WHITE LEFT-POINTING SMALL TRIANGLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ .....#..
+ ...###..
+ .##..#..
+ .##..#..
+ ...###..
+ .....#..
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25C4 - BLACK LEFT-POINTING POINTER
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ......#.
+ ....###.
+ ..#####.
+ #######.
+ #######.
+ ..#####.
+ ....###.
+ ......#.
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25C5 - WHITE LEFT-POINTING POINTER
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ......#.
+ ....###.
+ ..###.#.
+ ##....#.
+ ##....#.
+ ..###.#.
+ ....###.
+ ......#.
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+25CB - WHITE CIRCLE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ..####.. ...####. ..####.. ...####.
+ .######. ..###### .######. .######.
+ .##..##. ..##..## .##..##. .###..#.
+ .##..##. .##..##. .##..##. .##..##.
+ .######. .######. .######. .######.
+ ..####.. ..####.. ..####.. ..####..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2603 - SNOWMAN
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ..###...
+ .#####..
+ ..#.#...
+ .#...#..
+ ..#.#...
+ .#.#.#..
+ #.....#.
+ #.....#.
+ #.....#.
+ #.....#.
+ .#...#..
+ ..###...
+ ........
+ ........
+-----------------------------------------------------
+U+263A - WHITE SMILING FACE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ..###...
+ .#...#..
+ #.....#.
+ #.#.#.#.
+ #.....#.
+ #.###.#.
+ #..#..#.
+ .#...#..
+ ..###...
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+263B - BLACK SMILING FACE
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ..###...
+ .#####..
+ #######.
+ ##.#.##.
+ #######.
+ #.###.#.
+ ##...##.
+ .#####..
+ ..###...
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+2713 - CHECK MARK
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .....##. .......# .....##. ......##
+ .....##. .......# ....###. .....###
+ ....##.. ......## ....###. .....###
+ ....##.. .....##. ...###.. ....###.
+ ....##.. .....##. ...###.. ....###.
+ ...##... ....##.. ..###... ..###...
+ ...##... ....##.. #####... #####...
+ ##.##... ##.##... #####... #####...
+ ####.... ####.... ####.... ####....
+ .###.... .###.... .###.... .###....
+ ..#..... ..#..... ..#..... ..#.....
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2717 - BALLOT X
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ .##.##.. ...##.#. .##.##.. ..##.##.
+ #######. ..###### #######. .#######
+ ##.#.##. .##.#.## ##.#.##. .##.#.##
+ ##...##. .##...## ###.###. .###.###
+ .##.##.. ..##.##. .##.##.. .##.##..
+ .##.##.. ..####.. .##.##.. .##.##..
+ .##.##.. .##.##.. .##.##.. .##.##..
+ ##...##. ##...##. ###.###. ###.###.
+ ##.#.##. ##.#.##. ##.#.##. ##.#.##.
+ #######. #######. #######. #######.
+ .##.##.. .##.##.. .##.##.. .##.##..
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+2721 - STAR OF DAVID
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ...#....
+ ...#....
+ ..#.#...
+ #######.
+ .##.##..
+ .##.##..
+ #######.
+ ..#.#...
+ ...#....
+ ...#....
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+3007 - IDEOGRAPHIC NUMBER ZERO
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ..###...
+ .#...#..
+ .#...#..
+ #.....#.
+ #.....#.
+ #.....#.
+ #.....#.
+ .#...#..
+ .#...#..
+ ..###...
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+4E00 - <CJK Ideograph, First>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ........
+ ........
+ ........
+ ........
+ #######.
+ #######.
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+4E03 - <CJK Ideograph, Seventh>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ..#.....
+ ..#.....
+ ..#...#.
+ ..####..
+ ###.....
+ ..#.....
+ ..#.....
+ ..#...#.
+ ..#...#.
+ ..####..
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+4E07 - <CJK Ideograph, Ten Thousanth>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ #######.
+ ..#.....
+ ..#.....
+ ..####..
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ .#...#..
+ .#...#..
+ #..##...
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+4E09 - <CJK Ideograph, Third>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ .#####..
+ .#####..
+ ........
+ ........
+ ..###...
+ ..###...
+ ........
+ ........
+ #######.
+ #######.
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+4E5D - <CJK Ideograph, Ninth>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ..#.....
+ ..#.....
+ ######..
+ ..#..#..
+ ..#.#...
+ ..#.#...
+ ..#.#...
+ .#..#.#.
+ .#..#.#.
+ #...##..
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+4E8C - <CJK Ideograph, Second>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ .#####..
+ .#####..
+ ........
+ ........
+ ........
+ ........
+ ........
+ ........
+ #######.
+ #######.
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+4E94 - <CJK Ideograph, Fifth>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ #######.
+ ....#...
+ ...#....
+ ...#....
+ .######.
+ ...#..#.
+ ..#..#..
+ ..#..#..
+ ..#..#..
+ #######.
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+4EBF - <Hundred million, many>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ..#.###.
+ ..#...#.
+ .#...#..
+ .#...#..
+ ##..#...
+ .#..#...
+ .#.#....
+ .#.#..#.
+ .#.####.
+ .#......
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+516B - <CJK Ideograph, Eighth>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ...##...
+ ..#.#...
+ ..#.#...
+ ..#.#...
+ .#...#..
+ .#...#..
+ .#...#..
+ .#...#..
+ .#...#..
+ #.....#.
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+516D - <CJK Ideograph, Sixth>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ...#....
+ ...#....
+ ...#....
+ #######.
+ ........
+ ..#.#...
+ ..#..#..
+ ..#..#..
+ .#....#.
+ #.....#.
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+5341 - <CJK Ideograph, Tenth>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ...#....
+ ...#....
+ ...#....
+ ...#....
+ #######.
+ ...#....
+ ...#....
+ ...#....
+ ...#....
+ ...#....
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+5343 - <CJK Ideograph, Thousandth>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ....###.
+ ####....
+ ...#....
+ ...#....
+ #######.
+ ...#....
+ ...#....
+ ...#....
+ ...#....
+ ...#....
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+56DB - <CJK Ideograph, Fourth>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ #######.
+ #######.
+ #.#.#.#.
+ #.#.#.#.
+ #.#.#.#.
+ ##..###.
+ ##....#.
+ #.....#.
+ #######.
+ #.....#.
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+767E - <CJK Ideograph, Hundredth>
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ #######.
+ ...#....
+ .#####..
+ .#...#..
+ .#...#..
+ .#####..
+ .#...#..
+ .#...#..
+ .#####..
+ .#...#..
+ ........
+ ........
+ ........
+ ........
+ ........
+-----------------------------------------------------
+U+FB01 - LATIN SMALL LIGATURE FI
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..####.. ....###. .#####.. ..#####.
+ .######. ...##### #######. .#######
+ .##..##. ...##.## ###.###. .###.###
+ .##..##. ...##.## ###.###. .###.###
+ .##..... ..##.... ###..... .###....
+ #######. .####### #######. .#######
+ #######. .####### #######. #######.
+ .##..##. ..##..## ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ .##..##. .##..##. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+FB02 - LATIN SMALL LIGATURE FL
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........ ........ ........ ........
+ ..#####. ...##### .######. ..######
+ .######. ..###### #######. .#######
+ .##..##. ..##..## ###.###. .###.###
+ .##..##. ..##.##. ###.###. .###.###
+ .##..##. .##..##. ###.###. .###.###
+ ####.##. ####.##. #######. .#######
+ ####.##. ####.##. #######. #######.
+ .##..##. .##..##. ###.###. ###.###.
+ .##..##. ##..##.. ###.###. ###.###.
+ .##..##. ##..##.. ###.###. ###.###.
+ .##..##. ##..##.. ###.###. ###.###.
+ .##..##. ##..##.. ###.###. ###.###.
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+ ........ ........ ........ ........
+-----------------------------------------------------
+U+FFFC - OBJECT REPLACEMENT CHARACTER
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ #..##..#
+ ..#..#..
+ #.#..#.#
+ ...##...
+ #......#
+ ..###...
+ #.#..#.#
+ ..###...
+ #.#..#.#
+ ..###...
+ #......#
+ ..####..
+ #...#..#
+ ....#...
+ #.#.#..#
+ ...#....
+-----------------------------------------------------
+U+FFFD - REPLACEMENT CHARACTER
+- - - - - - - - - - - - - - - - - - - - - - - - - - -
+ ........
+ ...#....
+ ..###...
+ ..###...
+ .##.##..
+ .#.#.#..
+ ####.##.
+ ###.###.
+ .##.##..
+ .#####..
+ ..#.#...
+ ..###...
+ ...#....
+ ........
+ ........
+ ........
+-----------------------------------------------------
diff --git a/framebuffer/schedule.c b/framebuffer/schedule.c
index 43f531838..151b6f99f 100644
--- a/framebuffer/schedule.c
+++ b/framebuffer/schedule.c
@@ -20,10 +20,15 @@
#include <time.h>
#include <stdlib.h>
-#include "utils/schedule.h"
+#include "utils/log.h"
+
#include "framebuffer/schedule.h"
-#include "utils/log.h"
+#ifdef DEBUG_SCHEDULER
+#define SRLOG(x) LOG(x)
+#else
+#define SRLOG(x)
+#endif
/* linked list of scheduled callbacks */
static struct nscallback *schedule_list = NULL;
@@ -39,39 +44,6 @@ struct nscallback
void *p;
};
-
-/**
- * Schedule a callback.
- *
- * \param tival interval before the callback should be made / cs
- * \param callback callback function
- * \param p user parameter, passed to callback function
- *
- * The callback function will be called as soon as possible after t cs have
- * passed.
- */
-
-void schedule(int cs_ival, void (*callback)(void *p), void *p)
-{
- struct nscallback *nscb;
- struct timeval tv;
-
- tv.tv_sec = cs_ival / 100; /* cs to seconds */
- tv.tv_usec = (cs_ival % 100) * 10000; /* remainder to microseconds */
-
- nscb = calloc(1, sizeof(struct nscallback));
-
- gettimeofday(&nscb->tv, NULL);
- timeradd(&nscb->tv, &tv, &nscb->tv);
-
- nscb->callback = callback;
- nscb->p = p;
-
- /* add to list front */
- nscb->next = schedule_list;
- schedule_list = nscb;
-}
-
/**
* Unschedule a callback.
*
@@ -80,17 +52,18 @@ void schedule(int cs_ival, void (*callback)(void *p), void *p)
*
* All scheduled callbacks matching both callback and p are removed.
*/
-
-void schedule_remove(void (*callback)(void *p), void *p)
+static nserror schedule_remove(void (*callback)(void *p), void *p)
{
struct nscallback *cur_nscb;
struct nscallback *prev_nscb;
struct nscallback *unlnk_nscb;
- if (schedule_list == NULL)
- return;
+ /* check there is something on the list to remove */
+ if (schedule_list == NULL) {
+ return NSERROR_OK;
+ }
- LOG(("removing %p, %p", callback, p));
+ SRLOG(("removing %p, %p", callback, p));
cur_nscb = schedule_list;
prev_nscb = NULL;
@@ -100,7 +73,7 @@ void schedule_remove(void (*callback)(void *p), void *p)
(cur_nscb->p == p)) {
/* item to remove */
- LOG(("callback entry %p removing %p(%p)",
+ SRLOG(("callback entry %p removing %p(%p)",
cur_nscb, cur_nscb->callback, cur_nscb->p));
/* remove callback */
@@ -119,16 +92,45 @@ void schedule_remove(void (*callback)(void *p), void *p)
cur_nscb = prev_nscb->next;
}
}
+
+ return NSERROR_OK;
}
-/**
- * Process scheduled callbacks up to current time.
- *
- * @return The number of milliseconds untill the next scheduled event
- * or -1 for no event.
- */
-int
-schedule_run(void)
+/* exported function documented in framebuffer/schedule.h */
+nserror framebuffer_schedule(int tival, void (*callback)(void *p), void *p)
+{
+ struct nscallback *nscb;
+ struct timeval tv;
+ nserror ret;
+
+ /* ensure uniqueness of the callback and context */
+ ret = schedule_remove(callback, p);
+ if ((tival < 0) || (ret != NSERROR_OK)) {
+ return ret;
+ }
+
+ SRLOG(("Adding %p(%p) in %d", callback, p, tival));
+
+ tv.tv_sec = tival / 1000; /* miliseconds to seconds */
+ tv.tv_usec = (tival % 1000) * 1000; /* remainder to microseconds */
+
+ nscb = calloc(1, sizeof(struct nscallback));
+
+ gettimeofday(&nscb->tv, NULL);
+ timeradd(&nscb->tv, &tv, &nscb->tv);
+
+ nscb->callback = callback;
+ nscb->p = p;
+
+ /* add to list front */
+ nscb->next = schedule_list;
+ schedule_list = nscb;
+
+ return NSERROR_OK;
+}
+
+/* exported function documented in framebuffer/schedule.h */
+int schedule_run(void)
{
struct timeval tv;
struct timeval nexttime;
@@ -188,7 +190,8 @@ schedule_run(void)
/* make rettime relative to now */
timersub(&nexttime, &tv, &rettime);
- /*LOG(("returning time to next event as %ldms",(rettime.tv_sec * 1000) + (rettime.tv_usec / 1000))); */
+ SRLOG(("returning time to next event as %ldms",(rettime.tv_sec * 1000) + (rettime.tv_usec / 1000)));
+
/* return next event time in milliseconds (24days max wait) */
return (rettime.tv_sec * 1000) + (rettime.tv_usec / 1000);
}
diff --git a/framebuffer/schedule.h b/framebuffer/schedule.h
index 2c9b55f82..4e94da68e 100644
--- a/framebuffer/schedule.h
+++ b/framebuffer/schedule.h
@@ -19,7 +19,27 @@
#ifndef FRAMEBUFFER_SCHEDULE_H
#define FRAMEBUFFER_SCHEDULE_H
+/**
+ * Schedule a callback.
+ *
+ * \param tival interval before the callback should be made in ms
+ * \param callback callback function
+ * \param p user parameter, passed to callback function
+ *
+ * The callback function will be called as soon as possible after t ms have
+ * passed.
+ */
+
+nserror framebuffer_schedule(int tival, void (*callback)(void *p), void *p);
+
+/**
+ * Process scheduled callbacks up to current time.
+ *
+ * @return The number of milliseconds untill the next scheduled event
+ * or -1 for no event.
+ */
int schedule_run(void);
+
void list_schedule(void);
#endif
diff --git a/framebuffer/thumbnail.c b/framebuffer/thumbnail.c
index 53ff33609..0573e0758 100644
--- a/framebuffer/thumbnail.c
+++ b/framebuffer/thumbnail.c
@@ -22,8 +22,10 @@
#include <libnsfb_plot.h>
#include "utils/log.h"
+#include "utils/utils.h"
#include "desktop/thumbnail.h"
#include "content/urldb.h"
+#include "content/content.h"
#include "framebuffer/gui.h"
#include "framebuffer/fbtk.h"