diff options
author | inmarket <andrewh@inmarket.com.au> | 2018-01-09 17:53:30 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2018-01-09 17:53:30 +1000 |
commit | 013bac84cefa14d333a59e16c3fca1b85f05a090 (patch) | |
tree | 172f956eb7cc2b88efc842d45687538d46ccb367 /src/gdisp | |
parent | c41cbd05e9fb340b5b3c0dcb42a7b41462765ecd (diff) | |
download | uGFX-013bac84cefa14d333a59e16c3fca1b85f05a090.tar.gz uGFX-013bac84cefa14d333a59e16c3fca1b85f05a090.tar.bz2 uGFX-013bac84cefa14d333a59e16c3fca1b85f05a090.zip |
Support negative baseline_x in a font.
Diffstat (limited to 'src/gdisp')
-rw-r--r-- | src/gdisp/mcufont/mf_font.h | 28 | ||||
-rw-r--r-- | src/gdisp/mcufont/mf_wordwrap.c | 8 |
2 files changed, 17 insertions, 19 deletions
diff --git a/src/gdisp/mcufont/mf_font.h b/src/gdisp/mcufont/mf_font.h index ff8840c8..c7929cdf 100644 --- a/src/gdisp/mcufont/mf_font.h +++ b/src/gdisp/mcufont/mf_font.h @@ -30,35 +30,35 @@ struct mf_font_s { /* Full name of the font, comes from the original font file. */ const char *full_name; - + /* Short name of the font, comes from file name. */ const char *short_name; - + /* Width and height of the character bounding box. */ uint8_t width; uint8_t height; - + /* Minimum and maximum tracking width of characters. */ uint8_t min_x_advance; uint8_t max_x_advance; - + /* Location of the text baseline relative to character. */ - uint8_t baseline_x; + int8_t baseline_x; uint8_t baseline_y; - + /* Line height of the font (vertical advance). */ uint8_t line_height; - + /* Flags identifying various aspects of the font. */ uint8_t flags; - + /* Fallback character to use for missing glyphs. */ uint16_t fallback_character; - + /* Function to get character width. Should return 0 if character is * not found. */ uint8_t (*character_width)(const struct mf_font_s *font, uint16_t character); - + /* Function to render a character. Returns the character width or 0 if * character is not found. */ uint8_t (*render_character)(const struct mf_font_s *font, @@ -80,14 +80,14 @@ struct mf_font_list_s }; -/* Function to decode and render a single character. - * +/* Function to decode and render a single character. + * * font: Pointer to the font definition. * x0, y0: Upper left corner of the target area. * character: The character code (unicode) to render. * callback: Callback function to write out the pixels. * state: Free variable for caller to use (can be NULL). - * + * * Returns width of the character. */ MF_EXTERN uint8_t mf_render_character(const struct mf_font_s *font, @@ -102,7 +102,7 @@ MF_EXTERN uint8_t mf_render_character(const struct mf_font_s *font, * * font: Pointer to the font definition. * character: The character code (unicode) to render. - * + * * Returns width of the character in pixels. */ MF_EXTERN uint8_t mf_character_width(const struct mf_font_s *font, diff --git a/src/gdisp/mcufont/mf_wordwrap.c b/src/gdisp/mcufont/mf_wordwrap.c index 6402ae8d..6403722d 100644 --- a/src/gdisp/mcufont/mf_wordwrap.c +++ b/src/gdisp/mcufont/mf_wordwrap.c @@ -32,11 +32,11 @@ static bool get_wordlen(const struct mf_font_s *font, mf_str *text, { mf_char c; mf_str prev = *text; - + result->word = 0; result->space = 0; result->chars = 0; - + c = mf_getchar(text); while (c && !is_wrap_space(c)) { @@ -51,10 +51,8 @@ static bool get_wordlen(const struct mf_font_s *font, mf_str *text, { result->chars++; - if (c == ' ') + if (c == ' ' || c == '-') result->space += mf_character_width(font, c); - else if (c == '-') - result->space += mf_character_width(font, '-'); else if (c == '\t') result->space += mf_character_width(font, 'm') * MF_TABSIZE; else if (c == '\n') { |