summarylogtreecommitdiffstats
path: root/0002-allow-ISO-646.1991-IRV-as-well-adobe-standard-for-bd.patch
diff options
context:
space:
mode:
authorRyan Farley2019-08-31 07:04:50 -0500
committerRyan Farley2019-08-31 07:07:19 -0500
commit4d692f5b46f4e1556e3d1e2f6fcb03beddee3403 (patch)
tree877dabb9591cf64883081915a7664c4e869acfaa /0002-allow-ISO-646.1991-IRV-as-well-adobe-standard-for-bd.patch
parentec88257753a14fb41ed4ce90ad2ed1124edaa25d (diff)
downloadaur-4d692f5b46f4e1556e3d1e2f6fcb03beddee3403.tar.gz
patches to fix segfaults, handle more encodings
...should probably include PKGBUILD and SRCINFO
Diffstat (limited to '0002-allow-ISO-646.1991-IRV-as-well-adobe-standard-for-bd.patch')
-rw-r--r--0002-allow-ISO-646.1991-IRV-as-well-adobe-standard-for-bd.patch72
1 files changed, 72 insertions, 0 deletions
diff --git a/0002-allow-ISO-646.1991-IRV-as-well-adobe-standard-for-bd.patch b/0002-allow-ISO-646.1991-IRV-as-well-adobe-standard-for-bd.patch
new file mode 100644
index 000000000000..2a4e0875de96
--- /dev/null
+++ b/0002-allow-ISO-646.1991-IRV-as-well-adobe-standard-for-bd.patch
@@ -0,0 +1,72 @@
+From 07230480293018e2f5a7fa7c2ddb7aaebd567897 Mon Sep 17 00:00:00 2001
+From: Ryan Farley <ryan.farley@gmx.com>
+Date: Sat, 31 Aug 2019 06:42:24 -0500
+Subject: [PATCH app/fonttosfnt 2/2] allow ISO-646.1991-IRV as well, adobe
+ standard for bdf
+
+Allow for BDF file with no specified encoding to be read as Adobe
+Standard (per freetype's BDF driver), and handle any Unicode-equivalent
+encoding without changing the encoding name.
+---
+ read.c | 26 ++++++++++++++++++++------
+ 1 file changed, 20 insertions(+), 6 deletions(-)
+
+diff --git a/read.c b/read.c
+index 5e80cc5..05f7b4f 100644
+--- a/read.c
++++ b/read.c
+@@ -64,6 +64,7 @@ readFile(char *filename, FontPtr font)
+ StrikePtr strike;
+ BitmapPtr bitmap;
+ int symbol = 0;
++ int force_unicode = 1;
+ char *encoding_name = NULL;
+ FontMapPtr mapping = NULL;
+ FontMapReversePtr reverse = NULL;
+@@ -79,13 +80,20 @@ readFile(char *filename, FontPtr font)
+ return -1;
+ }
+
+- /* FreeType will handle Unicode and automatically map ISO-8859-1 to
+- * Unicode for us -- everything else needs a mapping */
++ /* FreeType will insist on encodings which are simple subsets of unicode
++ * to be read as unicode regardless of what we call them. */
++ for(j = 0; j < face->num_charmaps; ++j) {
++ if((face->charmaps[j]->encoding == ft_encoding_none) ||
++ (face->charmaps[j]->encoding == ft_encoding_adobe_standard)) {
++ force_unicode = 0;
++ break;
++ }
++ }
++
+ encoding_name = faceEncoding(face);
+ if(encoding_name == NULL) {
+ symbol = 1;
+- } else if((strcasecmp(encoding_name, "iso10646-1") != 0) &&
+- (strcasecmp(encoding_name, "iso8859-1") != 0)) {
++ } else if(strcasecmp(encoding_name, "iso10646-1") != 0) {
+ if(reencode_flag)
+ mapping = FontEncMapFind(encoding_name,
+ FONT_ENCODING_UNICODE, 0, 0, NULL);
+@@ -228,10 +236,16 @@ readFile(char *filename, FontPtr font)
+ return -1;
+ }
+
+- if(!symbol && !mapping)
++ if((!symbol && !mapping) || force_unicode) {
+ rc = FT_Select_Charmap(face, ft_encoding_unicode);
+- else
++ } else {
+ rc = FT_Select_Charmap(face, ft_encoding_none);
++ if(rc != 0) {
++ /* BDF will default to Adobe Standard even for nonstandard
++ * encodings, so try that as a last resort. */
++ rc = FT_Select_Charmap(face, ft_encoding_adobe_standard);
++ }
++ }
+ if(rc != 0) {
+ fprintf(stderr, "Couldn't select character map: %x.\n", rc);
+ return -1;
+--
+2.23.0
+