Commit 898f008
Put ligatures last in TTF fonts
Changed files (4)
modifiedlibbirdfont/ExportTool.valamodifiedlibbirdfont/OpenFontFormat/CmapSubtableFormat12.valamodifiedlibbirdfont/OpenFontFormat/CmapSubtableFormat4.valamodifiedlibbirdfont/OpenFontFormat/GlyfTable.vala
Diff
@@ -384,7 +384,7 @@ os.put_string ( <span class="capstosmallcaps">OTF</span> features, <span class="swashes">like swashes </span> <span class="alternates">alternates & </span>- <span class="smallcaps">small caps</span>, can be been added + <span class="smallcaps">small caps</span>, can be added to the font.</span> </p> </div>@@ -24,9 +24,16 @@ public class CmapSubtableFormat12 : GLib.Object { GlyphRange glyph_range = new GlyphRange (); Gee.ArrayList<UniRange> ranges; FontData fd = new FontData ();- uint32 first_assigned = 1 + glyf_table.number_of_unassigned_glyphs;+ uint32 first_assigned; uint32 indice; + first_assigned = 0;+ foreach (GlyphCollection g in glyf_table.glyphs) {+ if (!g.is_unassigned () && g.get_unicode_character () == '\0') {+ first_assigned++;+ }+ }+ foreach (GlyphCollection g in glyf_table.glyphs) { if (!g.is_unassigned () && g.get_unicode_character () < 0xFFFFFFFF) { glyph_range.add_single (g.get_unicode_character ());@@ -188,7 +188,14 @@ public class CmapSubtableFormat4 : GLib.Object { uint16 gid_length = 0; uint32 indice;- uint32 first_assigned = 1 + glyf_table.number_of_unassigned_glyphs;+ uint32 first_assigned;+ + first_assigned = 0;+ foreach (GlyphCollection g in glyf_table.glyphs) {+ if (!g.is_unassigned () && g.get_unicode_character () == '\0') {+ first_assigned++;+ }+ } foreach (GlyphCollection g in glyf_table.glyphs) { if (!g.is_unassigned () && g.get_unicode_character () < 0xFFFF) {@@ -44,7 +44,6 @@ public class GlyfTable : OtfTable { // sorted array of glyphs public Gee.ArrayList<GlyphCollection> glyphs; public Gee.ArrayList<GlyfData> glyf_data;- public uint number_of_unassigned_glyphs = 0; uint16 max_points = 0; uint16 max_contours = 0;@@ -185,9 +184,15 @@ public class GlyfTable : OtfTable { } } + glyphs.sort ((a, b) => {+ GlyphCollection g1, g2;+ g1 = (GlyphCollection) a;+ g2 = (GlyphCollection) b;+ return (int) (g1.get_unicode_character () - g2.get_unicode_character ());+ });+ foreach (GlyphCollection ug in unassigned_glyphs) {- glyphs.insert (1, ug);- number_of_unassigned_glyphs++;+ glyphs.add (ug); } }