Commit 580307c
Fix memory leaks
Changed files (18)
modifiedlibbirdfont/OpenFontFormat/CffTable.valamodifiedlibbirdfont/OpenFontFormat/Cmap.valamodifiedlibbirdfont/OpenFontFormat/DirectoryTable.valamodifiedlibbirdfont/OpenFontFormat/GlyfTable.valamodifiedlibbirdfont/OpenFontFormat/GposTable.valamodifiedlibbirdfont/OpenFontFormat/HheaTable.valamodifiedlibbirdfont/OpenFontFormat/HmtxTable.valamodifiedlibbirdfont/OpenFontFormat/KernList.valamodifiedlibbirdfont/OpenFontFormat/KernTable.valamodifiedlibbirdfont/OpenFontFormat/LocaTable.valamodifiedlibbirdfont/OpenFontFormat/MaxpTable.valamodifiedlibbirdfont/OpenFontFormat/NameTable.valamodifiedlibbirdfont/OpenFontFormat/OffsetTable.valamodifiedlibbirdfont/OpenFontFormat/OpenFontFormatReader.valamodifiedlibbirdfont/OpenFontFormat/OpenFontFormatWriter.valamodifiedlibbirdfont/OpenFontFormat/PairFormat1.valamodifiedlibbirdfont/OpenFontFormat/PostTable.valamodifiedlibbirdfont/OpenFontFormat/UnicodeRangeBits.vala
Diff
@@ -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++) {@@ -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."); } @@ -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;@@ -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.");@@ -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;@@ -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 ();@@ -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;@@ -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))); } }); @@ -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)); } } @@ -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 (); @@ -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 contours@@ -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); // platform@@ -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);@@ -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; @@ -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; @@ -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> (); } }@@ -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");@@ -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 () {