Compare commits

...

No commits in common. "c8" and "c9s" have entirely different histories.
c8 ... c9s

15 changed files with 603 additions and 237 deletions

View File

@ -1 +1 @@
cca54440dd47414055507a5007cd9b663699f3e2 SOURCES/fontforge-20200314.tar.gz
c4372106460089c0495558abc8e1d6436d2f9bf2 fontforge-20201107.tar.gz

26
.gitignore vendored
View File

@ -1 +1,25 @@
SOURCES/fontforge-20200314.tar.gz
fontforge_htdocs-20100429.tar.bz2
fontforge_full-20100501.tar.bz2
/fontforge_full-20110222.tar.bz2
/fontforge_htdocs-20110221.tar.bz2
/fontforge_full-20120731-b.tar.bz2
/fontforge_htdocs-20120731-b.tar.bz2
/20140813.tar.gz
/gnulib-2bf7326.tar.gz
/20141230.tar.gz
/20150228.tar.gz
/20150330.tar.gz
/20150430.tar.gz
/20150612.tar.gz
/fontforge-20150824.tar.gz
/fontforge-20160404.tar.gz
/fontforge-20161001.tar.gz
/fontforge-20161004.tar.gz
/fontforge-20161005.tar.gz
/fontforge-20161012.tar.gz
/fontforge-20170731.tar.gz
/gnulib-b324052.tar.gz
/fontforge-20190317.tar.gz
/fontforge-20190413.tar.gz
/fontforge-20200314.tar.gz
/fontforge-20201107.tar.gz

View File

