Commit dccc752
XML escape sequence for font name in bf files
Changed files (6)
modifiedlibbirdfont/BirdFontFile.valamodifiedlibbirdfont/FileTab.valamodifiedlibbirdfont/GlyphRange.valamodifiedlibbirdfont/MenuTab.valamodifiedlibbirdfont/OpenFontFormat/load_font.cmodifiedlibbirdfont/TabBar.vala
Diff
@@ -78,7 +78,6 @@ class BirdFontFile : GLib.Object { bool ok = true; Xml.Node* root; - TabBar.start_wheel (); tr.read (); root = tr.expand (); @@ -90,7 +89,6 @@ class BirdFontFile : GLib.Object { } tr.close ();- TabBar.stop_wheel (); return ok; }@@ -251,8 +249,6 @@ class BirdFontFile : GLib.Object { os.put_string ("hadjustment=\""); os.put_string (round (k)); os.put_string ("\" />\n");- - Tool.yield (); } catch (GLib.Error e) { warning (@"$(e.message) \n"); }@@ -274,16 +270,16 @@ class BirdFontFile : GLib.Object { } public void write_description (DataOutputStream os) throws GLib.Error {- os.put_string (@"<postscript_name>$(font.postscript_name)</postscript_name>\n");- os.put_string (@"<name>$(font.name)</name>\n");- os.put_string (@"<subfamily>$(font.subfamily)</subfamily>\n");+ os.put_string (@"<postscript_name>$(Markup.escape_text (font.postscript_name))</postscript_name>\n");+ os.put_string (@"<name>$(Markup.escape_text (font.name))</name>\n");+ os.put_string (@"<subfamily>$(Markup.escape_text (font.subfamily))</subfamily>\n"); os.put_string (@"<bold>$(font.bold)</bold>\n"); os.put_string (@"<italic>$(font.italic)</italic>\n"); - os.put_string (@"<full_name>$(font.full_name)</full_name>\n");- os.put_string (@"<unique_identifier>$(font.unique_identifier)</unique_identifier>\n");- os.put_string (@"<version>$(font.version)</version>\n");- os.put_string (@"<description>$(font.description)</description>\n");- os.put_string (@"<copyright>$(font.copyright)</copyright>\n");+ os.put_string (@"<full_name>$(Markup.escape_text (font.full_name))</full_name>\n");+ os.put_string (@"<unique_identifier>$(Markup.escape_text (font.unique_identifier))</unique_identifier>\n");+ os.put_string (@"<version>$(Markup.escape_text (font.version))</version>\n");+ os.put_string (@"<description>$(Markup.escape_text (font.description))</description>\n");+ os.put_string (@"<copyright>$(Markup.escape_text (font.copyright))</copyright>\n"); } public void write_lines (DataOutputStream os) throws GLib.Error {@@ -41,9 +41,9 @@ public class FileTab : FontDisplay { font = BirdFont.get_current_font (); + // FIXME: clean up this nested lamda function dialog.signal_discard.connect (() => { Font f;- bool loaded; if (MenuTab.suppress_event) { return;@@ -55,22 +55,21 @@ public class FileTab : FontDisplay { MainWindow.clear_glyph_cache (); MainWindow.close_all_tabs (); + MenuTab.load_callback = new LoadCallback ();+ f.set_file (fn);- loaded = f.load (); // FIXME: background thread+ MainWindow.native_window.load (); // background thread - if (!unlikely (loaded)) {- warning (@"Failed to load font $fn");- return;- }+ MenuTab.load_callback.file_loaded.connect (() => {+ MainWindow.get_drawing_tools ().remove_all_grid_buttons ();+ foreach (string v in f.grid_width) {+ MainWindow.get_drawing_tools ().parse_grid (v);+ } - MainWindow.get_drawing_tools ().remove_all_grid_buttons ();- foreach (string v in f.grid_width) {- MainWindow.get_drawing_tools ().parse_grid (v);- }- - MainWindow.get_drawing_tools ().background_scale.set_value (f.background_scale);- KerningTools.update_kerning_classes ();- MenuTab.select_overview ();+ MainWindow.get_drawing_tools ().background_scale.set_value (f.background_scale);+ KerningTools.update_kerning_classes ();+ MenuTab.select_overview ();+ }); }); dialog.signal_save.connect (() => {@@ -123,10 +123,10 @@ public class GlyphRange { * @param ranges unicode ranges */ public void parse_ranges (string ranges) throws MarkupError {- parse_range_string (ranges, true);+ parse_range_string (ranges); } - private void parse_range_string (string ranges, bool sync) throws MarkupError {+ private void parse_range_string (string ranges) throws MarkupError { string[] r; if (ranges == " ") {@@ -159,10 +159,6 @@ public class GlyphRange { } else { throw new MarkupError.PARSE (@"$w is not a single letter or a unicode range."); }-- if (!sync) {- Tool.yield ();- } } } @@ -116,6 +116,7 @@ public class MenuTab : FontDisplay { } } + // FIXME: background thread public static void save_as_bfp () { Font f; string? fn;@@ -791,8 +791,6 @@ GString* get_bf_font (FT_Face face, char* file, int* err) { g_string_append (bf, glyph->str); g_string_free (glyph, 0);- - bird_font_tool_yield (); } kerning = (gchar*) bird_font_open_font_format_reader_parse_kerning (file); @@ -803,7 +801,6 @@ GString* get_bf_font (FT_Face face, char* file, int* err) { } g_string_append (bf, "</font>\n");- bird_font_tool_yield (); return bf; }@@ -820,8 +817,6 @@ GString* load_freetype_font (char* file, int* err) { FT_Glyph glyph; FT_UInt glyph_index; - bird_font_tab_bar_start_wheel ();- error = FT_Init_FreeType (&library); if (error != OK) { g_warning ("Freetype init error %d.\n", error);@@ -860,8 +855,6 @@ GString* load_freetype_font (char* file, int* err) { FT_Done_Face ( face ); FT_Done_FreeType( library ); - bird_font_tab_bar_stop_wheel ();- *err = OK; return bf; }@@ -809,14 +809,12 @@ public class TabBar : GLib.Object { public static void start_wheel () { if (!is_null (MainWindow.get_tab_bar ())) { MainWindow.get_tab_bar ().set_progress (true);- Tool.yield (); } } public static void stop_wheel () { if (!is_null (MainWindow.get_tab_bar ())) { MainWindow.get_tab_bar ().set_progress (false);- Tool.yield (); } } }