Clone in a terminal:
Commit 580307c
Johan Mattsson - 2014-07-31T13:39:25+00:00
580307c6cbdf3040a863ea32f117529f4f0fc00fjohan.mattsson.m@gmail.com

Fix memory leaks

Changed files (18)

Diff

diff --git a/libbirdfont/OpenFontFormat/CffTable.vala b/libbirdfont/OpenFontFormat/CffTable.valaindex 49da5ff..901c07d 100644--- a/libbirdfont/OpenFontFormat/CffTable.vala+++ b/libbirdfont/OpenFontFormat/CffTable.vala@@ -59,10 +59,10 @@ public class CffTable : Table { 		return 0; 	} -	List<uint32> read_index () throws Error {+	Gee.ArrayList<uint32> read_index () throws Error { 		uint32 offset_size, off; 		int entries;-		List<uint32> offsets = new List<uint32> ();+		Gee.ArrayList<uint32> offsets = new Gee.ArrayList<uint32> (); 		 		entries = dis.read_ushort (); 		printd (@"number of entries $(entries)\n");@@ -79,7 +79,7 @@ public class CffTable : Table { 		for (int i = 0; i <= entries; i++) { 			off = read_offset (offset_size); 			printd (@"offset $(off)\n");-			offsets.append (off);+			offsets.add (off); 		} 		 		return offsets;@@ -88,7 +88,7 @@ public class CffTable : Table { 	public override void parse (FontData dis) throws Error { 		uint v1, v2, offset_size, header_size, len; 		string data;-		List<uint32> offsets, dict_index;+		Gee.ArrayList<uint32> offsets, dict_index; 		int id, val; 		int off; // offset relative to table position 		@@ -108,9 +108,9 @@ public class CffTable : Table { 		offsets = read_index (); 		 		// name data-		for (int i = 0; i < offsets.length () - 1; i++) {-			off = (int) offsets.nth (i).data;-			len = offsets.nth (i + 1).data - off;+		for (int i = 0; i < offsets.size - 1; i++) {+			off = (int) offsets.get (i);+			len = offsets.get (i + 1) - off; 			//dis.seek (offset + off + header_size); 			data = dis.read_string (len); 			print (@"Found name $data\n");		@@ -123,9 +123,9 @@ public class CffTable : Table { 		// dict data 		id = 0; 		val = 0;-		for (int i = 0; i < dict_index.length () - 1; i++) {-			off = (int) offsets.nth (i).data;-			len = dict_index.nth (i + 1).data - dict_index.nth (i).data;+		for (int i = 0; i < dict_index.size - 1; i++) {+			off = (int) offsets.get (i);+			len = dict_index.get (i + 1) - dict_index.get (i); 			//dis.seek (offset + off + header_size); 			 			//for (int j = 0; j < len; j++) {diff --git a/libbirdfont/OpenFontFormat/Cmap.vala b/libbirdfont/OpenFontFormat/Cmap.valaindex d181f8d..395c893 100644--- a/libbirdfont/OpenFontFormat/Cmap.vala+++ b/libbirdfont/OpenFontFormat/Cmap.vala@@ -300,11 +300,11 @@ public class CmapSubtableWindowsUnicode : CmapSubtable { public class CmapTable : Table {  	 	GlyfTable glyf_table;	-	List<CmapSubtable> subtables;+	Gee.ArrayList<CmapSubtable> subtables;  	public CmapTable(GlyfTable gt) { 		glyf_table = gt;-		subtables = new List<CmapSubtable> ();+		subtables = new Gee.ArrayList<CmapSubtable> (); 		id = "cmap"; 	} 	@@ -313,12 +313,12 @@ public class CmapTable : Table { 	} 	 	CmapSubtable get_prefered_table () {-		if (subtables.length () == 0) {+		if (subtables.size == 0) { 			warning ("No cmap table has been parsed."); 			return new CmapSubtable (); 		} 		-		return subtables.first ().data;+		return subtables.get (0); 	} 	 	public override string get_id () {@@ -359,7 +359,7 @@ public class CmapTable : Table { 				printd (@"Parsing Unicode BMP (UCS-2) Platform: $platform Encoding: $encoding\n"); 				subtable = new CmapSubtableWindowsUnicode (); 				subtable.offset = offset + sub_offset;-				subtables.append (subtable);+				subtables.add (subtable); 			} else { 				stderr.printf (@"Unknown cmap format. Platform: $platform Encoding: $encoding.\n"); 			}@@ -369,7 +369,7 @@ public class CmapTable : Table { 			} 		} 		-		if (subtables.length () == 0) {+		if (subtables.size == 0) { 			warning ("No suitable cmap subtable found."); 		} 		diff --git a/libbirdfont/OpenFontFormat/DirectoryTable.vala b/libbirdfont/OpenFontFormat/DirectoryTable.valaindex 546d991..4f299e0 100644--- a/libbirdfont/OpenFontFormat/DirectoryTable.vala+++ b/libbirdfont/OpenFontFormat/DirectoryTable.vala@@ -36,7 +36,7 @@ public class DirectoryTable : Table { 	 	public OffsetTable offset_table; 	-	List<Table> tables;+	Gee.ArrayList<Table> tables; 	 	public DirectoryTable () { 		offset_table = new OffsetTable (this);@@ -59,6 +59,8 @@ public class DirectoryTable : Table { 		post_table = new PostTable (glyf_table); 		 		id = "Directory table";+		+		tables = new Gee.ArrayList<Table> (); 	}  	public void process () throws GLib.Error {@@ -84,41 +86,41 @@ public class DirectoryTable : Table { 		process_directory (); // this table 	} -	public unowned List<Table> get_tables () {-		if (tables.length () == 0) {-			tables.append (offset_table);-			tables.append (this);+	public Gee.ArrayList<Table> get_tables () {+		if (tables.size == 0) {+			tables.add (offset_table);+			tables.add (this); 			-			tables.append (gpos_table);+			tables.add (gpos_table); 			 			// FIXME: implement it 			// tables.append (gsub_table); 			-			tables.append (os_2_table);+			tables.add (os_2_table);  			// tables.append (gdef_table); // invalid table 			-			tables.append (cmap_table);+			tables.add (cmap_table); 			// tables.append (cvt_table);-			tables.append (gasp_table);-			tables.append (glyf_table);-			tables.append (head_table);+			tables.add (gasp_table);+			tables.add (glyf_table);+			tables.add (head_table); 			-			tables.append (hhea_table);-			tables.append (hmtx_table);+			tables.add (hhea_table);+			tables.add (hmtx_table);  			// FIXME: Remove the kern table. 			// It looks like the old kerning table is no longer needed 			// since the most browsers uses the GPOS table 			// but Windows does not accept fonts without a kern table. 			-			tables.append (kern_table);+			tables.add (kern_table); 							-			tables.append (loca_table);-			tables.append (maxp_table);-			tables.append (name_table);+			tables.add (loca_table);+			tables.add (maxp_table);+			tables.add (name_table); 			-			tables.append (post_table);+			tables.add (post_table); 		}  		return tables;diff --git a/libbirdfont/OpenFontFormat/GlyfTable.vala b/libbirdfont/OpenFontFormat/GlyfTable.valaindex 56c2873..4ad216a 100644--- a/libbirdfont/OpenFontFormat/GlyfTable.vala+++ b/libbirdfont/OpenFontFormat/GlyfTable.vala@@ -39,13 +39,13 @@ public class GlyfTable : Table { 	public PostTable post_table; 	public KernTable kern_table; 	-	public List<uint32> location_offsets; +	public Gee.ArrayList<uint32> location_offsets;   	// a list of glyphs sorted in the order we expect to find them in a 	// ttf font. notdef is the firs glyph followed by null and nonmarkingreturn. 	// after that will all assigned glyphs appear in sorted (unicode) order, all  	// remaining unassigned glyphs will be added in the last section of the file.	-	public List<Glyph> glyphs;+	public Gee.ArrayList<Glyph> glyphs; 	 	uint16 max_points = 0; 	uint16 max_contours = 0;@@ -53,8 +53,8 @@ public class GlyfTable : Table { 	public GlyfTable (LocaTable l) { 		id = "glyf"; 		loca_table = l;-		location_offsets = new List<uint32> ();-		glyphs = new List<Glyph> ();+		location_offsets = new Gee.ArrayList<uint32> ();+		glyphs = new Gee.ArrayList<Glyph> (); 	}	  	public int get_gid (string name) {@@ -83,21 +83,19 @@ public class GlyfTable : Table { 		return 32; // space 	} 	-	public uint16 get_last_char () {-		unowned List<Glyph> gl = glyphs.last ();-		Glyph g = (!) gl.data;+	public uint16 get_last_char () +	requires (glyphs.size > 0) {+		Glyph g = glyphs.get (glyphs.size - 1); 		-		while (gl != glyphs.first ()) {-			g = (!) gl.data;-			+		for (int i = glyphs.size - 1; i >= 0; i--) {+			g  = glyphs.get (i);+ 			if (!g.is_unassigned ()) { 				break; 			}-			-			gl = gl.prev; 		}-		-		return (uint16)g.unichar_code; ++		return (uint16) g.unichar_code;  	}  	public void process () throws GLib.Error {@@ -107,16 +105,16 @@ public class GlyfTable : Table { 		 		create_glyph_table (); 		-		num_glyphs = glyphs.length ();+		num_glyphs = glyphs.size; 		-		if (glyphs.length () == 0) {+		if (glyphs.size == 0) { 			warning ("No glyphs in glyf table."); 		} 		 		foreach (Glyph g in glyphs) { 			// set values for loca table 			assert (fd.length () % 4 == 0);-			location_offsets.append (fd.length ());+			location_offsets.add (fd.length ()); 			process_glyph (g, fd);  			printd (@"adding glyph: $(g.name)\n");@@ -126,7 +124,7 @@ public class GlyfTable : Table { 			last_len = fd.length (); 		} -		location_offsets.append (fd.length ()); // last entry in loca table is special+		location_offsets.add (fd.length ()); // last entry in loca table is special 		 		// every glyph is padded, no padding to be done here 		assert (fd.length () % 4 == 0);@@ -140,15 +138,15 @@ public class GlyfTable : Table { 		Glyph g; 		Font font = OpenFontFormatWriter.get_current_font (); 		uint32 indice;-		List<Glyph> unassigned_glyphs;+		Gee.ArrayList<Glyph> unassigned_glyphs; 		 		// add notdef. character at index zero + other special chars first-		glyphs.append (font.get_not_def_character ());-		glyphs.append (font.get_null_character ());-		glyphs.append (font.get_nonmarking_return ());-		glyphs.append (font.get_space ());+		glyphs.add (font.get_not_def_character ());+		glyphs.add (font.get_null_character ());+		glyphs.add (font.get_nonmarking_return ());+		glyphs.add (font.get_space ()); 		-		unassigned_glyphs = new List<Glyph> ();+		unassigned_glyphs = new Gee.ArrayList<Glyph> (); 		 		if (font.get_glyph_indice (0) == null) { 			warning ("No glyphs in font.");@@ -173,10 +171,10 @@ public class GlyfTable : Table { 			g.remove_empty_paths ();  			if (!g.is_unassigned ()) {-				glyphs.append (g);+				glyphs.add (g); 			} else { 				printd ("Adding unassigned glyph.");-				unassigned_glyphs.append (g);+				unassigned_glyphs.add (g); 			} 		} 		@@ -398,9 +396,9 @@ public class GlyfTable : Table { 		F2Dot14 scale10;  		Glyph glyph, linked_glyph;-		List<int> x = new List<int> ();-		List<int> y = new List<int> ();-		List<int> gid = new List<int> ();+		Gee.ArrayList<int> x = new Gee.ArrayList<int> ();+		Gee.ArrayList<int> y = new Gee.ArrayList<int> ();+		Gee.ArrayList<int> gid = new Gee.ArrayList<int> (); 		 		double xmin, xmax; 		double units_per_em = head_table.get_units_per_em ();@@ -424,9 +422,9 @@ public class GlyfTable : Table { 				arg2 = dis.read_byte (); 			} 			-			gid.append (glyph_index);-			x.append (arg1);-			y.append (arg2);+			gid.add (glyph_index);+			x.add (arg1);+			y.add (arg2);  			// if ((component_flags & RESERVED) > 0) 			@@ -445,9 +443,9 @@ public class GlyfTable : Table { 		} while ((component_flags & MORE_COMPONENTS) > 0); 	 		-		for (int i = 0; i < gid.length (); i++) {+		for (int i = 0; i < gid.size; i++) { 			// compensate xmax ymax with coordinate-			glid = gid.nth (i).data;+			glid = gid.get (i);  			if (glid == pgid) { 				warning ("Cannot link a glyph to it self.");diff --git a/libbirdfont/OpenFontFormat/GposTable.vala b/libbirdfont/OpenFontFormat/GposTable.valaindex 625bc6a..7ac8653 100644--- a/libbirdfont/OpenFontFormat/GposTable.vala+++ b/libbirdfont/OpenFontFormat/GposTable.vala@@ -144,13 +144,13 @@ public class GposTable : Table { 					return; 				} 				-				if (k.pairs.length () == 0) {+				if (k.pairs.size == 0) { 					warning ("No pairs."); 				} 				 				fd.add_ushort ((uint16) pair_set_offset); 				pair_set_offset += 2;-				pair_set_offset += 4 * k.pairs.length ();+				pair_set_offset += 4 * k.pairs.size; 				written += 2; 			} catch (Error e) { 				warning (e.message);@@ -169,7 +169,7 @@ public class GposTable : Table { 		pairs.all_pairs_format1 ((pn) => { 			try { 				PairFormat1 p = pn;-				uint pairset_length = p.pairs.length ();+				uint pairset_length = p.pairs.size; 				 				if (pairset_length > uint16.MAX) { 					warning ("Too many pairs");@@ -207,7 +207,7 @@ public class GposTable : Table { 					written_pairs++; 				}		 				-				if (unlikely (written_pairs != p.pairs.length ())) {+				if (unlikely (written_pairs != p.pairs.size)) { 					warning (@"written_pairs != p.pairs.length () $(written_pairs) != $(pairs.get_length ())   pairset_length: $pairset_length"); 				} 				@@ -251,7 +251,7 @@ public class GposTable : Table { 		uint len = 0; 		 		pairs.all_pairs_format1 ((p) => {-			len += 2 + 4 * p.pairs.length ();+			len += 2 + 4 * p.pairs.size; 		}); 		 		return len;diff --git a/libbirdfont/OpenFontFormat/HheaTable.vala b/libbirdfont/OpenFontFormat/HheaTable.valaindex ce783de..27522df 100644--- a/libbirdfont/OpenFontFormat/HheaTable.vala+++ b/libbirdfont/OpenFontFormat/HheaTable.vala@@ -112,7 +112,7 @@ public class HheaTable : Table { 		 		fd.add_16 (0); // metricDataFormat 0 for current format. 		-		fd.add_u16 ((uint16) glyf_table.glyphs.length()); // numberOfHMetrics Number of hMetric entries in 'hmtx' table+		fd.add_u16 ((uint16) glyf_table.glyphs.size); // numberOfHMetrics Number of hMetric entries in 'hmtx' table  		// padding 		fd.pad ();diff --git a/libbirdfont/OpenFontFormat/HmtxTable.vala b/libbirdfont/OpenFontFormat/HmtxTable.valaindex 412e443..065af24 100644--- a/libbirdfont/OpenFontFormat/HmtxTable.vala+++ b/libbirdfont/OpenFontFormat/HmtxTable.vala@@ -114,7 +114,7 @@ public class HmtxTable : Table { 			warning ("advance_width is set"); 			delete advance_width; 		}-		advance_width = new uint16 [glyf_table.glyphs.length ()];+		advance_width = new uint16 [glyf_table.glyphs.size]; 		 		// advance and lsb 		nmetrics = 0;diff --git a/libbirdfont/OpenFontFormat/KernList.vala b/libbirdfont/OpenFontFormat/KernList.valaindex 60eb0d5..3596837 100644--- a/libbirdfont/OpenFontFormat/KernList.vala+++ b/libbirdfont/OpenFontFormat/KernList.vala@@ -62,7 +62,7 @@ public class KernList : GLib.Object { 			num_pairs += kerning_pair.kerning.size; 			foreach (Kerning k in kerning_pair.kerning) { 				gid_right = (uint16) glyf_table.get_gid (k.get_glyph ().get_name ());-				current_pairs.pairs.append (new Kern (gid_left, gid_right, (int16) (k.val * HeadTable.UNITS)));+				current_pairs.pairs.add (new Kern (gid_left, gid_right, (int16) (k.val * HeadTable.UNITS))); 			} 		}); 		diff --git a/libbirdfont/OpenFontFormat/KernTable.vala b/libbirdfont/OpenFontFormat/KernTable.valaindex 46ff9d9..73555c3 100644--- a/libbirdfont/OpenFontFormat/KernTable.vala+++ b/libbirdfont/OpenFontFormat/KernTable.vala@@ -27,7 +27,7 @@ public class KernTable : Table { 	KernList pairs; 	 	// Only used for loading pairs-	public List<Kern> kerning = new List<Kern> (); // TODO: replace with the KernList+	public Gee.ArrayList<Kern> kerning = new Gee.ArrayList<Kern> (); // TODO: replace with the KernList 	public uint kerning_pairs = 0; 	 	public KernTable (GlyfTable gt) {@@ -83,7 +83,7 @@ public class KernTable : Table { 			right = dis.read_ushort (); 			k = dis.read_short (); 						-			kerning.append (new Kern (left, right, k));+			kerning.add (new Kern (left, right, k)); 		}		 	} 	diff --git a/libbirdfont/OpenFontFormat/LocaTable.vala b/libbirdfont/OpenFontFormat/LocaTable.valaindex 97eddba..5dcda0c 100644--- a/libbirdfont/OpenFontFormat/LocaTable.vala+++ b/libbirdfont/OpenFontFormat/LocaTable.vala@@ -140,8 +140,8 @@ public class LocaTable : Table { 			warn_if_reached (); 		} -		if (!(glyf_table.location_offsets.length () == glyf_table.glyphs.length () + 1)) {-			warning (@"(glyf_table.location_offsets.length () == glyf_table.glyphs.length () + 1) ($(glyf_table.location_offsets.length ()) == $(glyf_table.glyphs.length () + 1))");+		if (!(glyf_table.location_offsets.size == glyf_table.glyphs.size + 1)) {+			warning ("Bad location offset."); 		}  		fd.pad ();		diff --git a/libbirdfont/OpenFontFormat/MaxpTable.vala b/libbirdfont/OpenFontFormat/MaxpTable.valaindex 04d2364..99bbbf7 100644--- a/libbirdfont/OpenFontFormat/MaxpTable.vala+++ b/libbirdfont/OpenFontFormat/MaxpTable.vala@@ -49,11 +49,11 @@ public class MaxpTable : Table { 		// Version 0.5 for fonts with cff data and 1.0 for ttf 		fd.add_u32 (0x00010000); 		-		if (glyf_table.glyphs.length () == 0) {+		if (glyf_table.glyphs.size == 0) { 			warning ("Zero glyphs in maxp table."); 		} 		-		fd.add_u16 ((uint16) glyf_table.glyphs.length ()); // numGlyphs in the font+		fd.add_u16 ((uint16) glyf_table.glyphs.size); // numGlyphs in the font  		fd.add_u16 (glyf_table.get_max_points ()); // max points 		fd.add_u16 (glyf_table.get_max_contours ()); // max contoursdiff --git a/libbirdfont/OpenFontFormat/NameTable.vala b/libbirdfont/OpenFontFormat/NameTable.valaindex e65594b..64f66c3 100644--- a/libbirdfont/OpenFontFormat/NameTable.vala+++ b/libbirdfont/OpenFontFormat/NameTable.vala@@ -27,13 +27,13 @@ public class NameTable : Table { 	public static const uint16 PREFERED_FAMILY = 16; 	public static const uint16 PREFERED_SUB_FAMILY = 17; 	-	List<uint16> identifiers;-	List<string> text;+	Gee.ArrayList<uint16> identifiers;+	Gee.ArrayList<string> text; 			 	public NameTable () { 		id = "name";-		text = new List<string> ();-		identifiers = new List<uint16> ();+		text = new Gee.ArrayList<string> ();+		identifiers = new Gee.ArrayList<uint16> (); 	} 	 	public string get_name (uint16 identifier) {@@ -41,7 +41,7 @@ public class NameTable : Table { 		 		foreach (uint16 n in identifiers) { 			if (n == identifier) {-				return text.nth (i).data;+				return text.get (i); 			} 			i++; 		}@@ -75,44 +75,44 @@ public class NameTable : Table { 		uint16 count; 		uint16 storage_offset; 		-		List<uint16> strlen = new List<uint16> ();-		List<uint16> off = new List<uint16> ();-		List<uint16> name_id = new List<uint16> ();-		List<uint16> encoding_id = new List<uint16> ();-		List<uint16> platform = new List<uint16> ();-		List<uint16> lang = new List<uint16> ();+		Gee.ArrayList<uint16> strlen = new Gee.ArrayList<uint16> ();+		Gee.ArrayList<uint16> off = new Gee.ArrayList<uint16> ();+		Gee.ArrayList<uint16> name_id = new Gee.ArrayList<uint16> ();+		Gee.ArrayList<uint16> encoding_id = new Gee.ArrayList<uint16> ();+		Gee.ArrayList<uint16> platform = new Gee.ArrayList<uint16> ();+		Gee.ArrayList<uint16> lang = new Gee.ArrayList<uint16> (); 				 		count = dis.read_ushort (); 		storage_offset = dis.read_ushort (); 		 		for (int i = 0; i < count; i++) {-			platform.append (dis.read_ushort ());-			encoding_id.append (dis.read_ushort ());-			lang.append (dis.read_ushort ());-			name_id.append (dis.read_ushort ());-			strlen.append (dis.read_ushort ());-			off.append (dis.read_ushort ());+			platform.add (dis.read_ushort ());+			encoding_id.add (dis.read_ushort ());+			lang.add (dis.read_ushort ());+			name_id.add (dis.read_ushort ());+			strlen.add (dis.read_ushort ());+			off.add (dis.read_ushort ()); 			-			identifiers.append (name_id.last ().data);	+			identifiers.add (name_id.get (name_id.size - 1));	 		}  		int plat; 		StringBuilder str; 		for (int i = 0; i < count; i++) {-			plat = platform.nth (i).data;-			dis.seek (offset + storage_offset + off.nth (i).data);+			plat = platform.get (i);+			dis.seek (offset + storage_offset + off.get (i)); 			str = new StringBuilder (); 			 			switch (plat) { 				case 1:-					for (int j = 0; j < strlen.nth (i).data; j++) {+					for (int j = 0; j < strlen.get (i); j++) { 						char c = dis.read_char (); 						str.append_c (c); 					} 					break; 					 				case 3:-					for (int j = 0; j < strlen.nth (i).data; j += 2) {+					for (int j = 0; j < strlen.get (i); j += 2) { 						unichar c; 						char c0 = dis.read_char (); 						char c1 = dis.read_char ();@@ -128,8 +128,7 @@ public class NameTable : Table { 					break; 			}  			-			text.append (str.str);-			printd (@"Name id: $(name_id.nth (i).data) platform:  $(platform.nth (i).data) enc: $(encoding_id.nth (i).data) lang: $(lang.nth (i).data) len: $(strlen.nth (i).data) str: \"$(str.str)\"\n");		+			text.add (str.str); 		} 	} @@ -206,48 +205,48 @@ public class NameTable : Table { 		uint16 l; 		uint16 num_records; -		List<uint16> type = new List<uint16> ();-		List<string> text = new List<string> ();+		Gee.ArrayList<uint16> type = new Gee.ArrayList<uint16> ();+		Gee.ArrayList<string> text = new Gee.ArrayList<string> (); -		text.append (font.copyright);-		type.append (COPYRIGHT_NOTICE);+		text.add (font.copyright);+		type.add (COPYRIGHT_NOTICE); 		-		text.append (validate_name (font.name));-		type.append (FONT_NAME);+		text.add (validate_name (font.name));+		type.add (FONT_NAME); -		text.append (validate_name (font.subfamily));-		type.append (SUBFAMILY_NAME);+		text.add (validate_name (font.subfamily));+		type.add (SUBFAMILY_NAME); -		text.append (validate_name (font.unique_identifier));-		type.append (UNIQUE_IDENTIFIER);+		text.add (validate_name (font.unique_identifier));+		type.add (UNIQUE_IDENTIFIER); -		text.append (validate_name (font.full_name));-		type.append (FULL_FONT_NAME);+		text.add (validate_name (font.full_name));+		type.add (FULL_FONT_NAME); 		-		text.append (font.version);-		type.append (VERSION);+		text.add (font.version);+		type.add (VERSION); 		-		text.append (validate_name (font.postscript_name));-		type.append (POSTSCRIPT_NAME);+		text.add (validate_name (font.postscript_name));+		type.add (POSTSCRIPT_NAME); -		text.append (font.description);-		type.append (DESCRIPTION);+		text.add (font.description);+		type.add (DESCRIPTION); 		-		text.append (validate_ps_name (font.name));-		type.append (PREFERED_FAMILY);+		text.add (validate_ps_name (font.name));+		type.add (PREFERED_FAMILY); 		-		text.append (validate_name (font.subfamily));-		type.append (PREFERED_SUB_FAMILY);+		text.add (validate_name (font.subfamily));+		type.add (PREFERED_SUB_FAMILY); 		-		num_records = (uint16) text.length ();+		num_records = (uint16) text.size; 		 		fd.add_ushort (0); // format 1 		fd.add_ushort (2 * num_records); // nplatforms * nrecords  		fd.add_ushort (6 + 12 * 2 * num_records); // string storage offset  		for (int i = 0; i < num_records; i++) {-			t = (!) text.nth (i).data;-			p = (!) type.nth (i).data;+			t = (!) text.get (i);+			p = (!) type.get (i); 			l = (uint16) t.length; 			 			fd.add_ushort (1); // platform@@ -260,8 +259,8 @@ public class NameTable : Table { 		}	  		for (int i = 0; i < num_records; i++) {-			t = (!) text.nth (i).data;-			p = (!) type.nth (i).data;+			t = (!) text.get (i);+			p = (!) type.get (i); 			l = (uint16) (2 * t.char_count ()); // FIXME: handle UTF-16 in a better way, gconvert it.  			fd.add_ushort (3); // platformdiff --git a/libbirdfont/OpenFontFormat/OffsetTable.vala b/libbirdfont/OpenFontFormat/OffsetTable.valaindex 612c9c6..eb0bd80 100644--- a/libbirdfont/OpenFontFormat/OffsetTable.vala+++ b/libbirdfont/OpenFontFormat/OffsetTable.vala@@ -47,7 +47,7 @@ public class OffsetTable : Table { 		Fixed version = 0x00010000; // sfnt version 1.0 for TTF CFF else use OTTO  		-		num_tables = (uint16) directory_table.get_tables ().length () - 2; // number of tables, skip DirectoryTable and OffsetTable+		num_tables = (uint16) directory_table.get_tables ().size - 2; // number of tables, skip DirectoryTable and OffsetTable 		 		search_range = max_pow_2_less_than_i (num_tables) * 16; 		entry_selector = max_log_2_less_than_i (num_tables);diff --git a/libbirdfont/OpenFontFormat/OpenFontFormatReader.vala b/libbirdfont/OpenFontFormat/OpenFontFormatReader.valaindex 6f764be..03bafdb 100644--- a/libbirdfont/OpenFontFormat/OpenFontFormatReader.vala+++ b/libbirdfont/OpenFontFormat/OpenFontFormatReader.vala@@ -172,7 +172,7 @@ public class OpenFontFormatReader : Object { 			cmap_table = reader.directory_table.cmap_table; 			head_table = reader.directory_table.head_table; 			-			npairs = kern_table.kerning.length ();+			npairs = kern_table.kerning.size; 			 			units_per_em = HeadTable.units_per_em; 			diff --git a/libbirdfont/OpenFontFormat/OpenFontFormatWriter.vala b/libbirdfont/OpenFontFormat/OpenFontFormatWriter.valaindex a9d0624..b13f88a 100644--- a/libbirdfont/OpenFontFormat/OpenFontFormatWriter.vala+++ b/libbirdfont/OpenFontFormat/OpenFontFormatWriter.vala@@ -43,7 +43,7 @@ public class OpenFontFormatWriter : Object  { 	public void write_ttf_font (Font nfont) throws Error { 		long dl; 		uint8* data;-		unowned List<Table> tables;+		Gee.ArrayList<Table> tables; 		FontData fd; 		uint l; 		diff --git a/libbirdfont/OpenFontFormat/PairFormat1.vala b/libbirdfont/OpenFontFormat/PairFormat1.valaindex 76ad6c5..1f39378 100644--- a/libbirdfont/OpenFontFormat/PairFormat1.vala+++ b/libbirdfont/OpenFontFormat/PairFormat1.vala@@ -20,7 +20,7 @@ namespace BirdFont {  */ public class PairFormat1 : GLib.Object { 	public uint16 left = -1;-	public List<Kern> pairs = new List<Kern> ();+	public Gee.ArrayList<Kern> pairs = new Gee.ArrayList<Kern> (); }  }diff --git a/libbirdfont/OpenFontFormat/PostTable.vala b/libbirdfont/OpenFontFormat/PostTable.valaindex 02f96d4..cd0fb88 100644--- a/libbirdfont/OpenFontFormat/PostTable.vala+++ b/libbirdfont/OpenFontFormat/PostTable.vala@@ -18,10 +18,10 @@ public class PostTable : Table { 	 	GlyfTable glyf_table; 	-	List<uint16> index = new List<uint16> ();-	List<string> names = new List<string> ();+	Gee.ArrayList<uint16> index = new Gee.ArrayList<uint16> ();+	Gee.ArrayList<string> names = new Gee.ArrayList<string> (); -	List<string> available_names = new List<string> ();+	Gee.ArrayList<string> available_names = new Gee.ArrayList<string> (); 	 	public PostTable (GlyfTable g) { 		id = "post";@@ -51,24 +51,24 @@ public class PostTable : Table { 	public string get_name (int gid) { 		int k; 		-		if (!(0 <= gid < index.length ())) {+		if (!(0 <= gid < index.size)) { 			warning ("gid is out of range."); 			return ""; 		} 				-		k = (!) index.nth (gid).data;+		k = index.get (gid); 		 		if (gid != 0 && k == 0) { 			warning (@"Glyph $gid is assigned to name .notdef, only gid 0 can be .notdef character."); 			return ""; 		} 		-		if (!(0 <= k < names.length ())) {+		if (!(0 <= k < names.size)) { 			warning ("k is out of range."); 			return ""; 		} 				-		return (!) names.nth (k).data;+		return names.get (k); 	} 	 	public override void parse (FontData dis) throws Error {@@ -110,7 +110,7 @@ public class PostTable : Table { 		int non_standard_names = 0; 		for (uint16 i = 0; i < nnames; i++) { 			k = dis.read_ushort ();-			index.append (k);+			index.add (k); 			 			if (k >= 258) { 				non_standard_names++;@@ -128,278 +128,278 @@ public class PostTable : Table { 				name.append_c (dis.read_char ()); 			} -			names.append (name.str);+			names.add (name.str); 		}  		populate_available (); 	}  	void populate_available () {-		for (int i = 0; i < index.length (); i++) {-			available_names.append (get_name (i));+		for (int i = 0; i < index.size; i++) {+			available_names.add (get_name (i)); 		} 	} 	 	// the Macintosh standard order 	private void add_standard_names () {-		names.append (".notdef");-		names.append (".null");-		names.append ("nonmarkingreturn");-		names.append ("space");-		names.append ("exclam");-		names.append ("quotedbl");-		names.append ("numbersign");-		names.append ("dollar");-		names.append ("percent");-		names.append ("ampersand");-		names.append ("quotesingle");-		names.append ("parenleft");-		names.append ("parenright");-		names.append ("asterisk");-		names.append ("plus");-		names.append ("comma");-		names.append ("hyphen");-		names.append ("period");-		names.append ("slash");-		names.append ("zero");-		names.append ("one");-		names.append ("two");-		names.append ("three");-		names.append ("four");-		names.append ("five");-		names.append ("six");-		names.append ("seven");-		names.append ("eight");-		names.append ("nine");-		names.append ("colon");-		names.append ("semicolon");-		names.append ("less");-		names.append ("equal");-		names.append ("greater");-		names.append ("question");-		names.append ("at");-		names.append ("A");-		names.append ("B");-		names.append ("C");-		names.append ("D");-		names.append ("E");-		names.append ("F");-		names.append ("G");-		names.append ("H");-		names.append ("I");-		names.append ("J");-		names.append ("K");-		names.append ("L");-		names.append ("M");-		names.append ("N");-		names.append ("O");-		names.append ("P");-		names.append ("Q");-		names.append ("R");-		names.append ("S");-		names.append ("T");-		names.append ("U");-		names.append ("V");-		names.append ("W");-		names.append ("X");-		names.append ("Y");-		names.append ("Z");-		names.append ("bracketleft");-		names.append ("backslash");-		names.append ("bracketright");-		names.append ("asciicircum");-		names.append ("underscore");-		names.append ("grave");-		names.append ("a");-		names.append ("b");-		names.append ("c");-		names.append ("d");-		names.append ("e");-		names.append ("f");-		names.append ("g");-		names.append ("h");-		names.append ("i");-		names.append ("j");-		names.append ("k");-		names.append ("l");-		names.append ("m");-		names.append ("n");-		names.append ("o");-		names.append ("p");-		names.append ("q");-		names.append ("r");-		names.append ("s");-		names.append ("t");-		names.append ("u");-		names.append ("v");-		names.append ("w");-		names.append ("x");-		names.append ("y");-		names.append ("z");-		names.append ("braceleft");-		names.append ("bar");-		names.append ("braceright");-		names.append ("asciitilde");-		names.append ("Adieresis");-		names.append ("Aring");-		names.append ("Ccedilla");-		names.append ("Eacute");-		names.append ("Ntilde");-		names.append ("Odieresis");-		names.append ("Udieresis");-		names.append ("aacute");-		names.append ("agrave");-		names.append ("acircumflex");-		names.append ("adieresis");-		names.append ("atilde");-		names.append ("aring");-		names.append ("ccedilla");-		names.append ("eacute");-		names.append ("egrave");-		names.append ("ecircumflex");-		names.append ("edieresis");-		names.append ("iacute");-		names.append ("igrave");-		names.append ("icircumflex");-		names.append ("idieresis");-		names.append ("ntilde");-		names.append ("oacute");-		names.append ("ograve");-		names.append ("ocircumflex");-		names.append ("odieresis");-		names.append ("otilde");-		names.append ("uacute");-		names.append ("ugrave");-		names.append ("ucircumflex");-		names.append ("udieresis");-		names.append ("dagger");-		names.append ("degree");-		names.append ("cent");-		names.append ("sterling");-		names.append ("section");-		names.append ("bullet");-		names.append ("paragraph");-		names.append ("germandbls");-		names.append ("registered");-		names.append ("copyright");-		names.append ("trademark");-		names.append ("acute");-		names.append ("dieresis");-		names.append ("notequal");-		names.append ("AE");-		names.append ("Oslash");-		names.append ("infinity");-		names.append ("plusminus");-		names.append ("lessequal");-		names.append ("greaterequal");-		names.append ("yen");-		names.append ("mu");-		names.append ("partialdiff");-		names.append ("summation");-		names.append ("product");-		names.append ("pi");-		names.append ("integral");-		names.append ("ordfeminine");-		names.append ("ordmasculine");-		names.append ("Omega");-		names.append ("ae");-		names.append ("oslash");-		names.append ("questiondown");-		names.append ("exclamdown");-		names.append ("logicalnot");-		names.append ("radical");-		names.append ("florin");-		names.append ("approxequal");-		names.append ("Delta");-		names.append ("guillemotleft");-		names.append ("guillemotright");-		names.append ("ellipsis");-		names.append ("nonbreakingspace");-		names.append ("Agrave");-		names.append ("Atilde");-		names.append ("Otilde");-		names.append ("OE");-		names.append ("oe");-		names.append ("endash");-		names.append ("emdash");-		names.append ("quotedblleft");-		names.append ("quotedblright");-		names.append ("quoteleft");-		names.append ("quoteright");-		names.append ("divide");-		names.append ("lozenge");-		names.append ("ydieresis");-		names.append ("Ydieresis");-		names.append ("fraction");-		names.append ("currency");-		names.append ("guilsinglleft");-		names.append ("guilsinglright");-		names.append ("fi");-		names.append ("fl");-		names.append ("daggerdbl");-		names.append ("periodcentered");-		names.append ("quotesinglbase");-		names.append ("quotedblbase");-		names.append ("perthousand");-		names.append ("Acircumflex");-		names.append ("Ecircumflex");-		names.append ("Aacute");-		names.append ("Edieresis");-		names.append ("Egrave");-		names.append ("Iacute");-		names.append ("Icircumflex");-		names.append ("Idieresis");-		names.append ("Igrave");-		names.append ("Oacute");-		names.append ("Ocircumflex");-		names.append ("apple");-		names.append ("Ograve");-		names.append ("Uacute");-		names.append ("Ucircumflex");-		names.append ("Ugrave");-		names.append ("dotlessi");-		names.append ("circumflex");-		names.append ("tilde");-		names.append ("macron");-		names.append ("breve");-		names.append ("dotaccent");-		names.append ("ring");-		names.append ("cedilla");-		names.append ("hungarumlaut");-		names.append ("ogonek");-		names.append ("caron");-		names.append ("Lslash");-		names.append ("lslash");-		names.append ("Scaron");-		names.append ("scaron");-		names.append ("Zcaron");-		names.append ("zcaron");-		names.append ("brokenbar");-		names.append ("Eth");-		names.append ("eth");-		names.append ("Yacute");-		names.append ("yacute");-		names.append ("Thorn");-		names.append ("thorn");-		names.append ("minus");-		names.append ("multiply");-		names.append ("onesuperior");-		names.append ("twosuperior");-		names.append ("threesuperior");-		names.append ("onehalf");-		names.append ("onequarter");-		names.append ("threequarters");-		names.append ("franc");-		names.append ("Gbreve");-		names.append ("gbreve");-		names.append ("Idotaccent");-		names.append ("Scedilla");-		names.append ("scedilla");-		names.append ("Cacute");-		names.append ("cacute");-		names.append ("Ccaron");-		names.append ("ccaron");-		names.append ("dcroat");+		names.add (".notdef");+		names.add (".null");+		names.add ("nonmarkingreturn");+		names.add ("space");+		names.add ("exclam");+		names.add ("quotedbl");+		names.add ("numbersign");+		names.add ("dollar");+		names.add ("percent");+		names.add ("ampersand");+		names.add ("quotesingle");+		names.add ("parenleft");+		names.add ("parenright");+		names.add ("asterisk");+		names.add ("plus");+		names.add ("comma");+		names.add ("hyphen");+		names.add ("period");+		names.add ("slash");+		names.add ("zero");+		names.add ("one");+		names.add ("two");+		names.add ("three");+		names.add ("four");+		names.add ("five");+		names.add ("six");+		names.add ("seven");+		names.add ("eight");+		names.add ("nine");+		names.add ("colon");+		names.add ("semicolon");+		names.add ("less");+		names.add ("equal");+		names.add ("greater");+		names.add ("question");+		names.add ("at");+		names.add ("A");+		names.add ("B");+		names.add ("C");+		names.add ("D");+		names.add ("E");+		names.add ("F");+		names.add ("G");+		names.add ("H");+		names.add ("I");+		names.add ("J");+		names.add ("K");+		names.add ("L");+		names.add ("M");+		names.add ("N");+		names.add ("O");+		names.add ("P");+		names.add ("Q");+		names.add ("R");+		names.add ("S");+		names.add ("T");+		names.add ("U");+		names.add ("V");+		names.add ("W");+		names.add ("X");+		names.add ("Y");+		names.add ("Z");+		names.add ("bracketleft");+		names.add ("backslash");+		names.add ("bracketright");+		names.add ("asciicircum");+		names.add ("underscore");+		names.add ("grave");+		names.add ("a");+		names.add ("b");+		names.add ("c");+		names.add ("d");+		names.add ("e");+		names.add ("f");+		names.add ("g");+		names.add ("h");+		names.add ("i");+		names.add ("j");+		names.add ("k");+		names.add ("l");+		names.add ("m");+		names.add ("n");+		names.add ("o");+		names.add ("p");+		names.add ("q");+		names.add ("r");+		names.add ("s");+		names.add ("t");+		names.add ("u");+		names.add ("v");+		names.add ("w");+		names.add ("x");+		names.add ("y");+		names.add ("z");+		names.add ("braceleft");+		names.add ("bar");+		names.add ("braceright");+		names.add ("asciitilde");+		names.add ("Adieresis");+		names.add ("Aring");+		names.add ("Ccedilla");+		names.add ("Eacute");+		names.add ("Ntilde");+		names.add ("Odieresis");+		names.add ("Udieresis");+		names.add ("aacute");+		names.add ("agrave");+		names.add ("acircumflex");+		names.add ("adieresis");+		names.add ("atilde");+		names.add ("aring");+		names.add ("ccedilla");+		names.add ("eacute");+		names.add ("egrave");+		names.add ("ecircumflex");+		names.add ("edieresis");+		names.add ("iacute");+		names.add ("igrave");+		names.add ("icircumflex");+		names.add ("idieresis");+		names.add ("ntilde");+		names.add ("oacute");+		names.add ("ograve");+		names.add ("ocircumflex");+		names.add ("odieresis");+		names.add ("otilde");+		names.add ("uacute");+		names.add ("ugrave");+		names.add ("ucircumflex");+		names.add ("udieresis");+		names.add ("dagger");+		names.add ("degree");+		names.add ("cent");+		names.add ("sterling");+		names.add ("section");+		names.add ("bullet");+		names.add ("paragraph");+		names.add ("germandbls");+		names.add ("registered");+		names.add ("copyright");+		names.add ("trademark");+		names.add ("acute");+		names.add ("dieresis");+		names.add ("notequal");+		names.add ("AE");+		names.add ("Oslash");+		names.add ("infinity");+		names.add ("plusminus");+		names.add ("lessequal");+		names.add ("greaterequal");+		names.add ("yen");+		names.add ("mu");+		names.add ("partialdiff");+		names.add ("summation");+		names.add ("product");+		names.add ("pi");+		names.add ("integral");+		names.add ("ordfeminine");+		names.add ("ordmasculine");+		names.add ("Omega");+		names.add ("ae");+		names.add ("oslash");+		names.add ("questiondown");+		names.add ("exclamdown");+		names.add ("logicalnot");+		names.add ("radical");+		names.add ("florin");+		names.add ("approxequal");+		names.add ("Delta");+		names.add ("guillemotleft");+		names.add ("guillemotright");+		names.add ("ellipsis");+		names.add ("nonbreakingspace");+		names.add ("Agrave");+		names.add ("Atilde");+		names.add ("Otilde");+		names.add ("OE");+		names.add ("oe");+		names.add ("endash");+		names.add ("emdash");+		names.add ("quotedblleft");+		names.add ("quotedblright");+		names.add ("quoteleft");+		names.add ("quoteright");+		names.add ("divide");+		names.add ("lozenge");+		names.add ("ydieresis");+		names.add ("Ydieresis");+		names.add ("fraction");+		names.add ("currency");+		names.add ("guilsinglleft");+		names.add ("guilsinglright");+		names.add ("fi");+		names.add ("fl");+		names.add ("daggerdbl");+		names.add ("periodcentered");+		names.add ("quotesinglbase");+		names.add ("quotedblbase");+		names.add ("perthousand");+		names.add ("Acircumflex");+		names.add ("Ecircumflex");+		names.add ("Aacute");+		names.add ("Edieresis");+		names.add ("Egrave");+		names.add ("Iacute");+		names.add ("Icircumflex");+		names.add ("Idieresis");+		names.add ("Igrave");+		names.add ("Oacute");+		names.add ("Ocircumflex");+		names.add ("apple");+		names.add ("Ograve");+		names.add ("Uacute");+		names.add ("Ucircumflex");+		names.add ("Ugrave");+		names.add ("dotlessi");+		names.add ("circumflex");+		names.add ("tilde");+		names.add ("macron");+		names.add ("breve");+		names.add ("dotaccent");+		names.add ("ring");+		names.add ("cedilla");+		names.add ("hungarumlaut");+		names.add ("ogonek");+		names.add ("caron");+		names.add ("Lslash");+		names.add ("lslash");+		names.add ("Scaron");+		names.add ("scaron");+		names.add ("Zcaron");+		names.add ("zcaron");+		names.add ("brokenbar");+		names.add ("Eth");+		names.add ("eth");+		names.add ("Yacute");+		names.add ("yacute");+		names.add ("Thorn");+		names.add ("thorn");+		names.add ("minus");+		names.add ("multiply");+		names.add ("onesuperior");+		names.add ("twosuperior");+		names.add ("threesuperior");+		names.add ("onehalf");+		names.add ("onequarter");+		names.add ("threequarters");+		names.add ("franc");+		names.add ("Gbreve");+		names.add ("gbreve");+		names.add ("Idotaccent");+		names.add ("Scedilla");+		names.add ("scedilla");+		names.add ("Cacute");+		names.add ("cacute");+		names.add ("Ccaron");+		names.add ("ccaron");+		names.add ("dcroat"); 	} 	 	// mapping with char code to standard order@@ -1203,18 +1203,18 @@ public class PostTable : Table { 		fd.add_ulong (0); // min mem for Type1 		fd.add_ulong (0); // max mem for Type1 -		fd.add_ushort ((uint16) glyf_table.glyphs.length ());+		fd.add_ushort ((uint16) glyf_table.glyphs.size);  		// this part of the spec is so weird 		 		fd.add_ushort ((uint16) 0); // first index is .notdef-		index.append (0);+		index.add (0); 		-		assert (names.length () == 0);+		assert (names.size == 0); 		add_standard_names (); -		for (int i = 1; i < glyf_table.glyphs.length (); i++) {-			g = (!) glyf_table.glyphs.nth (i).data;+		for (int i = 1; i < glyf_table.glyphs.size; i++) {+			g = glyf_table.glyphs.get (i); 			name_index = get_standard_index (g.unichar_code); 			 			if (name_index != 0) {@@ -1222,16 +1222,16 @@ public class PostTable : Table { 			} else { 				printd (@"Adding non standard postscript name $(g.get_name ())\n"); 				-				name_index = (int) names.length (); // use font specific name+				name_index = (int) names.size; // use font specific name 				fd.add_ushort ((uint16) name_index);-				names.append (g.get_name ());+				names.add (g.get_name ()); 			} 			-			this.index.append ((uint16) name_index);+			this.index.add ((uint16) name_index); 		} -		for (int i = 258; i < names.length (); i++) {-			n = (!) names.nth (i).data;+		for (int i = 258; i < names.size; i++) {+			n = (!) names.get (i); 			 			if (n.length > 0xFF) { 				warning (@"too long name for glyph $n");diff --git a/libbirdfont/OpenFontFormat/UnicodeRangeBits.vala b/libbirdfont/OpenFontFormat/UnicodeRangeBits.valaindex f8b6350..11fe65b 100644--- a/libbirdfont/OpenFontFormat/UnicodeRangeBits.vala+++ b/libbirdfont/OpenFontFormat/UnicodeRangeBits.vala@@ -16,7 +16,7 @@ namespace BirdFont {  public class UnicodeRangeBits : GLib.Object { -	List<RangeBit> bits = new List<RangeBit> ();+	Gee.ArrayList<RangeBit> bits = new Gee.ArrayList<RangeBit> ();  	public UnicodeRangeBits () { 		add_ranges ();@@ -73,7 +73,7 @@ public class UnicodeRangeBits : GLib.Object { 	} 	 	void add_range (int bit, unichar start, unichar stop) {-		bits.append (new RangeBit (bit, start, stop));+		bits.add (new RangeBit (bit, start, stop)); 	} 	 	void add_ranges () {

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112