Add logic for font rendering

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1410 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
patacongo 2008-12-04 01:11:21 +00:00
parent f735008c65
commit 000ac55d04
9 changed files with 751 additions and 222 deletions

View File

@ -91,21 +91,27 @@ gen1bppsources:
gen2bppsource:
@make -C nxglib -f Makefile.sources TOPDIR=$(TOPDIR) NXGLIB_BITSPERPIXEL=2
@make -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_BITSPERPIXEL=2
gen4bppsource:
@make -C nxglib -f Makefile.sources TOPDIR=$(TOPDIR) NXGLIB_BITSPERPIXEL=4
@make -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_BITSPERPIXEL=4
gen8bppsource:
@make -C nxglib -f Makefile.sources TOPDIR=$(TOPDIR) NXGLIB_BITSPERPIXEL=8
@make -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_BITSPERPIXEL=8
gen16bppsource:
@make -C nxglib -f Makefile.sources TOPDIR=$(TOPDIR) NXGLIB_BITSPERPIXEL=16
@make -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_BITSPERPIXEL=16
gen24bppsource:
@make -C nxglib -f Makefile.sources TOPDIR=$(TOPDIR) NXGLIB_BITSPERPIXEL=24
@make -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_BITSPERPIXEL=24
gen32bppsources:
@make -C nxglib -f Makefile.sources TOPDIR=$(TOPDIR) NXGLIB_BITSPERPIXEL=32
@make -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_BITSPERPIXEL=32
gensources: gen1bppsources gen2bppsource gen4bppsource gen8bppsource gen16bppsource gen24bppsource gen32bppsources

View File

@ -34,4 +34,7 @@
############################################################################
NXFONTS_ASRCS =
NXFONTS_CSRCS = nxfonts_bitmaps.c
NXFCONV_CSRC = nxfonts_convert_2bpp.c nxfonts_convert_4bpp.c \
nxfonts_convert_8bpp.c nxfonts_convert_16bpp.c \
nxfonts_convert_24bpp.c nxfonts_convert_32bpp.c
NXFONTS_CSRCS = nxfonts_bitmaps.c nxfonts_getfont.c $(NXFCONV_CSRC)

View File

@ -0,0 +1,81 @@
############################################################################
# graphics/nxfonts/Makefile.sources
#
# Copyright (C) 2008 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name NuttX nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################
-include $(TOPDIR)/.config
-include $(TOPDIR)/Make.defs
ifeq ($(NXFONTS_BITSPERPIXEL),2)
NXFONTS_SUFFIX := _2bpp
CONV_CSRC := nxfonts_convert_2bpp.c
endif
ifeq ($(NXFONTS_BITSPERPIXEL),4)
NXFONTS_SUFFIX := _4bpp
CONV_CSRC := nxfonts_convert_4bpp.c
endif
ifeq ($(NXFONTS_BITSPERPIXEL),8)
NXFONTS_SUFFIX := _8bpp
CONV_CSRC := nxfonts_convert_8bpp.c
endif
ifeq ($(NXFONTS_BITSPERPIXEL),16)
NXFONTS_SUFFIX := _16bpp
CONV_CSRC := nxfonts_convert_16bpp.c
endif
ifeq ($(NXFONTS_BITSPERPIXEL),24)
NXFONTS_SUFFIX := _24bpp
CONV_CSRC := nxfonts_convert_24bpp.c
endif
ifeq ($(NXFONTS_BITSPERPIXEL),32)
NXFONTS_SUFFIX := _32bpp
CONV_CSRC := nxfonts_convert_32bpp.c
endif
CPPFLAGS += -DNXFONTS_BITSPERPIXEL=$(NXFONTS_BITSPERPIXEL)
CPPFLAGS += -DNXFONTS_SUFFIX=$(NXFONTS_SUFFIX)
GEN_CSRCS = $(CONV_CSRC)
all: $(GEN_CSRCS)
.PHONY : clean distclean
$(CONV_CSRC) : nxfonts_convert.c
ifneq ($(NXFONTS_BITSPERPIXEL),)
$(call PREPROCESS, nxfonts_convert.c, $@)
endif
clean:
@rm -f *~ .*.swp
distclean: clean
@rm -f nxfonts_convert_*bpp.c

View File

@ -1,5 +1,5 @@
/****************************************************************************
* graphics/nxmu/nxfe.h
* graphics/nxfonts/nxfonts_bitmap.h
*
* Copyright (C) 2008 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
@ -1622,21 +1622,22 @@ NXFONT_DEFMETRIC(255),
struct nx_fontset_s g_7bitfonts =
{
14, /* ascent: Pixels above base (max) */
9, /* descent: Pixels below base (max) */
NXFONT_MAXHEIGHT, /* Max. height of a glyph in rows */
NXFONT_MAXWIDTH, /* Max. width of a glyph in pixels */
NXFONT_MIN7BIT, /* First font code */
NXFONT_N7BITFONTS, /* Number of bitmap fonts */
0, /* (unused) */
NXFONT_SPACEWIDTH, /* The width of a space in pixels */
g_7bitmaps /* List of fonts */
};
#if CONFIG_NXFONTS_CHARBITS >= 8
struct nx_fontset_s g_8bitfonts =
{
14 /* ascent: Pixels above base (max) */
9 /* descent: Pixels below base (max) */
NXFONT_MAXHEIGHT, /* Max. height of a glyph in rows */
NXFONT_MAXWIDTH, /* Max. width of a glyph in pixels */
NXFONT_MIN8BIT, /* First font code */
NXFONT_N8BITFONTS, /* Number of bitmap fonts */
NXFONT_SPACEWIDTH, /* The width of a space in pixels */
g_8bitmaps /* List of fonts */
};
#endif

View File

@ -0,0 +1,289 @@
/****************************************************************************
* graphics/nxfonts/nxfonts_convert.c
*
* Copyright (C) 2008 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT}
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING}
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <sys/types.h>
#include <debug.h>
#include <nuttx/nxglib.h>
#include <nuttx/nxfonts.h>
/****************************************************************************
* Pre-Processor Definitions
****************************************************************************/
/* Make sure the the bits-per-pixel value has been set */
#ifndef NXFONTS_BITSPERPIXEL
# error "NXFONTS_BITSPERPIXEL must be defined on the command line"
#endif
/* Set up bit blit macros for this BPP */
#if NXFONTS_BITSPERPIXEL == 2
# define NXF_PIXELMASK 0x03
# define NXF_SCALEX(x) ((x) >> 2)
# define NXF_PIXEL_T ubyte
# define NXF_MULTIPIXEL(p) ((ubyte)(p) << 6 | (ubyte)(p) << 4 | (ubyte)(p) << 2 | (p))
#elif NXFONTS_BITSPERPIXEL == 4
# define NXF_PIXELMASK 0x0f
# define NXF_SCALEX(x) ((x) >> 1)
# define NXF_PIXEL_T ubyte
# define NXF_MULTIPIXEL(p) ((ubyte)(p) << 4 | (p))
#elif NXFONTS_BITSPERPIXEL == 8
# define NXF_SCALEX(x) (x)
# define NXF_PIXEL_T ubyte
#elif NXFONTS_BITSPERPIXEL == 16
# define NXF_SCALEX(x) ((x) << 1)
# define NXF_PIXEL_T uint16
#elif NXFONTS_BITSPERPIXEL == 24
# define NXF_SCALEX(x) (((x) << 1) + (x))
# define NXF_PIXEL_T uint32
#elif NXFONTS_BITSPERPIXEL == 32
# define NXF_SCALEX(x) ((x) << 2)
# define NXF_PIXEL_T uint32
#endif
/* Form a function name by concatenating two strings */
#define _NXF_FUNCNAME(a,b) a ## b
#define NXF_FUNCNAME(a,b) _NXF_FUNCNAME(a,b)
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Public Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: nxf_convert_*bpp
*
* Description:
* Convert the 1BPP font to a new pixel depth
*
* Input Parameters:
* dest - The destination buffer provided by the caller.
* height - The max height of the returned char in rows
* width - The max width of the returned char in pixels
* stride - The width of the destination buffer in bytes
* ch - The character code to convert
* color - The color to use for '1' bits in the font bitmap
* (0 bits are transparent)
*
* Returned Value:
* On Success, this function returns the actual width of the font in bytes.
* on failed, a negated errno is retured.
*
****************************************************************************/
int NXF_FUNCNAME(nxf_convert,NXFONTS_SUFFIX)
(FAR NXF_PIXEL_T *dest, uint16 height, uint16 width, uint16 stride,
uint16 ch, nxgl_mxpixel_t color)
{
FAR const struct nx_fontset_s *set;
FAR const struct nx_fontbitmap_s *bm;
FAR ubyte *line;
FAR NXF_PIXEL_T *dptr;
FAR const ubyte *sptr;
ubyte bmbyte;
ubyte bmbit;
int row;
int col;
int bmndx;
#if NXFONTS_BITSPERPIXEL < 8
NXF_PIXEL_T mpixel;
NXF_PIXEL_T mask;
NXF_PIXEL_T pixel;
int nbits;
#endif
/* Check if we have the fontset containing this character code */
set = nxf_getfontset(ch);
if (!set)
{
/* No fontset? Nothing to rend, return the width of a 7-bit space */
return g_7bitfonts.spwidth;
}
/* Map the character code to a bitmap font */
bm = nxf_getbitmap(ch);
if (!bm)
{
/* No character? Nothing to rend, return the width of a space */
return set->spwidth;
}
/* Get the starting position */
line = (ubyte*)dest + bm->metric.yoffset * stride + NXF_SCALEX(bm->metric.xoffset);
/* Then copy the font */
height = ngl_min(bm->metric.height, height - bm->metric.yoffset);
width = ngl_min(bm->metric.width, width - bm->metric.xoffset);
/* Render each row of the glyph */
sptr = bm->bitmap;
#if NXFONTS_BITSPERPIXEL < 8
mpixel = NXF_MULTIPIXEL(color);
/* Handle each row in both the input and output */
for (row = 0; row < height; row++)
{
/* Process each byte in the glyph */
col = 0;
dptr = (FAR NXF_PIXEL_T*)line;
pixel = *dptr;
#ifdef CONFIG_NXF_PACKEDMSFIRST
mask = NXF_PIXELMASK << (8 - NXFONTS_BITSPERPIXEL);
#else
mask = NXF_PIXELMASK;
#endif
nbits = 0;
for (bmndx = 0; bmndx < bm->metric.stride && col < width; bmndx++)
{
bmbyte = *sptr++;
/* Process each bit in the byte */
for (bmbit = 7; bmbit >= 0 && col < width; bmbit--, col++)
{
/* Is the bit set? */
if (bmbyte & (1 << bmbit))
{
/* Yes.. set the bit to 'color' in the output */
pixel = ((pixel & ~mask) | (mpixel & mask));
}
#ifdef CONFIG_NXF_PACKEDMSFIRST
mask >>= NXFONTS_BITSPERPIXEL;
#else
mask <<= NXFONTS_BITSPERPIXEL;
#endif
nbits += NXFONTS_BITSPERPIXEL;
if (nbits >= 8)
{
*dptr++ = pixel;
pixel = *dptr;
mask = NXF_PIXELMASK;
nbits = 0;
}
}
/* Handle any fractional bytes at the end */
if (nbits > 0)
{
*dptr = pixel;
}
line += stride;
}
}
#else
/* Handle each row in both the input and output */
for (row = 0; row < height; row++)
{
/* Process each byte in the glyph */
col = 0;
dptr = (FAR NXF_PIXEL_T*)line;
for (bmndx = 0; bmndx < bm->metric.stride && col < width; bmndx++)
{
bmbyte = *sptr++;
/* Process each bit in the byte */
for (bmbit = 7; bmbit >= 0 && col < width; bmbit--, col++)
{
/* Is the bit set? */
if (bmbyte & (1 << bmbit))
{
/* Yes.. set the bit to 'color' in the output */
*dptr++ = color;
}
else
{
/* No... keep the background color in the output */
dptr++;
}
}
line += stride;
}
}
#endif
return bm->metric.width;
}

