summaryrefslogtreecommitdiff
path: root/app/mkfontscale/mkfontscale.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/mkfontscale/mkfontscale.c')
-rw-r--r--app/mkfontscale/mkfontscale.c100
1 files changed, 52 insertions, 48 deletions
diff --git a/app/mkfontscale/mkfontscale.c b/app/mkfontscale/mkfontscale.c
index 31553cb5d..53c53031b 100644
--- a/app/mkfontscale/mkfontscale.c
+++ b/app/mkfontscale/mkfontscale.c
@@ -60,7 +60,7 @@
#define QUOTE(x) #x
#define STRINGIFY(x) QUOTE(x)
-static char *encodings_array[] =
+static const char *encodings_array[] =
{ "ascii-0",
"iso8859-1", "iso8859-2", "iso8859-3", "iso8859-4", "iso8859-5",
"iso8859-6", "iso8859-6.8", "iso8859-6.8x", "iso8859-6.16",
@@ -79,20 +79,20 @@ static char *encodings_array[] =
"gb2312.1980-0", "gb18030.2000-0", "gb18030.2000-1",
"ksc5601.1987-0", "ksc5601.1992-3"};
-static char *extra_encodings_array[] =
+static const char *extra_encodings_array[] =
{ "iso10646-1", "adobe-fontspecific", "microsoft-symbol" };
static ListPtr encodings, extra_encodings;
-static char *outfilename;
+static const char *outfilename;
#define countof(_a) (sizeof(_a)/sizeof((_a)[0]))
-static int doDirectory(char*, int, ListPtr);
+static int doDirectory(const char*, int, ListPtr);
static int checkEncoding(FT_Face face, char *encoding_name);
static int checkExtraEncoding(FT_Face face, char *encoding_name, int found);
static int find_cmap(int type, int pid, int eid, FT_Face face);
-static char* notice_foundry(char *notice);
-static char* vendor_foundry(signed char *vendor);
+static const char* notice_foundry(const char *notice);
+static const char* vendor_foundry(const signed char *vendor);
static int readFontScale(HashTablePtr entries, char *dirname);
ListPtr makeXLFD(char *filename, FT_Face face, int);
static int readEncodings(ListPtr encodings, char *dirname);
@@ -113,7 +113,7 @@ static char *exclusionSuffix;
static void
usage(void)
{
- fprintf(stderr,
+ fprintf(stderr,
"mkfontscale [ -b ] [ -s ] [ -o filename ] [-x suffix ]\n"
" [ -a encoding ] [ -f fuzz ] [ -l ] "
" [ -e directory ] [ -p prefix ] [ -n ] [ -r ] \n"
@@ -143,7 +143,7 @@ main(int argc, char **argv)
encodings = makeList(encodings_array, countof(encodings_array), NULL, 0);
- extra_encodings = makeList(extra_encodings_array,
+ extra_encodings = makeList(extra_encodings_array,
countof(extra_encodings_array),
NULL, 0);
doBitmaps = 0;
@@ -204,7 +204,7 @@ main(int argc, char **argv)
argn++;
} else if(strcmp(argv[argn], "-U") == 0) {
doISO10646_1_encoding = 1;
- argn++;
+ argn++;
} else if(strcmp(argv[argn], "-s") == 0) {
doScalable = 0;
argn++;
@@ -244,7 +244,7 @@ main(int argc, char **argv)
if(outfilename == NULL) {
if(doBitmaps)
outfilename = "fonts.dir";
- else
+ else
outfilename = "fonts.scale";
}
@@ -313,9 +313,9 @@ getName(FT_Face face, int nid)
char *string;
int i;
- if(getNameHelper(face, nid,
+ if(getNameHelper(face, nid,
TT_PLATFORM_MICROSOFT, TT_MS_ID_UNICODE_CS, &name) ||
- getNameHelper(face, nid,
+ getNameHelper(face, nid,
TT_PLATFORM_APPLE_UNICODE, -1, &name)) {
string = malloc(name.string_len / 2 + 1);
if(string == NULL) {
@@ -348,7 +348,7 @@ getName(FT_Face face, int nid)
return NULL;
}
-static char*
+static const char*
os2Weight(int weight)
{
if(weight < 150)
@@ -367,11 +367,11 @@ os2Weight(int weight)
return "bold";
else if(weight < 850)
return "extrabold";
- else
+ else
return "black";
}
-static char*
+static const char*
os2Width(int width)
{
if(width <= 1)
@@ -394,15 +394,15 @@ os2Width(int width)
return "ultraexpanded";
}
-static char *widths[] = {
+static const char *widths[] = {
"ultracondensed", "extracondensed", "condensed", "semicondensed",
- "normal", "semiexpanded", "expanded", "extraexpanded", "ultraexpanded"
+ "normal", "semiexpanded", "expanded", "extraexpanded", "ultraexpanded"
};
#define NUMWIDTHS (sizeof(widths) / sizeof(widths[0]))
-static char*
-nameWidth(char *name)
+static const char*
+nameWidth(const char *name)
{
char buf[500];
int i;
@@ -419,13 +419,15 @@ nameWidth(char *name)
return NULL;
}
-static char*
-t1Weight(char *weight)
+static const char*
+t1Weight(const char *weight)
{
if(!weight)
return NULL;
if(strcmp(weight, "Thin") == 0)
return "thin";
+ if(strcmp(weight, "ExtraLight") == 0) /* FontForge uses this for 200*/
+ return "extralight";
if(strcmp(weight, "Light") == 0)
return "light";
if(strcmp(weight, "Regular") == 0)
@@ -446,6 +448,8 @@ t1Weight(char *weight)
return "semibold";
else if(strcmp(weight, "Bold") == 0)
return "bold";
+ else if(strcmp(weight, "Heavy") == 0) /* FontForge uses this for 800*/
+ return "extrabold";
else if(strcmp(weight, "Black") == 0)
return "black";
else {
@@ -457,13 +461,13 @@ t1Weight(char *weight)
static int
unsafe(char c)
{
- return
+ return
c < 0x20 || c > 0x7E ||
c == '[' || c == ']' || c == '(' || c == ')' || c == '\\' || c == '-';
}
-static char *
-safe(char* s)
+static const char *
+safe(const char* s)
{
int i, len, safe_flag = 1;
char *t;
@@ -498,7 +502,7 @@ ListPtr
makeXLFD(char *filename, FT_Face face, int isBitmap)
{
ListPtr xlfd = NULL;
- char *foundry, *family, *weight, *slant, *sWidth, *adstyle,
+ const char *foundry, *family, *weight, *slant, *sWidth, *adstyle,
*spacing, *full_name;
TT_Header *head;
TT_HoriHeader *hhea;
@@ -526,7 +530,7 @@ makeXLFD(char *filename, FT_Face face, int isBitmap)
t1info = &t1info_rec;
else
t1info = NULL;
-
+
if(!family)
family = getName(face, TT_NAME_ID_FONT_FAMILY);
if(!family)
@@ -564,7 +568,7 @@ makeXLFD(char *filename, FT_Face face, int isBitmap)
}
}
}
-
+
if(t1info) {
if(!family)
family = t1info->family_name;
@@ -750,7 +754,7 @@ filePrio(char *filename)
}
static int
-doDirectory(char *dirname_given, int numEncodings, ListPtr encodingsToDo)
+doDirectory(const char *dirname_given, int numEncodings, ListPtr encodingsToDo)
{
char *dirname, *fontscale_name, *filename, *encdir;
FILE *fontscale, *encfile;
@@ -780,9 +784,9 @@ doDirectory(char *dirname_given, int numEncodings, ListPtr encodingsToDo)
exit(1);
}
- if (onlyEncodings)
+ if (onlyEncodings)
goto encodings;
-
+
entries = makeHashTable();
if(doBitmaps && !doScalable) {
readFontScale(entries, dirname);
@@ -858,7 +862,7 @@ doDirectory(char *dirname_given, int numEncodings, ListPtr encodingsToDo)
isBitmap = 1;
}
}
-
+
if(isBitmap) {
if(!doBitmaps)
goto done;
@@ -929,7 +933,7 @@ doDirectory(char *dirname_given, int numEncodings, ListPtr encodingsToDo)
putHash(entries, buf, entry->d_name, filePrio(entry->d_name));
}
}
- for(encoding = extra_encodings; encoding;
+ for(encoding = extra_encodings; encoding;
encoding = encoding->next) {
if(checkExtraEncoding(face, encoding->value, found)) {
/* Do not set found! */
@@ -990,7 +994,7 @@ doDirectory(char *dirname_given, int numEncodings, ListPtr encodingsToDo)
#define CODE_IGNORED(c) ((c) < 0x20 || \
((c) >= 0x7F && (c) <= 0xA0) || \
(c) == 0xAD || (c) == 0xF71B)
-
+
static int
checkEncoding(FT_Face face, char *encoding_name)
{
@@ -1006,7 +1010,7 @@ checkEncoding(FT_Face face, char *encoding_name)
/* An encoding is ``small'' if one of the following is true:
- it is linear and has no more than 256 codepoints; or
- it is a matrix encoding and has no more than one column.
-
+
For small encodings using Unicode indices, we require perfect
coverage except for CODE_IGNORED and KOI-8 IBM-PC compatibility.
@@ -1021,8 +1025,8 @@ checkEncoding(FT_Face face, char *encoding_name)
if(mapping->type == FONT_ENCODING_POSTSCRIPT) {
if(encoding->row_size > 0) {
for(i = encoding->first; i < encoding->size; i++) {
- for(j = encoding->first_col;
- j < encoding->row_size;
+ for(j = encoding->first_col;
+ j < encoding->row_size;
j++) {
n = FontEncName((i<<8) | j, mapping);
if(n && FT_Get_Name_Index(face, n) == 0) {
@@ -1048,12 +1052,12 @@ checkEncoding(FT_Face face, char *encoding_name)
if(find_cmap(mapping->type, mapping->pid, mapping->eid, face)) {
int total = 0, failed = 0;
if(encoding->row_size > 0) {
- int estimate =
+ int estimate =
(encoding->size - encoding->first) *
(encoding->row_size - encoding->first_col);
for(i = encoding->first; i < encoding->size; i++) {
- for(j = encoding->first_col;
- j < encoding->row_size;
+ for(j = encoding->first_col;
+ j < encoding->row_size;
j++) {
c = FontEncRecode((i<<8) | j, mapping);
if(CODE_IGNORED(c)) {
@@ -1108,7 +1112,7 @@ checkEncoding(FT_Face face, char *encoding_name)
return 0;
}
-static int
+static int
find_cmap(int type, int pid, int eid, FT_Face face)
{
int i, n, rc;
@@ -1131,7 +1135,7 @@ find_cmap(int type, int pid, int eid, FT_Face face)
/* prefer Microsoft Unicode */
for(i=0; i<n; i++) {
cmap = face->charmaps[i];
- if(cmap->platform_id == TT_PLATFORM_MICROSOFT &&
+ if(cmap->platform_id == TT_PLATFORM_MICROSOFT &&
cmap->encoding_id == TT_MS_ID_UNICODE_CS) {
rc = FT_Set_Charmap(face, cmap);
if(rc == 0)
@@ -1205,8 +1209,8 @@ checkExtraEncoding(FT_Face face, char *encoding_name, int found)
}
}
-static char*
-notice_foundry(char *notice)
+static const char*
+notice_foundry(const char *notice)
{
int i;
for(i = 0; i < countof(notice_foundries); i++)
@@ -1216,7 +1220,7 @@ notice_foundry(char *notice)
}
static int
-vendor_match(signed char *vendor, char *vendor_string)
+vendor_match(const signed char *vendor, const char *vendor_string)
{
/* vendor is not necessarily NUL-terminated. */
int i, len;
@@ -1229,8 +1233,8 @@ vendor_match(signed char *vendor, char *vendor_string)
return 1;
}
-static char*
-vendor_foundry(signed char *vendor)
+static const char*
+vendor_foundry(const signed char *vendor)
{
int i;
for(i = 0; i < countof(vendor_foundries); i++)
@@ -1263,7 +1267,7 @@ readEncodings(ListPtr encodings, char *dirname)
closedir(dirp);
return -1;
}
-
+
names = FontEncIdentify(fullname);
if(!names)
continue;
@@ -1280,7 +1284,7 @@ readEncodings(ListPtr encodings, char *dirname)
encodingsToDo = listConsF(encodingsToDo, "%s %s", *name, n);
free(n);
} else {
- encodingsToDo =
+ encodingsToDo =
listConsF(encodingsToDo, "%s %s", *name, fullname);
}
if(encodingsToDo == NULL) {