From 388463b9fa865c3b2311508c41647b0f3c532031 Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Thu, 21 Mar 2013 09:16:59 +0000 Subject: Import MetaPost 1.800 and LuaTeX beta-0.75.0 from LuaTeX repository r4604 git-svn-id: svn://tug.org/texlive/trunk@29453 c570f23f-e606-0410-a88d-b1316a301751 --- .../luafontloader/fontforge/fontforge/encoding.c | 202 --------------------- .../luafontloader/fontforge/fontforge/libffstamp.h | 3 - .../luafontloader/fontforge/fontforge/libstamp.pre | 103 ----------- .../luafontloader/fontforge/fontforge/lookups.c | 132 +++++++------- .../luafontloader/fontforge/fontforge/macenc.c | 48 ++--- .../luafontloader/fontforge/fontforge/namelist.c | 4 +- .../luafontloader/fontforge/fontforge/noprefs.c | 148 --------------- .../luafontloader/fontforge/fontforge/parsettf.c | 21 ++- .../fontforge/fontforge/parsettfatt.c | 23 ++- .../luafontloader/fontforge/fontforge/pfaedit.h | 19 -- .../luafontloader/fontforge/fontforge/splinefont.c | 4 +- .../luafontloader/fontforge/fontforge/splinefont.h | 2 - 12 files changed, 122 insertions(+), 587 deletions(-) delete mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libffstamp.h delete mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libstamp.pre (limited to 'Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge') diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.c index b4be6b5b5fe..acaf51264b9 100644 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.c +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.c @@ -504,67 +504,6 @@ int MaxCID(struct cidmap *map) { return( map->cidmax ); } -static char *SearchDirForCidMap(char *dir,char *registry,char *ordering, - int supplement,char **maybefile) { - char maybe[FILENAME_MAX+1]; - struct dirent *ent; - DIR *d; - int len, rlen = strlen(registry), olen=strlen(ordering); - char *pt, *end, *ret; - int test, best = -1; - - if ( dir==NULL ) -return( NULL ); - - if ( *maybefile!=NULL ) { - char *pt = strrchr(*maybefile,'.'); - while ( pt>*maybefile && isdigit(pt[-1])) - --pt; - best = strtol(pt,NULL,10); - } - - d = opendir(dir); - if ( d==NULL ) -return( NULL ); - while ( (ent = readdir(d))!=NULL ) { - if ( (len = strlen(ent->d_name))<8 ) - continue; - if ( strcmp(ent->d_name+len-7,".cidmap")!=0 ) - continue; - if ( strncmp(ent->d_name,registry,rlen)!=0 || ent->d_name[rlen]!='-' ) - continue; - pt = ent->d_name+rlen+1; - if ( strncmp(pt,ordering,olen)!=0 || pt[olen]!='-' ) - continue; - pt += olen+1; - if ( !isdigit(*pt)) - continue; - test = strtol(pt,&end,10); - if ( *end!='.' ) - continue; - if ( test>=supplement ) { - ret = galloc(strlen(dir)+1+len+1); - strcpy(ret,dir); - strcat(ret,"/"); - strcat(ret,ent->d_name); - closedir(d); -return( ret ); - } else if ( test>best ) { - best = test; - strcpy(maybe,ent->d_name); - } - } - closedir(d); - if ( best>-1 ) { - ret = galloc(strlen(dir)+1+strlen(maybe)+1); - strcpy(ret,dir); - strcat(ret,"/"); - strcat(ret,maybe); - *maybefile = ret; - } -return( NULL ); -} - static struct cidmap *MakeDummyMap(char *registry,char *ordering,int supplement) { struct cidmap *ret = galloc(sizeof(struct cidmap)); @@ -578,148 +517,7 @@ static struct cidmap *MakeDummyMap(char *registry,char *ordering,int supplement) return( ret ); } -struct cidmap *LoadMapFromFile(char *file,char *registry,char *ordering, - int supplement) { - struct cidmap *ret = galloc(sizeof(struct cidmap)); - char *pt = strrchr(file,'.'); - FILE *f; - int cid1, cid2, uni, cnt, i; - char name[100]; - - while ( pt>file && isdigit(pt[-1])) - --pt; - ret->supplement = ret->maxsupple = strtol(pt,NULL,10); - if ( supplement>ret->maxsupple ) - ret->maxsupple = supplement; - ret->registry = copy(registry); - ret->ordering = copy(ordering); - ret->next = cidmaps; - cidmaps = ret; - - f = fopen( file,"r" ); - if ( f==NULL ) { - ff_post_error(_("Missing cidmap file"),_("Couldn't open cidmap file: %s"), file ); - ret->cidmax = ret->namemax = 0; - ret->unicode = NULL; ret->name = NULL; - } else if ( fscanf( f, "%d %d", &ret->cidmax, &ret->namemax )!=2 ) { - ff_post_error(_("Bad cidmap file"),_("%s is not a cidmap file, please download\nhttp://fontforge.sourceforge.net/cidmaps.tgz"), file ); - fprintf( stderr, _("%s is not a cidmap file, please download\nhttp://fontforge.sourceforge.net/cidmaps.tgz"), file ); - ret->cidmax = ret->namemax = 0; - ret->unicode = NULL; ret->name = NULL; - } else { - ret->unicode = gcalloc(ret->namemax+1,sizeof(uint32)); - ret->name = gcalloc(ret->namemax+1,sizeof(char *)); - while ( 1 ) { - cnt=fscanf( f, "%d..%d %x", &cid1, &cid2, (unsigned *) &uni ); - if ( cnt<=0 ) - break; - if ( cid1>ret->namemax ) - continue; - if ( cnt==3 ) { - if ( cid2>ret->namemax ) cid2 = ret->namemax; - for ( i=cid1; i<=cid2; ++i ) - ret->unicode[i] = uni++; - } else if ( cnt==1 ) { - if ( fscanf(f,"%x", (unsigned *) &uni )==1 ) - ret->unicode[cid1] = uni; - else if ( fscanf(f," /%s", name )==1 ) - ret->name[cid1] = copy(name); - } - } - fclose(f); - } - free(file); -return( ret ); -} - struct cidmap *FindCidMap(char *registry,char *ordering,int supplement,SplineFont *sf) { - struct cidmap *map, *maybe=NULL; - char *file, *maybefile=NULL; - int maybe_sup = -1; - char *buts[3], *buts2[3]; - char buf[100]; - int ret; - - if ( sf!=NULL && sf->cidmaster ) sf = sf->cidmaster; - if ( sf!=NULL && sf->loading_cid_map ) -return( NULL ); - - for ( map = cidmaps; map!=NULL; map = map->next ) { - if ( strcmp(map->registry,registry)==0 && strcmp(map->ordering,ordering)==0 ) { - if ( supplement<=map->supplement ) -return( map ); - else if ( maybe==NULL || maybe->supplementsupplement ) - maybe = map; - } - } - if ( maybe!=NULL && supplement<=maybe->maxsupple ) -return( maybe ); /* User has said it's ok to use maybe at this supplement level */ - - file = SearchDirForCidMap(".",registry,ordering,supplement,&maybefile); - if ( file==NULL ) - file = SearchDirForCidMap(getFontForgeShareDir(),registry,ordering,supplement,&maybefile); - - if ( file==NULL && (maybe!=NULL || maybefile!=NULL)) { - if ( maybefile!=NULL ) { - char *pt = strrchr(maybefile,'.'); - while ( pt>maybefile && isdigit(pt[-1])) - --pt; - maybe_sup = strtol(pt,NULL,10); - if ( maybe!=NULL && maybe->supplement >= maybe_sup ) { - free(maybefile); maybefile = NULL; - maybe_sup = maybe->supplement; - } else - maybe = NULL; - } - if ( maybe!=NULL ) - maybe_sup = maybe->supplement; - if ( sf!=NULL ) sf->loading_cid_map = true; - buts[0] = _("_Use It"); buts[1] = _("_Search"); buts[2] = NULL; - ret = ff_ask(_("Use CID Map"),(const char **) buts,0,1,_("This font is based on the charset %1$.20s-%2$.20s-%3$d, but the best I've been able to find is %1$.20s-%2$.20s-%4$d.\nShall I use that or let you search?"), - registry,ordering,supplement,maybe_sup); - if ( sf!=NULL ) sf->loading_cid_map = false; - if ( ret==0 ) { - if ( maybe!=NULL ) { - maybe->maxsupple = supplement; -return( maybe ); - } else { - file = maybefile; - maybefile = NULL; - } - } - } - - if ( file==NULL ) { - char *uret; -#if defined( _NO_SNPRINTF ) || defined( __VMS ) - sprintf(buf,"%s-%s-*.cidmap", registry, ordering ); -#else - snprintf(buf,sizeof(buf),"%s-%s-*.cidmap", registry, ordering ); -#endif - if ( maybe==NULL && maybefile==NULL ) { - buf[0] = '\0'; - } - uret = NULL; - if ( uret==NULL ) { - buts2[0] = "_Use It"; buts2[1] = "_Search"; buts2[2] = NULL; - if ( maybe==NULL && maybefile==NULL ) - /* No luck */; - else if ( maybe!=NULL ) { - maybe->maxsupple = supplement; -return( maybe ); - } else { - file = maybefile; - maybefile = NULL; - } - } else { - file = uret; /* no utf82def() call for luatex */ - } - } - - free(maybefile); - if ( file!=NULL ) -return( LoadMapFromFile(file,registry,ordering,supplement)); - return( MakeDummyMap(registry,ordering,supplement)); } diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libffstamp.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libffstamp.h deleted file mode 100644 index b6b19bde1f0..00000000000 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libffstamp.h +++ /dev/null @@ -1,3 +0,0 @@ -#define LibFF_ModTime 1226720169L /* Seconds since 1970 (standard unix time) */ -#define LibFF_ModTime_Str "03:36 GMT 15-Nov-2008" -#define LibFF_VersionDate 20081115 /* Year, month, day */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libstamp.pre b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libstamp.pre deleted file mode 100644 index 4670c8b403d..00000000000 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libstamp.pre +++ /dev/null @@ -1,103 +0,0 @@ -#include "pfaedit.h" -#include "baseviews.h" -#include "libffstamp.h" -#include "uiinterface.h" - -struct library_version_configuration library_version_configuration = { - REPLACE_ME_WITH_MAJOR_VERSION, - REPLACE_ME_WITH_MINOR_VERSION, - LibFF_ModTime, - LibFF_ModTime_Str, - LibFF_VersionDate, - sizeof(struct library_version_configuration), - sizeof(struct splinefont), - sizeof(struct splinechar), - sizeof(struct fontviewbase), - sizeof(struct charviewbase), - sizeof(struct cvcontainer), - -#ifdef FONTFORGE_CONFIG_DEVICETABLES - 1, -#else - 0, -#endif - -#ifdef FONTFORGE_CONFIG_TYPE3 - 1, -#else - 0, -#endif - -#ifdef _NO_PYTHON - 0, -#else - 1, -#endif - 0xff /* Not currently defined */ -}; - -/* Returns 0 on success, -1 for a fatal error, 1 for a dangerous condition */ -int check_library_version(Library_Version_Configuration *exe_lib_version, int fatal, int quiet) { - if ( exe_lib_version->major > library_version_configuration.major || - ( exe_lib_version->major == library_version_configuration.major && - exe_lib_version->minor > library_version_configuration.minor ) || - exe_lib_version->sizeof_me != library_version_configuration.sizeof_me || - exe_lib_version->sizeof_splinefont != library_version_configuration.sizeof_splinefont || - exe_lib_version->sizeof_splinechar != library_version_configuration.sizeof_splinechar || - exe_lib_version->sizeof_fvbase != library_version_configuration.sizeof_fvbase || - exe_lib_version->sizeof_cvbase != library_version_configuration.sizeof_cvbase || - exe_lib_version->sizeof_cvcontainer != library_version_configuration.sizeof_cvcontainer || - exe_lib_version->config_had_devicetables != library_version_configuration.config_had_devicetables || - exe_lib_version->config_had_multilayer != library_version_configuration.config_had_multilayer || - exe_lib_version->config_had_python != library_version_configuration.config_had_python || - exe_lib_version->mba1 != 0xff ) { - if ( !quiet ) { - IError("This executable will not work with this version of libfontforge\nSee the console log for more details." ); - if ( exe_lib_version->major > library_version_configuration.major || - ( exe_lib_version->major == library_version_configuration.major && - exe_lib_version->minor > library_version_configuration.minor )) - fprintf( stderr, "Library version number is too small for executable.\n" ); - if ( exe_lib_version->sizeof_me != library_version_configuration.sizeof_me ) - fprintf( stderr, "Configuration info in the executable has a different size than that\n expected by the library and is not to be trusted.\n" ); - if ( exe_lib_version->sizeof_splinefont != library_version_configuration.sizeof_splinefont ) - fprintf( stderr, "The internal data structure, SplineFont, has a different expected size\n in library and executable. So they will not work together.\n" ); - if ( exe_lib_version->sizeof_splinechar != library_version_configuration.sizeof_splinechar ) - fprintf( stderr, "The internal data structure, SplineChar, has a different expected size\n in library and executable. So they will not work together.\n" ); - if ( exe_lib_version->sizeof_fvbase != library_version_configuration.sizeof_fvbase ) - fprintf( stderr, "The internal data structure, FontViewBase, has a different expected size\n in library and executable. So they will not work together.\n" ); - if ( exe_lib_version->sizeof_cvbase != library_version_configuration.sizeof_cvbase ) - fprintf( stderr, "The internal data structure, CharViewBase, has a different expected size\n in library and executable. So they will not work together.\n" ); - if ( exe_lib_version->sizeof_cvcontainer != library_version_configuration.sizeof_cvcontainer ) - fprintf( stderr, "The internal data structure, CVContainer, has a different expected size\n in library and executable. So they will not work together.\n" ); - if ( exe_lib_version->config_had_devicetables != library_version_configuration.config_had_devicetables ) { - if ( !exe_lib_version->config_had_devicetables ) - fprintf( stderr, "The library is configured to support device tables, but the executable is\n not. This may explain why data structures are of different sizes.\n" ); - else - fprintf( stderr, "The executable is configured to support device tables, but the library is\n not. This may explain why data structures are of different sizes.\n" ); - } - if ( exe_lib_version->config_had_multilayer != library_version_configuration.config_had_multilayer ) { - if ( !exe_lib_version->config_had_multilayer ) - fprintf( stderr, "The library is configured to support type3 font editing, but the executable is\n not. This may explain why data structures are of different sizes.\n" ); - else - fprintf( stderr, "The executable is configured to support type3 font editing, but the library is\n not. This may explain why data structures are of different sizes.\n" ); - } - if ( exe_lib_version->config_had_python != library_version_configuration.config_had_python ) { - if ( !exe_lib_version->config_had_python ) - fprintf( stderr, "The library is configured to support python scripts, but the executable is\n not. This may explain why data structures are of different sizes.\n" ); - else - fprintf( stderr, "The executable is configured to support python scripts, but the library is\n not. This may explain why data structures are of different sizes.\n" ); - } - if ( exe_lib_version->mba1 != 0xff ) - fprintf( stderr, "The executable specifies a configuration value the library does not expect.\n" ); - } - if ( fatal ) -exit( 1 ); - else -return( -1 ); - } else if ( exe_lib_version->library_source_modtime > library_version_configuration.library_source_modtime ) { - if ( !quiet ) - ff_post_notice(_("Library may be too old"),_("The library is older than the executable expects.\n This might be ok.\nOr it may crash on you.\nYou have been warned." )); -return( 1 ); - } else -return( 0 ); -} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.c index 9fbb67d5fd5..6a565526a7b 100644 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.c +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.c @@ -1194,35 +1194,33 @@ static struct { char *text; uint32 tag; } localscripts[] = { -/* GT: See the long comment at "Property|New" */ -/* GT: The msgstr should contain a translation of "Arabic", ignore "Script|" */ - { N_("Script|Arabic"), CHR('a','r','a','b') }, - { N_("Script|Aramaic"), CHR('a','r','a','m') }, - { N_("Script|Armenian"), CHR('a','r','m','n') }, - { N_("Script|Avestan"), CHR('a','v','e','s') }, - { N_("Script|Balinese"), CHR('b','a','l','i') }, - { N_("Script|Batak"), CHR('b','a','t','k') }, - { N_("Script|Bengali"), CHR('b','e','n','g') }, - { N_("Script|Bengali2"), CHR('b','n','g','2') }, + { N_("Arabic"), CHR('a','r','a','b') }, + { N_("Aramaic"), CHR('a','r','a','m') }, + { N_("Armenian"), CHR('a','r','m','n') }, + { N_("Avestan"), CHR('a','v','e','s') }, + { N_("Balinese"), CHR('b','a','l','i') }, + { N_("Batak"), CHR('b','a','t','k') }, + { N_("Bengali"), CHR('b','e','n','g') }, + { N_("Bengali2"), CHR('b','n','g','2') }, { N_("Bliss Symbolics"), CHR('b','l','i','s') }, { N_("Bopomofo"), CHR('b','o','p','o') }, - { NU_("Brāhmī"), CHR('b','r','a','h') }, + { N_("Brāhmī"), CHR('b','r','a','h') }, { N_("Braille"), CHR('b','r','a','i') }, - { N_("Script|Buginese"), CHR('b','u','g','i') }, - { N_("Script|Buhid"), CHR('b','u','h','d') }, + { N_("Buginese"), CHR('b','u','g','i') }, + { N_("Buhid"), CHR('b','u','h','d') }, { N_("Byzantine Music"), CHR('b','y','z','m') }, { N_("Canadian Syllabics"), CHR('c','a','n','s') }, { N_("Carian"), CHR('c','a','r','i') }, { N_("Cherokee"), CHR('c','h','a','m') }, - { N_("Script|Cham"), CHR('c','h','a','m') }, - { N_("Script|Cherokee"), CHR('c','h','e','r') }, + { N_("Cham"), CHR('c','h','a','m') }, + { N_("Cherokee"), CHR('c','h','e','r') }, { N_("Cirth"), CHR('c','i','r','t') }, { N_("CJK Ideographic"), CHR('h','a','n','i') }, - { N_("Script|Coptic"), CHR('c','o','p','t') }, + { N_("Coptic"), CHR('c','o','p','t') }, { N_("Cypro-Minoan"), CHR('c','p','r','t') }, { N_("Cypriot syllabary"), CHR('c','p','m','n') }, { N_("Cyrillic"), CHR('c','y','r','l') }, - { N_("Script|Default"), CHR('D','F','L','T') }, + { N_("Default"), CHR('D','F','L','T') }, { N_("Deseret (Mormon)"), CHR('d','s','r','t') }, { N_("Devanagari"), CHR('d','e','v','a') }, { N_("Devanagari2"), CHR('d','e','v','2') }, @@ -1233,58 +1231,58 @@ static struct { /* GT: dealing with these scripts against the day someone wants to use them. So */ /* GT: FontForge must be prepared to deal with those placeholders if nothing else. */ /* { N_("Egyptian hieroglyphs"), CHR('e','g','y','p') }, */ - { N_("Script|Ethiopic"), CHR('e','t','h','i') }, - { N_("Script|Georgian"), CHR('g','e','o','r') }, + { N_("Ethiopic"), CHR('e','t','h','i') }, + { N_("Georgian"), CHR('g','e','o','r') }, { N_("Glagolitic"), CHR('g','l','a','g') }, { N_("Gothic"), CHR('g','o','t','h') }, - { N_("Script|Greek"), CHR('g','r','e','k') }, - { N_("Script|Gujarati"), CHR('g','u','j','r') }, - { N_("Script|Gujarati2"), CHR('g','j','r','2') }, + { N_("Greek"), CHR('g','r','e','k') }, + { N_("Gujarati"), CHR('g','u','j','r') }, + { N_("Gujarati2"), CHR('g','j','r','2') }, { N_("Gurmukhi"), CHR('g','u','r','u') }, { N_("Gurmukhi2"), CHR('g','u','r','2') }, { N_("Hangul Jamo"), CHR('j','a','m','o') }, { N_("Hangul"), CHR('h','a','n','g') }, - { NU_("Script|Hanunóo"), CHR('h','a','n','o') }, - { N_("Script|Hebrew"), CHR('h','e','b','r') }, + { N_("Hanunóo"), CHR('h','a','n','o') }, + { N_("Hebrew"), CHR('h','e','b','r') }, /* { N_("Pahawh Hmong"), CHR('h','m','n','g') },*/ /* { N_("Indus (Harappan)"), CHR('i','n','d','s') },*/ - { N_("Script|Javanese"), CHR('j','a','v','a') }, + { N_("Javanese"), CHR('j','a','v','a') }, { N_("Kayah Li"), CHR('k','a','l','i') }, { N_("Hiragana & Katakana"), CHR('k','a','n','a') }, - { NU_("Kharoṣṭhī"), CHR('k','h','a','r') }, - { N_("Script|Kannada"), CHR('k','n','d','a') }, - { N_("Script|Kannada2"), CHR('k','n','d','2') }, - { N_("Script|Khmer"), CHR('k','h','m','r') }, - { N_("Script|Kharosthi"), CHR('k','h','a','r') }, - { N_("Script|Lao") , CHR('l','a','o',' ') }, - { N_("Script|Latin"), CHR('l','a','t','n') }, - { NU_("Lepcha (Róng)"), CHR('l','e','p','c') }, - { N_("Script|Limbu"), CHR('l','i','m','b') }, /* Not in ISO 15924 !!!!!, just guessing */ + { N_("Kharoṣṭhī"), CHR('k','h','a','r') }, + { N_("Kannada"), CHR('k','n','d','a') }, + { N_("Kannada2"), CHR('k','n','d','2') }, + { N_("Khmer"), CHR('k','h','m','r') }, + { N_("Kharosthi"), CHR('k','h','a','r') }, + { N_("Lao") , CHR('l','a','o',' ') }, + { N_("Latin"), CHR('l','a','t','n') }, + { N_("Lepcha (Róng)"), CHR('l','e','p','c') }, + { N_("Limbu"), CHR('l','i','m','b') }, /* Not in ISO 15924 !!!!!, just guessing */ { N_("Linear A"), CHR('l','i','n','a') }, { N_("Linear B"), CHR('l','i','n','b') }, { N_("Lycian"), CHR('l','y','c','i') }, { N_("Lydian"), CHR('l','y','d','i') }, - { N_("Script|Mandaean"), CHR('m','a','n','d') }, + { N_("Mandaean"), CHR('m','a','n','d') }, /* { N_("Mayan hieroglyphs"), CHR('m','a','y','a') },*/ - { NU_("Script|Malayālam"), CHR('m','l','y','m') }, - { NU_("Script|Malayālam2"), CHR('m','l','y','2') }, - { NU_("Mathematical Alphanumeric Symbols"), CHR('m','a','t','h') }, - { N_("Script|Mongolian"), CHR('m','o','n','g') }, + { N_("Malayālam"), CHR('m','l','y','m') }, + { N_("Malayālam2"), CHR('m','l','y','2') }, + { N_("Mathematical Alphanumeric Symbols"), CHR('m','a','t','h') }, + { N_("Mongolian"), CHR('m','o','n','g') }, { N_("Musical"), CHR('m','u','s','i') }, - { N_("Script|Myanmar"), CHR('m','y','m','r') }, + { N_("Myanmar"), CHR('m','y','m','r') }, { N_("New Tai Lue"), CHR('t','a','l','u') }, { N_("N'Ko"), CHR('n','k','o',' ') }, { N_("Ogham"), CHR('o','g','a','m') }, { N_("Ol Chiki"), CHR('o','l','c','k') }, { N_("Old Italic (Etruscan, Oscan, etc.)"), CHR('i','t','a','l') }, - { N_("Script|Old Permic"), CHR('p','e','r','m') }, + { N_("Old Permic"), CHR('p','e','r','m') }, { N_("Old Persian cuneiform"), CHR('x','p','e','o') }, - { N_("Script|Oriya"), CHR('o','r','y','a') }, - { N_("Script|Oriya2"), CHR('o','r','y','2') }, + { N_("Oriya"), CHR('o','r','y','a') }, + { N_("Oriya2"), CHR('o','r','y','2') }, { N_("Osmanya"), CHR('o','s','m','a') }, - { N_("Script|Pahlavi"), CHR('p','a','l','v') }, - { N_("Script|Phags-pa"), CHR('p','h','a','g') }, - { N_("Script|Phoenician"), CHR('p','h','n','x') }, + { N_("Pahlavi"), CHR('p','a','l','v') }, + { N_("Phags-pa"), CHR('p','h','a','g') }, + { N_("Phoenician"), CHR('p','h','n','x') }, { N_("Phaistos"), CHR('p','h','s','t') }, { N_("Pollard Phonetic"), CHR('p','l','r','d') }, { N_("Rejang"), CHR('r','j','n','g') }, @@ -1292,29 +1290,29 @@ static struct { { N_("Runic"), CHR('r','u','n','r') }, { N_("Saurashtra"), CHR('s','a','u','r') }, { N_("Shavian"), CHR('s','h','a','w') }, - { N_("Script|Sinhala"), CHR('s','i','n','h') }, - { N_("Script|Sumero-Akkadian Cuneiform"), CHR('x','s','u','x') }, - { N_("Script|Sundanese"), CHR('s','u','n','d') }, - { N_("Script|Syloti Nagri"), CHR('s','y','l','o') }, - { N_("Script|Syriac"), CHR('s','y','r','c') }, - { N_("Script|Tagalog"), CHR('t','g','l','g') }, - { N_("Script|Tagbanwa"), CHR('t','a','g','b') }, + { N_("Sinhala"), CHR('s','i','n','h') }, + { N_("Sumero-Akkadian Cuneiform"), CHR('x','s','u','x') }, + { N_("Sundanese"), CHR('s','u','n','d') }, + { N_("Syloti Nagri"), CHR('s','y','l','o') }, + { N_("Syriac"), CHR('s','y','r','c') }, + { N_("Tagalog"), CHR('t','g','l','g') }, + { N_("Tagbanwa"), CHR('t','a','g','b') }, { N_("Tai Le"), CHR('t','a','l','e') }, /* Not in ISO 15924 !!!!!, just guessing */ { N_("Tai Lu"), CHR('t','a','l','a') }, /* Not in ISO 15924 !!!!!, just guessing */ - { N_("Script|Tamil"), CHR('t','a','m','l') }, - { N_("Script|Tamil2"), CHR('t','m','l','2') }, - { N_("Script|Telugu"), CHR('t','e','l','u') }, - { N_("Script|Telugu2"), CHR('t','e','l','2') }, + { N_("Tamil"), CHR('t','a','m','l') }, + { N_("Tamil2"), CHR('t','m','l','2') }, + { N_("Telugu"), CHR('t','e','l','u') }, + { N_("Telugu2"), CHR('t','e','l','2') }, { N_("Tengwar"), CHR('t','e','n','g') }, { N_("Thaana"), CHR('t','h','a','a') }, - { N_("Script|Thai"), CHR('t','h','a','i') }, - { N_("Script|Tibetan"), CHR('t','i','b','t') }, + { N_("Thai"), CHR('t','h','a','i') }, + { N_("Tibetan"), CHR('t','i','b','t') }, { N_("Tifinagh (Berber)"), CHR('t','f','n','g') }, - { N_("Script|Ugaritic"), CHR('u','g','r','t') }, /* Not in ISO 15924 !!!!!, just guessing */ - { N_("Script|Vai"), CHR('v','a','i',' ') }, + { N_("Ugaritic"), CHR('u','g','r','t') }, /* Not in ISO 15924 !!!!!, just guessing */ + { N_("Vai"), CHR('v','a','i',' ') }, /* { N_("Visible Speech"), CHR('v','i','s','p') },*/ { N_("Cuneiform, Ugaritic"), CHR('x','u','g','a') }, - { N_("Script|Yi") , CHR('y','i',' ',' ') }, + { N_("Yi") , CHR('y','i',' ',' ') }, /* { N_("Private Use Script 1"), CHR('q','a','a','a') },*/ /* { N_("Private Use Script 2"), CHR('q','a','a','b') },*/ /* { N_("Undetermined Script"), CHR('z','y','y','y') },*/ @@ -1332,12 +1330,12 @@ return; for ( j=0; j<2; ++j ) { for ( i=0; i<10; ++i ) if ( lookup_type_names[j][i]!=NULL ) - lookup_type_names[j][i] = S_((char *) lookup_type_names[j][i]); + lookup_type_names[j][i] = _((char *) lookup_type_names[j][i]); } for ( i=0; localscripts[i].text!=NULL; ++i ) - localscripts[i].text = S_(localscripts[i].text); + localscripts[i].text = _(localscripts[i].text); for ( i=0; friendlies[i].friendlyname!=NULL; ++i ) - friendlies[i].friendlyname = S_(friendlies[i].friendlyname); + friendlies[i].friendlyname = _(friendlies[i].friendlyname); } char *TagFullName(SplineFont *sf,uint32 tag, int ismac, int onlyifknown) { @@ -1424,7 +1422,7 @@ void NameOTLookup(OTLookup *otl,SplineFont *sf) { #ifdef LUA_FF_LIB lookuptype = "un"; #else - lookuptype = S_("LookupType|Unknown"); + lookuptype = _("Unknown"); #endif for ( fl=otl->features; fl!=NULL && !fl->ismac; fl=fl->next ); if ( fl==NULL ) @@ -1488,7 +1486,7 @@ void NameOTLookup(OTLookup *otl,SplineFont *sf) { script = copy(buf); #else if ( localscripts[j].text!=NULL ) - script = copy( S_((char *) localscripts[j].text) ); + script = copy( _((char *) localscripts[j].text) ); else { buf[0] = '\''; buf[1] = fl->scripts->script>>24; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macenc.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macenc.c index a44fc3ab5a6..4bab70632cb 100644 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macenc.c +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macenc.c @@ -2118,11 +2118,11 @@ static struct { char *name; int code; } localmaclang[] = { {N_("Danish"), 7}, {N_("Portuguese"), 8}, {N_("Norwegian"), 9}, - {N_("Lang|Hebrew"), 10}, + {N_("Hebrew"), 10}, {N_("Japanese"), 11}, - {N_("Lang|Arabic"), 12}, + {N_("Arabic"), 12}, {N_("Finnish"), 13}, - {N_("Lang|Greek"), 14}, + {N_("Greek"), 14}, {N_("Icelandic"), 15}, {N_("Maltese"), 16}, {N_("Turkish"), 17}, @@ -2130,7 +2130,7 @@ static struct { char *name; int code; } localmaclang[] = { {N_("Traditional Chinese"), 19}, {N_("Urdu"), 20}, {N_("Hindi"), 21}, - {N_("Lang|Thai"), 22}, + {N_("Thai"), 22}, {N_("Korean"), 23}, {N_("Lithuanian"), 24}, {N_("Polish"), 25}, @@ -2140,8 +2140,8 @@ static struct { char *name; int code; } localmaclang[] = { {N_("Sami (Lappish)"), 29}, {N_("Faroese (Icelandic)"), 30}, /* GT: See the long comment at "Property|New" */ -/* GT: The msgstr should contain a translation of "Farsi/Persian"), ignore "Lang|" */ - {N_("Lang|Farsi/Persian"), 31}, +/* GT: The msgstr should contain a translation of "Farsi/Persian"), ignore "" */ + {N_("Farsi/Persian"), 31}, {N_("Russian"), 32}, {N_("Simplified Chinese"), 33}, {N_("Flemish"), 34}, @@ -2161,8 +2161,8 @@ static struct { char *name; int code; } localmaclang[] = { {N_("Kazakh"), 48}, {N_("Axerbaijani (Cyrillic)"), 49}, {N_("Axerbaijani (Arabic)"), 50}, - {N_("Lang|Armenian"), 51}, - {N_("Lang|Georgian"), 52}, + {N_("Armenian"), 51}, + {N_("Georgian"), 52}, {N_("Moldavian"), 53}, {N_("Kirghiz"), 54}, {N_("Tajiki"), 55}, @@ -2173,29 +2173,29 @@ static struct { char *name; int code; } localmaclang[] = { {N_("Kurdish"), 60}, {N_("Kashmiri"), 61}, {N_("Sindhi"), 62}, - {N_("Lang|Tibetan"), 63}, + {N_("Tibetan"), 63}, {N_("Nepali"), 64}, {N_("Sanskrit"), 65}, {N_("Marathi"), 66}, - {N_("Lang|Bengali"), 67}, + {N_("Bengali"), 67}, {N_("Assamese"), 68}, - {N_("Lang|Gujarati"), 69}, + {N_("Gujarati"), 69}, {N_("Punjabi"), 70}, - {N_("Lang|Oriya"), 71}, - {N_("Lang|Malayalam"), 72}, - {N_("Lang|Kannada"), 73}, - {N_("Lang|Tamil"), 74}, - {N_("Lang|Telugu"), 75}, - {N_("Lang|Sinhalese"), 76}, + {N_("Oriya"), 71}, + {N_("Malayalam"), 72}, + {N_("Kannada"), 73}, + {N_("Tamil"), 74}, + {N_("Telugu"), 75}, + {N_("Sinhalese"), 76}, {N_("Burmese"), 77}, - {N_("Lang|Khmer"), 78}, - {N_("Lang|Lao"), 79}, + {N_("Khmer"), 78}, + {N_("Lao"), 79}, {N_("Vietnamese"), 80}, {N_("Indonesian"), 81}, - {N_("Lang|Tagalog"), 82}, + {N_("Tagalog"), 82}, {N_("Malay (roman)"), 83}, {N_("Malay (arabic)"), 84}, - {N_("Lang|Amharic"), 85}, + {N_("Amharic"), 85}, {N_("Tigrinya"), 86}, {N_("Galla"), 87}, {N_("Somali"), 88}, @@ -2208,12 +2208,12 @@ static struct { char *name; int code; } localmaclang[] = { {N_("Welsh"), 128}, {N_("Basque"), 129}, {N_("Catalan"), 130}, - {N_("Lang|Latin"), 131}, + {N_("Latin"), 131}, {N_("Quechua"), 132}, {N_("Guarani"), 133}, {N_("Aymara"), 134}, {N_("Tatar"), 135}, - {N_("Lang|Uighur"), 136}, + {N_("Uighur"), 136}, {N_("Dzongkha"), 137}, {N_("Javanese (roman)"), 138}, {N_("Sundanese (roman)"), 139}, @@ -2238,7 +2238,7 @@ return( _("Unspecified Language") ); for ( i=0; localmaclang[i].name!=NULL; ++i ) if ( code == localmaclang[i].code ) -return( S_(localmaclang[i].name) ); +return( _(localmaclang[i].name) ); return( _("Unknown Language")); } diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/namelist.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/namelist.c index cb64f790b83..d2795bc9600 100644 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/namelist.c +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/namelist.c @@ -551,7 +551,7 @@ return( NULL ); nl = chunkalloc(sizeof(NameList)); pt = strrchr(filename,'/'); if ( pt==NULL ) pt = filename; else ++pt; - nl->title = def2utf8_copy(pt); + nl->title = copy(pt); pt = strrchr(nl->title,'.'); if ( pt!=NULL ) *pt = '\0'; @@ -10925,7 +10925,7 @@ static const char **tex_p0[] = { static NameList tex = { &agl, - NU_("ΤεΧ Names"), + N_("ΤεΧ Names"), { tex_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, NULL, 0, 0, NULL }; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/noprefs.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/noprefs.c index bc23f7d23c4..ba1f9ca5bfc 100644 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/noprefs.c +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/noprefs.c @@ -406,152 +406,6 @@ return( NULL ); #endif } -# include /* we still need the charsets & encoding to set local_encoding */ -static int encmatch(const char *enc,int subok) { - static struct { char *name; int enc; } encs[] = { - { "US-ASCII", e_usascii }, - { "ASCII", e_usascii }, - { "ISO646-NO", e_iso646_no }, - { "ISO646-SE", e_iso646_se }, - { "LATIN1", e_iso8859_1 }, - { "ISO-8859-1", e_iso8859_1 }, - { "ISO-8859-2", e_iso8859_2 }, - { "ISO-8859-3", e_iso8859_3 }, - { "ISO-8859-4", e_iso8859_4 }, - { "ISO-8859-5", e_iso8859_4 }, - { "ISO-8859-6", e_iso8859_4 }, - { "ISO-8859-7", e_iso8859_4 }, - { "ISO-8859-8", e_iso8859_4 }, - { "ISO-8859-9", e_iso8859_4 }, - { "ISO-8859-10", e_iso8859_10 }, - { "ISO-8859-11", e_iso8859_11 }, - { "ISO-8859-13", e_iso8859_13 }, - { "ISO-8859-14", e_iso8859_14 }, - { "ISO-8859-15", e_iso8859_15 }, - { "ISO_8859-1", e_iso8859_1 }, - { "ISO_8859-2", e_iso8859_2 }, - { "ISO_8859-3", e_iso8859_3 }, - { "ISO_8859-4", e_iso8859_4 }, - { "ISO_8859-5", e_iso8859_4 }, - { "ISO_8859-6", e_iso8859_4 }, - { "ISO_8859-7", e_iso8859_4 }, - { "ISO_8859-8", e_iso8859_4 }, - { "ISO_8859-9", e_iso8859_4 }, - { "ISO_8859-10", e_iso8859_10 }, - { "ISO_8859-11", e_iso8859_11 }, - { "ISO_8859-13", e_iso8859_13 }, - { "ISO_8859-14", e_iso8859_14 }, - { "ISO_8859-15", e_iso8859_15 }, - { "ISO8859-1", e_iso8859_1 }, - { "ISO8859-2", e_iso8859_2 }, - { "ISO8859-3", e_iso8859_3 }, - { "ISO8859-4", e_iso8859_4 }, - { "ISO8859-5", e_iso8859_4 }, - { "ISO8859-6", e_iso8859_4 }, - { "ISO8859-7", e_iso8859_4 }, - { "ISO8859-8", e_iso8859_4 }, - { "ISO8859-9", e_iso8859_4 }, - { "ISO8859-10", e_iso8859_10 }, - { "ISO8859-11", e_iso8859_11 }, - { "ISO8859-13", e_iso8859_13 }, - { "ISO8859-14", e_iso8859_14 }, - { "ISO8859-15", e_iso8859_15 }, - { "ISO88591", e_iso8859_1 }, - { "ISO88592", e_iso8859_2 }, - { "ISO88593", e_iso8859_3 }, - { "ISO88594", e_iso8859_4 }, - { "ISO88595", e_iso8859_4 }, - { "ISO88596", e_iso8859_4 }, - { "ISO88597", e_iso8859_4 }, - { "ISO88598", e_iso8859_4 }, - { "ISO88599", e_iso8859_4 }, - { "ISO885910", e_iso8859_10 }, - { "ISO885911", e_iso8859_11 }, - { "ISO885913", e_iso8859_13 }, - { "ISO885914", e_iso8859_14 }, - { "ISO885915", e_iso8859_15 }, - { "8859_1", e_iso8859_1 }, - { "8859_2", e_iso8859_2 }, - { "8859_3", e_iso8859_3 }, - { "8859_4", e_iso8859_4 }, - { "8859_5", e_iso8859_4 }, - { "8859_6", e_iso8859_4 }, - { "8859_7", e_iso8859_4 }, - { "8859_8", e_iso8859_4 }, - { "8859_9", e_iso8859_4 }, - { "8859_10", e_iso8859_10 }, - { "8859_11", e_iso8859_11 }, - { "8859_13", e_iso8859_13 }, - { "8859_14", e_iso8859_14 }, - { "8859_15", e_iso8859_15 }, - { "KOI8-R", e_koi8_r }, - { "KOI8R", e_koi8_r }, - { "WINDOWS-1252", e_win }, - { "CP1252", e_win }, - { "Big5", e_big5 }, - { "Big-5", e_big5 }, - { "BigFive", e_big5 }, - { "Big-Five", e_big5 }, - { "Big5HKSCS", e_big5hkscs }, - { "Big5-HKSCS", e_big5hkscs }, - { "UTF-8", e_utf8 }, - { "ISO-10646/UTF-8", e_utf8 }, - { "ISO_10646/UTF-8", e_utf8 }, - { "UCS2", e_unicode }, - { "UCS-2", e_unicode }, - { "UCS-2-INTERNAL", e_unicode }, - { "ISO-10646", e_unicode }, - { "ISO_10646", e_unicode }, - { NULL, 0 }}; - int i; - char buffer[80]; - - if ( strchr(enc,'@')!=NULL && strlen(enc)cidregistry==NULL && info->encoding_start!=0 ) + /* Oops. It is meaningful for cid fonts. It just seemed redundant to me */ + /* but that was my ignorance. Adobe complains that FF doesn't read it */ + /* (We've already (probably) set the unicodeencs of the glyphs according */ + /* to the cidmap files, but we can override that here. Mmm. what about a*/ + /* glyph in cidmap but not in cmap???? */ + if ( /* info->cidregistry==NULL && */ info->encoding_start!=0 ) readttfencodings(ttf,info,git_normal); if ( info->os2_start!=0 ) readttfos2metrics(ttf,info); diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettfatt.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettfatt.c index ce91a44571e..b6c45fe956f 100644 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettfatt.c +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettfatt.c @@ -4688,8 +4688,22 @@ void readttfkerns(FILE *ttf,struct ttfinfo *info) { left = getushort(ttf); right = getushort(ttf); offset = (short) getushort(ttf); - if ( leftglyph_cnt && rightglyph_cnt && - chars[left]!=NULL && chars[right]!=NULL ) { + if ( left<0 || right<0 ) { + /* We've seen such buggy fonts... */ + LogError( _("Bad kern pair: glyphs %d & %d mustn't be negative\n"), + left, right ); + info->bad_gx = true; + } else if ( left>=info->glyph_cnt || right>=info->glyph_cnt ) { + /* Holes happen when reading ttc files. They are probably ok */ + LogError( _("Bad kern pair: glyphs %d & %d must be less than %d\n"), + left, right, info->glyph_cnt ); + info->bad_gx = true; + } else if (chars[left]==NULL || chars[right]==NULL ) { + /* Shouldn't happen. */ + LogError( _("Bad kern pair: glyphs at %d & %d are null\n"), + left, right); + info->bad_gx = true; + } else { kp = chunkalloc(sizeof(KernPair)); kp->sc = chars[right]; kp->off = offset; @@ -4703,11 +4717,6 @@ void readttfkerns(FILE *ttf,struct ttfinfo *info) { kp->next = chars[left]->kerns; chars[left]->kerns = kp; } - } else if ( left>=info->glyph_cnt || right>=info->glyph_cnt ) { - /* Holes happen when reading ttc files. They are probably ok */ - LogError( _("Bad kern pair: glyphs %d & %d must be less than %d\n"), - left, right, info->glyph_cnt ); - info->bad_gx = true; } } InfoNameOTLookup(otl,info); diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pfaedit.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pfaedit.h index ac10e80f070..2a638d1dcf3 100644 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pfaedit.h +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pfaedit.h @@ -81,23 +81,4 @@ extern Encoding *enclist; extern MacFeat *default_mac_feature_map; -typedef struct library_version_configuration { - uint16 major, minor; - long library_source_modtime; - char *library_source_modtime_string; - int library_source_versiondate; - uint16 sizeof_me; - uint16 sizeof_splinefont; - uint16 sizeof_splinechar; - uint16 sizeof_fvbase; - uint16 sizeof_cvbase; - uint16 sizeof_cvcontainer; - uint8 config_had_devicetables; - uint8 config_had_multilayer; - uint8 config_had_python; - uint8 mba1; /* Must be all ones (0xff), config values are 0,1 need to distinquish from both */ -} Library_Version_Configuration; -extern Library_Version_Configuration library_version_configuration; - -extern int check_library_version(Library_Version_Configuration *exe_lib_version, int fatal, int quiet); #endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.c index 9f0ed92305f..2e80ebccead 100644 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.c +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.c @@ -351,9 +351,9 @@ return( NULL ); strcpy(ubuf,_("Loading font from ")); len = strlen(ubuf); if ( !wasurl || i==-1 ) /* If it wasn't compressed, or it wasn't an url, then the fullname is reasonable, else use the original name */ - strncat(ubuf,temp = def2utf8_copy(GFileNameTail(fullname)),100); + strncat(ubuf,temp = copy(GFileNameTail(fullname)),100); else - strncat(ubuf,temp = def2utf8_copy(GFileNameTail(filename)),100); + strncat(ubuf,temp = copy(GFileNameTail(filename)),100); free(temp); ubuf[100+len] = '\0'; ff_progress_start_indicator(FontViewFirst()==NULL?0:10,_("Loading..."),ubuf,_("Reading Glyphs"),0,1); diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.h index d777f530f44..658d66ed5a8 100644 --- a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.h +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.h @@ -2658,8 +2658,6 @@ extern int CID2Uni(struct cidmap *map,int cid); extern int CID2NameUni(struct cidmap *map,int cid, char *buffer, int len); extern int NameUni2CID(struct cidmap *map,int uni, const char *name); extern int MaxCID(struct cidmap *map); -extern struct cidmap *LoadMapFromFile(char *file,char *registry,char *ordering, - int supplement); extern struct cidmap *FindCidMap(char *registry,char *ordering,int supplement, SplineFont *sf); extern void SFEncodeToMap(SplineFont *sf,struct cidmap *map); -- cgit v1.2.3