View File

@ -0,0 +1,127 @@
/****************************************************************************
* graphics/nxfonts/nxfonts_getfont.h
*
* Copyright (C) 2008 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT}
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING}
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <sys/types.h>
#include <debug.h>
#
#include <nuttx/nxfonts.h>
/****************************************************************************
* Pre-Processor Definitions
****************************************************************************/
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Public Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* Name: nxf_getfontset
*
* Description:
* Return information about the font set containtined he selected
* character encoding.
*
* Input Parameters:
* ch - character code
*
****************************************************************************/
FAR const struct nx_fontset_s *nxf_getfontset(uint16 ch)
{
if (ch < 128)
{
if (ch >= g_7bitfonts.first && ch < g_7bitfonts.first + g_7bitfonts.nchars)
{
return &g_7bitfonts;
}
gdbg("No bitmap for 7-bit code %d\n", ch);
}
else if (ch < 256)
{
#if CONFIG_NXFONTS_CHARBITS >= 8
if (ch >= g_8bitfonts.first && ch < g_8bitfonts.first + g_8bitfonts.nchars)
{
return &g_8bitfonts;
}
gdbg("No bitmap for 8-bit code %d\n", ch);
#else
gdbg("8-bit font support disabled: %d\n", ch);
#endif
}
else
{
gdbg("16-bit font not currently supported\n");
}
}
/****************************************************************************
* Name: nxf_getbitmap
*
* Description:
* Return font bitmap information for the selected character encoding.
*
* Input Parameters:
* ch - character code
*
****************************************************************************/
FAR const struct nx_fontbitmap_s *nxf_getbitmap(uint16 ch)
{
FAR const struct nx_fontset_s *set = nxf_getfontset(ch);
FAR struct nx_fontbitmap_s *bm = NULL;
if (set)
{
bm = &set->bitmap[ch - set->first];
}
return bm;
}

View File

