File 0001-1em-is-font-size-not-heigh.patch of Package fonttosfnt.20912

From 50f8c91c56334a29c18cd8c77c9431c5ff0df5a9 Mon Sep 17 00:00:00 2001
From: Christopher Zimmermann <madroach@gmerlin.de>
Date: Mon, 26 Oct 2020 12:17:45 +0100
Subject: [PATCH] 1em is font size, not height

---
 write.c | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/write.c b/write.c
index ca7c95a..0146414 100644
--- a/write.c
+++ b/write.c
@@ -238,66 +238,65 @@ fontMetrics(FontPtr font)
 
     if (count) font->metrics.awidth = sumAwidth / count;
 
-    font->metrics.height = TWO_SIXTEENTH;
+    font->metrics.size = TWO_SIXTEENTH;
 
     if(font->pxMetrics.size == UNDEF) {
 	font->pxMetrics.size = font->pxMetrics.height;
-	font->metrics.size = font->metrics.height;
     }
 
-    font->metrics.size = font->pxMetrics.size
-	    * TWO_SIXTEENTH / font->pxMetrics.height;
+    font->metrics.height = font->pxMetrics.height
+	* font->metrics.size / font->pxMetrics.size;
 
     if(font->pxMetrics.ascent == UNDEF) {
 	font->metrics.ascent = font->metrics.maxY;
 	font->pxMetrics.ascent =
 	    font->metrics.ascent
-	    * font->pxMetrics.height / TWO_SIXTEENTH;
+	    * font->pxMetrics.size / font->metrics.size;
     }
     else
 	font->metrics.ascent =
 	    font->pxMetrics.ascent
-	    * TWO_SIXTEENTH / font->pxMetrics.height;
+	    * font->metrics.size / font->pxMetrics.size;
 
     if(font->pxMetrics.descent == UNDEF) {
 	font->metrics.descent = - font->metrics.minY;
 	font->pxMetrics.descent =
 	    font->metrics.descent
-	    * font->pxMetrics.height / TWO_SIXTEENTH;
+	    * font->pxMetrics.size / font->metrics.size;
     }
     else
 	font->metrics.descent =
 	    font->pxMetrics.descent
-	    * TWO_SIXTEENTH / font->pxMetrics.height;
+	    * font->metrics.size / font->pxMetrics.size;
 
     if(font->pxMetrics.capHeight == UNDEF) {
 	if(glyphMetrics(font, 'X', NULL, NULL, NULL, NULL, &font->metrics.capHeight) != 1)
 	    font->metrics.capHeight = font->metrics.ascent;
 	font->pxMetrics.capHeight =
-	    font->metrics.capHeight * font->pxMetrics.height / TWO_SIXTEENTH;
+	    font->metrics.capHeight * font->pxMetrics.size / font->metrics.size;
     }
     else
 	font->metrics.capHeight =
 	    font->pxMetrics.capHeight
-	    * TWO_SIXTEENTH / font->pxMetrics.height;
+	    * font->metrics.size / font->pxMetrics.size;
 
     if(font->pxMetrics.xHeight == UNDEF) {
 	if(glyphMetrics(font, 'x', NULL, NULL, NULL, NULL, &font->metrics.xHeight) != 1)
 	    font->metrics.xHeight = font->metrics.capHeight * 2 / 3;
 	font->pxMetrics.xHeight =
-	    font->metrics.xHeight * font->pxMetrics.height / TWO_SIXTEENTH;
+	    font->metrics.xHeight * font->pxMetrics.size / font->metrics.size;
     }
     else
 	font->metrics.xHeight =
 	    font->pxMetrics.xHeight
-	    * TWO_SIXTEENTH / font->pxMetrics.height;
+	    * font->metrics.size / font->pxMetrics.size;
 
     if(font->pxMetrics.underlinePosition == UNDEF)
 	font->metrics.underlinePosition = - font->metrics.descent * 2;
     else {
 	font->metrics.underlinePosition =
 	    font->pxMetrics.underlinePosition
-	    * TWO_SIXTEENTH / font->pxMetrics.height;
+	    * font->metrics.size / font->pxMetrics.size;
     }
 
     if(font->pxMetrics.underlineThickness == UNDEF)
@@ -306,12 +305,12 @@ fontMetrics(FontPtr font)
 	 * X Logical Font Description Conventions (xlfd.txt)
 	 * by also considering the font weight. */
 	font->metrics.underlineThickness =
-	    TWO_SIXTEENTH
-	    / (font->pxMetrics.height < 9 ? font->pxMetrics.height : 9);
+	    font->metrics.size
+	    / (font->pxMetrics.size < 9 ? font->pxMetrics.size : 9);
     else
 	font->metrics.underlineThickness =
 	    font->pxMetrics.underlineThickness
-	    * TWO_SIXTEENTH / font->pxMetrics.height;
+	    * font->metrics.size / font->pxMetrics.size;
 }
 
 int 
-- 
GitLab

openSUSE Build Service is sponsored by