@ -0,0 +1,180 @@
diff -urN fontforge-20201107.old/po/fr.po fontforge-20201107/po/fr.po
--- fontforge-20201107.old/po/fr.po 2020-11-08 02:12:58.000000000 +0530
+++ fontforge-20201107/po/fr.po 2024-04-02 16:30:42.942148536 +0530
@@ -280,8 +280,8 @@
"referred to.\n"
"It will not be copied."
msgstr ""
-"Vous essayer de coller une référence vers %1$s dans %2$hs.\n"
-"Mais %1$hs n'existe pas dans cette fonte, et FontForge ne trouve pas le "
+"Vous essayer de coller une référence vers %1$s dans %2$s.\n"
+"Mais %1$s n'existe pas dans cette fonte, et FontForge ne trouve pas le "
"glyphe auquel il se référait.\n"
"Le glyphe ne sera pas copié."
@@ -303,8 +303,8 @@
"But %1$s does not exist in this font.\n"
"Would you like to copy the original splines (or delete the reference)?"
msgstr ""
-"Vous essayer de coller une référence vers %1$s dans %2$hs.\n"
-"Mais %1$hs n'existe pas dans cette fonte.\n"
+"Vous essayer de coller une référence vers %1$s dans %2$s.\n"
+"Mais %1$s n'existe pas dans cette fonte.\n"
"Voulez vous copier le contour d'origine (ou supprimer la référence)?"
msgid "Anchor Lost"
@@ -322,7 +322,7 @@
#, c-format
msgid "There is already an anchor point named %1$.40s in %2$.40s."
-msgstr "Il y a déjà une ancre appelée %1$.40s dans %2$.40hs."
+msgstr "Il y a déjà une ancre appelée %1$.40s dans %2$.40s."
msgid "Different Fonts"
msgstr "Pas la même fonte"
@@ -497,8 +497,8 @@
"been able to find is %1$.20s-%2$.20s-%4$d.\n"
"Shall I use that or let you search?"
msgstr ""
-"Cette fonte est basée sur le jeu de caractères %1$.20s-%2$.20hs-%3$d, mais "
-"ce que j'ai trouvé de mieux c'est %1$.20hs-%2$.20hs-%4$d.\n"
+"Cette fonte est basée sur le jeu de caractères %1$.20s-%2$.20s-%3$d, mais "
+"ce que j'ai trouvé de mieux c'est %1$.20s-%2$.20s-%4$d.\n"
"Devrais-je utiliser cette valeur ou préférez vous chercher ?"
msgid "Use CID Map"
@@ -1245,7 +1245,7 @@
"Reverting the file will lose those changes.\n"
"Is that what you want?"
msgstr ""
-"La fonte %1$.40s dans le fichier %2$.40hs a été modifiée.\n"
+"La fonte %1$.40s dans le fichier %2$.40s a été modifiée.\n"
"Revenir vous fera perdre toutes les modifications.\n"
"Voulez vous vraiment revenir ?"
@@ -4469,7 +4469,7 @@
"The fonts %1$.30s and %2$.30s have a different number of glyphs or different "
"encodings"
msgstr ""
-"Les fontes %1$.30s et %2$.30hs n'ont pas le même nombre de glyphes ou des "
+"Les fontes %1$.30s et %2$.30s n'ont pas le même nombre de glyphes ou des "
"codages différents"
#, c-format
@@ -4477,7 +4477,7 @@
"The fonts %1$.30s and %2$.30s use different types of splines (one quadratic, "
"one cubic)"
msgstr ""
-"Les fontes %1$.30s et %2$.30hs utilisent des courbes de Bézier d'ordres "
+"Les fontes %1$.30s et %2$.30s utilisent des courbes de Bézier d'ordres "
"différents (quadratique et cubique)"
#, c-format
@@ -4530,8 +4530,8 @@
"The glyph %1$.30s in font %2$.30s has a different number of references than "
"in %3$.30s"
msgstr ""
-"Le glyphe %1$.30s de la fonte %2$.30hs a un nombre de références différent "
-"dans %3$.30hs"
+"Le glyphe %1$.30s de la fonte %2$.30s a un nombre de références différent "
+"dans %3$.30s"
#, c-format
msgid ""
@@ -4571,8 +4571,8 @@
"The glyph %1$.30s in font %2$.30s has a different hint mask on its contours "
"than in %3$.30s"
msgstr ""
-"Le glyphe %1$.30s dans la police %2$.30hs a un masque de hints différent que "
-"dans %3$.30hs"
+"Le glyphe %1$.30s dans la police %2$.30s a un masque de hints différent que "
+"dans %3$.30s"
#, c-format
msgid ""
@@ -8025,7 +8025,7 @@
#, c-format
msgid "The outlines of glyph %2$.30s were not found in the font %1$.60s"
msgstr ""
-"Le contours du glyphe %2$.30s n'ont pas été trouvés dans la police %1$.60hs"
+"Le contours du glyphe %2$.30s n'ont pas été trouvés dans la police %1$.60s"
msgid "Correcting References"
msgstr "Correction des références"
@@ -10455,7 +10455,7 @@
#. GT: $4 is the font name
#, c-format
msgid "%1$.80s at %2$d size %3$d from %4$.80s"
-msgstr "%1$.80s (%2$d) taille %3$d de %4$.80hs"
+msgstr "%1$.80s (%2$d) taille %3$d de %4$.80s"
msgid "Set Width..."
msgstr "Définir chasse..."
@@ -11984,7 +11984,7 @@
#. GT: $4 is the changed flag ('*' for the changed items)
#, c-format
msgid "%1$.80s at %2$d from %3$.90s%4$s"
-msgstr "%1$.80s à %2$d de %3$.90hs%4$s"
+msgstr "%1$.80s à %2$d de %3$.90s%4$s"
msgid ""
"This glyph should display spiro points, but unfortunately this version of "
@@ -23093,7 +23093,7 @@
"with a 0 offset for this combination. Would you like to alter this kerning "
"class entry (or create a kerning pair for just these two glyphs)?"
msgstr ""
-"Cette paire de crénage (%.20s et %.20hs) est dans une classe de crénage\n"
+"Cette paire de crénage (%.20s et %.20s) est dans une classe de crénage\n"
"avec un déplacement de 0 pour cette combinaison. Voulez-vous modifier cette "
"partie\n"
"de la classe de crénage (ou créer une nouvelle paire rien que pour ces 2 "
@@ -26890,7 +26890,7 @@
"not exist in the new font.\n"
"Should I remove the reference?"
msgstr ""
-"Dans %1$s du dialogue de recherche il y a une référence vers %2$.20hs qui "
+"Dans %1$s du dialogue de recherche il y a une référence vers %2$.20s qui "
"n'existe pas dans la nouvelle fonte.\n"
"Faut-il supprimer la référence ?"
diff -urN fontforge-20201107.old/po/it.po fontforge-20201107/po/it.po
--- fontforge-20201107.old/po/it.po 2020-11-08 02:12:58.000000000 +0530
+++ fontforge-20201107/po/it.po 2024-04-02 16:29:54.500334426 +0530
@@ -503,8 +503,8 @@
"been able to find is %1$.20s-%2$.20s-%4$d.\n"
"Shall I use that or let you search?"
msgstr ""
-"Questo font è basato sulla codifica di caratteri %1$.20s-%2$.20hs-%3$d, ma "
-"il migliore che io abbia trovato è %1$.20hs-%2$.20hs-%4$d.\n"
+"Questo font è basato sulla codifica di caratteri %1$.20s-%2$.20s-%3$d, ma "
+"il migliore che io abbia trovato è %1$.20s-%2$.20s-%4$d.\n"
"Devo usare questo valore o preferisci cercare tu stesso?"
msgid "Use CID Map"
@@ -1196,7 +1196,7 @@
"Reverting the file will lose those changes.\n"
"Is that what you want?"
msgstr ""
-"Il font %1$.40s nel file %2$.40hs è stato modificato.\n"
+"Il font %1$.40s nel file %2$.40s è stato modificato.\n"
"Ripristinando il file perderai tutte le modifiche.\n"
"È quello che vuoi fare?"
@@ -4233,7 +4233,7 @@
"The glyph %1$.30s has a different number of contours in font %2$.30s than in "
"%3$.30s"
msgstr ""
-"Il glifo %1$.30s ha un diverso numero di contorni nel font %2$.30hs rispetto "
+"Il glifo %1$.30s ha un diverso numero di contorni nel font %2$.30s rispetto "
"a %3$.30s"
#, c-format
@@ -24660,7 +24660,7 @@
#, c-format
msgid ""
-"The %1$s in the search dialog contains a reference to %2$.20hs which does "
+"The %1$s in the search dialog contains a reference to %2$.20s which does "
"not exist in the new font.\n"
"Should I remove the reference?"
msgstr ""

