shithub: neatmkfn

Download patch

ref: 549f1d468ddd93c51785305931a8f15dcea4bfb6
parent: 75c3ea970de97a857fc27c70696e5009ccf73e71
author: Ali Gholami Rudi <ali@rudi.ir>
date: Tue Jun 15 20:46:29 EDT 2021

otf: include a section number in gsec

--- a/otf.c
+++ b/otf.c
@@ -35,6 +35,7 @@
 static int glyph_wid[NGLYPHS];
 static int glyph_n;
 static int upm;			/* units per em */
+static int sec;			/* current font section (lookup index * 10) */
 
 struct otf {
 	void *otf;		/* TTC header or offset table */
@@ -537,6 +538,7 @@
 		cgrp[i] = ggrp_coverage(grp, cnt);
 		free(grp);
 	}
+	printf("gsec %d\n", sec);
 	for (i = 0; i < mcnt; i++) {
 		void *mark = marks + U16(marks, 2 + 4 * i + 2);	/* mark anchor */
 		int dx = -uwid(S16(mark, 2));
@@ -548,6 +550,7 @@
 		printf("gpos %s 2 @%d %s:%+d%+d%+d%+d\n",
 			feat, bgrp, glyph_name[mcov[i]], dx, dy, 0, 0);
 	}
+	printf("gsec %d\n", sec + 1);
 	for (i = 0; i < bcnt; i++) {
 		for (j = 0; j < ccnt; j++) {
 			void *base = bases + U16(bases, 2 + ccnt * 2 * i + 2 * j);
@@ -868,7 +871,8 @@
 		int ltype = U16(lookup, 0);
 		int ntabs = U16(lookup, 4);
 		char *tag = lookuptag(&lookups[i]);
-		printf("gsec %s\n", tag);
+		sec = (i + 1) * 10;
+		printf("gsec %d %s\n", sec, tag);
 		for (j = 0; j < ntabs; j++) {
 			void *tab = lookup + U16(lookup, 6 + 2 * j);
 			int type = ltype;
@@ -909,7 +913,8 @@
 		int ltype = U16(lookup, 0);
 		int ntabs = U16(lookup, 4);
 		char *tag = lookuptag(&lookups[i]);
-		printf("gsec %s\n", tag);
+		sec = (i + 1) * 10;
+		printf("gsec %d %s\n", sec, tag);
 		for (j = 0; j < ntabs; j++) {
 			void *tab = lookup + U16(lookup, 6 + 2 * j);
 			int type = ltype;