@ -1,5 +1,5 @@
/****************************************************************************
* graphics/nxmu/nxfe.h
* graphics/nxfonts/nxfonts_sans.h
*
* Copyright (C) 2008 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
@ -52,491 +52,498 @@
#define NXFONT_MIN8BIT 161
#define NXFONT_MAX8BIT 255
/* Maximum height and width of any glyph in the set */
#define NXFONT_MAXHEIGHT 23
#define NXFONT_MAXWIDTH 27
/* The width of a space */
#define NXFONT_SPACEWIDTH 4
/* A sans serif font kind of like Lucida */
/* Space (32) */
/* Exclamation point (33) */
#define NXFONT_METRICS_33 {1, 1, 9, 2, 0, 0}
#define NXFONT_METRICS_33 {1, 1, 9, 2, 5, 0}
#define NXFONT_BITMAP_33 {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80}
/* Double quote (34) */
#define NXFONT_METRICS_34 {1, 3, 3, 1, 7, 0}
#define NXFONT_METRICS_34 {1, 3, 3, 1, 4, 0}
#define NXFONT_BITMAP_34 {0xa0, 0xa0, 0xa0}
/* Number sign (35) */
#define NXFONT_METRICS_35 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_35 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_35 {0x24, 0x24, 0x24, 0xfe, 0x28, 0xfe, 0x48, 0x48, 0x48}
/* Dollar sign (36) */
#define NXFONT_METRICS_36 {1, 6, 11, 1, -1, 0}
#define NXFONT_METRICS_36 {1, 6, 11, 1, 4, 0}
#define NXFONT_BITMAP_36 {0x10, 0x78, 0x94, 0x90, 0x50, 0x30, 0x28, 0x24, 0xa4, 0x78, 0x20}
/* Percent sign (37) */
#define NXFONT_METRICS_37 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_37 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_37 {0x60, 0x92, 0x94, 0x68, 0x10, 0x2c, 0x52, 0x92, 0x0c}
/* Ampersand (38) */
#define NXFONT_METRICS_38 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_38 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_38 {0x30, 0x48, 0x48, 0x30, 0x66, 0x94, 0x88, 0x88, 0x76}
/* Single quote (39) */
#define NXFONT_METRICS_39 {1, 1, 3, 1, 7, 0}
#define NXFONT_METRICS_39 {1, 1, 3, 1, 4, 0}
#define NXFONT_BITMAP_39 {0x80, 0x80, 0x80}
/* Left parenthis (40) */
#define NXFONT_METRICS_40 {1, 3, 10, 1, -1, 0}
#define NXFONT_METRICS_40 {1, 3, 10, 1, 5, 0}
#define NXFONT_BITMAP_40 {0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20}
/* Right parenthis (41) */
#define NXFONT_METRICS_41 {1, 3, 11, 0, -2, 0}
#define NXFONT_METRICS_41 {1, 3, 11, 0, 5, 0}
#define NXFONT_BITMAP_41 {0x80, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x80}
/* Asterisk (42) */
#define NXFONT_METRICS_42 {1, 5, 5, 1, 4, 0}
#define NXFONT_METRICS_42 {1, 5, 5, 1, 5, 0}
#define NXFONT_BITMAP_42 {0x20, 0xa8, 0x50, 0xa8, 0x20}
/* Plus (43) */
#define NXFONT_METRICS_43 {1, 7, 7, 1, 0, 0}
#define NXFONT_METRICS_43 {1, 7, 7, 1, 7, 0}
#define NXFONT_BITMAP_43 {0x10, 0x10, 0x10, 0xfe, 0x10, 0x10, 0x10}
/* Comma (44) */
#define NXFONT_METRICS_44 {1, 2, 4, 1, -2, 0}
#define NXFONT_METRICS_44 {1, 2, 4, 1, 12, 0}
#define NXFONT_BITMAP_44 {0x40, 0x40, 0x80, 0x80}
/* Hyphen (45) */
#define NXFONT_METRICS_45 {1, 5, 1, 1, 3, 0}
#define NXFONT_METRICS_45 {1, 5, 1, 1, 10, 0}
#define NXFONT_BITMAP_45 {0xf8}
/* Period (46) */
#define NXFONT_METRICS_46 {1, 1, 2, 2, 0, 0}
#define NXFONT_METRICS_46 {1, 1, 2, 2, 12, 0}
#define NXFONT_BITMAP_46 {0x80, 0x80}
/* Forward slash (47) */
#define NXFONT_METRICS_47 {1, 4, 11, 1, -2, 0}
#define NXFONT_METRICS_47 {1, 4, 11, 1, 5, 0}
#define NXFONT_BITMAP_47 {0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80}
/* '0' (48) */
#define NXFONT_METRICS_48 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_48 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_48 {0x30, 0x48, 0x84, 0x84, 0x84, 0x84, 0x84, 0x48, 0x30}
/* '1' (49) */
#define NXFONT_METRICS_49 {1, 5, 9, 2, 0, 0}
#define NXFONT_METRICS_49 {1, 5, 9, 2, 5, 0}
#define NXFONT_BITMAP_49 {0x20, 0xe0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xf8}
/* '2' (50) */
#define NXFONT_METRICS_50 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_50 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_50 {0x78, 0x84, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0xfc}
/* '3' (51) */
#define NXFONT_METRICS_51 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_51 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_51 {0x78, 0x84, 0x04, 0x04, 0x38, 0x04, 0x04, 0x84, 0x78}
/* '4' (52) */
#define NXFONT_METRICS_52 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_52 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_52 {0x08, 0x18, 0x28, 0x48, 0x88, 0x88, 0xfc, 0x08, 0x08}
/* '5' (53) */
#define NXFONT_METRICS_53 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_53 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_53 {0xfc, 0x80, 0x80, 0xf0, 0x08, 0x04, 0x04, 0x84, 0x78}
/* '6' (54) */
#define NXFONT_METRICS_54 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_54 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_54 {0x3c, 0x40, 0x80, 0xb8, 0xc4, 0x84, 0x84, 0x44, 0x38}
/* '7' (55) */
#define NXFONT_METRICS_55 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_55 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_55 {0xfc, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40}
/* '8' (56) */
#define NXFONT_METRICS_56 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_56 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_56 {0x78, 0x84, 0x84, 0x84, 0x78, 0x84, 0x84, 0x84, 0x78}
/* '9' (57) */
#define NXFONT_METRICS_57 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_57 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_57 {0x70, 0x88, 0x84, 0x84, 0x8c, 0x74, 0x04, 0x08, 0xf0}
/* Colon (58) */
#define NXFONT_METRICS_58 {1, 1, 7, 2, 0, 0}
#define NXFONT_METRICS_58 {1, 1, 7, 2, 7, 0}
#define NXFONT_BITMAP_58 {0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80}
/* Semicolon (59) */
#define NXFONT_METRICS_59 {1, 2, 9, 1, -2, 0}
#define NXFONT_METRICS_59 {1, 2, 9, 1, 7, 0}
#define NXFONT_BITMAP_59 {0x40, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, 0x80}
/* Less than sign (60) */
#define NXFONT_METRICS_60 {1, 6, 7, 2, 0, 0}
#define NXFONT_METRICS_60 {1, 6, 7, 2, 7, 0}
#define NXFONT_BITMAP_60 {0x04, 0x18, 0x20, 0xc0, 0x20, 0x18, 0x04}
/* Equal to sign (61) */
#define NXFONT_METRICS_61 {1, 7, 3, 1, 2, 0}
#define NXFONT_METRICS_61 {1, 7, 3, 1, 9, 0}
#define NXFONT_BITMAP_61 {0xfe, 0x00, 0xfe}
/* Greater than sign (62) */
#define NXFONT_METRICS_62 {1, 6, 7, 2, 0, 0}
#define NXFONT_METRICS_62 {1, 6, 7, 2, 7, 0}
#define NXFONT_BITMAP_62 {0x80, 0x60, 0x10, 0x0c, 0x10, 0x60, 0x80}
/* Question mark (63) */
#define NXFONT_METRICS_63 {1, 4, 9, 1, 0, 0}
#define NXFONT_METRICS_63 {1, 4, 9, 1, 5, 0}
#define NXFONT_BITMAP_63 {0xe0, 0x10, 0x10, 0x60, 0x40, 0x40, 0x00, 0x40, 0x40}
/* at sign (64) */
#define NXFONT_METRICS_64 { 2, 9, 9, 1, 0, 0}
#define NXFONT_METRICS_64 { 2, 9, 9, 1, 5, 0}
#define NXFONT_BITMAP_64 {0x1e, 0x00, 0x21, 0x00, 0x4c, 0x80, 0x92, 0x80, 0xa4, 0x80, 0xad, 0x00,\
0x96, 0x00, 0x40, 0x00, 0x3c, 0x00}
/* 'A' (65) */
#define NXFONT_METRICS_65 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_65 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_65 {0x30, 0x30, 0x48, 0x48, 0x48, 0xfc, 0x84, 0x84, 0x84}
/* 'B' (66) */
#define NXFONT_METRICS_66 {1, 5, 9, 1, 0, 0}
#define NXFONT_METRICS_66 {1, 5, 9, 1, 5, 0}
#define NXFONT_BITMAP_66 {0xf0, 0x88, 0x88, 0x88, 0xf0, 0x88, 0x88, 0x88, 0xf0}
/* 'C' (67) */
#define NXFONT_METRICS_67 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_67 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_67 {0x3c, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x3c}
/* 'D' (68) */
#define NXFONT_METRICS_68 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_68 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_68 {0xf8, 0x84, 0x82, 0x82, 0x82, 0x82, 0x82, 0x84, 0xf8}
/* 'E' (69) */
#define NXFONT_METRICS_69 {1, 5, 9, 1, 0, 0}
#define NXFONT_METRICS_69 {1, 5, 9, 1, 5, 0}
#define NXFONT_BITMAP_69 {0xf8, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0xf8}
/* 'F' (70) */
#define NXFONT_METRICS_70 {1, 4, 9, 1, 0, 0}
#define NXFONT_METRICS_70 {1, 4, 9, 1, 5, 0}
#define NXFONT_BITMAP_70 {0xf0, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0x80}
/* 'G' (71) */
#define NXFONT_METRICS_71 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_71 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_71 {0x3e, 0x40, 0x80, 0x80, 0x82, 0x82, 0x82, 0x42, 0x3e}
/* 'H' (72) */
#define NXFONT_METRICS_72 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_72 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_72 {0x82, 0x82, 0x82, 0x82, 0xfe, 0x82, 0x82, 0x82, 0x82}
/* 'I' (73) */
#define NXFONT_METRICS_73 {1, 1, 9, 1, 0, 0}
#define NXFONT_METRICS_73 {1, 1, 9, 1, 5, 0}
#define NXFONT_BITMAP_73 {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}
/* 'J' (74) */
#define NXFONT_METRICS_74 {1, 3, 11, 0, -2, 0}
#define NXFONT_METRICS_74 {1, 3, 11, 0, 5, 0}
#define NXFONT_BITMAP_74 {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xc0}
/* 'K' (75) */
#define NXFONT_METRICS_75 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_75 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_75 {0x84, 0x88, 0x90, 0xa0, 0xe0, 0x90, 0x88, 0x84, 0x84}
/* 'L' (76) */
#define NXFONT_METRICS_76 {1, 5, 9, 1, 0, 0}
#define NXFONT_METRICS_76 {1, 5, 9, 1, 5, 0}
#define NXFONT_BITMAP_76 {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf8}
/* 'M' (77) */
#define NXFONT_METRICS_77 {1, 8, 9, 1, 0, 0}
#define NXFONT_METRICS_77 {1, 8, 9, 1, 5, 0}
#define NXFONT_BITMAP_77 {0x81, 0xc3, 0xc3, 0xa5, 0xa5, 0x99, 0x99, 0x81, 0x81}
/* 'N' (78) */
#define NXFONT_METRICS_78 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_78 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_78 {0x82, 0xc2, 0xc2, 0xa2, 0x92, 0x8a, 0x86, 0x86, 0x82}
/* 'O' (79) */
#define NXFONT_METRICS_79 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_79 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_79 {0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38}
/* 'P' (80) */
#define NXFONT_METRICS_80 {1, 5, 9, 1, 0, 0}
#define NXFONT_METRICS_80 {1, 5, 9, 1, 5, 0}
#define NXFONT_BITMAP_80 {0xf0, 0x88, 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80}
/* 'Q' (81) */
#define NXFONT_METRICS_81 {1, 8, 11, 1, -2, 0}
#define NXFONT_METRICS_81 {1, 8, 11, 1, 5, 0}
#define NXFONT_BITMAP_81 {0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38, 0x04, 0x03}
/* 'R' (82) */
#define NXFONT_METRICS_82 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_82 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_82 {0xf0, 0x88, 0x88, 0x88, 0xf0, 0x90, 0x88, 0x84, 0x84}
/* 'S' (83) */
#define NXFONT_METRICS_83 {1, 5, 9, 1, 0, 0}
#define NXFONT_METRICS_83 {1, 5, 9, 1, 5, 0}
#define NXFONT_BITMAP_83 {0x78, 0x80, 0x80, 0x40, 0x20, 0x10, 0x08, 0x08, 0xf0}
/* 'T' (84) */
#define NXFONT_METRICS_84 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_84 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_84 {0xfe, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}
/* 'U' (85) */
#define NXFONT_METRICS_85 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_85 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_85 {0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'V' (86) */
#define NXFONT_METRICS_86 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_86 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_86 {0x82, 0x82, 0x44, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10}
/* 'W' (87) */
#define NXFONT_METRICS_87 {2, 9, 9, 1, 0, 0}
#define NXFONT_METRICS_87 {2, 9, 9, 1, 5, 0}
#define NXFONT_BITMAP_87 {0x80, 0x80, 0x88, 0x80, 0x88, 0x80, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00,\
0x22, 0x00, 0x22, 0x00, 0x22, 0x00}
/* 'X' (88) */
#define NXFONT_METRICS_88 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_88 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_88 {0x84, 0x84, 0x48, 0x28, 0x30, 0x50, 0x48, 0x84, 0x84}
/* 'Y' (89) */
#define NXFONT_METRICS_89 {1, 7, 9, 0, 0, 0}
#define NXFONT_METRICS_89 {1, 7, 9, 0, 5, 0}
#define NXFONT_BITMAP_89 {0x82, 0x82, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10}
/* 'Z' (90) */
#define NXFONT_METRICS_90 {1, 5, 9, 1, 0, 0}
#define NXFONT_METRICS_90 {1, 5, 9, 1, 5, 0}
#define NXFONT_BITMAP_90 {0xf8, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0xf8}
/* Left bracket (91) */
#define NXFONT_METRICS_91 {1, 2, 11, 1, -2, 0}
#define NXFONT_METRICS_91 {1, 2, 11, 1, 5, 0}
#define NXFONT_BITMAP_91 {0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0}
/* Back slash (92) */
#define NXFONT_METRICS_92 {1, 4, 11, 1, -2, 0}
#define NXFONT_METRICS_92 {1, 4, 11, 1, 5, 0}
#define NXFONT_BITMAP_92 {0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10}
/* Right bracket (93) */
#define NXFONT_METRICS_93 {1, 2, 11, 1, -2, 0}
#define NXFONT_METRICS_93 {1, 2, 11, 1, 5, 0}
#define NXFONT_BITMAP_93 {0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0}
/* ascii circumflex (94) */
#define NXFONT_METRICS_94 {1, 6, 6, 1, 3, 0}
#define NXFONT_METRICS_94 {1, 6, 6, 1, 5, 0}
#define NXFONT_BITMAP_94 {0x30, 0x30, 0x48, 0x48, 0x84, 0x84}
/* Underscore (95) */
#define NXFONT_METRICS_95 {1, 6, 1, 0, -1, 0}
#define NXFONT_METRICS_95 {1, 6, 1, 0, 14, 0}
#define NXFONT_BITMAP_95 {0xfc}
/* Grave (96) */
#define NXFONT_METRICS_96 {1, 3, 2, 2, 8, 0}
#define NXFONT_METRICS_96 {1, 3, 2, 2, 4, 0}
#define NXFONT_BITMAP_96 {0xc0, 0x20}
/* 'a' (97) */
#define NXFONT_METRICS_97 {1, 6, 7, 1, 0, 0}
#define NXFONT_METRICS_97 {1, 6, 7, 1, 7, 0}
#define NXFONT_BITMAP_97 {0x70, 0x88, 0x08, 0x78, 0x88, 0x88, 0x74}
/* 'b' (98) */
#define NXFONT_METRICS_98 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_98 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_98 {0x80, 0x80, 0x80, 0xb8, 0xc4, 0x84, 0x84, 0x84, 0xc4, 0xb8}
/* 'c' (99) */
#define NXFONT_METRICS_99 {1, 4, 7, 1, 0, 0}
#define NXFONT_METRICS_99 {1, 4, 7, 1, 7, 0}
#define NXFONT_BITMAP_99 {0x70, 0x80, 0x80, 0x80, 0x80, 0x80, 0x70}
/* 'd' (100) */
#define NXFONT_METRICS_100 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_100 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_100 {0x04, 0x04, 0x04, 0x74, 0x8c, 0x84, 0x84, 0x84, 0x8c, 0x74}
/* 'e' (101) */
#define NXFONT_METRICS_101 {1, 5, 7, 1, 0, 0}
#define NXFONT_METRICS_101 {1, 5, 7, 1, 7, 0}
#define NXFONT_BITMAP_101 {0x70, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x78}
/* 'f' (102) */
#define NXFONT_METRICS_102 {1, 4, 10, 0, 0, 0}
#define NXFONT_METRICS_102 {1, 4, 10, 0, 4, 0}
#define NXFONT_BITMAP_102 {0x30, 0x40, 0x40, 0x40, 0xf0, 0x40, 0x40, 0x40, 0x40, 0x40}
/* 'g' (103) */
#define NXFONT_METRICS_103 {1, 5, 9, 1, -2, 0}
#define NXFONT_METRICS_103 {1, 5, 9, 1, 7, 0}
#define NXFONT_BITMAP_103 {0x68, 0x98, 0x88, 0x88, 0x98, 0x68, 0x08, 0x08, 0xf0}
/* 'h' (104) */
#define NXFONT_METRICS_104 {1, 5, 9, 1, 0, 0}
#define NXFONT_METRICS_104 {1, 5, 9, 1, 5, 0}
#define NXFONT_BITMAP_104 {0x80, 0x80, 0xb0, 0xc8, 0x88, 0x88, 0x88, 0x88, 0x88}
/* 'i' (105) */
#define NXFONT_METRICS_105 {1, 1, 9, 1, 0, 0}
#define NXFONT_METRICS_105 {1, 1, 9, 1, 5, 0}
#define NXFONT_BITMAP_105 {0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}
/* 'j' (106) */
#define NXFONT_METRICS_106 {1, 3, 11, 0, -2, 0}
#define NXFONT_METRICS_106 {1, 3, 11, 0, 5, 0}
#define NXFONT_BITMAP_106 {0x20, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xc0}
/* 'k' (107) */
#define NXFONT_METRICS_107 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_107 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_107 {0x80, 0x80, 0x80, 0x88, 0x90, 0xa0, 0xe0, 0x90, 0x88, 0x84}
/* 'l' (108) */
#define NXFONT_METRICS_108 {1, 1, 10, 1, 0, 0}
#define NXFONT_METRICS_108 {1, 1, 10, 1, 4, 0}
#define NXFONT_BITMAP_108 {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}
/* 'm' (109) */
#define NXFONT_METRICS_109 {2, 9, 7, 1, 0, 0}
#define NXFONT_METRICS_109 {2, 9, 7, 1, 7, 0}
#define NXFONT_BITMAP_109 {0xb3, 0x00, 0xcc, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x80,\
0x88, 0x80}
/* 'n' (110) */
#define NXFONT_METRICS_110 {1, 5, 7, 1, 0, 0}
#define NXFONT_METRICS_110 {1, 5, 7, 1, 7, 0}
#define NXFONT_BITMAP_110 {0xb0, 0xc8, 0x88, 0x88, 0x88, 0x88, 0x88}
/* 'o' (111) */
#define NXFONT_METRICS_111 {1, 6, 7, 1, 0, 0}
#define NXFONT_METRICS_111 {1, 6, 7, 1, 7, 0}
#define NXFONT_BITMAP_111 {0x30, 0x48, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'p' (112) */
#define NXFONT_METRICS_112 {1, 6, 9, 1, -2, 0}
#define NXFONT_METRICS_112 {1, 6, 9, 1, 7, 0}
#define NXFONT_BITMAP_112 {0xb8, 0xc4, 0x84, 0x84, 0x84, 0xc4, 0xb8, 0x80, 0x80}
/* 'q' (113) */
#define NXFONT_METRICS_113 {1, 6, 9, 1, -2, 0}
#define NXFONT_METRICS_113 {1, 6, 9, 1, 7, 0}
#define NXFONT_BITMAP_113 {0x74, 0x8c, 0x84, 0x84, 0x84, 0x9c, 0x74, 0x04, 0x04}
/* 'r' (114) */
#define NXFONT_METRICS_114 {1, 4, 7, 1, 0, 0}
#define NXFONT_METRICS_114 {1, 4, 7, 1, 7, 0}
#define NXFONT_BITMAP_114 {0xb0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80}
/* 's' (115) */
#define NXFONT_METRICS_115 {1, 4, 7, 1, 0, 0}
#define NXFONT_METRICS_115 {1, 4, 7, 1, 7, 0}
#define NXFONT_BITMAP_115 {0x70, 0x80, 0x80, 0x60, 0x10, 0x10, 0xe0}
/* 't' (116) */
#define NXFONT_METRICS_116 {1, 4, 9, 0, 0, 0}
#define NXFONT_METRICS_116 {1, 4, 9, 0, 5, 0}
#define NXFONT_BITMAP_116 {0x40, 0x40, 0xf0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x30}
/* 'u' (117) */
#define NXFONT_METRICS_117 {1, 5, 7, 1, 0, 0}
#define NXFONT_METRICS_117 {1, 5, 7, 1, 7, 0}
#define NXFONT_BITMAP_117 {0x88, 0x88, 0x88, 0x88, 0x88, 0x98, 0x68}
/* 'v' (118) */
#define NXFONT_METRICS_118 {1, 5, 7, 1, 0, 0}
#define NXFONT_METRICS_118 {1, 5, 7, 1, 7, 0}
#define NXFONT_BITMAP_118 {0x88, 0x88, 0x88, 0x50, 0x50, 0x20, 0x20}
/* 'w' (119) */
#define NXFONT_METRICS_119 {2, 9, 7, 0, 0, 0}
#define NXFONT_METRICS_119 {2, 9, 7, 0, 7, 0}
#define NXFONT_BITMAP_119 {0x80, 0x80, 0x88, 0x80, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x22, 0x00,\
0x22, 0x00}
/* 'x' (120) */
#define NXFONT_METRICS_120 {1, 5, 7, 1, 0, 0}
#define NXFONT_METRICS_120 {1, 5, 7, 1, 7, 0}
#define NXFONT_BITMAP_120 {0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0x88}
/* 'y' (121) */
#define NXFONT_METRICS_121 {1, 5, 9, 1, -2, 0}
#define NXFONT_METRICS_121 {1, 5, 9, 1, 7, 0}
#define NXFONT_BITMAP_121 {0x88, 0x88, 0x88, 0x50, 0x50, 0x20, 0x20, 0x40, 0xc0}
/* 'z' (122) */
#define NXFONT_METRICS_122 {1, 5, 7, 1, 0, 0}
#define NXFONT_METRICS_122 {1, 5, 7, 1, 7, 0}
#define NXFONT_BITMAP_122 {0xf8, 0x08, 0x10, 0x20, 0x40, 0x80, 0xf8}
/* Left brace (123) */
#define NXFONT_METRICS_123 {1, 4, 11, 0, -2, 0}
#define NXFONT_METRICS_123 {1, 4, 11, 0, 5, 0}
#define NXFONT_BITMAP_123 {0x30, 0x40, 0x40, 0x40, 0x20, 0xc0, 0x20, 0x40, 0x40, 0x40, 0x30}
/* Vertical bar (124) */
#define NXFONT_METRICS_124 {1, 1, 11, 2, -2, 0}
#define NXFONT_METRICS_124 {1, 1, 11, 2, 5, 0}
#define NXFONT_BITMAP_124 {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}
/* Right brace (125) */
#define NXFONT_METRICS_125 {1, 4, 11, 0, -2, 0}
#define NXFONT_METRICS_125 {1, 4, 11, 0, 5, 0}
#define NXFONT_BITMAP_125 {0xc0, 0x20, 0x20, 0x20, 0x40, 0x30, 0x40, 0x20, 0x20, 0x20, 0xc0}
/* Tilde (126) */
#define NXFONT_METRICS_126 {1, 6, 3, 1, 2, 0}
#define NXFONT_METRICS_126 {1, 6, 3, 1, 9, 0}
#define NXFONT_BITMAP_126 {0x44, 0xb4, 0x88}
/* Space (160) */
/* Down exclamation point (161) */
#define NXFONT_METRICS_161 {1, 1, 9, 1, -2, 0}
#define NXFONT_METRICS_161 {1, 1, 9, 1, 7, 0}
#define NXFONT_BITMAP_161 {0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}
/* Cent (162) */
#define NXFONT_METRICS_162 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_162 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_162 {0x10, 0x3c, 0x50, 0x90, 0x90, 0x90, 0x50, 0x3c, 0x10}
/* Sterling (163) */
#define NXFONT_METRICS_163 {1, 6, 9, 1, 0, 0}
#define NXFONT_METRICS_163 {1, 6, 9, 1, 5, 0}
#define NXFONT_BITMAP_163 {0x1c, 0x20, 0x20, 0x20, 0x78, 0x20, 0x20, 0x40, 0xfc}
/* Currency (164) */
#define NXFONT_METRICS_164 {1, 5, 7, 1, 1, 0}
#define NXFONT_METRICS_164 {1, 5, 7, 1, 6, 0}
#define NXFONT_BITMAP_164 {0x88, 0x70, 0x88, 0x88, 0x88, 0x70, 0x88}
/* Yen (165) */
#define NXFONT_METRICS_165 {1, 7, 9, 0, 0, 0}
#define NXFONT_METRICS_165 {1, 7, 9, 0, 5, 0}
#define NXFONT_BITMAP_165 {0x82, 0x44, 0x28, 0x10, 0x7c, 0x10, 0x7c, 0x10, 0x10}
/* Broken bar (166) */
#define NXFONT_METRICS_166 {1, 1, 11, 2, -2, 0}
#define NXFONT_METRICS_166 {1, 1, 11, 2, 5, 0}
#define NXFONT_BITMAP_166 {0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80}
/* Section (167) */
#define NXFONT_METRICS_167 {1, 5, 11, 1, -2, 0}
#define NXFONT_METRICS_167 {1, 5, 11, 1, 5, 0}
#define NXFONT_BITMAP_167 {0x78, 0x80, 0x80, 0x60, 0x98, 0x88, 0xc8, 0x30, 0x08, 0x08, 0xf0}
/* Dieresis (168) */
#define NXFONT_METRICS_168 {1, 3, 2, 2, 8, 0}
#define NXFONT_METRICS_168 {1, 3, 2, 2, 4, 0}
#define NXFONT_BITMAP_168 {0xa0, 0xa0}
/* Copyright (169) */
#define NXFONT_METRICS_169 {2, 9, 9, 1, 0, 0}
#define NXFONT_METRICS_169 {2, 9, 9, 1, 5, 0}
#define NXFONT_BITMAP_169 {0x3e, 0x00, 0x41, 0x00, 0x9c, 0x80, 0xa0, 0x80, 0xa0, 0x80, 0xa0, 0x80,\
0x9c, 0x80, 0x41, 0x00, 0x3e, 0x00}
/* Ord feminine (170) */
#define NXFONT_METRICS_170 {1, 3, 5, 1, 5, 0}
#define NXFONT_METRICS_170 {1, 3, 5, 1, 4, 0}
#define NXFONT_BITMAP_170 {0xc0, 0x20, 0xe0, 0xa0, 0xe0}
/* Left guillemot (171) */
#define NXFONT_METRICS_171 {1, 4, 6, 1, 0, 0}
#define NXFONT_METRICS_171 {1, 4, 6, 1, 8, 0}
#define NXFONT_BITMAP_171 {0x50, 0x50, 0xa0, 0xa0, 0x50, 0x50}
/* Logical not (172) */
#define NXFONT_METRICS_172 {1, 7, 3, 1, 2, 0}
#define NXFONT_METRICS_172 {1, 7, 3, 1, 9, 0}
#define NXFONT_BITMAP_172 {0xfe, 0x02, 0x02}
/* Hyphen (173) */
#define NXFONT_METRICS_173 {1, 5, 1, 1, 3, 0}
#define NXFONT_METRICS_173 {1, 5, 1, 1, 10, 0}
#define NXFONT_BITMAP_173 {0xf8}
/* Registered (174) */
#define NXFONT_METRICS_174 {1, 6, 6, 1, 3, 0}
#define NXFONT_METRICS_174 {1, 6, 6, 1, 5, 0}
#define NXFONT_BITMAP_174 {0x78, 0xb4, 0xb4, 0xac, 0xac, 0x78}
/* Macron (175) */
#define NXFONT_METRICS_175 {1, 6, 1, 0, 9, 0}
#define NXFONT_METRICS_175 {1, 6, 1, 0, 4, 0}
#define NXFONT_BITMAP_175 {0xfc}
/* Degree (176) */
#define NXFONT_METRICS_176 {1, 3, 3, 0, 6, 0}
#define NXFONT_METRICS_176 {1, 3, 3, 0, 5, 0}
#define NXFONT_BITMAP_176 {0x40, 0xa0, 0x40}
/* plus/minus (177) */
#define NXFONT_METRICS_177 {1, 7, 7, 1, 0, 0}
#define NXFONT_METRICS_177 {1, 7, 7, 1, 7, 0}
#define NXFONT_BITMAP_177 {0x10, 0x10, 0xfe, 0x10, 0x10, 0x00, 0xfe}
/* '2' superior (178) */
#define NXFONT_METRICS_178 {1, 3, 5, 1, 4, 0}
#define NXFONT_METRICS_178 {1, 3, 5, 1, 5, 0}
#define NXFONT_BITMAP_178 {0xc0, 0x20, 0x60, 0x80, 0xe0}
/* '3' superior (179) */
#define NXFONT_METRICS_179 {1, 3, 5, 1, 4, 0}
#define NXFONT_METRICS_179 {1, 3, 5, 1, 5, 0}
#define NXFONT_BITMAP_179 {0xc0, 0x20, 0xc0, 0x20, 0xc0}
/* Acute (180) */
#define NXFONT_METRICS_180 {1, 3, 2, 2, 8, 0}
#define NXFONT_METRICS_180 {1, 3, 2, 2, 4, 0}
#define NXFONT_BITMAP_180 {0x60, 0x80}
/* Mu (181) */
#define NXFONT_METRICS_181 {1, 5, 9, 1, -2, 0}
#define NXFONT_METRICS_181 {1, 5, 9, 1, 7, 0}
#define NXFONT_BITMAP_181 {0x88, 0x88, 0x88, 0x88, 0x88, 0xd8, 0xa8, 0x80, 0x80}
/* Paragraph (182) */
#define NXFONT_METRICS_182 {1, 5, 11, 1, -2, 0}
#define NXFONT_METRICS_182 {1, 5, 11, 1, 5, 0}
#define NXFONT_BITMAP_182 {0x78, 0xe8, 0xe8, 0xe8, 0x68, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28}
/* Centered period (183) */
#define NXFONT_METRICS_183 {1, 1, 2, 2, 3, 0}
#define NXFONT_METRICS_183 {1, 1, 2, 2, 9, 0}
#define NXFONT_BITMAP_183 {0x80, 0x80}
/* Cedilla (184) */
#define NXFONT_METRICS_184 {1, 3, 2, 2, -2, 0}
#define NXFONT_METRICS_184 {1, 3, 2, 2, 14, 0}
#define NXFONT_BITMAP_184 {0x20, 0xc0}
/* '1' superior (185) */
#define NXFONT_METRICS_185 {1, 2, 5, 1, 4, 0}
#define NXFONT_METRICS_185 {1, 2, 5, 1, 5, 0}
#define NXFONT_BITMAP_185 {0x40, 0xc0, 0x40, 0x40, 0x40}
/* Ord masculine (186) */
@ -544,280 +551,280 @@
#define NXFONT_BITMAP_186 {0x60, 0x90, 0x90, 0x90, 0x60}
/* Right guillemot (187) */
#define NXFONT_METRICS_187 {1, 4, 6, 1, 0, 0}
#define NXFONT_METRICS_187 {1, 4, 6, 1, 8, 0}
#define NXFONT_BITMAP_187 {0xa0, 0xa0, 0x50, 0x50, 0xa0, 0xa0}
/* One quarter (188) */
#define NXFONT_METRICS_188 {1, 8, 10, 1, -1, 0}
#define NXFONT_METRICS_188 {1, 8, 10, 1, 5, 0}
#define NXFONT_BITMAP_188 {0x42, 0xc4, 0x44, 0x48, 0x52, 0x16, 0x2a, 0x4f, 0x42, 0x80}
/* One half (189) */
#define NXFONT_METRICS_189 {1, 8, 10, 1, -1, 0}
#define NXFONT_METRICS_189 {1, 8, 10, 1, 5, 0}
#define NXFONT_BITMAP_189 {0x42, 0xc4, 0x44, 0x48, 0x56, 0x11, 0x22, 0x44, 0x47, 0x80}
/* Three quarters (190) */
#define NXFONT_METRICS_190 {1, 8, 10, 1, -1, 0}
#define NXFONT_METRICS_190 {1, 8, 10, 1, 5, 0}
#define NXFONT_BITMAP_190 {0xc2, 0x24, 0xc4, 0x28, 0xd2, 0x16, 0x2a, 0x4f, 0x42, 0x80}
/* Upside down question mark (191) */
#define NXFONT_METRICS_191 {1, 5, 9, 0, -2, 0}
#define NXFONT_METRICS_191 {1, 5, 9, 0, 7, 0}
#define NXFONT_BITMAP_191 {0x20, 0x20, 0x00, 0x20, 0x20, 0x60, 0x80, 0x80, 0x78}
/* Agrave (192) */
#define NXFONT_METRICS_192 {1, 6, 12, 1, 0, 0}
#define NXFONT_METRICS_192 {1, 6, 12, 1, 2, 0}
#define NXFONT_BITMAP_192 {0x60, 0x10, 0x00, 0x30, 0x30, 0x48, 0x48, 0x48, 0xfc, 0x84, 0x84, 0x84}
/* 'A' acute (193) */
#define NXFONT_METRICS_193 {1, 6, 12, 1, 0, 0}
#define NXFONT_METRICS_193 {1, 6, 12, 1, 2, 0}
#define NXFONT_BITMAP_193 {0x18, 0x20, 0x00, 0x30, 0x30, 0x48, 0x48, 0x48, 0xfc, 0x84, 0x84, 0x84}
/* 'A' circumflex (194) */
#define NXFONT_METRICS_194 {1, 6, 12, 1, 0, 0}
#define NXFONT_METRICS_194 {1, 6, 12, 1, 2, 0}
#define NXFONT_BITMAP_194 {0x10, 0x20, 0x00, 0x30, 0x30, 0x48, 0x48, 0x48, 0xfc, 0x84, 0x84, 0x84}
/* 'A' tilde (195) */
#define NXFONT_METRICS_195 {1, 6, 12, 1, 0, 0}
#define NXFONT_METRICS_195 {1, 6, 12, 1, 2, 0}
#define NXFONT_BITMAP_195 {0x34, 0x48, 0x00, 0x30, 0x30, 0x48, 0x48, 0x48, 0xfc, 0x84, 0x84, 0x84}
/* 'A' dieresis (196) */
#define NXFONT_METRICS_196 {1, 6, 12, 1, 0, 0}
#define NXFONT_METRICS_196 {1, 6, 12, 1, 2, 0}
#define NXFONT_BITMAP_196 {0x48, 0x48, 0x00, 0x30, 0x30, 0x48, 0x48, 0x48, 0xfc, 0x84, 0x84, 0x84}
/* 'A'ring (197) */
#define NXFONT_METRICS_197 {1, 6, 12, 1, 0, 0}
#define NXFONT_METRICS_197 {1, 6, 12, 1, 2, 0}
#define NXFONT_BITMAP_197 {0x30, 0x48, 0x48, 0x30, 0x30, 0x48, 0x48, 0x48, 0xfc, 0x84, 0x84, 0x84}
/* 'AE' (198) */
#define NXFONT_METRICS_198 {{2, 9, 9, 1, 0, 0}
#define NXFONT_METRICS_198 {{2, 9, 9, 1, 5, 0}
#define NXFONT_BITMAP_198 {0x0f, 0x80, 0x14, 0x00, 0x14, 0x00, 0x24, 0x00, 0x27, 0x80, 0x7c, 0x00,\
0x44, 0x00, 0x84, 0x00, 0x87, 0x80}
/* 'C' cedilla (199) */
#define NXFONT_METRICS_199 {1, 6, 11, 1, -2, 0}
#define NXFONT_METRICS_199 {1, 6, 11, 1, 5, 0}
#define NXFONT_BITMAP_199 {0x3c, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x3c, 0x08, 0x30}
/* 'E' grave (200) */
#define NXFONT_METRICS_200 {1, 5, 12, 1, 0, 0}
#define NXFONT_METRICS_200 {1, 5, 12, 1, 2, 0}
#define NXFONT_BITMAP_200 {0xc0, 0x20, 0x00, 0xf8, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0xf8}
/* 'E' acute (201) */
#define NXFONT_METRICS_201 {1, 5, 12, 1, 0, 0}
#define NXFONT_METRICS_201 {1, 5, 12, 1, 2, 0}
#define NXFONT_BITMAP_201 {0x18, 0x20, 0x00, 0xf8, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0xf8}
/* 'E' circumflex (202) */
#define NXFONT_METRICS_202 {1, 5, 12, 1, 0, 0}
#define NXFONT_METRICS_202 {1, 5, 12, 1, 2, 0}
#define NXFONT_BITMAP_202 {0x20, 0x50, 0x00, 0xf8, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0xf8}
/* 'E' dieresis (203) */
#define NXFONT_METRICS_203 {1, 5, 12, 1, 0, 0}
#define NXFONT_METRICS_203 {1, 5, 12, 1, 2, 0}
#define NXFONT_BITMAP_203 {0x50, 0x50, 0x00, 0xf8, 0x80, 0x80, 0x80, 0xf0, 0x80, 0x80, 0x80, 0xf8}
/* 'I' grave (204) */
#define NXFONT_METRICS_204 {1, 3, 12, 0, 0, 0}
#define NXFONT_METRICS_204 {1, 3, 12, 0, 2, 0}
#define NXFONT_BITMAP_204 {0xc0, 0x20, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}
/* 'I' acute (205) */
#define NXFONT_METRICS_205 {1, 3, 12, 0, 0, 0}
#define NXFONT_METRICS_205 {1, 3, 12, 0, 2, 0}
#define NXFONT_BITMAP_205 {0x60, 0x80, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}
/* 'I' circumflex (206) */
#define NXFONT_METRICS_206 {1, 3, 12, 0, 0, 0}
#define NXFONT_METRICS_206 {1, 3, 12, 0, 2, 0}
#define NXFONT_BITMAP_206 {0x40, 0xa0, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}
/* 'I' dieresis (207) */
#define NXFONT_METRICS_207 {1, 3, 12, 0, 0, 0}
#define NXFONT_METRICS_207 {1, 3, 12, 0, 2, 0}
#define NXFONT_BITMAP_207 {0xa0, 0xa0, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}
/* 'E' th (208) */
#define NXFONT_METRICS_208 {1, 8, 9, 0, 0, 0}
#define NXFONT_METRICS_208 {1, 8, 9, 0, 5, 0}
#define NXFONT_BITMAP_208 {0x7c, 0x42, 0x41, 0x41, 0xf1, 0x41, 0x41, 0x42, 0x7c}
/* 'N' tilde (209) */
#define NXFONT_METRICS_209 {1, 7, 12, 1, 0, 0}
#define NXFONT_METRICS_209 {1, 7, 12, 1, 2, 0}
#define NXFONT_BITMAP_209 {0x34, 0x48, 0x00, 0x82, 0xc2, 0xe2, 0xa2, 0x92, 0x8a, 0x86, 0x86, 0x82}
/* 'O' grave (210) */
#define NXFONT_METRICS_210 {1, 7, 12, 1, 0, 0}
#define NXFONT_METRICS_210 {1, 7, 12, 1, 2, 0}
#define NXFONT_BITMAP_210 {0x30, 0x08, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38}
/* 'O' acute (211) */
#define NXFONT_METRICS_211 {1, 7, 12, 1, 0, 0}
#define NXFONT_METRICS_211 {1, 7, 12, 1, 2, 0}
#define NXFONT_BITMAP_211 {0x18, 0x20, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38}
/* 'O' circumflex (212) */
#define NXFONT_METRICS_212 {1, 7, 12, 1, 0, 0}
#define NXFONT_METRICS_212 {1, 7, 12, 1, 2, 0}
#define NXFONT_BITMAP_212 {0x10, 0x28, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38}
/* 'O' tilde (213) */
#define NXFONT_METRICS_213 {1, 7, 12, 1, 0, 0}
#define NXFONT_METRICS_213 {1, 7, 12, 1, 2, 0}
#define NXFONT_BITMAP_213 {0x34, 0x48, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38}
/* 'O' dieresis (214) */
#define NXFONT_METRICS_214 {1, 7, 12, 1, 0, 0}
#define NXFONT_METRICS_214 {1, 7, 12, 1, 2, 0}
#define NXFONT_BITMAP_214 {0x44, 0x44, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 0x38}
/* Multiply sign (215) */
#define NXFONT_METRICS_215 {1, 7, 7, 1, 0, 0}
#define NXFONT_METRICS_215 {1, 7, 7, 1, 7, 0}
#define NXFONT_BITMAP_215 {0x82, 0x44, 0x28, 0x10, 0x28, 0x44, 0x82}
/* 'O' slash (216) */
#define NXFONT_METRICS_216 {1, 7, 9, 1, 0, 0}
#define NXFONT_METRICS_216 {1, 7, 9, 1, 5, 0}
#define NXFONT_BITMAP_216 {0x3a, 0x44, 0x8a, 0x8a, 0x92, 0xa2, 0xa2, 0x44, 0xb8}
/*'U' grave (217) */
#define NXFONT_METRICS_217 {1, 6, 12, 1, 0, 0}
#define NXFONT_METRICS_217 {1, 6, 12, 1, 2, 0}
#define NXFONT_BITMAP_217 {0x60, 0x10, 0x00, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'U' acute (218) */
#define NXFONT_METRICS_218 {1, 6, 12, 1, 0, 0}
#define NXFONT_METRICS_218 {1, 6, 12, 1, 2, 0}
#define NXFONT_BITMAP_218 {0x18, 0x20, 0x00, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'U' circumflex (219) */
#define NXFONT_METRICS_219 {1, 6, 12, 1, 0, 0}
#define NXFONT_METRICS_219 {1, 6, 12, 1, 2, 0}
#define NXFONT_BITMAP_219 {0x10, 0x28, 0x00, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'U' dieresis (220) */
#define NXFONT_METRICS_220 {1, 6, 12, 1, 0, 0}
#define NXFONT_METRICS_220 {1, 6, 12, 1, 2, 0}
#define NXFONT_BITMAP_220 {0x48, 0x48, 0x00, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'Y' acute (221) */
#define NXFONT_METRICS_221 {1, 7, 12, 0, 0, 0}
#define NXFONT_METRICS_221 {1, 7, 12, 0, 2, 0}
#define NXFONT_BITMAP_221 {0x18, 0x20, 0x00, 0x82, 0x82, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10}
/* 'T' horn (222) */
#define NXFONT_METRICS_222 {1, 5, 9, 1, 0, 0}
#define NXFONT_METRICS_222 {1, 5, 9, 1, 5, 0}
#define NXFONT_BITMAP_222 {0x80, 0x80, 0xf0, 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80}
/* germandbls (223) */
#define NXFONT_METRICS_223 {1, 5, 10, 1, 0, 0}
#define NXFONT_METRICS_223 {1, 5, 10, 1, 4, 0}
#define NXFONT_BITMAP_223 {0x60, 0x90, 0x90, 0xa0, 0xa0, 0x90, 0x88, 0x88, 0x88, 0xb0}
/* 'a' grave (224) */
#define NXFONT_METRICS_224 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_224 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_224 {0x60, 0x10, 0x00, 0x70, 0x88, 0x08, 0x78, 0x88, 0x88, 0x74}
/* 'a' acute (225) */
#define NXFONT_METRICS_225 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_225 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_225 {0x18, 0x20, 0x00, 0x70, 0x88, 0x08, 0x78, 0x88, 0x88, 0x74}
/* 'a' circumflex (226) */
#define NXFONT_METRICS_226 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_226 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_226 {0x20, 0x50, 0x00, 0x70, 0x88, 0x08, 0x78, 0x88, 0x88, 0x74}
/* 'a' tilde (227) */
#define NXFONT_METRICS_227 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_227 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_227 {0x68, 0x90, 0x00, 0x70, 0x88, 0x08, 0x78, 0x88, 0x88, 0x74}
/* 'a' dieresis (228) */
#define NXFONT_METRICS_228 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_228 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_228 {0x50, 0x50, 0x00, 0x70, 0x88, 0x08, 0x78, 0x88, 0x88, 0x74}
/* a' ring (229) */
#define NXFONT_METRICS_229 {1, 6, 11, 1, 0, 0}
#define NXFONT_METRICS_229 {1, 6, 11, 1, 3, 0}
#define NXFONT_BITMAP_229 {0x20, 0x50, 0x20, 0x00, 0x70, 0x88, 0x08, 0x78, 0x88, 0x88, 0x74}
/* 'ae' (230) */
#define NXFONT_METRICS_230 {1, 8, 7, 1, 0, 0}
#define NXFONT_METRICS_230 {1, 8, 7, 1, 7, 0}
#define NXFONT_BITMAP_230 {0x76, 0x89, 0x09, 0x7f, 0x88, 0x88, 0x77}
/* 'c' cedilla (231) */
#define NXFONT_METRICS_231 {1, 4, 9, 1, -2, 0}
#define NXFONT_METRICS_231 {1, 4, 9, 1, 7, 0}
#define NXFONT_BITMAP_231 {0x70, 0x80, 0x80, 0x80, 0x80, 0x80, 0x70, 0x20, 0xc0}
/* 'e' grave (232) */
#define NXFONT_METRICS_232 {1, 5, 10, 1, 0, 0}
#define NXFONT_METRICS_232 {1, 5, 10, 1, 4, 0}
#define NXFONT_BITMAP_232 {0x60, 0x10, 0x00, 0x70, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x78}
/* 'e' acute (233) */
#define NXFONT_METRICS_233 {1, 5, 10, 1, 0, 0}
#define NXFONT_METRICS_233 {1, 5, 10, 1, 4, 0}
#define NXFONT_BITMAP_233 {0x18, 0x20, 0x00, 0x70, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x78}
/* 'e' circumflex (234) */
#define NXFONT_METRICS_234 {1, 5, 10, 1, 0, 0}
#define NXFONT_METRICS_234 {1, 5, 10, 1, 4, 0}
#define NXFONT_BITMAP_234 {0x20, 0x50, 0x00, 0x70, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x78}
/* 'e' dieresis (235) */
#define NXFONT_METRICS_235 {1, 5, 10, 1, 0, 0}
#define NXFONT_METRICS_235 {1, 5, 10, 1, 4, 0}
#define NXFONT_BITMAP_235 {0x50, 0x50, 0x00, 0x70, 0x88, 0x88, 0xf8, 0x80, 0x80, 0x78}
/* 'i' grave (236) */
#define NXFONT_METRICS_236 {1, 3, 10, 0, 0, 0}
#define NXFONT_METRICS_236 {1, 3, 10, 0, 4, 0}
#define NXFONT_BITMAP_236 {0xc0, 0x20, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}
/* 'i' acute (237) */
#define NXFONT_METRICS_237 {1, 3, 0x10, 0, 0, 0}
#define NXFONT_METRICS_237 {1, 3, 10, 0, 4, 0}
#define NXFONT_BITMAP_237 {0x60, 0x80, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}
/* 'i' circumflex (238) */
#define NXFONT_METRICS_238 {1, 3, 10, 0, 0, 0}
#define NXFONT_METRICS_238 {1, 3, 10, 0, 4, 0}
#define NXFONT_BITMAP_238 {0x40, 0xa0, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}
/* 'i' dieresis (239) */
#define NXFONT_METRICS_239 {1, 3, 10, 0, 0, 0}
#define NXFONT_METRICS_239 {1, 3, 10, 0, 4, 0}
#define NXFONT_BITMAP_239 {0xa0, 0xa0, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}
/* 'e' th (240) */
#define NXFONT_METRICS_240 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_240 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_240 {0xd0, 0x20, 0x50, 0x10, 0x68, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'n' tilde (241) */
#define NXFONT_METRICS_241 {1, 5, 10, 1, 0, 0}
#define NXFONT_METRICS_241 {1, 5, 10, 1, 4, 0}
#define NXFONT_BITMAP_241 {0x68, 0x90, 0x00, 0xb0, 0xc8, 0x88, 0x88, 0x88, 0x88, 0x88}
/* 'o' grave (242) */
#define NXFONT_METRICS_242 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_242 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_242 {0x60, 0x10, 0x00, 0x30, 0x48, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'o' acute (243) */
#define NXFONT_METRICS_243 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_243 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_243 {0x18, 0x20, 0x00, 0x30, 0x48, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'o' circumflex (244) */
#define NXFONT_METRICS_244 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_244 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_244 {0x10, 0x28, 0x00, 0x30, 0x48, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'o' tilde (245) */
#define NXFONT_METRICS_245 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_245 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_245 {0x34, 0x48, 0x00, 0x30, 0x48, 0x84, 0x84, 0x84, 0x48, 0x30}
/* 'o' dieresis (246) */
#define NXFONT_METRICS_246 {1, 6, 10, 1, 0, 0}
#define NXFONT_METRICS_246 {1, 6, 10, 1, 4, 0}
#define NXFONT_BITMAP_246 {0x48, 0x48, 0x00, 0x30, 0x48, 0x84, 0x84, 0x84, 0x48, 0x30}
/* Division sign (247) */
#define NXFONT_METRICS_247 {1, 7, 7, 1, 0, 0}
#define NXFONT_METRICS_247 {1, 7, 7, 1, 7, 0}
#define NXFONT_BITMAP_247 {0x10, 0x10, 0x00, 0xfe, 0x00, 0x10, 0x10}
/* 'o' slash (248) */
#define NXFONT_METRICS_248 {1, 6, 7, 1, 0, 0}
#define NXFONT_METRICS_248 {1, 6, 7, 1, 7, 0}
#define NXFONT_BITMAP_248 {0x34, 0x48, 0x94, 0x94, 0xa4 0x48, 0xb0}
/* 'u' grave (249) */
#define NXFONT_METRICS_249 {1, 5, 10, 1, 0, 0}
#define NXFONT_METRICS_249 {1, 5, 10, 1, 4, 0}
#define NXFONT_BITMAP_249 {0xc0, 0x20, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x98, 0x68}
/* 'u' acute (250) */
#define NXFONT_METRICS_250 {1, 5, 10, 1, 0, 0}
#define NXFONT_METRICS_250 {1, 5, 10, 1, 4, 0}
#define NXFONT_BITMAP_250 {0x18, 0x20, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x98, 0x68}
/* 'u' circumflex (251) */
#define NXFONT_METRICS_251 {1, 5, 10, 1, 0, 0}
#define NXFONT_METRICS_251 {1, 5, 10, 1, 4, 0}
#define NXFONT_BITMAP_251 {0x20, 0x50, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x98, 0x68}
/* 'u' dieresis (252) */
#define NXFONT_METRICS_252 {1, 5, 10, 1, 0, 0}
#define NXFONT_METRICS_252 {1, 5, 10, 1, 4, 0}
#define NXFONT_BITMAP_252 {0x50, 0x50, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x98, 0x68}
/* 'y' acute (253) */
#define NXFONT_METRICS_253 {1, 5, 12, 1, -2, 0}
#define NXFONT_METRICS_253 {1, 5, 12, 1, 4, 0}
#define NXFONT_BITMAP_253 {0x18, 0x20, 0x00, 0x88, 0x88, 0x88, 0x50, 0x50, 0x20, 0x20, 0x40, 0xc0}
/* 't' horn (254) */
#define NXFONT_METRICS_254 {1, 6, 12, 1, -2, 0}
#define NXFONT_METRICS_254 {1, 6, 12, 1, 4, 0}
#define NXFONT_BITMAP_254 {0x80, 0x80, 0x80, 0xb8, 0xc4, 0x84, 0x84, 0x84, 0xc4, 0xb8, 0x80, 0x80}
/* 'y' dieresis (255) */
#define NXFONT_METRICS_255 {1, 5, 12, 1, -2, 0}
#define NXFONT_METRICS_255 {1, 5, 12, 1, 4, 0}
#define NXFONT_BITMAP_255 {0x50, 0x50, 0x00, 0x88, 0x88, 0x88, 0x50, 0x50, 0x20, 0x20, 0x40, 0xc0}
/****************************************************************************

View File

@ -108,18 +108,6 @@
# define NXGL_ALIGNDOWN(x) ((x) & ~NXGL_PIXELMASK)
# define NXGL_ALIGNUP(x) (((x) + NXGL_PIXELMASK) & ~NXGL_PIXELMASK)
# ifdef CONFIG_NXGL_PACKEDMSFIRST
# define NXGL_MASKEDSRC1(s,r) ((s) & (((ubyte)0xff) >> (8 - ((r) << pixelshift))))
# define NXGL_MASKEDVALUE1(s,r) ((s) & (((ubyte)0xff) << ((r) << NXGL_PIXELSHFIT)))
# define NXGL_MASKEDSRC2(s,r) ((s) & (((ubyte)0xff) >> ((r) << pixelshift)))
# define NXGL_MASKEDVALUE2(s,r) ((s) & (((ubyte)0xff) << (8 - ((r) << NXGL_PIXELSHFIT))))
# else
# define NXGL_MASKEDSRC1(s,r) ((s) & (((ubyte)0xff) >> ((r) << pixelshift)))
# define NXGL_MASKEDVALUE1(s,r) ((s) & (((ubyte)0xff) << (8 - ((r) << NXGL_PIXELSHFIT))))
# define NXGL_MASKEDSRC2(s,r) ((s) & (((ubyte)0xff) >> (8 - ((r) << pixelshift))))
# define NXGL_MASKEDVALUE2(s,r) ((s) & (((ubyte)0xff) << ((r) << NXGL_PIXELSHFIT)))
# endif
# define NXGL_MEMSET(dest,value,width) \
{ \
FAR ubyte *_ptr = (FAR ubyte*)dest; \

View File

@ -53,12 +53,12 @@
struct nx_fontmetic_s
{
uint32 stride : 2; /* Width of one font row in bytes */
uint32 width : 6; /* Width of the font in bits */
uint32 height : 6; /* Height of the font in rows */
uint32 lxoffs : 6; /* Lower left-hand corner X-offset in pixels */
uint32 yxoffs : 6; /* Lower left-hand corner y-offset in pixels */
uint32 unused : 6;
uint32 stride : 2; /* Width of one font row in bytes */
uint32 width : 6; /* Width of the font in bits */
uint32 height : 6; /* Height of the font in rows */
uint32 xoffset : 6; /* Top, left-hand corner X-offset in pixels */
uint32 yoffset : 6; /* Top, left-hand corner y-offset in pixels */
uint32 unused : 6;
};
struct nx_fontbitmap_s
@ -69,12 +69,12 @@ struct nx_fontbitmap_s
struct nx_fontset_s
{
uint32 ascent : 6; /* Pixels above base (max) */
uint32 descent : 6; /* Pixels below base (max) */
uint32 first : 8; /* First font code */
uint32 nfonts : 8; /* number of fonts */
uint32 unused : 4;
FAR const struct nx_fontbitmap_s *fonts;
uint32 mxheight : 6; /* Max height of one glyph in rows */
uint32 mxwidth : 6; /* Max width of any glyph in pixels */
uint32 first : 8; /* First bitmap character code */
uint32 nchars : 8; /* Number of bitmap character codes */
uint32 spwidth : 4; /* The width of a space in pixels */
FAR const struct nx_fontbitmap_s *bitmap;
};
/****************************************************************************
@ -98,6 +98,33 @@ EXTERN struct nx_fontset_s g_8bitfonts;
* Public Function Prototypes
****************************************************************************/
/****************************************************************************
* Name: nxf_getfontset
*
* Description:
* Return information about the font set containtined he selected
* character encoding.
*
* Input Parameters:
* ch - character code
*
****************************************************************************/
EXTERN FAR const struct nx_fontset_s *nxf_getfontset(uint16 ch);
/****************************************************************************
* Name: nxf_getbitmap
*
* Description:
* Return font bitmap information for the selected character encoding.
*
* Input Parameters:
* ch - character code
*
****************************************************************************/
EXTERN FAR const struct nx_fontbitmap_s *nxf_getbitmap(uint16 ch);
#undef EXTERN
#if defined(__cplusplus)
}