summaryrefslogtreecommitdiffstats
path: root/src/ui/widget
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2017-06-06 17:15:26 +0000
committerjabiertxof <info@marker.es>2017-06-06 17:15:26 +0000
commit0cbf1e83f2a78036ae473b0a173d416acf52efd8 (patch)
tree7353975af4ca1b881ac61bc482046549d1ffcc42 /src/ui/widget
parentRemove silly code ;) (diff)
parentFix build with versions of Harfbuzz prior to 1.2.3. (Visualization of alterna... (diff)
downloadinkscape-0cbf1e83f2a78036ae473b0a173d416acf52efd8.tar.gz
inkscape-0cbf1e83f2a78036ae473b0a173d416acf52efd8.zip
Update to trunk
(bzr r15715)
Diffstat (limited to 'src/ui/widget')
-rw-r--r--src/ui/widget/font-variants.cpp91
-rw-r--r--src/ui/widget/font-variants.h4
2 files changed, 70 insertions, 25 deletions
diff --git a/src/ui/widget/font-variants.cpp b/src/ui/widget/font-variants.cpp
index b386051a6..e7645b620 100644
--- a/src/ui/widget/font-variants.cpp
+++ b/src/ui/widget/font-variants.cpp
@@ -231,9 +231,17 @@ namespace Widget {
// Add tooltips
_feature_entry.set_tooltip_text( _("Feature settings in CSS form. No sanity checking is performed."));
+ _feature_list.set_justify( Gtk::JUSTIFY_LEFT );
+ _feature_list.set_line_wrap( true );
+
+ _feature_substitutions.set_justify( Gtk::JUSTIFY_LEFT );
+ _feature_substitutions.set_line_wrap( true );
+
// Add to frame
_feature_vbox.add( _feature_entry );
_feature_vbox.add( _feature_label );
+ _feature_vbox.add( _feature_list );
+ _feature_vbox.add( _feature_substitutions );
_feature_frame.add( _feature_vbox );
add( _feature_frame );
@@ -532,30 +540,65 @@ namespace Widget {
// Make list of tables not handled above... eventually add Gtk::Label with
// this info.
- // std::map<Glib::ustring,int> table_copy = res->openTypeTables;
- // if( (it = table_copy.find("liga")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("clig")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("dlig")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("hlig")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("calt")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("subs")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("sups")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("smcp")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("c2sc")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("pcap")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("unic")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("titl")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("lnum")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("onum")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("pnum")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("tnum")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("frac")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("afrc")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("ordn")) != table_copy.end() ) table_copy.erase( it );
- // if( (it = table_copy.find("zero")) != table_copy.end() ) table_copy.erase( it );
- // for(it = table_copy.begin(); it != table_copy.end(); ++it) {
- // std::cout << "Other: " << it->first << " Occurances: " << it->second << std::endl;
- // }
+ std::map<Glib::ustring,int> table_copy = res->openTypeTables;
+ if( (it = table_copy.find("liga")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("clig")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("dlig")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("hlig")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("calt")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("subs")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("sups")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("smcp")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("c2sc")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("pcap")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("unic")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("titl")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("lnum")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("onum")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("pnum")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("tnum")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("frac")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("afrc")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("ordn")) != table_copy.end() ) table_copy.erase( it );
+ if( (it = table_copy.find("zero")) != table_copy.end() ) table_copy.erase( it );
+ std::string ott_list = "OpenType tables not included above: ";
+ for(it = table_copy.begin(); it != table_copy.end(); ++it) {
+ // std::cout << "Other: " << it->first << " Occurances: " << it->second << std::endl;
+ ott_list += it->first;
+ ott_list += ", ";
+ }
+
+ _feature_list.set_text( ott_list.c_str() );
+
+ // "<span foreground='darkblue'>";
+ Glib::ustring markup;
+
+ for (auto table: res->openTypeSubstitutions) {
+
+ markup += table.first;
+ markup += ": ";
+
+ markup += "<span font_family='";
+ markup += sp_font_description_get_family(res->descr);
+ markup += "'>";
+ markup += Glib::Markup::escape_text(table.second);
+ markup += "</span>";
+
+ markup += " → ";
+
+ markup += "<span font_family='";
+ markup += sp_font_description_get_family(res->descr);
+ markup += "'>";
+ markup += "<span font_features='";
+ markup += table.first;
+ markup += "'>";
+ markup += Glib::Markup::escape_text(table.second);
+ markup += "</span>";
+ markup += "</span>\n";
+
+ }
+
+ _feature_substitutions.set_markup ( markup.c_str() );
} else {
std::cerr << "FontVariants::update(): Couldn't find font_instance for: "
diff --git a/src/ui/widget/font-variants.h b/src/ui/widget/font-variants.h
index d4329feff..cf8e476a9 100644
--- a/src/ui/widget/font-variants.h
+++ b/src/ui/widget/font-variants.h
@@ -86,7 +86,9 @@ protected:
Gtk::VBox _feature_vbox;
Gtk::Entry _feature_entry;
Gtk::Label _feature_label;
-
+ Gtk::Label _feature_list;
+ Gtk::Label _feature_substitutions;
+
private:
void ligatures_init();
void ligatures_callback();