package created by autospec [release 3.0.9-1mamba;Mon Jan 24 2011]

This commit is contained in:
gil 2024-01-05 18:43:22 +01:00
parent 672ab626d0
commit a55ec7ea26
12 changed files with 589 additions and 0 deletions

View File

@ -1,2 +1,7 @@
# ttmkfdir
ttmkfdir is a tool to create valid and complete fonts.dir files from TrueType fonts. It is very useful
when you plan to use a TrueType enabled font server that is based on the X11R6 sample
implementation (xfsft for instance). Great care has been taken to correctly identify the encodings
that a given TrueType font supports.

View File

@ -0,0 +1,11 @@
--- ttmkfdir-3.0.9/directory.cpp.bak 2008-02-27 10:18:52.000000000 +0800
+++ ttmkfdir-3.0.9/directory.cpp 2008-02-27 10:20:24.000000000 +0800
@@ -3,6 +3,8 @@
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
#include "directory.h"

11
ttmkfdir-3.0.9-cpp.patch Normal file
View File

@ -0,0 +1,11 @@
--- ttmkfdir-3.0.9/ttf.cpp.sopwith Thu Aug 7 12:49:08 2003
+++ ttmkfdir-3.0.9/ttf.cpp Thu Aug 7 12:50:01 2003
@@ -239,7 +239,7 @@
for (i = 0; i < n; i++) {
if ((fterror = FT_Get_Sfnt_Name (face, i, &NamePtr)) != FT_Err_Ok) {
std::cout << "Warning: Can't SFNT name : " << FileName << "(" << fterror << ")" << std::endl;
- return;
+ return NULL;
};
platform = NamePtr.platform_id;
encoding = NamePtr.encoding_id;

View File

@ -0,0 +1,79 @@
--- ttmkfdir-3.0.9.orig/encoding.l 2003-01-08 14:25:25.000000000 +0900
+++ ttmkfdir-3.0.9/encoding.l 2005-08-03 19:24:22.000000000 +0900
@@ -21,6 +21,19 @@
static Encoding *cur_enc;
static NumericMapping *cur_map;
+static int is_created_map = 0;
+
+static void
+create_mapping(void)
+{
+ cur_map = new NumericMapping (cur_enc->size,
+ TT_PLATFORM_MICROSOFT,
+ TT_MS_ID_UNICODE_CS);
+
+ cur_enc->enc_size = 0;
+ cur_enc->start_code = 0xffff;
+ is_created_map = 1;
+}
%}
@@ -67,12 +80,6 @@
}
<INSIDE_ENC_BLOCK>STARTMAPPING{WHITESPACES}unicode {
- cur_map = new NumericMapping (cur_enc->size,
- TT_PLATFORM_MICROSOFT,
- TT_MS_ID_UNICODE_CS);
-
- cur_enc->enc_size = 0;
- cur_enc->start_code = 0xffff;
BEGIN(INSIDE_MAP_BLOCK);
}
@@ -107,6 +114,12 @@
i2 = i1;
}
+ /* avoid a crash issue */
+ if (cur_enc->size < i2)
+ cur_enc->size = i2;
+ if (!is_created_map)
+ create_mapping();
+
/* now mark all the unassigned codes */
for (long i = i1; i <= i2; i++) {
(*cur_map)[i] = -1;
@@ -114,10 +127,14 @@
}
<INSIDE_MAP_BLOCK>{NUMBER}({WHITESPACES}{NUMBER}){0,2} {
- int numbers[3], i = 0, start_range, end_range, target, res;
+ unsigned int start_range;
+ int numbers[3], i = 0, end_range, target, res;
char *startptr;
char *endptr = yytext;
+ if (!is_created_map)
+ create_mapping();
+
for (i = 0;;i++) {
startptr = endptr;
res = std::strtol (startptr, &endptr, 0);
@@ -150,9 +167,14 @@
<INSIDE_MAP_BLOCK>ENDMAPPING {
+ /* it may not happens but to be safe */
+ if (!is_created_map)
+ create_mapping();
+
cur_enc->AddMapping (cur_map);
dest.insert (std::make_pair(cur_map->cmapkey(), cur_enc));;
BEGIN(INSIDE_ENC_BLOCK);
+ is_created_map = 0;
}
<INSIDE_UNKNOWN_MAP>ENDMAPPING {

View File

@ -0,0 +1,44 @@
--- ttmkfdir-3.0.9/encoding.cpp.orig 2002-12-09 17:52:48.000000000 +0900
+++ ttmkfdir-3.0.9/encoding.cpp 2004-01-31 18:16:46.617118976 +0900
@@ -4,7 +4,6 @@
#include <cstring>
#include <unistd.h>
#include <zlib.h>
-#include "freetype/freetype.h"
#include "ttmkfdir.h"
#include "encoding.h"
--- ttmkfdir-3.0.9/encoding.h.orig 2002-12-09 17:52:48.000000000 +0900
+++ ttmkfdir-3.0.9/encoding.h 2004-01-31 18:19:18.600014064 +0900
@@ -6,7 +6,8 @@
#include <map>
#include <string>
-#include "freetype/freetype.h"
+#include <ft2build.h>
+#include FT_FREETYPE_H
#include "util.h"
--- ttmkfdir-3.0.9/ttf.h.orig 2003-01-08 14:25:25.000000000 +0900
+++ ttmkfdir-3.0.9/ttf.h 2004-01-31 18:32:53.333155800 +0900
@@ -3,12 +3,13 @@
#define TTF_H__
#include <string>
-#include "freetype/freetype.h"
-#include "freetype/tttables.h"
-#include "freetype/ftsnames.h"
-#include "freetype/ttnameid.h"
-#include "freetype/fterrors.h"
-#include "freetype/ftmodule.h"
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_SFNT_NAMES_H
+#include FT_TRUETYPE_TABLES_H
+#include FT_TRUETYPE_IDS_H
+#include FT_ERRORS_H
+#include FT_MODULE_H
#include "util.h"
#include "encoding.h"

View File

@ -0,0 +1,107 @@
diff -ruN -x '*o' -x '*~' -x ttmkfdir -x parser.cpp ttmkfdir-3.0.9.orig/ttf.cpp ttmkfdir-3.0.9/ttf.cpp
--- ttmkfdir-3.0.9.orig/ttf.cpp 2006-11-29 15:46:55.000000000 +0900
+++ ttmkfdir-3.0.9/ttf.cpp 2006-11-29 17:21:40.000000000 +0900
@@ -70,7 +70,6 @@
Face::Face (const std::string &filename)
{
FT_Error fterror;
- string header_enc("-");
int face_id, face_count;
string::size_type pos = filename.rfind("/");
@@ -98,29 +97,13 @@
if ((post = (TT_Postscript *) FT_Get_Sfnt_Table(face, ft_sfnt_post)) == 0){
std::cout << "Warning: Can't get POST table : " << FileName << "(" << FT_Err_Post_Table_Missing << ")" << std::endl;
return;
- }
+ }
if ((os2 = (TT_OS2 *) FT_Get_Sfnt_Table(face, ft_sfnt_os2)) == 0) {
std::cout << "Warning: Can't get OS2 table : " << FileName << "(" << FT_Err_Table_Missing << ")" << std::endl;
return;
}
- for (int j = 0; j < 32; j++) {
- switch (os2->ulCodePageRange1 & (1 << j)) {
- case TT_CODEPAGE_RANGE_932: /* Japanese */
- header_enc = "ji";
- break;
- case TT_CODEPAGE_RANGE_936: /* Simplified Chinese */
- header_enc = "gb";
- break;
- case TT_CODEPAGE_RANGE_949: /* Korean Wansung */
- header_enc = "ks";
- break;
- case TT_CODEPAGE_RANGE_950: /* Traditional Chinese */
- header_enc = "big";
- break;
- }
- }
/*
* Iterate over all cmap entries.
*/
@@ -148,25 +131,50 @@
*/
typedef Encodings_t::const_iterator MI;
std::pair<MI, MI> bounds = Encodings::instance()->equal_range (key);
+ bool need_non_cjk_encoding = true;
/*
* then look whether each of these encodings is present in this cmap.
*/
- for (Encodings_t::const_iterator i = bounds.first; i != bounds.second; i++) {
- if (MappingPresent (cmapidx,
- i->second->mappings[key],
- i->second->enc_size,
- i->second->start_code,
- (header_enc.compare("-")?((i->second->names[0].find(header_enc) != string::npos)?1:0):1)
- )) {
- /*
- * if the mapping is present, add all xlfd names for this mapping to the
- * list of available font names.
- */
- for (unsigned int k = 0; k < i->second->names.size (); k++) {
- add_entries (i->second->names[k],face_id);
+ for (int j = 0; j < 32; j++) {
+ string header_enc("-");
+
+ switch (os2->ulCodePageRange1 & (1 << j)) {
+ case TT_CODEPAGE_RANGE_932: /* Japanese */
+ header_enc = "ji";
+ break;
+ case TT_CODEPAGE_RANGE_936: /* Simplified Chinese */
+ header_enc = "gb";
+ break;
+ case TT_CODEPAGE_RANGE_949: /* Korean Wansung */
+ header_enc = "ks";
+ break;
+ case TT_CODEPAGE_RANGE_950: /* Traditional Chinese */
+ header_enc = "big";
+ break;
+ default:
+ if (need_non_cjk_encoding)
+ need_non_cjk_encoding = false;
+ else
+ continue;
+ break;
+ }
+ for (Encodings_t::const_iterator i = bounds.first; i != bounds.second; i++) {
+ if (MappingPresent (cmapidx,
+ i->second->mappings[key],
+ i->second->enc_size,
+ i->second->start_code,
+ (header_enc.compare("-")?((i->second->names[0].find(header_enc) != string::npos)?1:0):1)
+ )) {
+ /*
+ * if the mapping is present, add all xlfd names for this mapping to the
+ * list of available font names.
+ */
+ for (unsigned int k = 0; k < i->second->names.size (); k++) {
+ add_entries (i->second->names[k],face_id);
+ }
}
- }
+ }
}
}

View File

@ -0,0 +1,20 @@
--- ttmkfdir.cpp 2011-01-24 09:30:16.000000000 +0100
+++ ttmkfdir.cpp-gil 2011-01-24 09:41:57.000000000 +0100
@@ -16,7 +16,7 @@
cerr << "This Program is (C) Joerg Pommnitz, 2000" << endl;
cerr << "Usage: " << program << " [OPTION]" << endl;
- cerr << "-e, --encoding\t\tname of the encoding directory file, default is \"/usr/X11R6/lib/X11/fonts/encodings/encodings.dir\"" << endl;
+ cerr << "-e, --encoding\t\tname of the encoding directory file, default is \"/usr/lib/X11/fonts/encodings/encodings.dir\"" << endl;
cerr << "-o, --output\t\tname of the destination file, default is \"fonts.scale\"" << endl;
cerr << "-d, --font-dir\t\tname of the TrueType font directory, default is \".\"" << endl;
cerr << "-f, --default-foundry\tname of the default font foundry, default is \"misc\"" << endl;
@@ -32,7 +32,7 @@
void
ParseCommandline (int argc, char *argv[])
{
- cmdline::instance()->AddOption (new Commandline::Option ("encoding", 'e', "/usr/X11R6/lib/X11/fonts/encodings/encodings.dir"));
+ cmdline::instance()->AddOption (new Commandline::Option ("encoding", 'e', "/usr/lib/X11/fonts/encodings/encodings.dir"));
cmdline::instance()->AddOption (new Commandline::Option ("output", 'o', "fonts.scale"));
cmdline::instance()->AddOption (new Commandline::Option ("font-dir", 'd', "."));
cmdline::instance()->AddOption (new Commandline::Option ("default-foundry", 'f', "misc"));

View File

@ -0,0 +1,56 @@
*** ttmkfdir-3.0.9/ttf.h.ORIG 2004-03-10 13:40:47.149814008 -0700
--- ttmkfdir-3.0.9/ttf.h 2004-03-10 13:40:50.571293864 -0700
*************** namespace ttf {
*** 50,56 ****
TT_Postscript *post;
std::string FileName;
};
! };
#endif /* TTF_H__ */
--- 50,56 ----
TT_Postscript *post;
std::string FileName;
};
! }
#endif /* TTF_H__ */
*** ttmkfdir-3.0.9/util.h.ORIG 2004-03-10 13:40:19.872960720 -0700
--- ttmkfdir-3.0.9/util.h 2004-03-10 13:40:34.059803992 -0700
*************** namespace util {
*** 17,22 ****
Singleton (void) {};
~Singleton (void) {};
};
! };
#endif // TTMKFDIRUTIL_H__
--- 17,22 ----
Singleton (void) {};
~Singleton (void) {};
};
! }
#endif // TTMKFDIRUTIL_H__
*** ttmkfdir-3.0.9/builtin.cpp.ORIG 2004-03-10 13:41:47.089701760 -0700
--- ttmkfdir-3.0.9/builtin.cpp 2004-03-10 13:41:51.327057584 -0700
*************** namespace {
*** 600,606 ****
0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
};
! };
Encoding::BuiltinEncoding_t Encoding::builtin_encodings[] = {
{256,191,32,{TT_PLATFORM_MICROSOFT,TT_MS_ID_UNICODE_CS,iso8859_1},{"iso8859-1",}},
--- 600,606 ----
0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
};
! }
Encoding::BuiltinEncoding_t Encoding::builtin_encodings[] = {
{256,191,32,{TT_PLATFORM_MICROSOFT,TT_MS_ID_UNICODE_CS,iso8859_1},{"iso8859-1",}},

View File

@ -0,0 +1,20 @@
--- ttmkfdir-3.0.9/directory.cpp.back 2005-10-08 14:25:37.839328408 +0800
+++ ttmkfdir-3.0.9/directory.cpp 2005-10-08 14:26:00.021956136 +0800
@@ -1,5 +1,6 @@
#include <cctype>
#include <dirent.h>
+#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
@@ -13,6 +14,10 @@
directory::scan (const std::string &dir)
{
DIR *ttfdir = opendir(dir.c_str ());
+ if (!ttfdir) {
+ printf("%s is not exist!\n", dir.c_str ());
+ exit(-1);
+ }
this->clear ();
dirpath = dir;

View File

@ -0,0 +1,75 @@
--- ttmkfdir-3.0.9/encoding.l~ 2005-08-03 19:33:07.000000000 +0900
+++ ttmkfdir-3.0.9/encoding.l 2005-08-03 21:52:15.000000000 +0900
@@ -115,7 +115,7 @@
}
/* avoid a crash issue */
- if (cur_enc->size < i2)
+ if ((int) (cur_enc->size) < i2)
cur_enc->size = i2;
if (!is_created_map)
create_mapping();
@@ -127,8 +127,8 @@
}
<INSIDE_MAP_BLOCK>{NUMBER}({WHITESPACES}{NUMBER}){0,2} {
- unsigned int start_range;
- int numbers[3], i = 0, end_range, target, res;
+ unsigned int start_range = 0, i = 0, end_range = 0;
+ int numbers[3], target = 0, res;
char *startptr;
char *endptr = yytext;
--- ttmkfdir-3.0.9/commandline.cpp~ 2002-12-09 17:29:11.000000000 +0900
+++ ttmkfdir-3.0.9/commandline.cpp 2005-08-03 21:12:40.000000000 +0900
@@ -1,6 +1,8 @@
#include <cstdlib>
+#ifndef _GNU_SOURCE
#define _GNU_SOURCE
+#endif
#include <getopt.h>
#include "commandline.h"
--- ttmkfdir-3.0.9/ttmkfdir.cpp~ 2003-01-20 08:33:11.000000000 +0900
+++ ttmkfdir-3.0.9/ttmkfdir.cpp 2005-08-03 21:08:43.000000000 +0900
@@ -76,7 +76,7 @@
return 1;
}
- fprintf (output, "%d\n", fontdir.size ());
+ fprintf (output, "%d\n", (int)(fontdir.size ()));
for (vector<string>::const_iterator i = fontdir.begin (); i != fontdir.end (); i++) {
fprintf (output, "%s\n", i->c_str ());
--- ttmkfdir-3.0.9/ttf.cpp~ 2005-08-03 19:33:07.000000000 +0900
+++ ttmkfdir-3.0.9/ttf.cpp 2005-08-03 21:31:48.000000000 +0900
@@ -533,7 +533,7 @@
const char *
Face::Weight (void) const
{
- const char *result;
+ const char *result = NULL;
if (cmdline::instance()->option ("panose") && ((result = PanoseWeight ()) != 0)) {
return result;
@@ -614,7 +614,7 @@
const char *
Face::Width (void) const
{
- const char *result;
+ const char *result = NULL;
if (cmdline::instance()->option ("panose") && ((result = PanoseWidth ()) != 0)) {
return result;
--- ttmkfdir-3.0.9/encoding.cpp~ 2005-08-03 19:33:07.000000000 +0900
+++ ttmkfdir-3.0.9/encoding.cpp 2005-08-03 21:31:44.000000000 +0900
@@ -121,7 +121,7 @@
NumericMapping *m = new NumericMapping (size, b->mapdata.platform, b->mapdata.encoding);
- for (int i = 0; i < size; i++)
+ for (unsigned int i = 0; i < size; i++)
(*m)[i] = b->mapdata.mappingtable[i];
AddMapping (m);

80
ttmkfdir-3.0.9-zlib.patch Normal file
View File

@ -0,0 +1,80 @@
--- ttmkfdir-3.0.9/encoding.cpp 2002-12-09 03:52:48.000000000 -0500
+++ ttmkfdir-3.0.9/encoding.cpp 2003-09-12 12:32:29.000000000 -0400
@@ -2,6 +2,8 @@
#include <cstdio>
#include <cstdlib>
#include <cstring>
+#include <unistd.h>
+#include <zlib.h>
#include "freetype/freetype.h"
#include "ttmkfdir.h"
@@ -32,9 +34,16 @@
NextFile (FILE *f, char *name)
{
char file_name [1024];
- char command[1024];
+ char line_buf [1024];
+ char tmp_file_name[] = "/tmp/ttmkfdir_XXXXXX";
+ char inbuf[300000];
+ FILE *od;
+ gzFile fd;
+ int rvalue, tmpfd;
- if (fscanf (f, "%*s %[^\n]\n", file_name) == 1) {
+ if (fgets (line_buf, sizeof(line_buf), f) != NULL) {
+
+ sscanf (line_buf, "%*s %[^\n]\n", file_name);
if (file_name[0] == '/') {
name[0] = 0;
@@ -44,9 +53,25 @@
strcat (name, file_name);
- sprintf (command, "exec %s < %s", (toupper(name[strlen (name) - 1]) == 'Z')
- ? "gzip -d" : "cat", name);
- return popen (command, "r");
+ bzero(inbuf, sizeof(inbuf));
+
+ fd = gzopen (name,"rb");
+ rvalue = gzread (fd, inbuf, sizeof(inbuf));
+
+ tmpfd = mkstemp (tmp_file_name);
+ if (tmpfd == -1) {
+ return 0;
+ }
+
+ od = fdopen (tmpfd,"w");
+ fputs (inbuf, od);
+ fflush (od);
+ fclose (od);
+
+ od = fopen (tmp_file_name,"r");
+ unlink (tmp_file_name);
+ return od;
+
}
return 0;
@@ -75,7 +100,7 @@
yyrestart (input);
yylex (name, *this);
- pclose (input);
+ fclose (input);
}
fclose (f);
diff -uNr ttmkfdir-3.0.9.orig/Makefile ttmkfdir-3.0.9/Makefile
--- ttmkfdir-3.0.9.orig/Makefile 2003-08-21 17:43:13.000000000 +1000
+++ ttmkfdir-3.0.9/Makefile 2003-08-21 17:40:16.000000000 +1000
@@ -28,7 +28,7 @@
DEBUG=-ggdb
CXX=g++
CXXFLAGS=-Wall -pedantic $(FREETYPE_INCL) $(DEBUG) $(OPTFLAGS)
-LDFLAGS=$(FREETYPE_LIB) $(DEBUG)
+LDFLAGS=$(FREETYPE_LIB) $(DEBUG) -lz
DESTDIR=
PREFIX=/usr

81
ttmkfdir.spec Normal file
View File

@ -0,0 +1,81 @@
Name: ttmkfdir
Version: 3.0.9
Release: 1mamba
Summary: Utility used to create fonts.scale files for truetype fonts
Group: System/Tools
Vendor: openmamba
Distribution: openmamba
Packager: gil <puntogil@libero.it>
##URL: http://www.joerg-pommnitz.de/TrueType/xfsft.html
URL: http://pravins.fedorapeople.org/ttmkfdir/
# Source: http://www.joerg-pommnitz.de/TrueType/ttmkfdir.tar.gz only binary available
# source from http://pravins.fedorapeople.org/ttmkfdir/ttmkfdir-3.0.9-28.fc10.src.rpm
# This is a Red Hat maintained package which is specific to
# our distribution. Thus the source is only available from
# within this srpm.
Source: ttmkfdir-%{version}.tar.bz2
Patch0: ttmkfdir-3.0.9-cpp.patch
Patch1: ttmkfdir-3.0.9-zlib.patch
Patch2: ttmkfdir-3.0.9-fix-freetype217.patch
Patch3: ttmkfdir-3.0.9-namespace.patch
Patch4: ttmkfdir-3.0.9-fix-crash.patch
Patch5: ttmkfdir-3.0.9-warnings.patch
Patch6: ttmkfdir-3.0.9-segfaults.patch
Patch7: ttmkfdir-3.0.9-mamba-encoding_dir.patch
Patch8: ttmkfdir-3.0.9-font-scale.patch
Patch9: ttmkfdir-3.0.9-bug434301.patch
##License: GPL, LGPL, MIT
License: LGPL
BuildRequires: flex
BuildRequires: libtool
## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel
BuildRequires: libfreetype-devel
BuildRequires: libgcc
BuildRequires: libstdc++6-devel
BuildRequires: libz-devel
## AUTOBUILDREQ-END
BuildRoot: %{_tmppath}/%{name}-%{version}-root
%description
ttmkfdir is a tool to create valid and complete fonts.dir files from TrueType fonts. It is very useful
when you plan to use a TrueType enabled font server that is based on the X11R6 sample
implementation (xfsft for instance). Great care has been taken to correctly identify the encodings
that a given TrueType font supports.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p0
%patch8 -p1
%patch9 -p1
sed -i "s|CXX=g++|CXX=%{__cxx}|" Makefile
%build
%make OPTFLAGS="%{optflags}"
%install
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
%makeinstall
%clean
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
%files
%defattr(-,root,root)
%{_bindir}/ttmkfdir
%doc README
%changelog
* Mon Jan 24 2011 gil <puntogil@libero.it> 3.0.9-1mamba
- package created by autospec