diff options
Diffstat (limited to 'framebuffer')
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" |