Skip to content
Browse files

Merge remote-tracking branch 'upstream/master' into 2013marchcollab2

Conflicts:
	fontforge/collabclient.c
  • Loading branch information...
2 parents 89d1f8d + 6898821 commit 051a0bff1c67cf6213ec17cf38bb149d70b6e2f2 @monkeyiq monkeyiq committed Apr 6, 2013
View
2 fontforge/Makefile.am
@@ -116,7 +116,7 @@ libfontforge_la_SOURCES = asmfpst.c autohint.c autosave.c autotrace.c \
ttfspecial.c ufo.c unicoderange.c utils.c winfonts.c zapfnomen.c \
groups.c langfreq.c ftdelta.c autowidth2.c woff.c stamp.c \
activeinui.c pluginloading.c is_LIGATURE.c flaglist.c strlist.c \
- collabclient.c collabclient.h
+ collabclient.c collabclient.h unicodelibinfo.c
nodist_libfontforge_la_SOURCES = libstamp.c
EXTRA_libfontforge_la_SOURCES = splinerefigure.c
View
24 fontforge/bitmapview.c
@@ -26,14 +26,6 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "fontforgeui.h"
-#ifndef _NO_LIBUNINAMESLIST
-#include <uninameslist.h>
-#else
-#ifndef _NO_LIBUNICODENAMES
-#include <libunicodenames.h>
-extern uninm_names_db names_db; /* Unicode character names and annotations database */
-#endif
-#endif
#include <gkeysym.h>
#include <utype.h>
#include <ustring.h>
@@ -173,6 +165,7 @@ static char *BVMakeTitles(BitmapView *bv, BDFChar *bc,char *buf) {
char *title;
SplineChar *sc;
BDFFont *bdf = bv->bdf;
+ char *uniname;
sc = bc->sc;
/* GT: This is the title for a window showing a bitmap character */
@@ -185,19 +178,14 @@ static char *BVMakeTitles(BitmapView *bv, BDFChar *bc,char *buf) {
sprintf(buf,_("%1$.80s at %2$d size %3$d from %4$.80s"),
sc!=NULL ? sc->name : "<Nameless>", bv->enc, bdf->pixelsize, sc==NULL ? "" : sc->parent->fontname);
title = copy(buf);
-#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
-#else
- const char *uniname;
-#ifndef _NO_LIBUNINAMESLIST
- if ( (uniname=uniNamesList_name(sc->unicodeenc))!=NULL ) {
-#else
- if ( sc->unicodeenc!=-1 && (uniname=uninm_name(names_db,(unsigned int) sc->unicodeenc))!= NULL) {
-#endif
+
+ /* Enhance 'buf' description with Nameslist.txt unicode name definition */
+ if ( (uniname=unicode_name(sc->unicodeenc))!=NULL ) {
strcat(buf, " ");
strcpy(buf+strlen(buf), uniname);
+ free(uniname);
}
-#endif
-return( title );
+ return( title );
}
void BVChangeBC(BitmapView *bv, BDFChar *bc, int fitit ) {
View
23 fontforge/charinfo.c
@@ -27,14 +27,6 @@
*/
#include "fontforgeui.h"
-#ifndef _NO_LIBUNINAMESLIST
-#include <uninameslist.h>
-#else
-#ifndef _NO_LIBUNICODENAMES
-#include <libunicodenames.h>
-extern uninm_names_db names_db; /* Unicode character names and annotations database */
-#endif
-#endif
#include <ustring.h>
#include <math.h>
#include <utype.h>
@@ -1220,6 +1212,7 @@ static SplineChar *CI_SCDuplicate(SplineChar *sc) {
newsc = chunkalloc(sizeof(SplineChar));
newsc->name = copy(sc->name);
+ newsc->parent = sc->parent;
newsc->unicodeenc = sc->unicodeenc;
newsc->orig_pos = sc->orig_pos;
newsc->comment = copy(sc->comment);
@@ -1680,7 +1673,7 @@ return( true );
* subtables. */
static char *LigDefaultStr(int uni, char *name, int alt_lig ) {
const unichar_t *alt=NULL, *pt;
- char *components = NULL;
+ char *components = NULL, *tmp;
int len;
unichar_t hack[30], *upt;
char buffer[80];
@@ -1704,13 +1697,7 @@ static char *LigDefaultStr(int uni, char *name, int alt_lig ) {
uni!=0x215f &&
!((uni>=0x0958 && uni<=0x095f) || uni==0x929 || uni==0x931 || uni==0x934)) {
alt = NULL;
-#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
-#else
-#ifndef _NO_LIBUNINAMESLIST
- } else if ( uniNamesList_name(uni)==NULL ) {
-#else
- } else if ( names_db==NULL ) {
-#endif
+ } else if ( (tmp=unicode_name(65))==NULL ) { /* test for 'A' to see if library exists */
if ( (uni>=0xbc && uni<=0xbe ) || /* Latin1 fractions */
(uni>=0x2153 && uni<=0x215e ) || /* other fractions */
(uni>=0xfb00 && uni<=0xfb06 ) || /* latin ligatures */
@@ -1723,8 +1710,8 @@ static char *LigDefaultStr(int uni, char *name, int alt_lig ) {
; /* These are good */
else
alt = NULL;
-#endif
- }
+ } else
+ free(tmp); /* found 'A' means there is a library, now cleanup */
}
if ( alt==NULL ) {
if ( name==NULL || alt_lig )
View
27 fontforge/charview.c
@@ -27,14 +27,6 @@
#include "fontforgeui.h"
#include "cvruler.h"
-#ifndef _NO_LIBUNINAMESLIST
-#include <uninameslist.h>
-#else
-#ifndef _NO_LIBUNICODENAMES
-#include <libunicodenames.h>
-extern uninm_names_db names_db; /* Unicode character names and annotations database */
-#endif
-#endif
#include <math.h>
#include <locale.h>
#include <ustring.h>
@@ -214,7 +206,7 @@ static struct resed charview2_re[] = {
{ N_("Inactive Layer Color"), "BackgroundOutlineColor", rt_color, &backoutlinecol, N_("The color of outlines in inactive layers"), NULL, { 0 }, 0, 0 },
{ N_("Active Layer Color"), "ForegroundOutlineColor", rt_color, &foreoutlinecol, N_("The color of outlines in the active layer"), NULL, { 0 }, 0, 0 },
{ N_("Clip Path Color"), "ClipPathColor", rt_color, &clippathcol, N_("The color of the clip path"), NULL, { 0 }, 0, 0 },
- { N_("Open Path Color"), "OpenPathColor", rt_color, &openpathcol, N_("The color of the an open path"), NULL, { 0 }, 0, 0 },
+ { N_("Open Path Color"), "OpenPathColor", rt_color, &openpathcol, N_("The color of the open path"), NULL, { 0 }, 0, 0 },
{ N_("Background Image Color"), "BackgroundImageColor", rt_coloralpha, &backimagecol, N_("The color used to draw bitmap (single bit) images which do not specify a clut"), NULL, { 0 }, 0, 0 },
{ N_("Fill Color"), "FillColor", rt_coloralpha, &fillcol, N_("The color used to fill the outline if that mode is active"), NULL, { 0 }, 0, 0 },
{ N_("Preview Fill Color"), "PreviewFillColor", rt_coloralpha, &previewfillcol, N_("The color used to fill the outline when in preview mode"), NULL, { 0 }, 0, 0 },
@@ -2983,6 +2975,7 @@ return( ((FontView *) (cv->b.fv))->b.map->backmap[cv->b.sc->orig_pos] );
static char *CVMakeTitles(CharView *cv,char *buf) {
char *title;
SplineChar *sc = cv->b.sc;
+ char *uniname;
/* GT: This is the title for a window showing an outline character */
/* GT: It will look something like: */
@@ -2995,21 +2988,17 @@ static char *CVMakeTitles(CharView *cv,char *buf) {
if ( sc->changed )
strcat(buf," *");
title = copy(buf);
-#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
-#else
- const char *uniname;
-#ifndef _NO_LIBUNINAMESLIST
- if ( (uniname=uniNamesList_name(sc->unicodeenc))!=NULL ) {
-#else
- if ( sc->unicodeenc!=-1 && (uniname=uninm_name(names_db,sc->unicodeenc))!=NULL ) {
-#endif
+
+ /* Enhance 'buf' description with Nameslist.txt unicode name definition */
+ if ( (uniname=unicode_name(sc->unicodeenc))!=NULL ) {
strcat(buf, " ");
strcpy(buf+strlen(buf), uniname);
+ free(uniname);
}
-#endif
+
if ( cv->show_ft_results || cv->dv )
sprintf(buf+strlen(buf), " (%gpt, %ddpi)", (double) cv->ft_pointsizey, cv->ft_dpi );
-return( title );
+ return( title );
}
static void SC_RefreshTitles(SplineChar *sc) {
View
8 fontforge/fontforge.h
@@ -47,6 +47,14 @@ extern void CheckIsScript(int argc, char *argv[]);
extern char *AdobeStandardEncoding[256];
extern int32 unicode_from_adobestd[256];
+/* unicode_nameannot - Deprecated, but kept for older programs to access. */
+#if _NO_LIBUNINAMESLIST
+struct unicode_nameannot {
+ const char *name, *annot;
+};
+#endif
+extern const struct unicode_nameannot * const *const *_UnicodeNameAnnot;
+
extern int default_fv_font_size;
extern int default_fv_antialias;
extern int default_fv_bbsized;
View
54 fontforge/fontview.c
@@ -27,14 +27,6 @@
#include "fontforgeui.h"
#include "groups.h"
#include "psfont.h"
-#ifndef _NO_LIBUNINAMESLIST
-#include <uninameslist.h>
-#else
-#ifndef _NO_LIBUNICODENAMES
-#include <libunicodenames.h>
-extern uninm_names_db names_db; /* Unicode character names and annotations database */
-#endif
-#endif
#include <gfile.h>
#include <gio.h>
#include <gresedit.h>
@@ -2467,7 +2459,7 @@ static void FVMenuBaseHoriz(GWindow gw, struct gmenuitem *UNUSED(mi), GEvent *UN
static void FVMenuBaseVert(GWindow gw, struct gmenuitem *UNUSED(mi), GEvent *UNUSED(e)) {
FontView *fv = (FontView *) GDrawGetUserData(gw);
SplineFont *sf = fv->b.cidmaster == NULL ? fv->b.sf : fv->b.cidmaster;
- sf->vert_base = SFBaselines(sf,sf->vert_base,false);
+ sf->vert_base = SFBaselines(sf,sf->vert_base,true);
SFBaseSort(sf);
}
@@ -6220,12 +6212,9 @@ static void FVExpose(FontView *fv,GWindow pixmap, GEvent *event) {
GDrawSetDither(NULL, true);
}
-#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
-#else
static char *chosung[] = { "G", "GG", "N", "D", "DD", "L", "M", "B", "BB", "S", "SS", "", "J", "JJ", "C", "K", "T", "P", "H", NULL };
static char *jungsung[] = { "A", "AE", "YA", "YAE", "EO", "E", "YEO", "YE", "O", "WA", "WAE", "OE", "YO", "U", "WEO", "WE", "WI", "YU", "EU", "YI", "I", NULL };
static char *jongsung[] = { "", "G", "GG", "GS", "N", "NJ", "NH", "D", "L", "LG", "LM", "LB", "LS", "LT", "LP", "LH", "M", "B", "BS", "S", "SS", "NG", "J", "C", "K", "T", "P", "H", NULL };
-#endif
void FVDrawInfo(FontView *fv,GWindow pixmap, GEvent *event) {
GRect old, r;
@@ -6301,31 +6290,22 @@ return;
fg = 0x707070;
}
-#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
-#else
- /* Get unicode "Name" as defined in NameList.txt */
if (uni != -1) {
- const char *uniname;
-#ifndef _NO_LIBUNINAMESLIST
- if ( (uniname=uniNamesList_name(uni))!=NULL ) {
-#else
- if ( (uniname=uninm_name(names_db,(unsigned int) uni))!= NULL ) {;
-#endif
+ char *uniname;
+ if ( (uniname=unicode_name(uni))!=NULL ) {
+ /* Show unicode "Name" as defined in NameList.txt */
utf82u_strncpy(ubuffer+u_strlen(ubuffer),uniname,80);
-// strncat(buffer,uniname,80);
+ free(uniname);
} else if ( uni>=0xAC00 && uni<=0xD7A3 ) {
-// sprintf( buffer+strlen(buffer), "Hangul Syllable %s%s%s",
sprintf( buffer, "Hangul Syllable %s%s%s",
chosung[(uni-0xAC00)/(21*28)],
jungsung[(uni-0xAC00)/28%21],
jongsung[(uni-0xAC00)%28] );
uc_strncat(ubuffer,buffer,80);
} else {
uc_strncat(ubuffer, UnicodeRange(uni),80);
-// strncat(buffer, UnicodeRange(uni),80);
}
}
-#endif
tlen = GDrawDrawText(pixmap,10,fv->mbh+fv->lab_as,ubuffer,ulen,fvglyphinfocol);
GDrawDrawText(pixmap,10+tlen,fv->mbh+fv->lab_as,ubuffer+ulen,-1,fg);
@@ -6527,8 +6507,6 @@ return;
}
}
-#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
-#else
static void utf82u_annot_strncat(unichar_t *to, const char *from, int len) {
register unichar_t ch;
@@ -6542,7 +6520,6 @@ static void utf82u_annot_strncat(unichar_t *to, const char *from, int len) {
}
*to = 0;
}
-#endif
void SCPreparePopup(GWindow gw,SplineChar *sc,struct remap *remap, int localenc,
int actualuni) {
@@ -6588,16 +6565,9 @@ void SCPreparePopup(GWindow gw,SplineChar *sc,struct remap *remap, int localenc,
done = true;
}
-#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
-#else
- const char *uniname;
- const char *uniannot;
if ( !done ) {
-#ifndef _NO_LIBUNINAMESLIST
- if ( (uniname=uniNamesList_name(upos))!=NULL ) {
-#else
- if ( (uniname=uninm_name(names_db,upos))!=NULL ) {
-#endif
+ char *uniname;
+ if ( (uniname=unicode_name(upos))!=NULL ) {
/* uniname=unicode "Name" as defined in NameList.txt */
#if defined( _NO_SNPRINTF )
sprintf( cspace, "%u 0x%x U+%04x \"%.25s\" %.100s", localenc, localenc, upos, sc->name==NULL?"":sc->name,
@@ -6607,6 +6577,7 @@ void SCPreparePopup(GWindow gw,SplineChar *sc,struct remap *remap, int localenc,
uniname);
#endif
utf82u_strcpy(space,cspace);
+ free(uniname);
} else if ( upos>=0xAC00 && upos<=0xD7A3 ) {
#if defined( _NO_SNPRINTF )
sprintf( cspace, "%u 0x%x U+%04x \"%.25s\" Hangul Syllable %s%s%s",
@@ -6633,19 +6604,16 @@ void SCPreparePopup(GWindow gw,SplineChar *sc,struct remap *remap, int localenc,
utf82u_strcpy(space,cspace);
}
}
-#ifndef _NO_LIBUNINAMESLIST
- if ( (uniannot=uniNamesList_name(upos))!=NULL ) {
-#else
- if ( (uniannot=uninm_annotation(names_db,upos))!=NULL ) {
-#endif
+ char *uniannot;
+ if ( (uniannot=unicode_annot(upos))!=NULL ) {
/* uniannot=unicode "Annotations" as defined in NameList.txt */
int left = sizeof(space)/sizeof(space[0]) - u_strlen(space)-1;
if ( left>4 ) {
uc_strcat(space,"\n");
utf82u_annot_strncat(space, uniannot, left-2);
}
+ free(uniannot);
}
-#endif
if ( sc->comment!=NULL ) {
int left = sizeof(space)/sizeof(space[0]) - u_strlen(space)-1;
if ( left>4 ) {
View
2 fontforge/lookupui.c
@@ -239,7 +239,7 @@ GTextInfo scripts[] = {
{ (unichar_t *) N_("Script|Mandaean"), NULL, 0, 0, (void *) CHR('m','a','n','d'), NULL, 0, 0, 0, 0, 0, 0, 1, 0, 0, '\0'},
/* { (unichar_t *) N_("Mayan hieroglyphs"), NULL, 0, 0, (void *) CHR('m','a','y','a'), NULL, 0, 0, 0, 0, 0, 0, 1, 0, 0, '\0'},*/
{ (unichar_t *) NU_("Script|Malayālam"), NULL, 0, 0, (void *) CHR('m','l','y','m'), NULL, 0, 0, 0, 0, 0, 0, 1, 0, 0, '\0'},
- { (unichar_t *) NU_("Script|Malayālam2"), NULL, 0, 0, (void *) CHR('m','l','y','2'), NULL, 0, 0, 0, 0, 0, 0, 1, 0, 0, '\0'},
+ { (unichar_t *) NU_("Script|Malayālam2"), NULL, 0, 0, (void *) CHR('m','l','m','2'), NULL, 0, 0, 0, 0, 0, 0, 1, 0, 0, '\0'},
{ (unichar_t *) NU_("Mathematical Alphanumeric Symbols"), NULL, 0, 0, (void *) CHR('m','a','t','h'), NULL, 0, 0, 0, 0, 0, 0, 1, 0, 0, '\0'},
{ (unichar_t *) N_("Script|Mongolian"), NULL, 0, 0, (void *) CHR('m','o','n','g'), NULL, 0, 0, 0, 0, 0, 0, 1, 0, 0, '\0'},
{ (unichar_t *) N_("Musical"), NULL, 0, 0, (void *) CHR('m','u','s','i'), NULL, 0, 0, 0, 0, 0, 0, 1, 0, 0, '\0'},
View
93 fontforge/scripting.c
@@ -77,7 +77,7 @@ struct keywords { enum token_type tok; char *name; } keywords[] = {
};
static const char *toknames[] = {
- "name", "string", "number", "unicode id", "real number",
+ "name", "string", "number", "unicode id", "real number",
"lparen", "rparen", "comma", "end of ff_statement",
"lbracket", "rbracket",
"minus", "plus", "logical not", "bitwise not", "colon",
@@ -333,7 +333,7 @@ void ScriptErrorF( Context *c, const char *format, ... ) {
va_start(ap,format);
vsnprintf(errbuf,sizeof(errbuf),format,ap);
va_end(ap);
-
+
if ( verbose>0 )
fflush(stdout);
if (c->interactive)
@@ -1065,7 +1065,7 @@ static void bNameFromUnicode(Context *c) {
char buffer[400];
int uniinterp;
NameList *for_new_glyphs;
-
+
if ( c->a.argc!=2 && c->a.argc!=3 )
ScriptError( c, "Wrong number of arguments" );
else if ( c->a.vals[1].type!=v_int && c->a.vals[1].type!=v_unicode )
@@ -1085,11 +1085,50 @@ static void bNameFromUnicode(Context *c) {
uniinterp = c->curfv->sf->uni_interp;
for_new_glyphs = c->curfv->sf->for_new_glyphs;
}
-
+
c->return_val.type = v_str;
c->return_val.u.sval = copy(StdGlyphName(buffer,c->a.vals[1].u.ival,uniinterp,for_new_glyphs));
}
+static void bUnicodeNameFromLib(Context *c) {
+/* If the library is available, then get the official name for this unicode value */
+ char *temp;
+
+ if ( c->a.argc!=2 )
+ ScriptError( c, "Wrong number of arguments" );
+ else if ( c->a.vals[1].type!=v_int && c->a.vals[1].type!=v_unicode )
+ ScriptError( c, "Bad type for argument" );
+ c->return_val.type = v_str;
+#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
+ temp = NULL;
+#else
+ temp = unicode_name(c->a.vals[1].u.ival);
+#endif
+ if ( temp==NULL ) {
+ temp = galloc(1*sizeof(char)); temp = '\0';
+ }
+ c->return_val.u.sval = temp;
+}
+
+static void bUnicodeAnnotationFromLib(Context *c) {
+ char *temp;
+
+ if ( c->a.argc!=2 )
+ ScriptError( c, "Wrong number of arguments" );
+ else if ( c->a.vals[1].type!=v_int && c->a.vals[1].type!=v_unicode )
+ ScriptError( c, "Bad type for argument" );
+ c->return_val.type = v_str;
+#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
+ temp = NULL;
+#else
+ temp = unicode_annot(c->a.vals[1].u.ival);
+#endif
+ if ( temp==NULL ) {
+ temp = galloc(1*sizeof(char)); temp = '\0';
+ }
+ c->return_val.u.sval = temp;
+}
+
static void bChr(Context *c) {
char buf[2];
char *temp;
@@ -1790,12 +1829,12 @@ static void bSave(Context *c) {
ScriptError(c,"The second argument to Save() must be a number of revisions to keep (integer)");
localRevisionsToRetain = c->a.vals[2].u.ival;
}
-
+
if ( c->a.argc>=2 )
{
if ( c->a.vals[1].type!=v_str )
ScriptError(c,"If an argument is given to Save it must be a filename");
-
+
t = script2utf8_copy(c->a.vals[1].u.sval);
locfilename = utf82def_copy(t);
#ifdef VMS
@@ -1813,7 +1852,7 @@ static void bSave(Context *c) {
localRevisionsToRetain );
if ( !rc )
ScriptError(c,"Save failed" );
-
+
/* Hmmm. We don't set the filename, nor the save_to_dir bit */
free(t); free(locfilename);
}
@@ -2349,7 +2388,7 @@ static void bPrintSetup(Context *c) {
}
if ( c->a.vals[1].u.ival<0 || c->a.vals[1].u.ival>5 )
ScriptError( c, "First argument out of range [0,5]");
-
+
printtype = c->a.vals[1].u.ival;
if ( c->a.argc>=3 && printtype==4 )
printcommand = copy(c->a.vals[2].u.sval);
@@ -2375,7 +2414,7 @@ static void bPrintFont(Context *c) {
}
if ( c->a.argc>=3 ) {
if ( c->a.vals[2].type==v_int ) {
- if ( c->a.vals[2].u.ival>0 ) {
+ if ( c->a.vals[2].u.ival>0 ) {
pointsizes = gcalloc(2,sizeof(int32));
pointsizes[0] = c->a.vals[2].u.ival;
}
@@ -3101,7 +3140,7 @@ static void bRemoveDetachedGlyphs(Context *c) {
for ( gid=0; gid<sf->glyphcnt; ++gid ) if ( sf->glyphs[gid]!=NULL )
sf->glyphs[gid]->ticked = false;
-
+
for ( i=0; i<map->enccount; ++i ) if ( (gid=map->map[i])!=-1 )
sf->glyphs[gid]->ticked = true;
@@ -3318,7 +3357,7 @@ static void bSetGasp(Context *c) {
base = 0;
} else if ( (c->a.argc&1)==0 )
ScriptError( c, "Wrong number of arguments");
- else {
+ else {
arr = &c->a;
base = 1;
}
@@ -3840,7 +3879,7 @@ static void bGetFontBoundingBox(Context *c) {
c->return_val.u.aval->vals[2].u.fval = b.maxx;
c->return_val.u.aval->vals[3].u.fval = b.maxy;
}
-
+
static void bSetUniqueID(Context *c) {
if ( c->a.argc!=2 )
@@ -3867,7 +3906,7 @@ static void bGetTeXParam(Context *c) {
else
c->return_val.u.ival = sf->texdata.params[c->a.vals[1].u.ival];
}
-
+
static void bSetTeXParams(Context *c) {
int i;
@@ -4137,7 +4176,7 @@ return( true );
}
return( false );
}
-
+
static void FVApplySubstitution(FontViewBase *fv,uint32 script, uint32 lang, uint32 feat_tag) {
SplineFont *sf = fv->sf, *sf_sl=sf;
SplineChar *sc, *replacement, *sc2;
@@ -5631,7 +5670,7 @@ static void bClearTable(Context *c) {
static void bAddDHint( Context *c ) {
int i, any, gid;
BasePoint left, right, unit;
- real args[6];
+ real args[6];
double len, width;
FontViewBase *fv = c->curfv;
SplineFont *sf = fv->sf;
@@ -5978,7 +6017,7 @@ static void bAutoKern(Context *c) {
sub = SFFindLookupSubtable(c->curfv->sf,c->a.vals[3].u.sval);
if ( sub==NULL )
ScriptErrorString(c,"Unknown lookup subtable",c->a.vals[3].u.sval);
-
+
if ( !AutoKernScript(c->curfv,c->a.vals[1].u.ival,c->a.vals[2].u.ival,
sub,c->a.argc==5?c->a.vals[4].u.sval:NULL) )
ScriptError(c,"No characters selected.");
@@ -6315,34 +6354,34 @@ static void bCIDChangeSubFont(Context *c) {
static void bCIDSetFontNames(Context *c) {
SplineFont *sf = c->curfv->sf;
-
+
if ( sf->cidmaster==NULL )
ScriptErrorString( c, "Not a cid-keyed font", sf->fontname );
_SetFontNames(c,sf->cidmaster);
}
static void bCIDFlatten(Context *c) {
SplineFont *sf = c->curfv->sf;
-
+
if ( sf->cidmaster==NULL )
ScriptErrorString( c, "Not a cid-keyed font", sf->fontname );
else if ( c->a.argc!=1 )
ScriptError( c, "Wrong number of arguments");
-
+
SFFlatten(sf->cidmaster);
}
static void bCIDFlattenByCMap(Context *c) {
SplineFont *sf = c->curfv->sf;
char *t; char *locfilename;
-
+
if ( sf->cidmaster==NULL )
ScriptErrorString( c, "Not a cid-keyed font", sf->fontname );
else if ( c->a.argc!=2 )
ScriptError( c, "Wrong number of arguments");
else if ( c->a.vals[1].type!=v_str )
ScriptError( c, "Argument must be a filename");
-
+
t = script2utf8_copy(c->a.vals[1].u.sval);
locfilename = utf82def_copy(t);
if ( !SFFlattenByCMap(sf,locfilename))
@@ -6962,7 +7001,7 @@ static void bSetFeatureList(Context *c) {
if ( c->a.argc!=3 )
ScriptError( c, "Wrong number of arguments");
- else if ( c->a.vals[1].type!=v_str ||
+ else if ( c->a.vals[1].type!=v_str ||
(c->a.vals[2].type!=v_arr && c->a.vals[2].type!=v_arrfree))
ScriptError( c, "Bad type for argument");
@@ -7447,7 +7486,7 @@ static void FigureProfile(Context *c,SplineChar *sc,int pos,int xextrema) {
val[l] = val[i];
val[i] = temp;
}
-
+
c->return_val.type = v_arrfree;
c->return_val.u.aval = galloc(sizeof(Array));
c->return_val.u.aval->argc = j;
@@ -7650,7 +7689,7 @@ static void bGetAnchorPoints(Context *c) {
sc = GetOneSelChar(c);
- for ( ap=sc->anchor, cnt=0; ap!=NULL; ap=ap->next, ++cnt )
+ for ( ap=sc->anchor, cnt=0; ap!=NULL; ap=ap->next, ++cnt )
;
ret = galloc(sizeof(Array));
ret->argc = cnt;
@@ -8080,6 +8119,8 @@ static struct builtins { char *name; void (*func)(Context *); int nofontok; } bu
{ "GetEnv", bGetEnv, 1 },
{ "UnicodeFromName", bUnicodeFromName, 1 },
{ "NameFromUnicode", bNameFromUnicode, 1 },
+ { "UnicodeNameFromLib", bUnicodeNameFromLib, 1 },
+ { "UnicodeAnnotationFromLib", bUnicodeAnnotationFromLib, 1 },
{ "Chr", bChr, 1 },
{ "Ord", bOrd, 1 },
{ "Real", bReal, 1 },
@@ -9006,7 +9047,7 @@ static void handlename(Context *c,Val *val) {
else sf = FontViewFirst()->sf;
} else {
if ( c->curfv==NULL ) ScriptError(c,"No current font");
- if ( strcmp(name,"$curfont")==0 )
+ if ( strcmp(name,"$curfont")==0 )
sf = c->curfv->sf;
else {
if ( c->curfv->next==NULL ) sf = NULL;
@@ -9510,7 +9551,7 @@ static void comp(Context *c,Val *val) {
if ( val->u.fval>other.u.fval ) cmp = 1;
else if ( val->u.fval<other.u.fval ) cmp = -1;
else cmp = 0;
- } else
+ } else
ScriptError( c, "Invalid type in integer expression" );
val->type = v_int;
if ( tok==tt_eq ) val->u.ival = (cmp==0);
View
4 fontforge/splinefont.h
@@ -2766,6 +2766,10 @@ extern char **NamesReadMacBinary(char *filename);
extern void SFSetOrder(SplineFont *sf,int order2);
extern int SFFindOrder(SplineFont *sf);
+extern void inituninameannot(void);
+extern char *unicode_name(int32 unienc);
+extern char *unicode_annot(int32 unienc);
+
extern const char *UnicodeRange(int unienc);
extern SplineChar *SCBuildDummy(SplineChar *dummy,SplineFont *sf,EncMap *map,int i);
extern SplineChar *SFMakeChar(SplineFont *sf,EncMap *map,int i);
View
15 fontforge/start.c
@@ -26,10 +26,6 @@
*/
#include "fontforgevw.h"
#include "pluginloading.h"
-#ifndef _NO_LIBUNICODENAMES
-#include <libunicodenames.h>
-uninm_names_db names_db; /* Unicode character names and annotations database */
-#endif
#include <gfile.h>
#include <time.h>
#include <sys/time.h>
@@ -108,16 +104,7 @@ void InitSimpleStuff(void) {
else if ( *localeinfo.decimal_point!='.' ) coord_sep=" ";
if ( getenv("FF_SCRIPT_IN_LATIN1") ) use_utf8_in_script=false;
-#ifndef _NO_LIBUNICODENAMES
- char *names_db_file;
-
- /* Load character names and annotations that come from the Unicode NamesList.txt */
- /* This should not be done until after the locale has been set. */
- names_db_file = uninm_find_names_db(NULL);
- names_db = (names_db_file == NULL) ? ((uninm_names_db) 0) : uninm_names_db_open(names_db_file);
- free(names_db_file);
- /* NOTE: you need to do uninm_names_db_close(names_db); when you exit program */
-#endif
+ inituninameannot(); /* Note: unicodenames done after locales set */
SetDefaults();
}
View
2 fontforge/tottfaat.c
@@ -2268,7 +2268,7 @@ int16 *PerGlyphDefBaseline(SplineFont *sf,int *def_baseline) {
script == CHR('g','u','j','r' ) || script == CHR('g','j','r','2') ||
script == CHR('g','u','r','u' ) || script == CHR('g','u','r','2') ||
script == CHR('k','n','d','a' ) || script == CHR('k','n','d','2') ||
- script == CHR('m','l','y','m' ) || script == CHR('m','l','y','2') ||
+ script == CHR('m','l','y','m' ) || script == CHR('m','l','m','2') ||
script == CHR('o','r','y','a' ) || script == CHR('o','r','y','2') ||
script == CHR('t','a','m','l' ) || script == CHR('t','m','l','2') ||
script == CHR('t','e','l','u' ) || script == CHR('t','e','l','2'))
View
190 fontforge/unicodelibinfo.c
@@ -0,0 +1,190 @@
+/* -*- coding: utf-8 -*- */
+/* Copyright (C) 2013 by Jose Da Silva */
+/*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+
+ * 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.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 "fontforge.h"
+#include <ustring.h>
+
+
+#ifndef _NO_LIBUNINAMESLIST
+#include <uninameslist.h>
+#endif
+const struct unicode_nameannot * const *const *_UnicodeNameAnnot = NULL; /* deprecated */
+#ifndef _NO_LIBUNICODENAMES
+#include <libunicodenames.h>
+uninm_names_db names_db; /* Unicode character names and annotations database */
+#endif
+
+void inituninameannot(void) {
+/* Initialize unicode name-annotation library access for FontForge */
+/* TODO: Library pluginloading currently disabled - see 20120731-b */
+/* for existing code if you want to re-enable this feature again. */
+
+#if _NO_LIBUNINAMESLIST
+ _UnicodeNameAnnot = NULL; /* libuninameslist not available */
+#else
+ /* backward compatibility for other programs using libuninames */
+ _UnicodeNameAnnot = UnicodeNameAnnot;
+#endif
+
+#ifndef _NO_LIBUNICODENAMES
+ /* Open database file, read data for this 'local', then close. */
+ char *names_db_file;
+
+ /* Load character names and annotations that come from the Unicode NamesList.txt */
+ /* This should not be done until after the locale has been set */
+ names_db_file = uninm_find_names_db(NULL);
+ names_db = (names_db_file == NULL) ? ((uninm_names_db) 0) : uninm_names_db_open(names_db_file);
+ free(names_db_file);
+ /* NOTE: you need to do uninm_names_db_close(names_db); when you exit program */
+#endif
+}
+
+char *unicode_name(int32 unienc) {
+/* Return the unicode name for the value given from a data library. */
+/* If there's no data available for this code, or no library, return NULL */
+/* User should free the return string when finished with this information */
+ char *name_data;
+
+ name_data=NULL;
+#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
+ /* no nameslist library code available to use */
+ //fprintf(stderr,"no library\n");
+ return( NULL );
+#else
+ /* have nameslist library code available to use */
+ if ( unienc<0 || unienc>=0x110000 )
+ return( NULL );
+
+#ifndef _NO_LIBUNINAMESLIST
+#ifndef _LIBUNINAMESLIST_FUN
+ /* old libuninameslist library code */
+ if ( _UnicodeNameAnnot!=NULL &&
+ _UnicodeNameAnnot[unienc>>16][(unienc>>8)&0xff][unienc&0xff].name!=NULL ) {
+ name_data=copy(_UnicodeNameAnnot[unienc>>16][(unienc>>8)&0xff][unienc&0xff].name);
+ }
+ //fprintf(stderr,"use old code library ->%s<-\n",name_data\n");
+#else
+ /* new libuninameslist library code */
+ name_data=copy(uniNamesList_name(unienc));
+ //fprintf(stderr,"new library ->%s<-\n",name_data\n");
+#endif
+#else
+ /* libunicodesnames library code */
+ name_data=copy(uninm_name(names_db,(unsigned int)(unienc)));
+ //fprintf(stderr,"libunicodes library ->%s<-\n",name_data\n");
+#endif
+#endif
+
+ return( name_data );
+}
+
+static char *unicode_nicer(const char *from) {
+/* Return nicer looking unicode annotations by changing the '*' to bullet */
+/* and other markers to fancier utf8 style symbols. if empty, return NULL */
+/* User should free the return string when finished with this information */
+ const char *pf;
+ char ch,*to,*pt;
+ long c;
+ int l;
+
+ if ( from==NULL )
+ return( NULL );
+
+ /* check if we need to convert some chars to bullets and symbols */
+ c=l=0;
+ for ( pf=from; (ch=*pf++)!='\0'; ++l ) if ( ch=='\t' ) {
+ /* require extra space for these larger utf8 type chars */
+ if ( *pf=='*' || *pf=='x' || *pf==':' || *pf=='#' ) ++c;
+ }
+
+ if ( (pt=to=malloc(l+c+c+1))!=NULL ) {
+ if ( c ) {
+ while ( (ch=*pt++=*from++)!='\0' ) if (ch=='\t' ) {
+ if ( *from=='*' ) {
+ c=0x2022; goto unicode_expand_c; /* 0x2022, bullet */
+ } else if ( *from=='x' ) {
+ c=0x2192; goto unicode_expand_c; /* 0x2192, right-arrow */
+ } else if ( *from==':' ) {
+ c=0x224d; goto unicode_expand_c; /* 0x224d, nearly equal */
+ } else if ( *from=='#' ) {
+ c=0x2245; goto unicode_expand_c; /* 0x2245, approx equal */
+unicode_expand_c:
+ ++from;
+ *pt++ =0xe0+((c>>12)&0x0f);
+ *pt++ =0x80+((c>>6)&0x3f);
+ *pt++ =0x80+(c&0x3f);
+ }
+ }
+ } else
+ /* simply copy information verbatim, without the need to edit */
+ while ( (*pt++=*from++)!='\0' );
+ }
+
+ return( to );
+}
+
+char *unicode_annot(int32 unienc) {
+/* Return the unicode annotation for the value given from a data library. */
+/* If there's no data available for this code, or no library, return NULL */
+/* User should free the return string when finished with this information */
+
+#if _NO_LIBUNINAMESLIST && _NO_LIBUNICODENAMES
+ /* no nameslist library code available to use */
+ //fprintf(stderr,"no library - annotation\n");
+ return( NULL );
+#else
+ char *annot_data;
+
+ annot_data=NULL;
+
+ /* have nameslist library code available to use */
+ if ( unienc<0 || unienc>=0x110000 )
+ return( NULL );
+
+#ifndef _NO_LIBUNINAMESLIST
+#ifndef _LIBUNINAMESLIST_FUN
+ /* old libuninameslist library code */
+ if ( _UnicodeNameAnnot!=NULL &&
+ _UnicodeNameAnnot[unienc>>16][(unienc>>8)&0xff][unienc&0xff].annot!=NULL ) {
+ annot_data=unicode_nicer(_UnicodeNameAnnot[unienc>>16][(unienc>>8)&0xff][unienc&0xff].annot);
+ }
+ //fprintf(stderr,"use old code library - annotation ->%s<-\n",annot_data);
+#else
+ /* new libuninameslist library code */
+ annot_data=unicode_nicer(uniNamesList_annot(unienc));
+ //fprintf(stderr,"new library - annotation ->%s<-\n",annot_data);
+#endif
+#else
+ /* libunicodesnames library code */
+ annot_data=copy(uninm_annotation(names_db,(unsigned int)(unienc)));
+ //fprintf(stderr,"libunicodes library - annotation ->%s<-\n",annot_data);
+#endif
+
+ return( annot_data );
+#endif
+}
View
53 gdraw/gchardlg.c
@@ -36,19 +36,7 @@
#include <gresource.h>
#include "ggadgetP.h" /* For the font family names */
-
-#ifndef _NO_LIBUNINAMESLIST
-#include <uninameslist.h>
-#else
-#ifndef _NO_LIBUNICODENAMES
-#include <libunicodenames.h> /* need to open a database when we start */
- /* FIXME: Is it possible to share this names_db with the FontForge */
- /* main code? And is it possible to free this memory at some point? */
-
- /* Unicode character names and annotations. */
-static uninm_names_db names_db = (uninm_names_db) NULL;
-#endif
-#endif
+#include "../fontforge/unicodelibinfo.c"
#define INSCHR_CharSet 1
#define INSCHR_Char 2
@@ -878,26 +866,14 @@ static void InsChrMouseMove(GWindow gw, GEvent *event) {
int uch = InsChrMapChar(16*y + x);
static unichar_t space[600];
char cspace[40];
- const char *uniname;
- const char *uniannot;
+ char *uniname;
+ char *uniannot;
-#ifndef _NO_LIBUNINAMESLIST
- uniname=uniNamesList_name(uch);
- uniannot=uniNamesList_annot(uch);
-#else
-#ifndef _NO_LIBUNICODENAMES
- uniname = uninm_name(names_db, uch);
- uniannot = uninm_annotation(names_db, uch);
-#else
- /* no built-in unicode NamesList.txt support */
- uniname=NULL;
- uniannot=NULL;
-#endif
-#endif
- if (uniname != NULL) {
+ if ( (uniname=unicode_name(uch))!=NULL ) {
uc_strncpy(space, uniname, 550);
sprintf( cspace, " U+%04X", uch );
uc_strcpy(space+u_strlen(space),cspace);
+ free(uniname);
} else {
if ( uch<160 )
sprintf(cspace, "Control Char U+%04X ", uch);
@@ -919,12 +895,13 @@ static void InsChrMouseMove(GWindow gw, GEvent *event) {
sprintf(cspace, "Unencoded Unicode U+%04X ", uch);
uc_strcpy(space,cspace);
}
- if (uniannot != NULL) {
+ if ( (uniannot=unicode_annot(uch))!=NULL ) {
int left = sizeof(space)/sizeof(space[0]) - u_strlen(space)-1;
if ( left>4 ) {
uc_strcat(space,"\n");
uc_annot_strncat(space, uniannot, left-2);
}
+ free(uniannot);
}
GGadgetPreparePopup(gw,space);
} else if ( inschr.mouse_down ) {
@@ -1065,18 +1042,12 @@ void GWidgetCreateInsChar(void) {
int i;
FontRequest rq;
int as, ds, ld;
+ static int inited= false;
-#ifndef _NO_LIBUNICODENAMES
- char *names_db_file;
-
- /* Load character names and annotations dtabase which came from the Unicode */
- /* NamesList.txt. This should not be done until after the locale has been set. */
- names_db_file = uninm_find_names_db(NULL);
- names_db = (names_db_file == NULL) ? ((uninm_names_db) 0) : uninm_names_db_open(names_db_file);
- free(names_db_file);
- /* note database file needs to be closed later by startui.c or startnoui.c */
-#endif
-
+ if ( !inited ) {
+ inituninameannot();
+ inited = true;
+ }
if ( inschr.icw!=NULL ) {
inschr.hidden = false;
GDrawSetVisible(inschr.icw,true);
View
14 htdocs/scripting-alpha.html
@@ -829,7 +829,7 @@ <H1 ALIGN=Center>
<DT>
<A NAME="CorrectDirection" HREF="elementmenu.html#Correct">CorrectDirection</A>([unlinkrefs])
<DD>
- If the an argument is present it must be integral and is treated as a flag
+ If an argument is present it must be integral and is treated as a flag
controlling whether flipped references should be unlinked before the
CorrectDirection code runs. If the argument is not present, or if it has
a non-zero value then flipped references will be unlinked.
@@ -3176,13 +3176,25 @@ <H1 ALIGN=Center>
Converts the argument to a unicode code point (a special type used in several
commands). It can execute with no current font.
<DT>
+ <A NAME="UnicodeAnnotationFromLib">U</A>nicodeAnnotationFromLib(val)
+ <DD>
+ Returns the Unicode Annotations for this value as described by www.unicode.org.
+ If there is no unicode annotation for this value, or no library available,
+ then return empty string "". It can execute with no current font.
+ <DT>
<A NAME="UnicodeFromName">U</A>nicodeFromName(name)
<DD>
Looks the string "name" up in FontForge's database of commonly used glyph
names and returns the unicode value associated with that name, or -1 if not
found. This does <EM>not</EM> check the current font (if any). It can execute
with no current font.
<DT>
+ <A NAME="UnicodeNameFromLib">U</A>nicodeNameFromLib(val)
+ <DD>
+ Returns the Unicode Name for this value as described by www.unicode.org.
+ If there is no unicode name for this value, or no library available,
+ then return empty string "". It can execute with no current font.
+ <DT>
<A NAME="UnlinkReference" HREF="editmenu.html#Unlink">UnlinkReference</A>
<DD>
Unlinks all references within all selected glyphs
View
48 m4/fontforge_arg_with.m4
@@ -33,6 +33,7 @@ AC_DEFUN([FONTFORGE_ARG_WITH],
dnl FONTFORGE_ARG_WITH_LIBNAMESLIST
dnl -------------------------------
+dnl Check if libuninameslist exists, and if yes, then also see if it has 2 newer functions in it
AC_DEFUN([FONTFORGE_ARG_WITH_LIBUNINAMESLIST],
[
FONTFORGE_ARG_WITH_BASE([libuninameslist],
@@ -41,11 +42,12 @@ AC_DEFUN([FONTFORGE_ARG_WITH_LIBUNINAMESLIST],
[FONTFORGE_WARN_PKG_NOT_FOUND([LIBUNINAMESLIST])],
[_NO_LIBUNINAMESLIST],
[
- FONTFORGE_SEARCH_LIBS([uniNamesList_name],[uninameslist],
+ FONTFORGE_SEARCH_LIBS([UnicodeNameAnnot],[uninameslist],
[i_do_have_libuninameslist=yes
AC_SUBST([LIBUNINAMESLIST_CFLAGS],[""])
AC_SUBST([LIBUNINAMESLIST_LIBS],["${found_lib}"])
- FONTFORGE_WARN_PKG_FALLBACK([LIBUNINAMESLIST])],
+ AC_CHECK_FUNC([uniNamesList_name],[AC_DEFINE([_LIBUNINAMESLIST_FUN],
+ [1],[Libuninameslist library has 2 new functions.])])],
[i_do_have_libuninameslist=no])
])
])
@@ -55,19 +57,35 @@ dnl FONTFORGE_ARG_WITH_LIBUNICODENAMES
dnl ----------------------------------
AC_DEFUN([FONTFORGE_ARG_WITH_LIBUNICODENAMES],
[
- FONTFORGE_ARG_WITH_BASE([libunicodenames],
- [AS_HELP_STRING([--without-libunicodenames],[build without Unicode Name or Annotation support - incase libuninameslist not found])],
- [libunicodenames],
- [FONTFORGE_WARN_PKG_NOT_FOUND([LIBUNICODENAMES])],
- [_NO_LIBUNICODENAMES],
- [
- FONTFORGE_SEARCH_LIBS([uninm_names_db_open],[unicodenames],
- [i_do_have_libunicodenames=yes
- AC_SUBST([LIBUNICODENAMES_CFLAGS],[""])
- AC_SUBST([LIBUNICODENAMES_LIBS],["${found_lib}"])
- FONTFORGE_WARN_PKG_FALLBACK([LIBUNICODENAMES])],
- [i_do_have_libunicodenames=no])
- ])
+AC_ARG_VAR([LIBUNICODENAMES_CFLAGS],[C compiler flags for LIBUNICODENAMES, overriding the automatic detection])
+AC_ARG_VAR([LIBUNICODENAMES_LIBS],[linker flags for LIBUNICODENAMES, overriding the automatic detection])
+AC_ARG_WITH([libunicodenames],[AS_HELP_STRING([--without-libunicodenames],
+ [build without Unicode Name or Annotation support])],
+ [i_do_have_libunicodenames="${withval}"],[i_do_have_libunicodenames=yes])
+if test x"${i_do_have_libunicodenames}" = xyes -a x"${LIBUNICODENAMES_LIBS}" = x; then
+ FONTFORGE_SEARCH_LIBS([uninm_names_db_open],[unicodenames],
+ [LIBUNICODENAMES_LIBS="${LIBUNICODENAMES_LIBS} ${found_lib}"],
+ [i_do_have_libunicodenames=no])
+ if test x"${i_do_have_libunicodenames}" != xyes; then
+ i_do_have_libunicodenames=yes
+ unset ac_cv_search_uninm_names_db_open
+ FONTFORGE_SEARCH_LIBS([uninm_names_db_open],[unicodenames],
+ [LIBUNICODENAMES_LIBS="${LIBUNICODENAMES_LIBS} ${found_lib} -lunicodenames"],
+ [i_do_have_libunicodenames=no],
+ [-lunicodenames])
+ fi
+fi
+if test x"${i_do_have_libunicodenames}" = xyes -a x"${LIBUNICODENAMES_CFLAGS}" = x; then
+ AC_CHECK_HEADER([libunicodenames.h],[AC_SUBST([LIBUNICODENAMES_CFLAGS],[""])],[i_do_have_libunicodenames=no])
+fi
+if test x"${i_do_have_libunicodenames}" = xyes; then
+ if test x"${LIBUNICODENAMES_LIBS}" != x; then
+ AC_SUBST([LIBUNICODENAMES_LIBS],["${LIBUNICODENAMES_LIBS}"])
+ fi
+else
+ FONTFORGE_WARN_PKG_NOT_FOUND([LIBUNICODENAMES])
+ AC_DEFINE([_NO_LIBUNICODENAMES],1,[Define if not using libunicodenames.])
+fi
])
View
19,514 po/pl.po
10,268 additions, 9,246 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
2 po/ru.po
@@ -2951,7 +2951,7 @@ msgstr "Цвет обтравочного контура"
#: ../fontforge/charview.c:205
#, fuzzy
-msgid "The color of the an open path"
+msgid "The color of the open path"
msgstr "Координата У выделенной точки близка к ascender height"
#: ../fontforge/charview.c:206
View
4,009 po/uk.po
2,089 additions, 1,920 deletions not shown because the diff is too large. Please use a local Git client to view these changes.

0 comments on commit 051a0bf

Please sign in to comment.
Something went wrong with that request. Please try again.