gcc14
OBS-URL: https://build.opensuse.org/package/show/graphics/xfig?expand=0&rev=86
This commit is contained in:
commit
79d6846c01
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
29
Fix-exporting-only-active-layers-ticket-163.patch
Normal file
29
Fix-exporting-only-active-layers-ticket-163.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From a4a2f3f3aa29ec7fc84f9d782306b37bbe75025c Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Loimer <thomas.loimer@tuwien.ac.at>
|
||||
Date: Sun, 31 Dec 2023 22:51:29 +0100
|
||||
Subject: [PATCH] Fix exporting only active layers, ticket #163
|
||||
|
||||
---
|
||||
src/u_print.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/u_print.c b/src/u_print.c
|
||||
index c24c096..57921b3 100644
|
||||
--- a/src/u_print.c
|
||||
+++ b/src/u_print.c
|
||||
@@ -861,10 +861,10 @@ build_layer_list(char *layers)
|
||||
}
|
||||
if (len < notlen && firstyes != -1) {
|
||||
/* use list of layers TO print */
|
||||
- sprintf(layers," -D +%s ",list);
|
||||
+ sprintf(layers, "+%s", list);
|
||||
} else if (firstno != -1){
|
||||
/* use list of layers to NOT print */
|
||||
- sprintf(layers," -D -%s ",notlist);
|
||||
+ sprintf(layers, "-%s", notlist);
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.39.2
|
||||
|
44
Sanitize-a-call-to-realloc-ticket-165.patch
Normal file
44
Sanitize-a-call-to-realloc-ticket-165.patch
Normal file
@ -0,0 +1,44 @@
|
||||
From 68403622a6f6c7d74f73e38989cfc0ed86fb83fc Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Loimer <thomas.loimer@tuwien.ac.at>
|
||||
Date: Sun, 31 Dec 2023 15:18:45 +0100
|
||||
Subject: [PATCH] Sanitize a call to realloc(), ticket #165
|
||||
|
||||
---
|
||||
src/u_print.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/u_print.c b/src/u_print.c
|
||||
index 2ed385f..c24c096 100644
|
||||
--- a/src/u_print.c
|
||||
+++ b/src/u_print.c
|
||||
@@ -130,7 +130,7 @@ start_argumentlist(char *arg[restrict], char argbuf[restrict][ARGBUF_SIZE],
|
||||
arg[0] = fig2dev_cmd;
|
||||
arg[1] = "-L";
|
||||
*a = 2; /* arg[2] will be the output language */
|
||||
- if (appres.magnification < 99.99 | appres.magnification > 100.01) {
|
||||
+ if (appres.magnification < 99.99 || appres.magnification > 100.01) {
|
||||
int n;
|
||||
arg[++*a] = "-m";
|
||||
n = snprintf(argbuf[++*b], ARGBUF_SIZE,
|
||||
@@ -531,6 +531,7 @@ print_export(char *file, int xoff, int yoff, char *backgrnd, char *transparent,
|
||||
} else if (cur_exp_lang == LANG_PSTEX ||
|
||||
cur_exp_lang == LANG_PDFTEX) {
|
||||
size_t len = strlen(outfile);
|
||||
+ char *s;
|
||||
|
||||
/* Options were already set above
|
||||
- output the first file */
|
||||
@@ -544,8 +545,9 @@ print_export(char *file, int xoff, int yoff, char *backgrnd, char *transparent,
|
||||
goto free_outfile;
|
||||
}
|
||||
memcpy(tmp_name, outfile, len + 1);
|
||||
- if (!realloc(outfile, len + 3)) {
|
||||
+ if (!(outfile = realloc(s = outfile, len + 3))) {
|
||||
ret = 1;
|
||||
+ outfile = s; /* for free(outfile) below */
|
||||
goto free_tmp_name;
|
||||
}
|
||||
strcpy(outfile + len, "_t");
|
||||
--
|
||||
2.39.2
|
||||
|
46
font-test.fig
Normal file
46
font-test.fig
Normal file
@ -0,0 +1,46 @@
|
||||
#FIG 3.2
|
||||
Landscape
|
||||
Center
|
||||
Metric
|
||||
A4
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 12330 31770 162 162 12330 31770 12465 31860
|
||||
1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 495 -540 142 142 495 -540 630 -495
|
||||
4 0 0 50 0 0 50 0.0000 4 150 1230 450 1000 Times-Roman\001
|
||||
4 0 0 50 0 1 50 0.0000 4 150 1065 450 2000 Times-Italic\001
|
||||
4 0 0 50 0 2 50 0.0000 4 150 1095 450 3000 Times-Bold\001
|
||||
4 0 0 50 0 4 50 0.0000 4 135 1350 450 5000 AvantGarde-Book\001
|
||||
4 0 0 50 0 5 50 0.0000 4 165 1980 450 6000 AvantGarde-BookOblique\001
|
||||
4 0 0 50 0 6 50 0.0000 4 135 1350 450 7000 AvantGarde-Demi\001
|
||||
4 0 0 50 0 7 50 0.0000 4 165 1980 450 8000 AvantGarde-DemiOblique\001
|
||||
4 0 0 50 0 8 50 0.0000 4 165 1170 450 9000 Bookman-Light\001
|
||||
4 0 0 50 0 9 50 0.0000 4 165 1710 450 10000 Bookman-LightItalic\001
|
||||
4 0 0 50 0 10 50 0.0000 4 135 1080 450 11000 Bookman-Demi\001
|
||||
4 0 0 50 0 11 50 0.0000 4 135 1620 450 12000 Bookman-DemiItalic\001
|
||||
4 0 0 50 0 12 50 0.0000 4 150 945 450 13000 Courier\001
|
||||
4 0 0 50 0 13 50 0.0000 4 195 2025 450 14000 Courier-Oblique\001
|
||||
4 0 0 50 0 14 50 0.0000 4 150 1620 450 15000 Courier-Bold\001
|
||||
4 0 0 50 0 15 50 0.0000 4 195 2565 450 16000 Courier-BoldOblique\001
|
||||
4 0 0 50 0 16 50 0.0000 4 165 900 450 17000 Helvetica\001
|
||||
4 0 0 50 0 17 50 0.0000 4 210 1740 450 18000 Helvetica-Oblique\001
|
||||
4 0 0 50 0 18 50 0.0000 4 165 1500 450 19000 Helvetica-Bold\001
|
||||
4 0 0 50 0 19 50 0.0000 4 210 2310 450 20000 Helvetica-BoldOblique\001
|
||||
4 0 0 50 0 20 50 0.0000 4 135 1440 450 21000 Helvetica-Narrow\001
|
||||
4 0 0 50 0 21 50 0.0000 4 165 2160 450 22000 Helvetica-Narrow-Oblique\001
|
||||
4 0 0 50 0 22 50 0.0000 4 135 1890 450 23000 Helvetica-Narrow-Bold\001
|
||||
4 0 0 50 0 23 50 0.0000 4 165 2520 450 24000 Helvetica-Narrow-BoldOblique\001
|
||||
4 0 0 50 0 24 50 0.0000 4 210 2805 450 25000 NewCenturySchlbk-Roman\001
|
||||
4 0 0 50 0 25 50 0.0000 4 210 2475 450 26000 NewCenturySchlbk-Italic\001
|
||||
4 0 0 50 0 26 50 0.0000 4 210 2760 450 27000 NewCenturySchlbk-Bold\001
|
||||
4 0 0 50 0 27 50 0.0000 4 210 3315 450 28000 NewCenturySchlbk-BoldItalic\001
|
||||
4 0 0 50 0 28 50 0.0000 4 135 1260 450 29000 Palatino-Roman\001
|
||||
4 0 0 50 0 29 50 0.0000 4 135 1350 450 30000 Palatino-Italic\001
|
||||
4 0 0 50 0 30 50 0.0000 4 135 1170 450 31000 Palatino-Bold\001
|
||||
4 0 0 50 0 31 50 0.0000 4 135 1710 450 32000 Palatino-BoldItalic\001
|
||||
4 0 0 50 0 32 50 0.0000 4 360 1275 450 33000 Symbol\001
|
||||
4 0 0 50 0 33 50 0.0000 4 165 2250 450 34000 ZapfChancery-MediumItalic\001
|
||||
4 0 0 50 0 34 50 0.0000 4 165 1080 450 35000 ZapfDingbats\001
|
||||
4 0 0 50 0 3 50 0.0000 4 150 1515 450 4000 Times-BoldItalic\001
|
58
xfig-3.2.6.dif
Normal file
58
xfig-3.2.6.dif
Normal file
@ -0,0 +1,58 @@
|
||||
---
|
||||
app-defaults/Fig | 30 ++++++++++++++++++++++++++++--
|
||||
1 file changed, 28 insertions(+), 2 deletions(-)
|
||||
|
||||
--- app-defaults/Fig
|
||||
+++ app-defaults/Fig 2023-09-13 09:21:18.377983211 +0000
|
||||
@@ -15,6 +15,7 @@
|
||||
! The following fixes a problem that some window managers have
|
||||
! with xfig continually resizing itself
|
||||
Fig*AllowShellResize: False
|
||||
+Fig.inches: False
|
||||
|
||||
! Image editor - can edit imported image
|
||||
Fig.image_editor: xdg-open
|
||||
@@ -166,8 +167,11 @@ Fig*canvas.shadowWidth: 0
|
||||
|
||||
! If on monochrome server, or no Fig-color app-defaults file
|
||||
! This background resource shows between the buttons like a border
|
||||
-Fig*mode_panel.background: black
|
||||
+Fig*mode_panel.background: gray67
|
||||
Fig*mode_panel.foreground: black
|
||||
+Fig*mode_panel*topShadow: white
|
||||
+Fig*mode_panel*topShadowPixel: white
|
||||
+Fig*mode_panel*bottomShadowPixel: gray17
|
||||
|
||||
! Specify a private Compose key database file. If this resource contains a "/"
|
||||
! then the wired-in name of the xfig global directory will not be prefixed
|
||||
@@ -638,7 +642,29 @@ Fig*sideruler.background: gray95
|
||||
! file panel and scrollbar
|
||||
Fig*FigList*background: gray95
|
||||
Fig*List*background: gray95
|
||||
-Fig*Scrollbar.background: gray80
|
||||
+Fig*Scrollbar.background: gray77
|
||||
+
|
||||
+Fig*Scrollbar.foreground: gray37
|
||||
+Fig*ScrollbarBackground: gray67
|
||||
+Fig*ScrollbarForeground: gray37
|
||||
+
|
||||
+Fig*horizontal.shadowWidth: 2
|
||||
+Fig*horizontal.topShadowPixel: gray95
|
||||
+Fig*horizontal.bottomShadowPixel: gray37
|
||||
+Fig*horizontal.topShadow: gray95
|
||||
+Fig*horizontal.bottomShadow: gray37
|
||||
+
|
||||
+Fig*Scrollbar.shadowWidth: 2
|
||||
+Fig*Scrollbar.topShadow: gray95
|
||||
+Fig*Scrollbar.bottomShadow: gray37
|
||||
+Fig*Scrollbar.topShadowPixel: gray95
|
||||
+Fig*Scrollbar.bottomShadowPixel: gray37
|
||||
+
|
||||
+Fig*stdColor.shadowWidth: 2
|
||||
+Fig*stdColor.topShadow: gray95
|
||||
+Fig*stdColor.bottomShadow: gray37
|
||||
+Fig*stdColor.topShadowPixel: gray95
|
||||
+Fig*stdColor.bottomShadowPixel: gray37
|
||||
|
||||
Fig*Label.background: gray80
|
||||
Fig*ind_box.background: gray80
|
619
xfig-3.2.9-dingbats.dif
Normal file
619
xfig-3.2.9-dingbats.dif
Normal file
@ -0,0 +1,619 @@
|
||||
---
|
||||
src/u_fonts.c | 497 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
|
||||
src/u_fonts.h | 11 +
|
||||
src/w_drawprim.c | 17 +
|
||||
3 files changed, 513 insertions(+), 12 deletions(-)
|
||||
|
||||
--- src/u_fonts.c
|
||||
+++ src/u_fonts.c 2023-09-19 10:03:39.825796406 +0000
|
||||
@@ -124,9 +124,9 @@ const char *const xft_name[NUM_FONTS] =
|
||||
"palatino:italic", /* Palatino-Italic */
|
||||
"palatino:bold", /* Palatino-Bold */
|
||||
"palatino:bold:italic", /* Palatino-BoldItalic */
|
||||
- "symbol", /* Symbol */
|
||||
+ "symbol,StandardSymbolsPS,StandardSymbolsL", /* Symbol */
|
||||
"zapfchancery:medium:italic", /* ZapfChancery-MediumItalic */
|
||||
- "zapfdingbats" /* ZapfDingbats */
|
||||
+ "zapfdingbats,ITCZapfDingbats,Dingbats,D050000L" /* ZapfDingbats */
|
||||
};
|
||||
|
||||
|
||||
@@ -307,6 +307,7 @@ textextents(F_text *t)
|
||||
{
|
||||
XGlyphInfo extents;
|
||||
XftFont *rotfont;
|
||||
+ map_f map = NULL;
|
||||
int len = (int)strlen(t->cstring);
|
||||
|
||||
/* shortcut, nothing to do for an empty string */
|
||||
@@ -325,8 +326,20 @@ textextents(F_text *t)
|
||||
/* Get the font at native Fig resolution (often, 1200 ppi) */
|
||||
rotfont = getfont(psfont_text(t), t->font, t->size * ZOOM_FACTOR,
|
||||
(double)t->angle);
|
||||
- XftTextExtentsUtf8(tool_d, rotfont, (XftChar8 *)t->cstring, len,
|
||||
- &extents);
|
||||
+ if ((map = adobe_charset(rotfont))) {
|
||||
+ XftChar32 glyphs[len], *glyph;
|
||||
+ XftChar8 *s = (XftChar8 *)t->cstring;
|
||||
+ int glen = 0;
|
||||
+
|
||||
+ for (XftChar8 *chr = s; chr < s+len; chr++) {
|
||||
+ XftChar32 glyph = XftCharIndex(tool_d, rotfont, map(*chr));
|
||||
+ if (glyph)
|
||||
+ glyphs[glen++] = glyph;
|
||||
+ }
|
||||
+ XftGlyphExtents(tool_d, rotfont, glyphs, glen, &extents);
|
||||
+ } else
|
||||
+ XftTextExtentsUtf8(tool_d, rotfont, (XftChar8 *)t->cstring, len,
|
||||
+ &extents);
|
||||
/* libxft keeps the last 16, closed fonts in cache.
|
||||
Hence, no need to keep rotfont open, in our own cache. */
|
||||
closefont(rotfont);
|
||||
@@ -409,13 +422,26 @@ textextents(F_text *t)
|
||||
} else {
|
||||
/* a font at an angle */
|
||||
XftFont *horfont;
|
||||
+ map_f map = NULL;
|
||||
double cosa, sina;
|
||||
struct f_pos tl, bl, tr, br;
|
||||
|
||||
horfont = getfont(psfont_text(t), t->font,
|
||||
t->size * ZOOM_FACTOR, 0.0);
|
||||
- XftTextExtentsUtf8(tool_d, horfont, (XftChar8 *)t->cstring, len,
|
||||
- &extents);
|
||||
+ if ((map = adobe_charset(horfont))) {
|
||||
+ XftChar32 glyphs[len], *glyph;
|
||||
+ XftChar8 *s = (XftChar8 *)t->cstring;
|
||||
+ int glen = 0;
|
||||
+
|
||||
+ for (XftChar8 *chr = s; chr < s+len; chr++) {
|
||||
+ XftChar32 glyph = XftCharIndex(tool_d, horfont, map(*chr));
|
||||
+ if (glyph)
|
||||
+ glyphs[glen++] = glyph;
|
||||
+ }
|
||||
+ XftGlyphExtents(tool_d, horfont, glyphs, glen, &extents);
|
||||
+ } else
|
||||
+ XftTextExtentsUtf8(tool_d, horfont, (XftChar8 *)t->cstring,
|
||||
+ len, &extents);
|
||||
/* See above, libxft keeps a cache of 16 closed fonts. */
|
||||
closefont(horfont);
|
||||
|
||||
@@ -453,11 +479,24 @@ int
|
||||
textlength(XftFont *horfont, XftChar8 *string, int len)
|
||||
{
|
||||
XGlyphInfo extents;
|
||||
+ map_f map = NULL;
|
||||
|
||||
if (len == 0)
|
||||
return 0;
|
||||
|
||||
- XftTextExtentsUtf8(tool_d, horfont, string, len, &extents);
|
||||
+ if ((map = adobe_charset(horfont))) {
|
||||
+ XftChar32 glyphs[len], *glyph;
|
||||
+ XftChar8 *chr, *s = string;
|
||||
+ int glen = 0;
|
||||
+
|
||||
+ for (XftChar8 *chr = s; chr < s+len; chr++) {
|
||||
+ XftChar32 glyph = XftCharIndex(tool_d, horfont, map(*chr));
|
||||
+ if (glyph)
|
||||
+ glyphs[glen++] = glyph;
|
||||
+ }
|
||||
+ XftGlyphExtents(tool_d, horfont, glyphs, glen, &extents);
|
||||
+ } else
|
||||
+ XftTextExtentsUtf8(tool_d, horfont, string, len, &extents);
|
||||
return (int)extents.xOff;
|
||||
}
|
||||
|
||||
@@ -473,16 +512,29 @@ textmaxheight(int psflag, int font, int
|
||||
XGlyphInfo extents;
|
||||
XftFont *horfont;
|
||||
XftChar8 max_height_str[] = "{|(fgjOÜ";
|
||||
+ map_f map = NULL;
|
||||
+ size_t len = sizeof(max_height_str);
|
||||
|
||||
horfont = getfont(psflag, font, size * ZOOM_FACTOR, 0.0);
|
||||
- XftTextExtentsUtf8(tool_d, horfont, max_height_str,
|
||||
- (int)sizeof(max_height_str), &extents);
|
||||
+ if ((map = adobe_charset(horfont))) {
|
||||
+ XftChar32 glyphs[len], *glyph;
|
||||
+ XftChar8 *s = max_height_str;
|
||||
+ int glen = 0;
|
||||
+
|
||||
+ for (XftChar8 *chr = s; chr < s+len; chr++) {
|
||||
+ XftChar32 glyph = XftCharIndex(tool_d, horfont, map(*chr));
|
||||
+ if (glyph)
|
||||
+ glyphs[glen++] = glyph;
|
||||
+ }
|
||||
+ XftGlyphExtents(tool_d, horfont, glyphs, glen, &extents);
|
||||
+ } else
|
||||
+ XftTextExtentsUtf8(tool_d, horfont, max_height_str,
|
||||
+ (int)len, &extents);
|
||||
closefont(horfont);
|
||||
*ascent = extents.y;
|
||||
*descent = extents.height - extents.y;
|
||||
}
|
||||
|
||||
-
|
||||
/*
|
||||
* Return the drawing origin, given the marker position (base_x, base_y)
|
||||
* and the alignment.
|
||||
@@ -510,3 +562,428 @@ text_origin(int *draw_x, int *draw_y, in
|
||||
break;
|
||||
}
|
||||
}
|
||||
+/*
|
||||
+ * Unicode mapping found in
|
||||
+ * /usr/share/fonts/encodings/adobe-dingbats.enc.gz
|
||||
+ */
|
||||
+XftChar32 map_dingbats(XftChar8 in)
|
||||
+{
|
||||
+ switch (in) {
|
||||
+ case 0x20: return 0x0020; /* SPACE */
|
||||
+ case 0x21: return 0x2701; /* UPPER BLADE SCISSORS */
|
||||
+ case 0x22: return 0x2702; /* BLACK SCISSORS */
|
||||
+ case 0x23: return 0x2703; /* LOWER BLADE SCISSORS */
|
||||
+ case 0x24: return 0x2704; /* WHITE SCISSORS */
|
||||
+ case 0x25: return 0x260E; /* BLACK TELEPHONE */
|
||||
+ case 0x26: return 0x2706; /* TELEPHONE LOCATION SIGN */
|
||||
+ case 0x27: return 0x2707; /* TAPE DRIVE */
|
||||
+ case 0x28: return 0x2708; /* AIRPLANE */
|
||||
+ case 0x29: return 0x2709; /* ENVELOPE */
|
||||
+ case 0x2A: return 0x261B; /* BLACK RIGHT POINTING INDEX */
|
||||
+ case 0x2B: return 0x261E; /* WHITE RIGHT POINTING INDEX */
|
||||
+ case 0x2C: return 0x270C; /* VICTORY HAND */
|
||||
+ case 0x2D: return 0x270D; /* WRITING HAND */
|
||||
+ case 0x2E: return 0x270E; /* LOWER RIGHT PENCIL */
|
||||
+ case 0x2F: return 0x270F; /* PENCIL */
|
||||
+ case 0x30: return 0x2710; /* UPPER RIGHT PENCIL */
|
||||
+ case 0x31: return 0x2711; /* WHITE NIB */
|
||||
+ case 0x32: return 0x2712; /* BLACK NIB */
|
||||
+ case 0x33: return 0x2713; /* CHECK MARK */
|
||||
+ case 0x34: return 0x2714; /* HEAVY CHECK MARK */
|
||||
+ case 0x35: return 0x2715; /* MULTIPLICATION X */
|
||||
+ case 0x36: return 0x2716; /* HEAVY MULTIPLICATION X */
|
||||
+ case 0x37: return 0x2717; /* BALLOT X */
|
||||
+ case 0x38: return 0x2718; /* HEAVY BALLOT X */
|
||||
+ case 0x39: return 0x2719; /* OUTLINED GREEK CROSS */
|
||||
+ case 0x3A: return 0x271A; /* HEAVY GREEK CROSS */
|
||||
+ case 0x3B: return 0x271B; /* OPEN CENTRE CROSS */
|
||||
+ case 0x3C: return 0x271C; /* HEAVY OPEN CENTRE CROSS */
|
||||
+ case 0x3D: return 0x271D; /* LATIN CROSS */
|
||||
+ case 0x3E: return 0x271E; /* SHADOWED WHITE LATIN CROSS */
|
||||
+ case 0x3F: return 0x271F; /* OUTLINED LATIN CROSS */
|
||||
+ case 0x40: return 0x2720; /* MALTESE CROSS */
|
||||
+ case 0x41: return 0x2721; /* STAR OF DAVID */
|
||||
+ case 0x42: return 0x2722; /* FOUR TEARDROP-SPOKED ASTERISK */
|
||||
+ case 0x43: return 0x2723; /* FOUR BALLOON-SPOKED ASTERISK */
|
||||
+ case 0x44: return 0x2724; /* HEAVY FOUR BALLOON-SPOKED ASTERISK */
|
||||
+ case 0x45: return 0x2725; /* FOUR CLUB-SPOKED ASTERISK */
|
||||
+ case 0x46: return 0x2726; /* BLACK FOUR POINTED STAR */
|
||||
+ case 0x47: return 0x2727; /* WHITE FOUR POINTED STAR */
|
||||
+ case 0x48: return 0x2605; /* BLACK STAR */
|
||||
+ case 0x49: return 0x2729; /* STRESS OUTLINED WHITE STAR */
|
||||
+ case 0x4A: return 0x272A; /* CIRCLED WHITE STAR */
|
||||
+ case 0x4B: return 0x272B; /* OPEN CENTRE BLACK STAR */
|
||||
+ case 0x4C: return 0x272C; /* BLACK CENTRE WHITE STAR */
|
||||
+ case 0x4D: return 0x272D; /* OUTLINED BLACK STAR */
|
||||
+ case 0x4E: return 0x272E; /* HEAVY OUTLINED BLACK STAR */
|
||||
+ case 0x4F: return 0x272F; /* PINWHEEL STAR */
|
||||
+ case 0x50: return 0x2730; /* SHADOWED WHITE STAR */
|
||||
+ case 0x51: return 0x2731; /* HEAVY ASTERISK */
|
||||
+ case 0x52: return 0x2732; /* OPEN CENTRE ASTERISK */
|
||||
+ case 0x53: return 0x2733; /* EIGHT SPOKED ASTERISK */
|
||||
+ case 0x54: return 0x2734; /* EIGHT POINTED BLACK STAR */
|
||||
+ case 0x55: return 0x2735; /* EIGHT POINTED PINWHEEL STAR */
|
||||
+ case 0x56: return 0x2736; /* SIX POINTED BLACK STAR */
|
||||
+ case 0x57: return 0x2737; /* EIGHT POINTED RECTILINEAR BLACK STAR */
|
||||
+ case 0x58: return 0x2738; /* HEAVY EIGHT POINTED RECTILINEAR BLACK STAR */
|
||||
+ case 0x59: return 0x2739; /* TWELVE POINTED BLACK STAR */
|
||||
+ case 0x5A: return 0x273A; /* SIXTEEN POINTED ASTERISK */
|
||||
+ case 0x5B: return 0x273B; /* TEARDROP-SPOKED ASTERISK */
|
||||
+ case 0x5C: return 0x273C; /* OPEN CENTRE TEARDROP-SPOKED ASTERISK */
|
||||
+ case 0x5D: return 0x273D; /* HEAVY TEARDROP-SPOKED ASTERISK */
|
||||
+ case 0x5E: return 0x273E; /* SIX PETALLED BLACK AND WHITE FLORETTE */
|
||||
+ case 0x5F: return 0x273F; /* BLACK FLORETTE */
|
||||
+ case 0x60: return 0x2740; /* WHITE FLORETTE */
|
||||
+ case 0x61: return 0x2741; /* EIGHT PETALLED OUTLINED BLACK FLORETTE */
|
||||
+ case 0x62: return 0x2742; /* CIRCLED OPEN CENTRE EIGHT POINTED STAR */
|
||||
+ case 0x63: return 0x2743; /* HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK */
|
||||
+ case 0x64: return 0x2744; /* SNOWFLAKE */
|
||||
+ case 0x65: return 0x2745; /* TIGHT TRIFOLIATE SNOWFLAKE */
|
||||
+ case 0x66: return 0x2746; /* HEAVY CHEVRON SNOWFLAKE */
|
||||
+ case 0x67: return 0x2747; /* SPARKLE */
|
||||
+ case 0x68: return 0x2748; /* HEAVY SPARKLE */
|
||||
+ case 0x69: return 0x2749; /* BALLOON-SPOKED ASTERISK */
|
||||
+ case 0x6A: return 0x274A; /* EIGHT TEARDROP-SPOKED PROPELLER ASTERISK */
|
||||
+ case 0x6B: return 0x274B; /* HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK */
|
||||
+ case 0x6C: return 0x25CF; /* BLACK CIRCLE */
|
||||
+ case 0x6D: return 0x274D; /* SHADOWED WHITE CIRCLE */
|
||||
+ case 0x6E: return 0x25A0; /* BLACK SQUARE */
|
||||
+ case 0x6F: return 0x274F; /* LOWER RIGHT DROP-SHADOWED WHITE SQUARE */
|
||||
+ case 0x70: return 0x2750; /* UPPER RIGHT DROP-SHADOWED WHITE SQUARE */
|
||||
+ case 0x71: return 0x2751; /* LOWER RIGHT SHADOWED WHITE SQUARE */
|
||||
+ case 0x72: return 0x2752; /* UPPER RIGHT SHADOWED WHITE SQUARE */
|
||||
+ case 0x73: return 0x25B2; /* BLACK UP-POINTING TRIANGLE */
|
||||
+ case 0x74: return 0x25BC; /* BLACK DOWN-POINTING TRIANGLE */
|
||||
+ case 0x75: return 0x25C6; /* BLACK DIAMOND */
|
||||
+ case 0x76: return 0x2756; /* BLACK DIAMOND MINUS WHITE X */
|
||||
+ case 0x77: return 0x25D7; /* RIGHT HALF BLACK CIRCLE */
|
||||
+ case 0x78: return 0x2758; /* LIGHT VERTICAL BAR */
|
||||
+ case 0x79: return 0x2759; /* MEDIUM VERTICAL BAR */
|
||||
+ case 0x7A: return 0x275A; /* HEAVY VERTICAL BAR */
|
||||
+ case 0x7B: return 0x275B; /* HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT */
|
||||
+ case 0x7C: return 0x275C; /* HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT */
|
||||
+ case 0x7D: return 0x275D; /* HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT */
|
||||
+ case 0x7E: return 0x275E; /* HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT */
|
||||
+ case 0x80: return 0xF8D7; /* MEDIUM LEFT PARENTHESIS ORNAMENT */
|
||||
+ case 0x81: return 0xF8D8; /* MEDIUM RIGHT PARENTHESIS ORNAMENT */
|
||||
+ case 0x82: return 0xF8D9; /* MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT */
|
||||
+ case 0x83: return 0xF8DA; /* MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT */
|
||||
+ case 0x84: return 0xF8DB; /* MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT */
|
||||
+ case 0x85: return 0xF8DC; /* MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT */
|
||||
+ case 0x86: return 0xF8DD; /* HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT */
|
||||
+ case 0x87: return 0xF8DE; /* HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT */
|
||||
+ case 0x88: return 0xF8DF; /* HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT */
|
||||
+ case 0x89: return 0xF8E0; /* HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT */
|
||||
+ case 0x8A: return 0xF8E1; /* LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT */
|
||||
+ case 0x8B: return 0xF8E2; /* LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT */
|
||||
+ case 0x8C: return 0xF8E3; /* MEDIUM LEFT CURLY BRACKET ORNAMENT */
|
||||
+ case 0x8D: return 0xF8E4; /* MEDIUM RIGHT CURLY BRACKET ORNAMENT */
|
||||
+ case 0xA1: return 0x2761; /* CURVED STEM PARAGRAPH SIGN ORNAMENT */
|
||||
+ case 0xA2: return 0x2762; /* HEAVY EXCLAMATION MARK ORNAMENT */
|
||||
+ case 0xA3: return 0x2763; /* HEAVY HEART EXCLAMATION MARK ORNAMENT */
|
||||
+ case 0xA4: return 0x2764; /* HEAVY BLACK HEART */
|
||||
+ case 0xA5: return 0x2765; /* ROTATED HEAVY BLACK HEART BULLET */
|
||||
+ case 0xA6: return 0x2766; /* FLORAL HEART */
|
||||
+ case 0xA7: return 0x2767; /* ROTATED FLORAL HEART BULLET */
|
||||
+ case 0xA8: return 0x2663; /* BLACK CLUB SUIT */
|
||||
+ case 0xA9: return 0x2666; /* BLACK DIAMOND SUIT */
|
||||
+ case 0xAA: return 0x2665; /* BLACK HEART SUIT */
|
||||
+ case 0xAB: return 0x2660; /* BLACK SPADE SUIT */
|
||||
+ case 0xAC: return 0x2460; /* CIRCLED DIGIT ONE */
|
||||
+ case 0xAD: return 0x2461; /* CIRCLED DIGIT TWO */
|
||||
+ case 0xAE: return 0x2462; /* CIRCLED DIGIT THREE */
|
||||
+ case 0xAF: return 0x2463; /* CIRCLED DIGIT FOUR */
|
||||
+ case 0xB0: return 0x2464; /* CIRCLED DIGIT FIVE */
|
||||
+ case 0xB1: return 0x2465; /* CIRCLED DIGIT SIX */
|
||||
+ case 0xB2: return 0x2466; /* CIRCLED DIGIT SEVEN */
|
||||
+ case 0xB3: return 0x2467; /* CIRCLED DIGIT EIGHT */
|
||||
+ case 0xB4: return 0x2468; /* CIRCLED DIGIT NINE */
|
||||
+ case 0xB5: return 0x2469; /* CIRCLED NUMBER TEN */
|
||||
+ case 0xB6: return 0x2776; /* DINGBAT NEGATIVE CIRCLED DIGIT ONE */
|
||||
+ case 0xB7: return 0x2777; /* DINGBAT NEGATIVE CIRCLED DIGIT TWO */
|
||||
+ case 0xB8: return 0x2778; /* DINGBAT NEGATIVE CIRCLED DIGIT THREE */
|
||||
+ case 0xB9: return 0x2779; /* DINGBAT NEGATIVE CIRCLED DIGIT FOUR */
|
||||
+ case 0xBA: return 0x277A; /* DINGBAT NEGATIVE CIRCLED DIGIT FIVE */
|
||||
+ case 0xBB: return 0x277B; /* DINGBAT NEGATIVE CIRCLED DIGIT SIX */
|
||||
+ case 0xBC: return 0x277C; /* DINGBAT NEGATIVE CIRCLED DIGIT SEVEN */
|
||||
+ case 0xBD: return 0x277D; /* DINGBAT NEGATIVE CIRCLED DIGIT EIGHT */
|
||||
+ case 0xBE: return 0x277E; /* DINGBAT NEGATIVE CIRCLED DIGIT NINE */
|
||||
+ case 0xBF: return 0x277F; /* DINGBAT NEGATIVE CIRCLED NUMBER TEN */
|
||||
+ case 0xC0: return 0x2780; /* DINGBAT CIRCLED SANS-SERIF DIGIT ONE */
|
||||
+ case 0xC1: return 0x2781; /* DINGBAT CIRCLED SANS-SERIF DIGIT TWO */
|
||||
+ case 0xC2: return 0x2782; /* DINGBAT CIRCLED SANS-SERIF DIGIT THREE */
|
||||
+ case 0xC3: return 0x2783; /* DINGBAT CIRCLED SANS-SERIF DIGIT FOUR */
|
||||
+ case 0xC4: return 0x2784; /* DINGBAT CIRCLED SANS-SERIF DIGIT FIVE */
|
||||
+ case 0xC5: return 0x2785; /* DINGBAT CIRCLED SANS-SERIF DIGIT SIX */
|
||||
+ case 0xC6: return 0x2786; /* DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN */
|
||||
+ case 0xC7: return 0x2787; /* DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT */
|
||||
+ case 0xC8: return 0x2788; /* DINGBAT CIRCLED SANS-SERIF DIGIT NINE */
|
||||
+ case 0xC9: return 0x2789; /* DINGBAT CIRCLED SANS-SERIF NUMBER TEN */
|
||||
+ case 0xCA: return 0x278A; /* DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE */
|
||||
+ case 0xCB: return 0x278B; /* DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO */
|
||||
+ case 0xCC: return 0x278C; /* DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE */
|
||||
+ case 0xCD: return 0x278D; /* DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR */
|
||||
+ case 0xCE: return 0x278E; /* DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE */
|
||||
+ case 0xCF: return 0x278F; /* DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX */
|
||||
+ case 0xD0: return 0x2790; /* DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN */
|
||||
+ case 0xD1: return 0x2791; /* DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT */
|
||||
+ case 0xD2: return 0x2792; /* DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE */
|
||||
+ case 0xD3: return 0x2793; /* DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN */
|
||||
+ case 0xD4: return 0x2794; /* HEAVY WIDE-HEADED RIGHTWARDS ARROW */
|
||||
+ case 0xD5: return 0x2192; /* RIGHTWARDS ARROW */
|
||||
+ case 0xD6: return 0x2194; /* LEFT RIGHT ARROW */
|
||||
+ case 0xD7: return 0x2195; /* UP DOWN ARROW */
|
||||
+ case 0xD8: return 0x2798; /* HEAVY SOUTH EAST ARROW */
|
||||
+ case 0xD9: return 0x2799; /* HEAVY RIGHTWARDS ARROW */
|
||||
+ case 0xDA: return 0x279A; /* HEAVY NORTH EAST ARROW */
|
||||
+ case 0xDB: return 0x279B; /* DRAFTING POINT RIGHTWARDS ARROW */
|
||||
+ case 0xDC: return 0x279C; /* HEAVY ROUND-TIPPED RIGHTWARDS ARROW */
|
||||
+ case 0xDD: return 0x279D; /* TRIANGLE-HEADED RIGHTWARDS ARROW */
|
||||
+ case 0xDE: return 0x279E; /* HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW */
|
||||
+ case 0xDF: return 0x279F; /* DASHED TRIANGLE-HEADED RIGHTWARDS ARROW */
|
||||
+ case 0xE0: return 0x27A0; /* HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW */
|
||||
+ case 0xE1: return 0x27A1; /* BLACK RIGHTWARDS ARROW */
|
||||
+ case 0xE2: return 0x27A2; /* THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD */
|
||||
+ case 0xE3: return 0x27A3; /* THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD */
|
||||
+ case 0xE4: return 0x27A4; /* BLACK RIGHTWARDS ARROWHEAD */
|
||||
+ case 0xE5: return 0x27A5; /* HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW */
|
||||
+ case 0xE6: return 0x27A6; /* HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW */
|
||||
+ case 0xE7: return 0x27A7; /* SQUAT BLACK RIGHTWARDS ARROW */
|
||||
+ case 0xE8: return 0x27A8; /* HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW */
|
||||
+ case 0xE9: return 0x27A9; /* RIGHT-SHADED WHITE RIGHTWARDS ARROW */
|
||||
+ case 0xEA: return 0x27AA; /* LEFT-SHADED WHITE RIGHTWARDS ARROW */
|
||||
+ case 0xEB: return 0x27AB; /* BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW */
|
||||
+ case 0xEC: return 0x27AC; /* FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW */
|
||||
+ case 0xED: return 0x27AD; /* HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW */
|
||||
+ case 0xEE: return 0x27AE; /* HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW */
|
||||
+ case 0xEF: return 0x27AF; /* NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW */
|
||||
+ case 0xF1: return 0x27B1; /* NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW */
|
||||
+ case 0xF2: return 0x27B2; /* CIRCLED HEAVY WHITE RIGHTWARDS ARROW */
|
||||
+ case 0xF3: return 0x27B3; /* WHITE-FEATHERED RIGHTWARDS ARROW */
|
||||
+ case 0xF4: return 0x27B4; /* BLACK-FEATHERED SOUTH EAST ARROW */
|
||||
+ case 0xF5: return 0x27B5; /* BLACK-FEATHERED RIGHTWARDS ARROW */
|
||||
+ case 0xF6: return 0x27B6; /* BLACK-FEATHERED NORTH EAST ARROW */
|
||||
+ case 0xF7: return 0x27B7; /* HEAVY BLACK-FEATHERED SOUTH EAST ARROW */
|
||||
+ case 0xF8: return 0x27B8; /* HEAVY BLACK-FEATHERED RIGHTWARDS ARROW */
|
||||
+ case 0xF9: return 0x27B9; /* HEAVY BLACK-FEATHERED NORTH EAST ARROW */
|
||||
+ case 0xFA: return 0x27BA; /* TEARDROP-BARBED RIGHTWARDS ARROW */
|
||||
+ case 0xFB: return 0x27BB; /* HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW */
|
||||
+ case 0xFC: return 0x27BC; /* WEDGE-TAILED RIGHTWARDS ARROW */
|
||||
+ case 0xFD: return 0x27BD; /* HEAVY WEDGE-TAILED RIGHTWARDS ARROW */
|
||||
+ case 0xFE: return 0x27BE; /* OPEN-OUTLINED RIGHTWARDS ARROW */
|
||||
+ default: return 0x0000;
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+ * Unicode mapping found in
|
||||
+ * /usr/share/fonts/encodings/adobe-symbol.enc.gz
|
||||
+ * Duplicates are disabled
|
||||
+ */
|
||||
+XftChar32 map_symbols(XftChar8 in)
|
||||
+{
|
||||
+ switch(in) {
|
||||
+ case 0x20: return 0x0020; /* SPACE */
|
||||
+ case 0x21: return 0x0021; /* EXCLAMATION MARK */
|
||||
+ case 0x23: return 0x0023; /* NUMBER SIGN */
|
||||
+ case 0x25: return 0x0025; /* PERCENT SIGN */
|
||||
+ case 0x26: return 0x0026; /* AMPERSAND */
|
||||
+ case 0x28: return 0x0028; /* OPENING PARENTHESIS */
|
||||
+ case 0x29: return 0x0029; /* CLOSING PARENTHESIS */
|
||||
+ case 0x2B: return 0x002B; /* PLUS SIGN */
|
||||
+ case 0x2C: return 0x002C; /* COMMA */
|
||||
+ case 0x2E: return 0x002E; /* PERIOD */
|
||||
+ case 0x2F: return 0x002F; /* SLASH */
|
||||
+ case 0x30: return 0x0030; /* DIGIT ZERO */
|
||||
+ case 0x31: return 0x0031; /* DIGIT ONE */
|
||||
+ case 0x32: return 0x0032; /* DIGIT TWO */
|
||||
+ case 0x33: return 0x0033; /* DIGIT THREE */
|
||||
+ case 0x34: return 0x0034; /* DIGIT FOUR */
|
||||
+ case 0x35: return 0x0035; /* DIGIT FIVE */
|
||||
+ case 0x36: return 0x0036; /* DIGIT SIX */
|
||||
+ case 0x37: return 0x0037; /* DIGIT SEVEN */
|
||||
+ case 0x38: return 0x0038; /* DIGIT EIGHT */
|
||||
+ case 0x39: return 0x0039; /* DIGIT NINE */
|
||||
+ case 0x3A: return 0x003A; /* COLON */
|
||||
+ case 0x3B: return 0x003B; /* SEMICOLON */
|
||||
+ case 0x3C: return 0x003C; /* LESS-THAN SIGN */
|
||||
+ case 0x3D: return 0x003D; /* EQUALS SIGN */
|
||||
+ case 0x3E: return 0x003E; /* GREATER-THAN SIGN */
|
||||
+ case 0x3F: return 0x003F; /* QUESTION MARK */
|
||||
+ case 0x5B: return 0x005B; /* OPENING SQUARE BRACKET */
|
||||
+ case 0x5D: return 0x005D; /* CLOSING SQUARE BRACKET */
|
||||
+ case 0x5F: return 0x005F; /* SPACING UNDERSCORE */
|
||||
+ case 0x7B: return 0x007B; /* OPENING CURLY BRACKET */
|
||||
+ case 0x7C: return 0x007C; /* VERTICAL BAR */
|
||||
+ case 0x7D: return 0x007D; /* CLOSING CURLY BRACKET */
|
||||
+ case 0xD3: return 0x00A9; /* COPYRIGHT SIGN */
|
||||
+ case 0xE3: return 0x00A9; /* COPYRIGHT SIGN */
|
||||
+ case 0xD8: return 0x00AC; /* NOT SIGN */
|
||||
+ case 0xD2: return 0x00AE; /* REGISTERED TRADE MARK SIGN */
|
||||
+ case 0xE2: return 0x00AE; /* REGISTERED TRADE MARK SIGN */
|
||||
+ case 0xB0: return 0x00B0; /* DEGREE SIGN */
|
||||
+ case 0xB1: return 0x00B1; /* PLUS-OR-MINUS SIGN */
|
||||
+ case 0xB4: return 0x00D7; /* MULTIPLICATION SIGN */
|
||||
+ case 0xB8: return 0x00F7; /* DIVISION SIGN */
|
||||
+ case 0xA6: return 0x0192; /* LATIN SMALL LETTER SCRIPT F */
|
||||
+ case 0x41: return 0x0391; /* GREEK CAPITAL LETTER ALPHA */
|
||||
+ case 0x42: return 0x0392; /* GREEK CAPITAL LETTER BETA */
|
||||
+ case 0x47: return 0x0393; /* GREEK CAPITAL LETTER GAMMA */
|
||||
+ case 0x44: return 0x0394; /* GREEK CAPITAL LETTER DELTA */
|
||||
+ case 0x45: return 0x0395; /* GREEK CAPITAL LETTER EPSILON */
|
||||
+ case 0x5A: return 0x0396; /* GREEK CAPITAL LETTER ZETA */
|
||||
+ case 0x48: return 0x0397; /* GREEK CAPITAL LETTER ETA */
|
||||
+ case 0x51: return 0x0398; /* GREEK CAPITAL LETTER THETA */
|
||||
+ case 0x49: return 0x0399; /* GREEK CAPITAL LETTER IOTA */
|
||||
+ case 0x4B: return 0x039A; /* GREEK CAPITAL LETTER KAPPA */
|
||||
+ case 0x4C: return 0x039B; /* GREEK CAPITAL LETTER LAMBDA */
|
||||
+ case 0x4D: return 0x039C; /* GREEK CAPITAL LETTER MU */
|
||||
+ case 0x4E: return 0x039D; /* GREEK CAPITAL LETTER NU */
|
||||
+ case 0x58: return 0x039E; /* GREEK CAPITAL LETTER XI */
|
||||
+ case 0x4F: return 0x039F; /* GREEK CAPITAL LETTER OMICRON */
|
||||
+ case 0x50: return 0x03A0; /* GREEK CAPITAL LETTER PI */
|
||||
+ case 0x52: return 0x03A1; /* GREEK CAPITAL LETTER RHO */
|
||||
+ case 0x53: return 0x03A3; /* GREEK CAPITAL LETTER SIGMA */
|
||||
+ case 0x54: return 0x03A4; /* GREEK CAPITAL LETTER TAU */
|
||||
+ case 0x55: return 0x03A5; /* GREEK CAPITAL LETTER UPSILON */
|
||||
+ case 0x46: return 0x03A6; /* GREEK CAPITAL LETTER PHI */
|
||||
+ case 0x43: return 0x03A7; /* GREEK CAPITAL LETTER CHI */
|
||||
+ case 0x59: return 0x03A8; /* GREEK CAPITAL LETTER PSI */
|
||||
+ case 0x57: return 0x03A9; /* GREEK CAPITAL LETTER OMEGA */
|
||||
+ case 0x61: return 0x03B1; /* GREEK SMALL LETTER ALPHA */
|
||||
+ case 0x62: return 0x03B2; /* GREEK SMALL LETTER BETA */
|
||||
+ case 0x67: return 0x03B3; /* GREEK SMALL LETTER GAMMA */
|
||||
+ case 0x64: return 0x03B4; /* GREEK SMALL LETTER DELTA */
|
||||
+ case 0x65: return 0x03B5; /* GREEK SMALL LETTER EPSILON */
|
||||
+ case 0x7A: return 0x03B6; /* GREEK SMALL LETTER ZETA */
|
||||
+ case 0x68: return 0x03B7; /* GREEK SMALL LETTER ETA */
|
||||
+ case 0x71: return 0x03B8; /* GREEK SMALL LETTER THETA */
|
||||
+ case 0x69: return 0x03B9; /* GREEK SMALL LETTER IOTA */
|
||||
+ case 0x6B: return 0x03BA; /* GREEK SMALL LETTER KAPPA */
|
||||
+ case 0x6C: return 0x03BB; /* GREEK SMALL LETTER LAMBDA */
|
||||
+ case 0x6D: return 0x03BC; /* GREEK SMALL LETTER MU */
|
||||
+ case 0x6E: return 0x03BD; /* GREEK SMALL LETTER NU */
|
||||
+ case 0x78: return 0x03BE; /* GREEK SMALL LETTER XI */
|
||||
+ case 0x6F: return 0x03BF; /* GREEK SMALL LETTER OMICRON */
|
||||
+ case 0x70: return 0x03C0; /* GREEK SMALL LETTER PI */
|
||||
+ case 0x72: return 0x03C1; /* GREEK SMALL LETTER RHO */
|
||||
+ case 0x56: return 0x03C2; /* GREEK SMALL LETTER FINAL SIGMA */
|
||||
+ case 0x73: return 0x03C3; /* GREEK SMALL LETTER SIGMA */
|
||||
+ case 0x74: return 0x03C4; /* GREEK SMALL LETTER TAU */
|
||||
+ case 0x75: return 0x03C5; /* GREEK SMALL LETTER UPSILON */
|
||||
+ case 0x66: return 0x03C6; /* GREEK SMALL LETTER PHI */
|
||||
+ case 0x63: return 0x03C7; /* GREEK SMALL LETTER CHI */
|
||||
+ case 0x79: return 0x03C8; /* GREEK SMALL LETTER PSI */
|
||||
+ case 0x77: return 0x03C9; /* GREEK SMALL LETTER OMEGA */
|
||||
+ case 0x4A: return 0x03D1; /* GREEK SMALL LETTER SCRIPT THETA */
|
||||
+ case 0xA1: return 0x03D2; /* GREEK CAPITAL LETTER UPSILON HOOK */
|
||||
+ case 0x6A: return 0x03D5; /* GREEK SMALL LETTER SCRIPT PHI */
|
||||
+ case 0x76: return 0x03D6; /* GREEK SMALL LETTER OMEGA PI */
|
||||
+ case 0xB7: return 0x2022; /* BULLET */
|
||||
+ case 0xBC: return 0x2026; /* HORIZONTAL ELLIPSIS */
|
||||
+ case 0xA2: return 0x2032; /* PRIME */
|
||||
+ case 0xB2: return 0x2033; /* DOUBLE PRIME */
|
||||
+ case 0x60: return 0x203E; /* SPACING OVERSCORE */
|
||||
+ case 0xA4: return 0x2044; /* FRACTION SLASH */
|
||||
+ case 0xC1: return 0x2111; /* BLACK-LETTER I */
|
||||
+ case 0xC3: return 0x2118; /* SCRIPT P */
|
||||
+ case 0xC2: return 0x211C; /* BLACK-LETTER R */
|
||||
+ case 0xD4: return 0x2122; /* TRADEMARK */
|
||||
+ case 0xE4: return 0x2122; /* TRADEMARK */
|
||||
+/* case 0x57: return 0x2126; /* OHM */
|
||||
+ case 0xC0: return 0x2135; /* FIRST TRANSFINITE CARDINAL */
|
||||
+ case 0xAC: return 0x2190; /* LEFT ARROW */
|
||||
+ case 0xAD: return 0x2191; /* UP ARROW */
|
||||
+ case 0xAE: return 0x2192; /* RIGHT ARROW */
|
||||
+ case 0xAF: return 0x2193; /* DOWN ARROW */
|
||||
+ case 0xAB: return 0x2194; /* LEFT RIGHT ARROW */
|
||||
+ case 0xBF: return 0x21B5; /* DOWN ARROW WITH CORNER LEFT */
|
||||
+ case 0xDC: return 0x21D0; /* LEFT DOUBLE ARROW */
|
||||
+ case 0xDD: return 0x21D1; /* UP DOUBLE ARROW */
|
||||
+ case 0xDE: return 0x21D2; /* RIGHT DOUBLE ARROW */
|
||||
+ case 0xDF: return 0x21D3; /* DOWN DOUBLE ARROW */
|
||||
+ case 0xDB: return 0x21D4; /* LEFT RIGHT DOUBLE ARROW */
|
||||
+ case 0x22: return 0x2200; /* FOR ALL */
|
||||
+ case 0xB6: return 0x2202; /* PARTIAL DIFFERENTIAL */
|
||||
+ case 0x24: return 0x2203; /* THERE EXISTS */
|
||||
+ case 0xC6: return 0x2205; /* EMPTY SET */
|
||||
+/* case 0x44: return 0x2206; /* INCREMENT */
|
||||
+ case 0xD1: return 0x2207; /* NABLA */
|
||||
+ case 0xCE: return 0x2208; /* ELEMENT OF */
|
||||
+ case 0xCF: return 0x2209; /* NOT AN ELEMENT OF */
|
||||
+ case 0x27: return 0x220B; /* CONTAINS AS MEMBER */
|
||||
+ case 0xD5: return 0x220F; /* N-ARY PRODUCT */
|
||||
+ case 0xE5: return 0x2211; /* N-ARY SUMMATION */
|
||||
+ case 0x2D: return 0x2212; /* MINUS SIGN */
|
||||
+/* case 0xA4: return 0x2215; /* DIVISION SLASH */
|
||||
+ case 0x2A: return 0x2217; /* ASTERISK OPERATOR */
|
||||
+ case 0xD6: return 0x221A; /* SQUARE ROOT */
|
||||
+ case 0xB5: return 0x221D; /* PROPORTIONAL TO */
|
||||
+ case 0xA5: return 0x221E; /* INFINITY */
|
||||
+ case 0xD0: return 0x2220; /* ANGLE */
|
||||
+ case 0xD9: return 0x2227; /* LOGICAL AND */
|
||||
+ case 0xDA: return 0x2228; /* LOGICAL OR */
|
||||
+ case 0xC7: return 0x2229; /* INTERSECTION */
|
||||
+ case 0xC8: return 0x222A; /* UNION */
|
||||
+ case 0xF2: return 0x222B; /* INTEGRAL */
|
||||
+ case 0x5C: return 0x2234; /* THEREFORE */
|
||||
+ case 0x7E: return 0x223C; /* TILDE OPERATOR */
|
||||
+ case 0x40: return 0x2245; /* APPROXIMATELY EQUAL TO */
|
||||
+ case 0xBB: return 0x2248; /* ALMOST EQUAL TO */
|
||||
+ case 0xB9: return 0x2260; /* NOT EQUAL TO */
|
||||
+ case 0xBA: return 0x2261; /* IDENTICAL TO */
|
||||
+ case 0xA3: return 0x2264; /* LESS THAN OR EQUAL TO */
|
||||
+ case 0xB3: return 0x2265; /* GREATER THAN OR EQUAL TO */
|
||||
+ case 0xCC: return 0x2282; /* SUBSET OF */
|
||||
+ case 0xC9: return 0x2283; /* SUPERSET OF */
|
||||
+ case 0xCB: return 0x2284; /* NOT A SUBSET OF */
|
||||
+ case 0xCD: return 0x2286; /* SUBSET OF OR EQUAL TO */
|
||||
+ case 0xCA: return 0x2287; /* SUPERSET OF OR EQUAL TO */
|
||||
+ case 0xC5: return 0x2295; /* CIRCLED PLUS */
|
||||
+ case 0xC4: return 0x2297; /* CIRCLED TIMES */
|
||||
+ case 0x5E: return 0x22A5; /* UP TACK */
|
||||
+ case 0xD7: return 0x22C5; /* DOT OPERATOR */
|
||||
+ case 0xF3: return 0x2320; /* TOP HALF INTEGRAL */
|
||||
+ case 0xF5: return 0x2321; /* BOTTOM HALF INTEGRAL */
|
||||
+ case 0xE1: return 0x2329; /* BRA */
|
||||
+ case 0xF1: return 0x232A; /* KET */
|
||||
+ case 0xE0: return 0x25CA; /* LOZENGE */
|
||||
+ case 0xAA: return 0x2660; /* BLACK SPADE SUIT */
|
||||
+ case 0xA7: return 0x2663; /* BLACK CLUB SUIT */
|
||||
+ case 0xA9: return 0x2665; /* BLACK HEART SUIT */
|
||||
+ case 0xA8: return 0x2666; /* BLACK DIAMOND SUIT */
|
||||
+ default: return 0x0000;
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+map_f adobe_charset(XftFont *font)
|
||||
+{
|
||||
+ map_f map = NULL;
|
||||
+
|
||||
+ /*
|
||||
+ * Hack: does this font has small a in its charset?
|
||||
+ * If not it is likly a Symbol or a Dingbats derivate.
|
||||
+ */
|
||||
+ if (XftCharExists(tool_d, font, 0x61))
|
||||
+ return NULL;
|
||||
+ else {
|
||||
+ XftChar8 *pattern = FcNameUnparse(font->pattern);
|
||||
+ char *fullname;
|
||||
+
|
||||
+ if ((fullname = strcasestr((char*)pattern, "fullname="))) {
|
||||
+ char *colon;
|
||||
+
|
||||
+ fullname += 9;
|
||||
+ if (colon = strchr(fullname, ':'))
|
||||
+ *colon = '\0';
|
||||
+ if (strcasestr(fullname, "symbol"))
|
||||
+ map = map_symbols;
|
||||
+ else if (strcasestr(fullname, "dingbats"))
|
||||
+ map = map_dingbats;
|
||||
+ else if (strcasestr(fullname, "d050000l"))
|
||||
+ map = map_dingbats;
|
||||
+ free(pattern);
|
||||
+ }
|
||||
+ }
|
||||
+ return map;
|
||||
+}
|
||||
--- src/u_fonts.h
|
||||
+++ src/u_fonts.h 2023-09-19 10:01:32.672091235 +0000
|
||||
@@ -71,4 +71,15 @@ extern void text_origin(int *draw_x, int
|
||||
extern struct _fstruct ps_fontinfo[];
|
||||
extern struct _fstruct latex_fontinfo[];
|
||||
|
||||
+/*
|
||||
+ * For (ITC) Zapf Dingbats, URW Dingbats, or URW D050000L as well
|
||||
+ * as Symbol, Standard Symbols PS, or URW Standard Symbols L we
|
||||
+ * need to map the byte characters into UTF-8 multi byte characters.
|
||||
+ * This to make XftTextExtentsUtf8() and XftDrawStringUtf8() working.
|
||||
+ */
|
||||
+typedef XftChar8 *(*map_f)(XftChar8);
|
||||
+extern XftChar32 map_dingbats(XftChar8);
|
||||
+extern XftChar32 map_symbols(XftChar8);
|
||||
+extern map_f adobe_charset(XftFont *font);
|
||||
+
|
||||
#endif /* U_FONTS_H */
|
||||
--- src/w_drawprim.c
|
||||
+++ src/w_drawprim.c 2023-09-19 10:01:32.672091235 +0000
|
||||
@@ -162,6 +162,8 @@ pw_xfttext(XftDraw *xftdraw, int x, int
|
||||
{
|
||||
int zy = ZOOMY(y);
|
||||
int zx = ZOOMX(x);
|
||||
+ size_t len = strlen(s);
|
||||
+ map_f map = NULL;
|
||||
/* XGlyphInfo extents; */
|
||||
|
||||
if (*s == '\0')
|
||||
@@ -181,8 +183,19 @@ pw_xfttext(XftDraw *xftdraw, int x, int
|
||||
if (check_cancel())
|
||||
return;
|
||||
|
||||
- XftDrawStringUtf8(xftdraw, &xftcolor[c], font, zx, zy, (XftChar8 *)s,
|
||||
- (int)strlen(s));
|
||||
+ if ((map = adobe_charset(font))) {
|
||||
+ XftChar32 glyphs[len];
|
||||
+ int glen = 0;
|
||||
+
|
||||
+ for (XftChar8 *chr = (XftChar8 *)s; chr < s+len; chr++) {
|
||||
+ XftChar32 glyph = XftCharIndex(tool_d, font, map(*chr));
|
||||
+ if (glyph)
|
||||
+ glyphs[glen++] = glyph;
|
||||
+ }
|
||||
+ XftDrawGlyphs(xftdraw, &xftcolor[c], font, zx, zy, glyphs, glen);
|
||||
+ } else
|
||||
+ XftDrawStringUtf8(xftdraw, &xftcolor[c], font, zx, zy,
|
||||
+ (XftChar8*)s, (int)len);
|
||||
}
|
||||
|
||||
/* print "string" in window "w" using font specified in fstruct
|
15
xfig-3.2.9-gcc14.patch
Normal file
15
xfig-3.2.9-gcc14.patch
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
src/u_fonts.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- src/u_fonts.h
|
||||
+++ src/u_fonts.h 2024-08-28 07:00:30.512232174 +0000
|
||||
@@ -77,7 +77,7 @@ extern struct _fstruct latex_fontinfo[];
|
||||
* need to map the byte characters into UTF-8 multi byte characters.
|
||||
* This to make XftTextExtentsUtf8() and XftDrawStringUtf8() working.
|
||||
*/
|
||||
-typedef XftChar8 *(*map_f)(XftChar8);
|
||||
+typedef XftChar32 (*map_f)(XftChar8);
|
||||
extern XftChar32 map_dingbats(XftChar8);
|
||||
extern XftChar32 map_symbols(XftChar8);
|
||||
extern map_f adobe_charset(XftFont *font);
|
3
xfig-3.2.9.tar.xz
Normal file
3
xfig-3.2.9.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8e02e971991f3340d86fc8529e51ec000809f71207f3276856414172718d61d6
|
||||
size 5380408
|
45
xfig.3.2.3d-international-std-fonts.dif
Normal file
45
xfig.3.2.3d-international-std-fonts.dif
Normal file
@ -0,0 +1,45 @@
|
||||
---
|
||||
src/main.c | 32 ++++++++++++++++++++++++++++++--
|
||||
1 file changed, 30 insertions(+), 2 deletions(-)
|
||||
|
||||
--- src/main.c
|
||||
+++ src/main.c 2023-09-13 09:37:09.600980464 +0000
|
||||
@@ -366,8 +366,36 @@ static XtResource application_resources[
|
||||
XtOffset(appresPtr, font_menu_language), XtRString, (caddr_t) ""},
|
||||
{"fixedFontSet", "FontSet", XtRFontSet, sizeof(XFontSet),
|
||||
XtOffset(appresPtr, fixed_fontset), XtRString,
|
||||
- (caddr_t) "-*-times-medium-r-normal--16-*-*-*-*-*-*-*,"
|
||||
- "-*-*-medium-r-normal--16-*-*-*-*-*-*-*,*--16-*" },
|
||||
+ (caddr_t) "-urw-nimbus roman no9 l-medium-r-normal--34-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-medium-r-normal--24-*-*-*-*-*-jisx0208.1983-0,"
|
||||
+ "-*-*-medium-r-normal--24-*-*-*-*-*-ksc5601.1987-0,"
|
||||
+ "-*-times-medium-r-normal--24-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-medium-r-normal--24-*-*-*-*-*-*-*,*--24-*,"
|
||||
+ "-*-times-medium-r-normal--16-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-medium-r-normal--16-*-*-*-*-*-*-*,*--16-*"
|
||||
+ }, /*
|
||||
+ {"normalFontSet", "NormalFontSet", XtRFontSet, sizeof(XFontSet),
|
||||
+ XtOffset(appresPtr, normal_fontset), XtRString,
|
||||
+ (caddr_t) "-urw-nimbus roman no9 l-medium-r-normal--34-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-medium-r-normal--24-*-*-*-*-*-jisx0208.1983-0,"
|
||||
+ "-*-*-medium-r-normal--24-*-*-*-*-*-ksc5601.1987-0,"
|
||||
+ "-*-times-medium-r-normal--24-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-medium-r-normal--24-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-*-r-*--24-*-*-*-*-*-*-*,"
|
||||
+ "-*-times-medium-r-normal--16-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-medium-r-normal--16-*-*-*-*-*-*-*,*--16-*"
|
||||
+ },
|
||||
+ {"boldFontSet", "BoldFontSet", XtRFontSet, sizeof(XFontSet),
|
||||
+ XtOffset(appresPtr, bold_fontset), XtRString,
|
||||
+ (caddr_t) "-urw-nimbus roman no9 l-bold-r-normal--34-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-bold-r-normal--24-*-*-*-*-*-jisx0208.1983-0,"
|
||||
+ "-*-*-bold-r-normal--24-*-*-*-*-*-ksc5601.1987-0,"
|
||||
+ "-*-times-bold-r-normal--24-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-bold-r-normal--24-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-*-r-*--24-*-*-*-*-*-*-*,"
|
||||
+ "-*-times-medium-r-normal--16-*-*-*-*-*-*-*,"
|
||||
+ "-*-*-medium-r-normal--16-*-*-*-*-*-*-*,*--16-*"
|
||||
+ }, */
|
||||
{"fontSetSize", "FontSetSize", XtRInt, sizeof(int),
|
||||
XtOffset(appresPtr, fontset_size), XtRImmediate, (caddr_t)0 },
|
||||
{"inputStyle", "InputStyle", XtRString, sizeof(char *),
|
59
xfig.3.2.5b-fixes.dif
Normal file
59
xfig.3.2.5b-fixes.dif
Normal file
@ -0,0 +1,59 @@
|
||||
---
|
||||
src/w_layers.c | 37 +++++++++++++++++++++++++++++++------
|
||||
1 file changed, 31 insertions(+), 6 deletions(-)
|
||||
|
||||
--- src/w_layers.c
|
||||
+++ src/w_layers.c 2016-09-22 08:45:38.381908911 +0000
|
||||
@@ -128,9 +128,27 @@ init_depth_panel(Widget parent)
|
||||
{
|
||||
Widget label, below;
|
||||
Widget layer_viewform;
|
||||
+ Dimension ind_ht = 0, snap_ht = 0, mouse_ht;
|
||||
|
||||
- /* MOUSEFUN_HT and ind_panel height aren't known yet */
|
||||
- LAYER_HT = TOPRULER_HT + CANVAS_HT;
|
||||
+ if (XtIsManaged(ind_panel)) {
|
||||
+ /* get height of indicator panel */
|
||||
+ FirstArg(XtNheight, &ind_ht);
|
||||
+ GetValues(ind_panel);
|
||||
+ ind_ht += INTERNAL_BW*2;
|
||||
+ }
|
||||
+
|
||||
+ if (XtIsManaged(snap_indicator_panel)) {
|
||||
+ /* get height of snap panel */
|
||||
+ FirstArg(XtNheight, &snap_ht);
|
||||
+ GetValues(snap_indicator_panel);
|
||||
+ snap_ht += INTERNAL_BW*4;
|
||||
+ }
|
||||
+
|
||||
+ /* MOUSEFUN_HT height aren't known yet */
|
||||
+ mouse_ht = MSGPANEL_HT + CMDFORM_HT + INTERNAL_BW;
|
||||
+
|
||||
+ /* now that the bitmaps have been created, put the checkmark in the proper toggle */
|
||||
+ LAYER_HT = mouse_ht + TOPRULER_HT + CANVAS_HT + ind_ht + INTERNAL_BW*2 - snap_ht;
|
||||
|
||||
/* main form to hold all the layer stuff */
|
||||
|
||||
@@ -385,11 +403,18 @@ void
|
||||
setup_depth_panel(void)
|
||||
{
|
||||
Dimension ind_ht, snap_ht=0;
|
||||
+
|
||||
/* get height of indicator and snap panels */
|
||||
- FirstArg(XtNheight, &ind_ht);
|
||||
- GetValues(ind_panel);
|
||||
- FirstArg(XtNheight, &snap_ht);
|
||||
- GetValues(snap_indicator_panel);
|
||||
+ if (XtIsManaged(ind_panel)) {
|
||||
+ FirstArg(XtNheight, &ind_ht);
|
||||
+ GetValues(ind_panel);
|
||||
+ ind_ht += INTERNAL_BW*2;
|
||||
+ }
|
||||
+ if (XtIsManaged(snap_indicator_panel)) {
|
||||
+ FirstArg(XtNheight, &snap_ht);
|
||||
+ GetValues(snap_indicator_panel);
|
||||
+ snap_ht += INTERNAL_BW*4;
|
||||
+ }
|
||||
LAYER_HT = MOUSEFUN_HT + TOPRULER_HT + CANVAS_HT + ind_ht - snap_ht + INTERNAL_BW*4;
|
||||
|
||||
/* now that the bitmaps have been created, put the checkmark in the proper toggle */
|
45
xfig.3.2.5b-locale.dif
Normal file
45
xfig.3.2.5b-locale.dif
Normal file
@ -0,0 +1,45 @@
|
||||
---
|
||||
src/main.c | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
--- src/main.c
|
||||
+++ src/main.c 2023-09-13 10:32:19.633436763 +0000
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
#include <errno.h>
|
||||
#include <locale.h>
|
||||
+#include <langinfo.h>
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -805,9 +806,6 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
- setlocale(LC_ALL, "");
|
||||
- XtSetLanguageProc(NULL, NULL, NULL);
|
||||
-
|
||||
/*
|
||||
* save the command line arguments
|
||||
*/
|
||||
@@ -914,6 +912,10 @@ main(int argc, char **argv)
|
||||
else
|
||||
setup_icons_big();
|
||||
|
||||
+ if (NULL == strcasestr(nl_langinfo(CODESET),"ANSI") &&
|
||||
+ NULL == strcasestr(nl_langinfo(CODESET),"ISO-8859-"))
|
||||
+ appres.international = True;
|
||||
+
|
||||
/*************************************************/
|
||||
/* indicate if the international option is unset */
|
||||
/*************************************************/
|
||||
@@ -1663,6 +1665,9 @@ setup_visual(int *argc_p, char **argv, A
|
||||
*/
|
||||
tool = XtAppInitialize (&tool_app, "Fig", options, XtNumber (options),
|
||||
argc_p, argv, fallback_resources, args, 0);
|
||||
+ setlocale(LC_ALL, "");
|
||||
+ XtSetLanguageProc(tool_app, NULL, NULL);
|
||||
+
|
||||
/* save important info */
|
||||
tool_d = XtDisplay(tool);
|
||||
tool_s = XtScreen(tool);
|
49
xfig.3.2.5b-null.dif
Normal file
49
xfig.3.2.5b-null.dif
Normal file
@ -0,0 +1,49 @@
|
||||
---
|
||||
src/w_dir.c | 4 ++++
|
||||
src/w_library.c | 2 ++
|
||||
src/w_srchrepl.c | 3 +++
|
||||
3 files changed, 9 insertions(+)
|
||||
|
||||
--- src/w_dir.c
|
||||
+++ src/w_dir.c 2023-09-13 09:39:27.454515496 +0000
|
||||
@@ -151,6 +151,8 @@ FileSelected(Widget w, XtPointer client_
|
||||
|
||||
XawListReturnStruct *ret_struct = (XawListReturnStruct *) call_data;
|
||||
|
||||
+ if (!ret_struct)
|
||||
+ return;
|
||||
strcpy(CurrentSelectionName, ret_struct->string);
|
||||
FirstArg(XtNstring, CurrentSelectionName);
|
||||
if (browse_up) {
|
||||
@@ -185,6 +187,8 @@ DirSelected(Widget w, XtPointer client_d
|
||||
|
||||
XawListReturnStruct *ret_struct = (XawListReturnStruct *) call_data;
|
||||
|
||||
+ if (!ret_struct)
|
||||
+ return;
|
||||
strcpy(CurrentSelectionName, ret_struct->string);
|
||||
DoChangeDir(CurrentSelectionName);
|
||||
}
|
||||
--- src/w_library.c
|
||||
+++ src/w_library.c 2023-09-13 09:38:05.523980529 +0000
|
||||
@@ -514,6 +514,8 @@ NewObjectSel(Widget w, XtPointer closure
|
||||
int new_obj;
|
||||
XawListReturnStruct *ret_struct = (XawListReturnStruct *) call_data;
|
||||
|
||||
+ if (!ret_struct)
|
||||
+ return;
|
||||
new_obj = ret_struct->list_index;
|
||||
if (icons_made) {
|
||||
/* unhighlight the current view icon */
|
||||
--- src/w_srchrepl.c
|
||||
+++ src/w_srchrepl.c 2023-09-13 09:40:26.341462455 +0000
|
||||
@@ -918,6 +918,9 @@ spell_select_word(Widget widget, XtPoint
|
||||
(void)widget; (void)closure;
|
||||
XawListReturnStruct *ret_struct = (XawListReturnStruct *) call_data;
|
||||
|
||||
+ if (!ret_struct)
|
||||
+ return;
|
||||
+
|
||||
/* make correct button and correction entry sensitive */
|
||||
XtSetSensitive(correct_button, True);
|
||||
XtSetSensitive(correct_word, True);
|
1156
xfig.changes
Normal file
1156
xfig.changes
Normal file
File diff suppressed because it is too large
Load Diff
10
xfig.desktop
Normal file
10
xfig.desktop
Normal file
@ -0,0 +1,10 @@
|
||||
[Desktop Entry]
|
||||
Categories=VectorGraphics
|
||||
Exec=@@BINDIR@@/xfig
|
||||
InitialPreference=2
|
||||
MimeType=image/x-xfig;
|
||||
Name=xfig
|
||||
GenericName=Vector Drawing
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=xfig
|
154
xfig.spec
Normal file
154
xfig.spec
Normal file
@ -0,0 +1,154 @@
|
||||
#
|
||||
# spec file for package xfig
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: xfig
|
||||
Version: 3.2.9
|
||||
Release: 0
|
||||
Summary: Facility for Interactive Generation of Figures under the X Window System
|
||||
License: MIT
|
||||
Group: Productivity/Graphics/Vector Editors
|
||||
URL: https://sourceforge.net/projects/mcj/
|
||||
#
|
||||
# Remove forbidden files: aircraft.fig
|
||||
# <uncompess> xfig-3.2.8a.tar
|
||||
# tar -f xfig-3.2.8a.tar --delete xfig-3.2.8a/Libraries/Examples/aircraft.fig
|
||||
# <compress> xfig-3.2.8a.tar
|
||||
#
|
||||
#Source: https://sourceforge.net/projects/mcj/files/xfig-%{version}.tar.xz/download#/xfig-%{version}.tar.xz
|
||||
Source: xfig-%{version}.tar.xz
|
||||
Source1: font-test.fig
|
||||
Source4: xfig.desktop
|
||||
Patch0: xfig-3.2.6.dif
|
||||
Patch1: xfig-3.2.9-dingbats.dif
|
||||
Patch3: xfig.3.2.3d-international-std-fonts.dif
|
||||
# PATCH-FIX-UPSTREAM xfig.3.2.5b-mediaboxrealnb.dif [debian#530898]
|
||||
Patch5: xfig.3.2.5b-null.dif
|
||||
Patch6: xfig.3.2.5b-locale.dif
|
||||
Patch7: xfig.3.2.5b-fixes.dif
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch8: Sanitize-a-call-to-realloc-ticket-165.patch
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch9: Fix-exporting-only-active-layers-ticket-163.patch
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch10: xfig-3.2.9-gcc14.patch
|
||||
BuildRequires: dos2unix
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: flex
|
||||
BuildRequires: freetype2-devel
|
||||
BuildRequires: libjpeg-devel
|
||||
BuildRequires: libpng-devel
|
||||
BuildRequires: netpbm
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: update-desktop-files
|
||||
BuildRequires: pkgconfig(fontconfig)
|
||||
BuildRequires: pkgconfig(ijs)
|
||||
BuildRequires: pkgconfig(libtiff-4)
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xaw3d)
|
||||
BuildRequires: pkgconfig(xaw6)
|
||||
BuildRequires: pkgconfig(xft)
|
||||
BuildRequires: pkgconfig(xi)
|
||||
BuildRequires: pkgconfig(xmu)
|
||||
BuildRequires: pkgconfig(xpm)
|
||||
BuildRequires: pkgconfig(xt)
|
||||
Requires: efont-unicode
|
||||
Requires: fontconfig
|
||||
%if 0%{?suse_version} >= 1699
|
||||
Requires: (ghostscript-fonts-std or urw-base35-fonts)
|
||||
%else
|
||||
Requires: ghostscript-fonts-std
|
||||
%endif
|
||||
Requires: ifnteuro
|
||||
Requires: netpbm
|
||||
Requires: transfig >= %{version}
|
||||
Requires: xorg-x11-fonts
|
||||
Requires: xorg-x11-fonts-core
|
||||
Provides: xfig.3.2.3d
|
||||
%if ! %{defined make_build}
|
||||
%define make_build make %{?_smp_mflags}
|
||||
%endif
|
||||
%if ! %{defined make_install}
|
||||
%define make_install make install DESTDIR=%{?buildroot} INSTALL="install -p"
|
||||
%endif
|
||||
|
||||
%description
|
||||
Xfig is a menu-driven tool that allows the user to draw and manipulate
|
||||
objects interactively in an X Window System window. The resulting
|
||||
pictures can be saved, printed on PostScript printers, or converted to
|
||||
a variety of other formats (to allow inclusion in LaTeX documents, for
|
||||
example).
|
||||
|
||||
%prep
|
||||
%setup -q -n xfig-%{version}
|
||||
set +x
|
||||
find -type f | xargs -r chmod a-x,go-w
|
||||
find -type f | while read file; do
|
||||
if grep -qr $'\r' $file ; then
|
||||
dos2unix --keepdate --quiet $file
|
||||
fi
|
||||
done
|
||||
set -x
|
||||
%patch -P0
|
||||
%patch -P1 -b .dingbats
|
||||
%patch -P3 -b .international-std-fonts
|
||||
%patch -P5 -b .null
|
||||
%patch -P6 -b .locale
|
||||
%patch -P7 -b .fixes
|
||||
%patch -P8 -p1
|
||||
%patch -P9 -p1
|
||||
%patch -P10
|
||||
cp %{SOURCE1} .
|
||||
test ! -e Libraries/Examples/aircraft.fig || { echo forbidden file found 1>&2; exit 1; }
|
||||
|
||||
%build
|
||||
CC=gcc
|
||||
CFLAGS="%{optflags} -w -D_GNU_SOURCE -std=gnu99 -DUSE_XPM -DUSE_SPLASH"
|
||||
CFLAGS="$CFLAGS $(getconf LFS_CFLAGS) -DMAXNUMPTS=50000"
|
||||
export CC CFLAGS
|
||||
chmod +x configure
|
||||
%configure \
|
||||
--docdir=%{_defaultdocdir}/%{name} \
|
||||
--enable-tablet \
|
||||
--enable-splash \
|
||||
--with-x \
|
||||
--with-xaw3d1_5e \
|
||||
--with-xaw3d
|
||||
touch src/splash.xbm
|
||||
touch src/splash.xpm
|
||||
%make_build CCOPTIONS="$CFLAGS"
|
||||
|
||||
%install
|
||||
find -name '*.bak' -exec rm -vf '{}' \+
|
||||
%make_install
|
||||
mv %{buildroot}%{_mandir}/man1/xfig.1 %{buildroot}%{_mandir}/man1/xfig.1x
|
||||
gzip -9 %{buildroot}%{_mandir}/man1/xfig.1x
|
||||
%fdupes %{buildroot}
|
||||
%suse_update_desktop_file xfig VectorGraphics
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,755)
|
||||
%doc %{_docdir}/%{name}
|
||||
%dir %{_datadir}/X11/app-defaults
|
||||
%{_datadir}/X11/app-defaults/Fig
|
||||
%{_bindir}/xfig*
|
||||
%{_datadir}/applications/xfig.desktop
|
||||
%{_datadir}/pixmaps/xfig.png
|
||||
%{_datadir}/xfig
|
||||
%{_mandir}/man1/xfig.1*.gz
|
||||
|
||||
%changelog
|
Loading…
Reference in New Issue
Block a user