View File

@ -0,0 +1,178 @@
From a64099931ea004a08e074b08ad0984d92c25daa2 Mon Sep 17 00:00:00 2001
From: Peter Kydas <pk@canva.com>
Date: Tue, 6 Feb 2024 10:23:36 +1100
Subject: [PATCH] fix splinefont shell command injection
---
fontforge/splinefont.c | 125 +++++++++++++++++++++++++++++------------
1 file changed, 90 insertions(+), 35 deletions(-)
diff --git a/fontforge/splinefont.c b/fontforge/splinefont.c
index 239fdc035b..647daee109 100644
--- a/fontforge/splinefont.c
+++ b/fontforge/splinefont.c
@@ -788,11 +788,14 @@ return( name );
char *Unarchive(char *name, char **_archivedir) {
char *dir = getenv("TMPDIR");
- char *pt, *archivedir, *listfile, *listcommand, *unarchivecmd, *desiredfile;
+ char *pt, *archivedir, *listfile, *desiredfile;
char *finalfile;
int i;
int doall=false;
static int cnt=0;
+ gchar *command[5];
+ gchar *stdoutresponse = NULL;
+ gchar *stderrresponse = NULL;
*_archivedir = NULL;
@@ -827,18 +830,30 @@ return( NULL );
listfile = malloc(strlen(archivedir)+strlen("/" TOC_NAME)+1);
sprintf( listfile, "%s/" TOC_NAME, archivedir );
- listcommand = malloc( strlen(archivers[i].unarchive) + 1 +
- strlen( archivers[i].listargs) + 1 +
- strlen( name ) + 3 +
- strlen( listfile ) +4 );
- sprintf( listcommand, "%s %s %s > %s", archivers[i].unarchive,
- archivers[i].listargs, name, listfile );
- if ( system(listcommand)!=0 ) {
- free(listcommand); free(listfile);
- ArchiveCleanup(archivedir);
-return( NULL );
- }
- free(listcommand);
+ command[0] = archivers[i].unarchive;
+ command[1] = archivers[i].listargs;
+ command[2] = name;
+ command[3] = NULL; // command args need to be NULL-terminated
+
+ if ( g_spawn_sync(
+ NULL,
+ command,
+ NULL,
+ G_SPAWN_SEARCH_PATH,
+ NULL,
+ NULL,
+ &stdoutresponse,
+ &stderrresponse,
+ NULL,
+ NULL
+ ) == FALSE) { // did not successfully execute
+ ArchiveCleanup(archivedir);
+ return( NULL );
+ }
+ // Write out the listfile to be read in later
+ FILE *fp = fopen(listfile, "wb");
+ fwrite(stdoutresponse, strlen(stdoutresponse), 1, fp);
+ fclose(fp);
desiredfile = ArchiveParseTOC(listfile, archivers[i].ars, &doall);
free(listfile);
@@ -847,22 +862,28 @@ return( NULL );
return( NULL );
}
- /* I tried sending everything to stdout, but that doesn't work if the */
- /* output is a directory file (ufo, sfdir) */
- unarchivecmd = malloc( strlen(archivers[i].unarchive) + 1 +
- strlen( archivers[i].listargs) + 1 +
- strlen( name ) + 1 +
- strlen( desiredfile ) + 3 +
- strlen( archivedir ) + 30 );
- sprintf( unarchivecmd, "( cd %s ; %s %s %s %s ) > /dev/null", archivedir,
- archivers[i].unarchive,
- archivers[i].extractargs, name, doall ? "" : desiredfile );
- if ( system(unarchivecmd)!=0 ) {
- free(unarchivecmd); free(desiredfile);
- ArchiveCleanup(archivedir);
-return( NULL );
+ command[0] = archivers[i].unarchive;
+ command[1] = archivers[i].extractargs;
+ command[2] = name;
+ command[3] = doall ? "" : desiredfile;
+ command[4] = NULL;
+
+ if ( g_spawn_sync(
+ (gchar*)archivedir,
+ command,
+ NULL,
+ G_SPAWN_SEARCH_PATH,
+ NULL,
+ NULL,
+ &stdoutresponse,
+ &stderrresponse,
+ NULL,
+ NULL
+ ) == FALSE) { // did not successfully execute
+ free(desiredfile);
+ ArchiveCleanup(archivedir);
+ return( NULL );
}
- free(unarchivecmd);
finalfile = malloc( strlen(archivedir) + 1 + strlen(desiredfile) + 1);
sprintf( finalfile, "%s/%s", archivedir, desiredfile );
@@ -885,20 +906,54 @@ struct compressors compressors[] = {
char *Decompress(char *name, int compression) {
char *dir = getenv("TMPDIR");
- char buf[1500];
char *tmpfn;
-
+ gchar *command[4];
+ gint stdout_pipe;
+ gchar buffer[4096];
+ gssize bytes_read;
+ GByteArray *binary_data = g_byte_array_new();
+
if ( dir==NULL ) dir = P_tmpdir;
tmpfn = malloc(strlen(dir)+strlen(GFileNameTail(name))+2);
strcpy(tmpfn,dir);
strcat(tmpfn,"/");
strcat(tmpfn,GFileNameTail(name));
*strrchr(tmpfn,'.') = '\0';
- snprintf( buf, sizeof(buf), "%s < %s > %s", compressors[compression].decomp, name, tmpfn );
- if ( system(buf)==0 )
-return( tmpfn );
- free(tmpfn);
-return( NULL );
+
+ command[0] = compressors[compression].decomp;
+ command[1] = "-c";
+ command[2] = name;
+ command[3] = NULL;
+
+ // Have to use async because g_spawn_sync doesn't handle nul-bytes in the output (which happens with binary data)
+ if (g_spawn_async_with_pipes(
+ NULL,
+ command,
+ NULL,
+ G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ &stdout_pipe,
+ NULL,
+ NULL) == FALSE) {
+ //command has failed
+ return( NULL );
+ }
+
+ // Read binary data from pipe and output to file
+ while ((bytes_read = read(stdout_pipe, buffer, sizeof(buffer))) > 0) {
+ g_byte_array_append(binary_data, (guint8 *)buffer, bytes_read);
+ }
+ close(stdout_pipe);
+
+ FILE *fp = fopen(tmpfn, "wb");
+ fwrite(binary_data->data, sizeof(gchar), binary_data->len, fp);
+ fclose(fp);
+ g_byte_array_free(binary_data, TRUE);
+
+ return(tmpfn);
}
static char *ForceFileToHaveName(FILE *file, char *exten) {

View File

@ -1,27 +0,0 @@
From ee14a6389d19e2f45219134058e07f10585fa6d3 Mon Sep 17 00:00:00 2001
From: Jeremy Tan <jtanx@outlook.com>
Date: Thu, 2 Apr 2020 18:03:47 +0800
Subject: [PATCH] Call gdk_set_allowed_backends before gdk_init
Fixes #4247
---
fontforgeexe/startui.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fontforgeexe/startui.c b/fontforgeexe/startui.c
index 06f5200a4..114bb7fb6 100644
--- a/fontforgeexe/startui.c
+++ b/fontforgeexe/startui.c
@@ -1182,8 +1182,8 @@ int fontforge_main( int argc, char **argv ) {
#endif
}
#ifdef FONTFORGE_CAN_USE_GDK
- gdk_init(&argc, &argv);
gdk_set_allowed_backends("win32,quartz,x11");
+ gdk_init(&argc, &argv);
#endif
ensureDotFontForgeIsSetup();
#if defined(__MINGW32__) && !defined(_NO_LIBCAIRO)
--
2.26.0

View File

@ -1,161 +0,0 @@
From 1a03ca2de0b4c99ee72b330b56e89cc90fe773ae Mon Sep 17 00:00:00 2001
From: Jeremy Tan <jtanx@outlook.com>
Date: Sat, 4 Apr 2020 11:43:34 +1100
Subject: [PATCH] Minor changes for backwards compatibility with older versions
of Sphinx
Closes #4256
---
doc/sphinx/conf.py | 3 +++
doc/sphinx/techref/splinefont.rst | 26 ++++++++++++-------------
doc/sphinx/ui/misc/fontforge-themes.rst | 2 +-
3 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/doc/sphinx/conf.py b/doc/sphinx/conf.py
index 4b22e2eaf6..f2df68676e 100644
--- a/doc/sphinx/conf.py
+++ b/doc/sphinx/conf.py
@@ -68,6 +68,9 @@
# Don't copy source rst files into the output
html_copy_source = False
+# Set the main page
+master_doc = 'index'
+
# Custom roles must be in the prolog, not the epilog!
rst_prolog = '''
.. role:: small
diff --git a/doc/sphinx/techref/splinefont.rst b/doc/sphinx/techref/splinefont.rst
index 98248f7a5e..60399d3912 100644
--- a/doc/sphinx/techref/splinefont.rst
+++ b/doc/sphinx/techref/splinefont.rst
@@ -195,7 +195,7 @@ The bounding box of a :ref:`Spline <splinefont.Spline>`,
:ref:`SplineChar <splinefont.SplineChar>`, :ref:`RefChar <splinefont.RefChar>`,
:ref:`Image <splinefont.ImageList>`, or whatever else needs a bounding box.
-.. code-block::
+.. code-block:: default
:name: splinefont.BDFFloat
typedef struct bdffloat {
@@ -206,7 +206,7 @@ The bounding box of a :ref:`Spline <splinefont.Spline>`,
The floating selection in a :ref:`BDFChar <splinefont.BDFChar>`.
-.. code-block::
+.. code-block:: default
:name: splinefont.Undoes
typedef struct undoes {
@@ -277,7 +277,7 @@ both the splines and the bitmaps of a character.
ut_mult is used when doing a copy from the FontView where you are copying more
than one character.
-.. code-block::
+.. code-block:: default
:name: splinefont.BDFChar
typedef struct bdfchar {
@@ -318,7 +318,7 @@ represented by a byte rather than a bit. There is a clut for this in the BDFFont
The last thing in the BDFChar is a (/an optional) floating selection. Only
present if the user has made a selection or done a paste or something like that.
-.. code-block::
+.. code-block:: default
:name: splinefont.BDFFont
typedef struct bdffont {
@@ -345,7 +345,7 @@ contains a count of the number of entries in the array, and then the array
itself. Currently the number of entries here is always 16, but that could
change.
-.. code-block::
+.. code-block:: default
:name: splinefont.SplinePoint
enum pointtype { pt_curve, pt_corner, pt_tangent };
@@ -405,7 +405,7 @@ drawing it. They are cached so they don't need to be regenerated each time.
There's a different set of lines for every scale (as there is a different amount
of visible detail). They get freed and regenerated if the Spline changes.
-.. code-block::
+.. code-block:: default
:name: splinefont.Spline
typedef struct spline1d {
@@ -439,7 +439,7 @@ some are used in other places too.
The Spline1D structures give the equations for the x and y coordinates
respectively (splines[0] is for x, splines[1] is for y).
-.. code-block::
+.. code-block:: default
:name: splinefont.SplinePointList
typedef struct splinepointlist {
@@ -463,7 +463,7 @@ to). A SplinePointList is a connected path. There are three cases:
Generally a series of paths will make up a character, and they are linked
together on the next field.
-.. code-block::
+.. code-block:: default
:name: splinefont.RefChar
typedef struct refchar {
@@ -498,7 +498,7 @@ themselves). The selected field indicates that the reference is selected. The bb
field provides a transformed bounding box. And the sc field points to the
SplineChar we are referring to.
-.. code-block::
+.. code-block:: default
:name: splinefont.KernPair
typedef struct kernpair {
@@ -514,7 +514,7 @@ offset between them (or rather the difference from what their respective left
and right bearings would lead you to believe it should be). Next points to the
next kernpair.
-.. code-block::
+.. code-block:: default
:name: splinefont.Hints
typedef struct hints {
@@ -532,7 +532,7 @@ y space) of where the stem starts, and width is how long it is. Width may be
negative (in which case base is where the stem ends). Next points to the next
hint for the character.
-.. code-block::
+.. code-block:: default
:name: splinefont.ImageList
typedef struct imagelist {
@@ -551,7 +551,7 @@ not support any other transformations on images). The bounding box is after the
transformations have been applied. The next field points to the next image, and
selected indicates whether this one is selected or not.
-.. code-block::
+.. code-block:: default
:name: splinefont.SplineChar
typedef struct splinechar {
@@ -623,7 +623,7 @@ follow this one. For instance the combination "VA" might need kerning, then the
SplineChar representing "V" would have a pointer to a
:ref:`KernPair <splinefont.KernPair>` with data on "A".
-.. code-block::
+.. code-block:: default
:name: splinefont.SplineFont
typedef struct splinefont {
diff --git a/doc/sphinx/ui/misc/fontforge-themes.rst b/doc/sphinx/ui/misc/fontforge-themes.rst
index 8df505634f..5bf3f6edd5 100644
--- a/doc/sphinx/ui/misc/fontforge-themes.rst
+++ b/doc/sphinx/ui/misc/fontforge-themes.rst
@@ -4,7 +4,7 @@ FontForge color schemes
The following are some suggestions for color schemes. You simply copy these into
your ~/.Xdefaults file and then run
-.. code-block::
+.. code-block:: default
:name: fontforge-themes.shell
$ xrdb ~/.Xdefaults

View File

@ -1,19 +1,19 @@
%global gettext_package FontForge
%global gittag0 20200314
Name: fontforge
Version: 20200314
Release: 5%{?dist}
Version: 20201107
Release: 6%{?dist}
Summary: Outline and bitmap font editor
License: GPLv3+
URL: http://fontforge.github.io/
Source0: https://github.com/fontforge/%{name}/archive/%{gittag0}.tar.gz#/%{name}-%{version}.tar.gz
Source0: https://github.com/fontforge/%{name}/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
# https://github.com/fontforge/fontforge/pull/4253
Patch0: fontforge-20200314-Call-gdk_set_allowed_backends-before-gdk_init.patch
# https://github.com/fontforge/fontforge/pull/4257
Patch1: fontforge-20200314-minor-backward-compatible-sphinx-changes.patch
# Fix translations with gettext-0.22, https://github.com/fontforge/fontforge/pull/5257
Patch0: 0001-Fix-errors-in-French-and-Italian-translations.patch
# https://github.com/fontforge/fontforge/pull/5367
# Fixes CVE-2024-25081 and CVE-2024-25082
Patch1: https://patch-diff.githubusercontent.com/raw/fontforge/fontforge/pull/5367.patch#/Fix_Splinefont_shell_invocation.patch
Requires: xdg-utils
Requires: autotrace
@ -38,11 +38,16 @@ BuildRequires: libspiro-devel
BuildRequires: python3-devel
BuildRequires: readline-devel
BuildRequires: libappstream-glib
BuildRequires: woff2-devel
# F25 build is failing add following to fix
BuildRequires: shared-mime-info
# F33 onward need now
BuildRequires: gtk3-devel
BuildRequires: python3-sphinx
BuildRequires: make
%py_provides python3-fontforge
%py_provides python3-psMat
%description
FontForge (former PfaEdit) is a font editor for outline and bitmap
@ -69,32 +74,24 @@ This package contains documentation files for %{name}.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch -P 0 -p1
%patch -P 1 -p1
# Remove tests that requires Internet access
sed -i '45d;83d;101d;102d;114d;115d;125d' tests/CMakeLists.txt
sed -i '45d;83d;101d;102d;114d;115d;127d' tests/CMakeLists.txt
rm tests/test003.pe tests/test130.pe tests/test0101.py tests/test929.py
# Remove tests for s390x
rm tests/test0004.py tests/test1009.py tests/test1010.py
# Remove desktop-file-validate warning
sed -i '5d' desktop/org.fontforge.FontForge.desktop
%build
rm -rf build && mkdir build
pushd build
export CFLAGS="%{optflags} -fno-strict-aliasing"
%cmake .. -DCMAKE_BUILD_TYPE=Release
%{make_build}
popd
%cmake -DCMAKE_BUILD_TYPE=Release \
-DENABLE_WOFF2=ON
%cmake_build
%install
pushd build
%{make_install}
popd
%cmake_install
desktop-file-install \
--dir $RPM_BUILD_ROOT%{_datadir}/applications \
@ -112,7 +109,7 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml
%find_lang %{gettext_package}
%check
pushd build
pushd %{__cmake_builddir}
make check
popd
@ -138,39 +135,113 @@ popd
%doc %{_pkgdocdir}
%changelog
* Mon Dec 14 2020 Parag Nemade <pnemade AT redhat DOT com> - 20200314-5
* Tue Apr 02 2024 Parag Nemade <pnemade AT redhat DOT com> - 20201107-6
- Resolves: RHEL-26716 - CVE-2024-25081 and CVE-2024-25082 fontforge: various flaws
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com>
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com>
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Mon Feb 01 2021 Parag Nemade <pnemade AT redhat DOT com> - 20201107-3
- The %%find_lang should run as part of %%install only
* Mon Dec 07 2020 Parag Nemade <pnemade AT redhat DOT com> - 20200314-4
- Minor changes for backwards compatibility with older versions of Sphinx
Resolves: rhbz#1646212
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 20201107-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Apr 08 2020 Parag Nemade <pnemade AT redhat DOT com> - 20170731-15
- Resolves:rh#1821664 - out-of-bounds write in sfd.c
* Wed Nov 25 2020 Parag Nemade <pnemade AT redhat DOT com> - 20201107-1
- Update to 20201107 version (#1895648)
- removed %%gittag0 macro, as it cause problem to automated package update script
* Thu Jan 16 2020 Parag Nemade <pnemade AT redhat DOT com> - 20170731-14
- Resolves:rh#1790974 - out-of-bounds write in sfd.c
* Sun Nov 22 2020 Benjamin A. Beasley <code@musicinmybrain.net> - 20200314-10
- Add py_provides macros to provide python3-fontforge, python3-psMat, etc.
* Sun Jun 02 2019 Parag Nemade <pnemade AT redhat DOT com> - 20170731-13
- Resolves:rh#1665940 - harden the missing splinerefigure.c file
* Wed Aug 05 2020 Parag Nemade <pnemade AT redhat DOT com> - 20200314-9
- Fix FTBFS bug by fixing glossary.rst and using new CMake macros
* Fri May 31 2019 Parag Nemade <pnemade AT redhat DOT com> - 20170731-12
- Resolves:rh#1665940 - Fixed covscan patch to fix some font packages build
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 20200314-8
- Second attempt - Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon May 20 2019 Parag Nemade <pnemade AT redhat DOT com> - 20170731-11
- Resolves:rh#1682233 - Fixed gating.yml rule
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 20200314-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Sat May 18 2019 Parag Nemade <pnemade AT redhat DOT com> - 20170731-10
- Resolves:rh#1682233 - fontforge changes blocked until gating tests are added
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 20200314-6
- Rebuilt for Python 3.9
* Mon May 13 2019 Parag Nemade <pnemade AT redhat DOT com> - 20170731-9
- Resolves:rh#1665940 - fontforge: Use after free during dejavu-fonts build
* Sat May 02 2020 Parag Nemade <pnemade AT redhat DOT com> - 20200314-5
- Resolves:rhbz#1830502 - Add missing WOFF2 support
* Tue Oct 30 2018 Parag Nemade <pnemade AT redhat DOT com> - 20170731-8
- Resolves:rh#1644224 - fix some issues from covscan patch
* Wed Apr 15 2020 Parag Nemade <pnemade AT redhat DOT com> - 20200314-4
- Resolves:rhbz#1823525 - fontforge fails to build with Sphinx 3.0.0
* Sat Sep 22 2018 Parag Nemade <pnemade AT redhat DOT com> - 20170731-7
- Resolves:rh#1602497 - Fix some covscan issues
* Thu Apr 02 2020 Parag Nemade <pnemade AT redhat DOT com> - 20200314-3
- Fix the GDK backend UI issues
- Move back to using GDK backend
* Fri Mar 27 2020 Parag Nemade <pnemade AT redhat DOT com> - 20200314-2
- Enabled X11 and 2012 theme
* Wed Mar 25 2020 Parag Nemade <pnemade AT redhat DOT com> - 20200314-1
- Update to 20200314 version (#1813578)
* Sun Feb 16 2020 Parag Nemade <pnemade AT redhat DOT com> - 20190801-6
- another fix for rh#1790042 - CVE-2020-5395:out-of-bounds write in sfd.c
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 20190801-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jan 16 2020 Parag Nemade <pnemade AT redhat DOT com> - 20190801-4
- Resolves:rh#1790042 - CVE-2020-5395:out-of-bounds write in sfd.c
* Tue Aug 27 2019 Kevin Fenzi <kevin@scrye.com> - 20190801-3
- Rebuild for new libspiro
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 20190801-2
- Rebuilt for Python 3.8
* Thu Aug 15 2019 Parag Nemade <pnemade AT redhat DOT com> - 20190801-1
- Update to 20190801 version (#1739819)
- Upstream moved to use Glib's GHashTable over uthash
- Upstream dropped requiring bundling copy of gnulib
* Fri Aug 02 2019 Parag Nemade <pnemade AT redhat DOT com> - 20190413-4
- Fix the conditional for rh#1728058
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 20190413-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Tue Jul 23 2019 Parag Nemade <pnemade AT redhat DOT com> - 20190413-2
- make the code compatible with python-3.8 (rh#1728058)
* Sat Apr 13 2019 Parag Nemade <pnemade AT redhat DOT com> - 20190413-1
- Update to 20190413 version (#1689629)
* Mon Mar 25 2019 Parag Nemade <pnemade AT redhat DOT com> - 20190317-1
- Update to 20190317 release (#1689629)
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 20170731-12
- Rebuild for readline 8.0
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 20170731-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Jul 23 2018 Miro Hrončok <mhroncok@redhat.com> - 20170731-10
- Rebuilt for #1595421
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 20170731-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Wed Jul 04 2018 Kevin Fenzi <kevin@scrye.com> - -8
- Update bundled gnulib. Fixes bug #1596037
* Thu Jun 28 2018 Miro Hrončok <mhroncok@redhat.com> - 20170731-7
- Rebuilt for Python 3.7.0 final (#1595421)
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 20170731-6
- Rebuilt for Python 3.7
* Sun Feb 11 2018 Sandro Mani <manisandro@gmail.com> - 20170731-5
- Rebuild (giflib)

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (fontforge-20201107.tar.gz) = 7b5672bc87b4be9211ebc4a20dfb9a7dd8d870f5fc34c74c78f663ab1c25ca7818ddcb52b67d748dd6720b62eab7cb14bb586a86525703f2c15aca3b65d53e26

View File

@ -0,0 +1,14 @@
import fontforge
import os
myFont = fontforge.open("Cantarell-Regular.ttf")
myFont.generate("Cantarell-Regular.sfd")
myFont.close()
myFont = fontforge.open("Cantarell-Regular.sfd")
myFont.generate("Cantarell-Regular.ttf")
myFont.close()
os.remove("Cantarell-Regular.ttf")
os.remove("Cantarell-Regular.sfd")

7
tests/scripts/generate-sfd.pe Executable file
View File

@ -0,0 +1,7 @@
#!/usr/bin/fontforge
i=1
Open($argv[i], 1)
#Use gen_flags=Defualt fmflags value as -1
gen_flags = -1
Generate("" + $fontname + ".sfd", "", gen_flags)

10
tests/scripts/generate-ttf.pe Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/fontforge
i=1
Open($argv[i], 1)
#Use gen_flags=Defualt fmflags value as -1
gen_flags = -1
Generate("" + $fontname + ".ttf", "", gen_flags)
Generate("" + $fontname + ".otf", "", gen_flags)
PrintSetup (5)
PrintFont (0, 0, "", $fontname + "-sample.pdf")

View File

@ -0,0 +1,31 @@
#!/usr/bin/python3
import fontforge
import sys
if len(sys.argv) > 1:
f = fontforge.open(sys.argv[1])
else:
print("provide fontfile path as an argument")
sys.exit(1)
if f.fullname:
print("Fontname is {0}".format(f.fullname))
else:
print("fontname not set")
if f.weight:
print("Given font weight is {0}".format(f.weight))
else:
print("Given font weight not set")
if f.version:
print("Given font version is {0}".format(f.version))
else:
print("Given font version not set")
if f.copyright:
print("Given font Copyright text is => {0}".format(f.copyright))
else:
print("Given font copyright information not set")
ver = fontforge.UnicodeNamesListVersion()
print("Libuninameslist version is : %s" % ver)

View File

@ -0,0 +1,23 @@
#!/bin/bash
cp /usr/share/fontforge/pixmaps/Cantarell-Regular.ttf .
echo "----------------------------------------------------------"
echo "Executing get-font-metadata.py on Cantarell-Regular.ttf =>"
/usr/bin/python3 get-font-metadata.py ./Cantarell-Regular.ttf
echo "----------------------------------------------------------"
echo "Executing generate-font.py on Cantarell-Regular.ttf =>"
/usr/bin/python3 generate-font.py ./Cantarell-Regular.ttf
echo "----------------------------------------------------------"
cp /usr/share/fontforge/pixmaps/Cantarell-Regular.ttf .
echo "Executing generate-sfd.pe on Cantarell-Regular.ttf =>"
/usr/bin/fontforge -script generate-sfd.pe ./Cantarell-Regular.ttf
rm Cantarell-Regular.ttf
echo "----------------------------------------------------------"
echo "Executing generate-ttf.pe on Cantarell-Regular.sfd =>"
/usr/bin/fontforge -script generate-ttf.pe ./Cantarell-Regular.sfd
echo "----------------------------------------------------------"

9
tests/tests.yml Normal file
View File

@ -0,0 +1,9 @@
- hosts: localhost
roles:
- role: standard-test-basic
tags:
- classic
tests:
- simple:
dir: scripts/
run: ./run_tests.sh