From 1103f74b8a8b727d9c9f7e128654e514708cf56d Mon Sep 17 00:00:00 2001 From: Lu Wang Date: Thu, 21 Feb 2013 17:36:43 +0800 Subject: [PATCH] Don't mess up original glyphs when inserting a new empty char --- src/HTMLRenderer/font.cc | 2 +- src/util/ffw.c | 7 +++++-- src/util/ffw.h | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/HTMLRenderer/font.cc b/src/HTMLRenderer/font.cc index bfb13f1..3e1fff0 100644 --- a/src/HTMLRenderer/font.cc +++ b/src/HTMLRenderer/font.cc @@ -431,7 +431,7 @@ void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo char buf[2] = {0, ' '}; space_width = (int)floor(font_cid->getWidth(buf, 2) * info.em_size + 0.5); } - ffw_make_char((int)' ', space_width); + ffw_add_empty_char((int32_t)' ', space_width); } if(ctu) diff --git a/src/util/ffw.c b/src/util/ffw.c index 8ccc030..572209b 100644 --- a/src/util/ffw.c +++ b/src/util/ffw.c @@ -260,9 +260,12 @@ void ffw_cidflatten(void) SFFlatten(cur_fv->sf->cidmaster); } -void ffw_make_char(int enc, int width) +void ffw_add_empty_char(int32_t unicode, int width) { - SFMakeChar(cur_fv->sf, cur_fv->map, enc)->width = width; + // append the new char to Enc + SplineChar * sc = SFMakeChar(cur_fv->sf, cur_fv->map, cur_fv->map->enccount); + sc->unicodeenc = unicode; + sc->width = width; } int ffw_get_em_size(void) diff --git a/src/util/ffw.h b/src/util/ffw.h index bfcdacd..de90cc7 100644 --- a/src/util/ffw.h +++ b/src/util/ffw.h @@ -40,8 +40,8 @@ void ffw_reencode_raw(int32_t * mapping, int mapping_len, int force); void ffw_reencode_raw2(char ** mapping, int mapping_len, int force); void ffw_cidflatten(void); -// get or create the char, and set the width -void ffw_make_char(int enc, int width); +// add a new empty char into the font +void ffw_add_empty_char(int32_t unicode, int width); //////////////////////// // metrics