Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37730696
en ru br
Репозитории ALT
S:3.2.9-alt1
5.1: 3.2.5_alpha5-alt12
4.1: 3.2.4-alt3
4.0: 3.2.4-alt3
3.0: 3.2.4-alt2
www.altlinux.org/Changes

Группа :: Графика
Пакет: xfig

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: 0005-fix-font-encoding-in-i18n-mode.patch
Скачать


From f58d5dc904e7ac3e2fe6462bad48c659626a353c Mon Sep 17 00:00:00 2001
From: Vladislav Zavjalov <slazav@altlinux.org>
Date: Fri, 8 Jan 2021 10:45:38 +0000
Subject: [PATCH 2/5] fix font encoding in i18n mode
---
 xfig/src/w_drawprim.c | 65 +++++++++++++++----------------------------
 1 file changed, 22 insertions(+), 43 deletions(-)
diff --git a/xfig/src/w_drawprim.c b/xfig/src/w_drawprim.c
index 8834d3a..6440d2f 100644
--- a/xfig/src/w_drawprim.c
+++ b/xfig/src/w_drawprim.c
@@ -85,6 +85,23 @@ void zXDrawLines (Display *d, Window w, GC gc, zXPoint *points, int n, int coord
 void scale_pattern (int indx);
 int SutherlandHodgmanPolygoClip (XPoint *inVertices, XPoint *outVertices, int inLength, int x1, int y1, int x2, int y2);
 
+/* add ISO8859 (if not Symbol font or ZapfDingbats) to font name in non-international mode*/
+void
+font_add_enc(const char *template){
+  if (strstr(template,"ymbol") != NULL ||
+      strstr(template,"ingbats") != NULL){
+    strcat(template,"*-*");
+    return;
+  }
+#ifdef I18N
+  if (appres.international){
+    strcat(template,"iso10646-1");
+    return;
+  }
+#endif
+  strcat(template,"ISO8859-*");
+}
+
 void init_font(void)
 {
     struct xfont   *newfont, *nf;
@@ -147,16 +164,7 @@ void init_font(void)
             for (f = 0; f < NUM_FONTS; f++) {
                 strcpy(template,x_fontinfo[f].template);  /* nope, check for font size 0 */
                 strcat(template,"0-0-*-*-*-*-");
-                /* add ISO8859 (if not Symbol font or ZapfDingbats) to font name in non-international mode*/
-                if (
-#ifdef I18N
-                    !appres.international &&
-#endif
-                    strstr(template,"ymbol") == NULL &&
-                    strstr(template,"ingbats") == NULL)
-                        strcat(template,"ISO8859-*");
-                else
-                    strcat(template,"*-*");
+                font_add_enc(template);
 
                 if ((fontlist = XListFonts(tool_d, template, 1, &count))){
                   if (appres.DEBUG)
@@ -183,19 +191,8 @@ void init_font(void)
 	    strcat(template,"*-*-*-*-*-*-");
 	    strcpy(backup_template,x_backup_fontinfo[f].template);
 	    strcat(backup_template,"*-*-*-*-*-*-");
-	    /* add ISO8859 (if not Symbol font or ZapfDingbats) to font name in non-international mode*/
-	    if (
-#ifdef I18N
-		!appres.international &&
-#endif
-		strstr(template,"ymbol") == NULL &&
-		strstr(template,"ingbats") == NULL) {
-		    strcat(template,"ISO8859-*");
-		    strcat(backup_template,"ISO8859-*");
-	    } else {
-		strcat(template,"*-*");
-		strcat(backup_template,"*-*");
-            }
+	    font_add_enc(template);
+	    font_add_enc(backup_template);
 	    /* don't free the Fontlist because we keep pointers into it */
 	    p = 0;
 
@@ -353,32 +350,14 @@ lookfont(int fnum, int size)
 		strcpy(template,x_fontinfo[fnum].template);
 		/* attach pointsize to font name */
 		strcat(template,"%d-*-*-*-*-*-");
-		/* add ISO8859 (if not Symbol font or ZapfDingbats) to font name in non-international mode */
-		if (
-#ifdef I18N
-		    !appres.international &&
-#endif
-		    strstr(template,"ymbol") == NULL &&
-		    strstr(template,"ingbats") == NULL)
-			strcat(template,"ISO8859-*");
-	        else
-			strcat(template,"*-*");
+		font_add_enc(template);
 		/* use the pixel field instead of points in the fontname so that the
 		font scales with screen size */
 		sprintf(fn, template, size);
 		/* do same process with backup font name in case first doesn't exist */
 		strcpy(template,x_backup_fontinfo[fnum].template);
 		strcat(template,"%d-*-*-*-*-*-");
-		/* add ISO8859 (if not Symbol font or ZapfDingbats) to font name in non-international mode */
-		if (
-#ifdef I18N
-		    !appres.international &&
-#endif
-		    strstr(template,"ymbol") == NULL &&
-		    strstr(template,"ingbats") == NULL)
-			strcat(template,"ISO8859-*");
-	        else
-			strcat(template,"*-*");
+		font_add_enc(template);
 		sprintf(back_fn, template, size);
 	    }
 	    /* allocate space for the name and put it in the structure */
-- 
2.24.1
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin