mirror of
https://github.com/pdf2htmlEX/pdf2htmlEX.git
synced 2024-12-22 04:50:09 +00:00
rename ff to ffw
This commit is contained in:
parent
d2fb40fc00
commit
ac6b04ab32
@ -122,8 +122,8 @@ add_executable(pdf2htmlEX
|
|||||||
src/HTMLRenderer/image.cc
|
src/HTMLRenderer/image.cc
|
||||||
src/include/namespace.h
|
src/include/namespace.h
|
||||||
src/HTMLRenderer/LineBuffer.cc
|
src/HTMLRenderer/LineBuffer.cc
|
||||||
src/include/ff.h
|
src/include/ffw.h
|
||||||
src/ff.c
|
src/ffw.c
|
||||||
src/include/BackgroundRenderer.h
|
src/include/BackgroundRenderer.h
|
||||||
src/BackgroundRenderer.cc
|
src/BackgroundRenderer.cc
|
||||||
src/include/FontPreprocessor.h
|
src/include/FontPreprocessor.h
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "HTMLRenderer.h"
|
#include "HTMLRenderer.h"
|
||||||
#include "BackgroundRenderer.h"
|
#include "BackgroundRenderer.h"
|
||||||
#include "namespace.h"
|
#include "namespace.h"
|
||||||
#include "ff.h"
|
#include "ffw.h"
|
||||||
#include "pdf2htmlEX-config.h"
|
#include "pdf2htmlEX-config.h"
|
||||||
|
|
||||||
namespace pdf2htmlEX {
|
namespace pdf2htmlEX {
|
||||||
@ -36,17 +36,20 @@ HTMLRenderer::HTMLRenderer(const Param * param)
|
|||||||
,image_count(0)
|
,image_count(0)
|
||||||
,param(param)
|
,param(param)
|
||||||
{
|
{
|
||||||
//disable error function of poppler
|
if(!(param->debug))
|
||||||
setErrorCallback(&dummy, nullptr);
|
{
|
||||||
|
//disable error function of poppler
|
||||||
|
setErrorCallback(&dummy, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
ff_init();
|
ffw_init(param->debug);
|
||||||
cur_mapping = new int32_t [0x10000];
|
cur_mapping = new int32_t [0x10000];
|
||||||
cur_mapping2 = new char* [0x100];
|
cur_mapping2 = new char* [0x100];
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLRenderer::~HTMLRenderer()
|
HTMLRenderer::~HTMLRenderer()
|
||||||
{
|
{
|
||||||
ff_fin();
|
ffw_fin();
|
||||||
clean_tmp_files();
|
clean_tmp_files();
|
||||||
delete [] cur_mapping;
|
delete [] cur_mapping;
|
||||||
delete [] cur_mapping2;
|
delete [] cur_mapping2;
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#include <CharCodeToUnicode.h>
|
#include <CharCodeToUnicode.h>
|
||||||
#include <fofi/FoFiTrueType.h>
|
#include <fofi/FoFiTrueType.h>
|
||||||
|
|
||||||
#include "ff.h"
|
#include "ffw.h"
|
||||||
#include "HTMLRenderer.h"
|
#include "HTMLRenderer.h"
|
||||||
#include "namespace.h"
|
#include "namespace.h"
|
||||||
|
|
||||||
@ -158,7 +158,7 @@ string HTMLRenderer::dump_embedded_font (GfxFont * font, long long fn_id)
|
|||||||
|
|
||||||
void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo & info, bool get_metric_only)
|
void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo & info, bool get_metric_only)
|
||||||
{
|
{
|
||||||
ff_load_font(filepath.c_str());
|
ffw_load_font(filepath.c_str());
|
||||||
|
|
||||||
int * code2GID = nullptr;
|
int * code2GID = nullptr;
|
||||||
int code2GID_len = 0;
|
int code2GID_len = 0;
|
||||||
@ -198,7 +198,7 @@ void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo
|
|||||||
maxcode = 0xff;
|
maxcode = 0xff;
|
||||||
if(is_truetype_suffix(suffix))
|
if(is_truetype_suffix(suffix))
|
||||||
{
|
{
|
||||||
ff_reencode_glyph_order();
|
ffw_reencode_glyph_order();
|
||||||
FoFiTrueType *fftt = nullptr;
|
FoFiTrueType *fftt = nullptr;
|
||||||
if((fftt = FoFiTrueType::load((char*)filepath.c_str())) != nullptr)
|
if((fftt = FoFiTrueType::load((char*)filepath.c_str())) != nullptr)
|
||||||
{
|
{
|
||||||
@ -242,7 +242,7 @@ void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ff_reencode_raw2(cur_mapping2, 256, 0);
|
ffw_reencode_raw2(cur_mapping2, 256, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -251,7 +251,7 @@ void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo
|
|||||||
|
|
||||||
if(is_truetype_suffix(suffix))
|
if(is_truetype_suffix(suffix))
|
||||||
{
|
{
|
||||||
ff_reencode_glyph_order();
|
ffw_reencode_glyph_order();
|
||||||
|
|
||||||
GfxCIDFont * _font = dynamic_cast<GfxCIDFont*>(font);
|
GfxCIDFont * _font = dynamic_cast<GfxCIDFont*>(font);
|
||||||
|
|
||||||
@ -261,7 +261,7 @@ void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ff_cidflatten();
|
ffw_cidflatten();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,7 +334,7 @@ void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ff_reencode_raw(cur_mapping, max_key + 1, 1);
|
ffw_reencode_raw(cur_mapping, max_key + 1, 1);
|
||||||
|
|
||||||
if(ctu)
|
if(ctu)
|
||||||
ctu->decRefCnt();
|
ctu->decRefCnt();
|
||||||
@ -354,16 +354,16 @@ void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo
|
|||||||
auto fn = str_fmt("%s/f%llx_.ttf", param->tmp_dir.c_str(), info.id);
|
auto fn = str_fmt("%s/f%llx_.ttf", param->tmp_dir.c_str(), info.id);
|
||||||
add_tmp_file((char*)fn);
|
add_tmp_file((char*)fn);
|
||||||
|
|
||||||
ff_save((char*)fn);
|
ffw_save((char*)fn);
|
||||||
ff_close();
|
ffw_close();
|
||||||
ff_load_font((char*)fn);
|
ffw_load_font((char*)fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
// read metrics
|
// read metrics
|
||||||
// int em = ff_get_em_size();
|
// int em = ffw_get_em_size();
|
||||||
int ascent,descent;
|
int ascent,descent;
|
||||||
ff_metric(&ascent, &descent);
|
ffw_metric(&ascent, &descent);
|
||||||
int em = ascent + descent;
|
int em = ascent + descent;
|
||||||
|
|
||||||
if(em != 0)
|
if(em != 0)
|
||||||
@ -381,8 +381,8 @@ void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo
|
|||||||
cerr << "Ascent: " << info.ascent << " Descent: " << info.descent << endl;
|
cerr << "Ascent: " << info.ascent << " Descent: " << info.descent << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
ff_set_ascent(ascent);
|
ffw_set_ascent(ascent);
|
||||||
ff_set_descent(descent);
|
ffw_set_descent(descent);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -393,8 +393,8 @@ void HTMLRenderer::embed_font(const string & filepath, GfxFont * font, FontInfo
|
|||||||
if(param->single_html)
|
if(param->single_html)
|
||||||
add_tmp_file((char*)fn);
|
add_tmp_file((char*)fn);
|
||||||
|
|
||||||
ff_save((char*)fn);
|
ffw_save((char*)fn);
|
||||||
ff_close();
|
ffw_close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* ff.c
|
* ffw.c: Fontforge wrapper
|
||||||
*
|
*
|
||||||
* Processing fonts using Fontforge
|
* Processing fonts using Fontforge
|
||||||
*
|
*
|
||||||
@ -16,7 +16,7 @@
|
|||||||
#include <fontforge.h>
|
#include <fontforge.h>
|
||||||
#include <baseviews.h>
|
#include <baseviews.h>
|
||||||
|
|
||||||
#include "ff.h"
|
#include "ffw.h"
|
||||||
|
|
||||||
static FontViewBase * cur_fv = NULL;
|
static FontViewBase * cur_fv = NULL;
|
||||||
static Encoding * original_enc = NULL;
|
static Encoding * original_enc = NULL;
|
||||||
@ -45,14 +45,15 @@ static int max(int a, int b)
|
|||||||
return (a>b) ? a : b;
|
return (a>b) ? a : b;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dummy(const char * format, ...)
|
static void dumb_logwarning(const char * format, ...)
|
||||||
{
|
{
|
||||||
va_list al;
|
|
||||||
va_start(al, format);
|
|
||||||
va_end(al);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_init(void)
|
static void dumb_post_error(const char * title, const char * error, ...)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ffw_init(int debug)
|
||||||
{
|
{
|
||||||
InitSimpleStuff();
|
InitSimpleStuff();
|
||||||
if ( default_encoding==NULL )
|
if ( default_encoding==NULL )
|
||||||
@ -60,13 +61,17 @@ void ff_init(void)
|
|||||||
if ( default_encoding==NULL )
|
if ( default_encoding==NULL )
|
||||||
default_encoding=&custom; /* In case iconv is broken */
|
default_encoding=&custom; /* In case iconv is broken */
|
||||||
|
|
||||||
//disable error output of Fontforge
|
if(!debug)
|
||||||
ui_interface->logwarning = &dummy;
|
{
|
||||||
|
//disable error output of Fontforge
|
||||||
|
ui_interface->logwarning = &dumb_logwarning;
|
||||||
|
ui_interface->post_error = &dumb_post_error;
|
||||||
|
}
|
||||||
|
|
||||||
original_enc = FindOrMakeEncoding("original");
|
original_enc = FindOrMakeEncoding("original");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_fin(void)
|
void ffw_fin(void)
|
||||||
{
|
{
|
||||||
while(enc_head)
|
while(enc_head)
|
||||||
{
|
{
|
||||||
@ -85,7 +90,7 @@ void ff_fin(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_load_font(const char * filename)
|
void ffw_load_font(const char * filename)
|
||||||
{
|
{
|
||||||
char * _filename = strcopy(filename);
|
char * _filename = strcopy(filename);
|
||||||
SplineFont * font = LoadSplineFont(_filename, 1);
|
SplineFont * font = LoadSplineFont(_filename, 1);
|
||||||
@ -101,7 +106,7 @@ void ff_load_font(const char * filename)
|
|||||||
cur_fv = font->fv;
|
cur_fv = font->fv;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ff_do_reencode(Encoding * encoding, int force)
|
static void ffw_do_reencode(Encoding * encoding, int force)
|
||||||
{
|
{
|
||||||
assert(encoding);
|
assert(encoding);
|
||||||
|
|
||||||
@ -123,21 +128,21 @@ static void ff_do_reencode(Encoding * encoding, int force)
|
|||||||
SFReplaceEncodingBDFProps(cur_fv->sf, cur_fv->map);
|
SFReplaceEncodingBDFProps(cur_fv->sf, cur_fv->map);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_reencode_glyph_order(void)
|
void ffw_reencode_glyph_order(void)
|
||||||
{
|
{
|
||||||
ff_do_reencode(original_enc, 0);
|
ffw_do_reencode(original_enc, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_reencode(const char * encname, int force)
|
void ffw_reencode(const char * encname, int force)
|
||||||
{
|
{
|
||||||
Encoding * enc = FindOrMakeEncoding(encname);
|
Encoding * enc = FindOrMakeEncoding(encname);
|
||||||
if(!enc)
|
if(!enc)
|
||||||
err("Unknown encoding %s\n", encname);
|
err("Unknown encoding %s\n", encname);
|
||||||
|
|
||||||
ff_do_reencode(enc, force);
|
ffw_do_reencode(enc, force);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_reencode_raw(int32 * mapping, int mapping_len, int force)
|
void ffw_reencode_raw(int32 * mapping, int mapping_len, int force)
|
||||||
{
|
{
|
||||||
Encoding * enc = calloc(1, sizeof(Encoding));
|
Encoding * enc = calloc(1, sizeof(Encoding));
|
||||||
enc->only_1byte = enc->has_1byte = true;
|
enc->only_1byte = enc->has_1byte = true;
|
||||||
@ -149,10 +154,10 @@ void ff_reencode_raw(int32 * mapping, int mapping_len, int force)
|
|||||||
enc->next = enc_head;
|
enc->next = enc_head;
|
||||||
enc_head = enc;
|
enc_head = enc;
|
||||||
|
|
||||||
ff_do_reencode(enc, force);
|
ffw_do_reencode(enc, force);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_reencode_raw2(char ** mapping, int mapping_len, int force)
|
void ffw_reencode_raw2(char ** mapping, int mapping_len, int force)
|
||||||
{
|
{
|
||||||
Encoding * enc = calloc(1, sizeof(Encoding));
|
Encoding * enc = calloc(1, sizeof(Encoding));
|
||||||
enc->enc_name = strcopy("");
|
enc->enc_name = strcopy("");
|
||||||
@ -176,17 +181,17 @@ void ff_reencode_raw2(char ** mapping, int mapping_len, int force)
|
|||||||
enc->next = enc_head;
|
enc->next = enc_head;
|
||||||
enc_head = enc;
|
enc_head = enc;
|
||||||
|
|
||||||
ff_do_reencode(enc, force);
|
ffw_do_reencode(enc, force);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_cidflatten(void)
|
void ffw_cidflatten(void)
|
||||||
{
|
{
|
||||||
if(!cur_fv->sf->cidmaster)
|
if(!cur_fv->sf->cidmaster)
|
||||||
err("Cannot flatten a non-CID font");
|
err("Cannot flatten a non-CID font");
|
||||||
SFFlatten(cur_fv->sf->cidmaster);
|
SFFlatten(cur_fv->sf->cidmaster);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_save(const char * filename)
|
void ffw_save(const char * filename)
|
||||||
{
|
{
|
||||||
char * _filename = strcopy(filename);
|
char * _filename = strcopy(filename);
|
||||||
char * _ = strcopy("");
|
char * _ = strcopy("");
|
||||||
@ -201,13 +206,13 @@ void ff_save(const char * filename)
|
|||||||
err("Cannot save font to %s\n", filename);
|
err("Cannot save font to %s\n", filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_close(void)
|
void ffw_close(void)
|
||||||
{
|
{
|
||||||
FontViewClose(cur_fv);
|
FontViewClose(cur_fv);
|
||||||
cur_fv = NULL;
|
cur_fv = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_metric(int * ascent, int * descent)
|
void ffw_metric(int * ascent, int * descent)
|
||||||
{
|
{
|
||||||
*ascent = cur_fv->sf->ascent;
|
*ascent = cur_fv->sf->ascent;
|
||||||
*descent = cur_fv->sf->descent;
|
*descent = cur_fv->sf->descent;
|
||||||
@ -227,33 +232,33 @@ void ff_metric(int * ascent, int * descent)
|
|||||||
cur_fv->sf->pfminfo.hheaddescent_add = 0;
|
cur_fv->sf->pfminfo.hheaddescent_add = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ff_get_em_size(void)
|
int ffw_get_em_size(void)
|
||||||
{
|
{
|
||||||
return (cur_fv->sf->pfminfo.os2_typoascent - cur_fv->sf->pfminfo.os2_typodescent);
|
return (cur_fv->sf->pfminfo.os2_typoascent - cur_fv->sf->pfminfo.os2_typodescent);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ff_get_max_ascent(void)
|
int ffw_get_max_ascent(void)
|
||||||
{
|
{
|
||||||
return max(cur_fv->sf->pfminfo.os2_winascent,
|
return max(cur_fv->sf->pfminfo.os2_winascent,
|
||||||
max(cur_fv->sf->pfminfo.os2_typoascent,
|
max(cur_fv->sf->pfminfo.os2_typoascent,
|
||||||
cur_fv->sf->pfminfo.hhead_ascent));
|
cur_fv->sf->pfminfo.hhead_ascent));
|
||||||
}
|
}
|
||||||
|
|
||||||
int ff_get_max_descent(void)
|
int ffw_get_max_descent(void)
|
||||||
{
|
{
|
||||||
return max(cur_fv->sf->pfminfo.os2_windescent,
|
return max(cur_fv->sf->pfminfo.os2_windescent,
|
||||||
max(-cur_fv->sf->pfminfo.os2_typodescent,
|
max(-cur_fv->sf->pfminfo.os2_typodescent,
|
||||||
-cur_fv->sf->pfminfo.hhead_descent));
|
-cur_fv->sf->pfminfo.hhead_descent));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_set_ascent(int a)
|
void ffw_set_ascent(int a)
|
||||||
{
|
{
|
||||||
cur_fv->sf->pfminfo.os2_winascent = a;
|
cur_fv->sf->pfminfo.os2_winascent = a;
|
||||||
cur_fv->sf->pfminfo.os2_typoascent = a;
|
cur_fv->sf->pfminfo.os2_typoascent = a;
|
||||||
cur_fv->sf->pfminfo.hhead_ascent = a;
|
cur_fv->sf->pfminfo.hhead_ascent = a;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_set_descent(int d)
|
void ffw_set_descent(int d)
|
||||||
{
|
{
|
||||||
cur_fv->sf->pfminfo.os2_windescent = d;
|
cur_fv->sf->pfminfo.os2_windescent = d;
|
||||||
cur_fv->sf->pfminfo.os2_typodescent = -d;
|
cur_fv->sf->pfminfo.os2_typodescent = -d;
|
@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
* ff.h
|
|
||||||
*
|
|
||||||
* Processing fonts using Fontforge
|
|
||||||
*
|
|
||||||
* fontforge.h cannot be included in C++
|
|
||||||
* So this wrapper in C publishes several functions we need
|
|
||||||
*
|
|
||||||
* by WangLu
|
|
||||||
* 2012.09.03
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#include <cstdint>
|
|
||||||
namespace pdf2htmlEX {
|
|
||||||
extern "C" {
|
|
||||||
#else
|
|
||||||
#include <stdint.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
void ff_init(void);
|
|
||||||
void ff_fin(void);
|
|
||||||
void ff_load_font(const char * filename);
|
|
||||||
void ff_reencode_glyph_order(void);
|
|
||||||
void ff_reencode_raw(int32_t * mapping, int mapping_len, int force);
|
|
||||||
void ff_reencode_raw2(char ** mapping, int mapping_len, int force);
|
|
||||||
void ff_cidflatten(void);
|
|
||||||
void ff_save(const char * filename);
|
|
||||||
void ff_close(void);
|
|
||||||
|
|
||||||
// fix metrics and get them
|
|
||||||
void ff_metric(int * ascent, int * descent);
|
|
||||||
int ff_get_em_size(void);
|
|
||||||
int ff_get_max_ascent(void);
|
|
||||||
int ff_get_max_descent(void);
|
|
||||||
void ff_set_ascent(int a);
|
|
||||||
void ff_set_descent(int d);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
44
src/include/ffw.h
Normal file
44
src/include/ffw.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* ffw.h : Fontforge Wrapper
|
||||||
|
*
|
||||||
|
* Processing fonts using Fontforge
|
||||||
|
*
|
||||||
|
* fontforge.h cannot be included in C++
|
||||||
|
* So this wrapper in C publishes several functions we need
|
||||||
|
*
|
||||||
|
* by WangLu
|
||||||
|
* 2012.09.03
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#include <cstdint>
|
||||||
|
namespace pdf2htmlEX {
|
||||||
|
extern "C" {
|
||||||
|
#else
|
||||||
|
#include <stdint.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void ffw_init(int debug);
|
||||||
|
void ffw_fin(void);
|
||||||
|
void ffw_load_font(const char * filename);
|
||||||
|
void ffw_reencode_glyph_order(void);
|
||||||
|
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);
|
||||||
|
void ffw_save(const char * filename);
|
||||||
|
void ffw_close(void);
|
||||||
|
|
||||||
|
// fix metrics and get them
|
||||||
|
void ffw_metric(int * ascent, int * descent);
|
||||||
|
int ffw_get_em_size(void);
|
||||||
|
int ffw_get_max_ascent(void);
|
||||||
|
int ffw_get_max_descent(void);
|
||||||
|
void ffw_set_ascent(int a);
|
||||||
|
void ffw_set_descent(int d);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user