Hello community, here is the log from the commit of package yast2-fonts for openSUSE:Factory checked in at 2015-05-10 10:47:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-fonts (Old) and /work/SRC/openSUSE:Factory/.yast2-fonts.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-fonts" Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-fonts/yast2-fonts.changes 2015-01-08 23:02:12.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.yast2-fonts.new/yast2-fonts.changes 2015-05-10 10:47:23.000000000 +0200 @@ -1,0 +2,12 @@ +Fri May 8 14:41:33 UTC 2015 - an...@suse.com + +- more flexible dependency in package specification (bsc#929899) +- 3.1.14 + +------------------------------------------------------------------- +Tue Apr 28 12:51:52 UTC 2015 - pgaj...@suse.com + +- user mode +- 3.1.13 + +------------------------------------------------------------------- Old: ---- yast2-fonts-3.1.12.tar.bz2 New: ---- yast2-fonts-3.1.14.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-fonts.spec ++++++ --- /var/tmp/diff_new_pack.0XoYGx/_old 2015-05-10 10:47:23.000000000 +0200 +++ /var/tmp/diff_new_pack.0XoYGx/_new 2015-05-10 10:47:23.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package yast2-fonts # -# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,22 +17,22 @@ Name: yast2-fonts -Version: 3.1.12 +Version: 3.1.14 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: %{name}-%{version}.tar.bz2 Requires: fontconfig -Requires: fonts-config >= 20141207 +Requires: fonts-config >= 20150424 Requires: yast2 >= 3.0.5 Requires: yast2-ruby-bindings >= 1.2.0 -BuildRequires: rubygem-yast-rake BuildRequires: update-desktop-files BuildRequires: yast2 >= 3.0.5 BuildRequires: yast2-devtools >= 1.2.0 BuildRequires: yast2-ruby-bindings >= 1.2.0 +BuildRequires: rubygem(yast-rake) # extensions BuildRequires: font-specimen-devel BuildRequires: fontconfig-devel @@ -40,7 +40,7 @@ BuildRequires: ruby-devel # for testing BuildRequires: dejavu-fonts -BuildRequires: fonts-config +BuildRequires: fonts-config >= 20150424 BuildRequires: rubygem(rspec) Summary: YaST2 - Fonts Configuration @@ -57,12 +57,12 @@ %setup -n %{name}-%{version} %build -# build FreeType2 ruby binding +# build ruby bindings rake compile %install rake install DESTDIR="%{buildroot}" -# install FreeType2 ruby binding +# install ruby bindings mkdir -p %{buildroot}%{_libdir}/ruby/vendor_ruby/%{rb_ver}/%{rb_arch}/yast for ext in `ls src/ext`; do install -m 755 src/ext/$ext/$ext.so %{buildroot}%{_libdir}/ruby/vendor_ruby/%{rb_ver}/%{rb_arch}/yast ++++++ yast2-fonts-3.1.12.tar.bz2 -> yast2-fonts-3.1.14.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fonts-3.1.12/CONTRIBUTING.md new/yast2-fonts-3.1.14/CONTRIBUTING.md --- old/yast2-fonts-3.1.12/CONTRIBUTING.md 2014-11-26 12:57:42.000000000 +0100 +++ new/yast2-fonts-3.1.14/CONTRIBUTING.md 2015-05-08 16:38:27.000000000 +0200 @@ -12,13 +12,13 @@ ----------- If you find a problem, please report it either using -[Bugzilla](https://bugzilla.novell.com/enter_bug.cgi?format=guided&product=openSUSE+Factory&component=YaST2) +[Bugzilla](https://bugzilla.suse.com/enter_bug.cgi?format=guided&product=openSUSE+Factory&component=YaST2) or [GitHub issues](../../issues). (For Bugzilla, use the [simplified registration](https://secure-www.novell.com/selfreg/jsp/createSimpleAccount.jsp) if you don't have an account yet.) If you find a problem, please report it either using -[Bugzilla](https://bugzilla.novell.com/) or GitHub issues. We can't guarantee +[Bugzilla](https://bugzilla.suse.com/) or GitHub issues. We can't guarantee that every bug will be fixed, but we'll try. When creating a bug report, please follow our [bug reporting @@ -71,7 +71,7 @@ [widely used conventions](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). -If your commit is related to a bug in Buzgilla or an issue on GitHub, make sure +If your commit is related to a bug in Bugzilla or an issue on GitHub, make sure you mention it in the commit message for cross-reference. Use format like bnc#775814 or gh#yast/yast-foo#42. See also [GitHub autolinking](https://help.github.com/articles/github-flavored-markdown#references) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fonts-3.1.12/package/yast2-fonts.changes new/yast2-fonts-3.1.14/package/yast2-fonts.changes --- old/yast2-fonts-3.1.12/package/yast2-fonts.changes 2014-12-10 11:15:16.000000000 +0100 +++ new/yast2-fonts-3.1.14/package/yast2-fonts.changes 2015-05-08 16:55:56.000000000 +0200 @@ -1,4 +1,16 @@ ------------------------------------------------------------------- +Fri May 8 14:41:33 UTC 2015 - an...@suse.com + +- more flexible dependency in package specification (bsc#929899) +- 3.1.14 + +------------------------------------------------------------------- +Tue Apr 28 12:51:52 UTC 2015 - pgaj...@suse.com + +- user mode +- 3.1.13 + +------------------------------------------------------------------- Wed Dec 10 10:11:43 UTC 2014 - pgaj...@suse.com - use _raw_ default fontconfig plus rendring/family list changes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fonts-3.1.12/package/yast2-fonts.spec new/yast2-fonts-3.1.14/package/yast2-fonts.spec --- old/yast2-fonts-3.1.12/package/yast2-fonts.spec 2014-12-10 11:11:42.000000000 +0100 +++ new/yast2-fonts-3.1.14/package/yast2-fonts.spec 2015-05-08 16:55:56.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-fonts -Version: 3.1.12 +Version: 3.1.14 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -25,14 +25,14 @@ Requires: yast2 >= 3.0.5 Requires: yast2-ruby-bindings >= 1.2.0 -Requires: fonts-config >= 20141207 +Requires: fonts-config >= 20150424 Requires: fontconfig BuildRequires: update-desktop-files BuildRequires: yast2-ruby-bindings >= 1.2.0 BuildRequires: yast2-devtools >= 1.2.0 BuildRequires: yast2 >= 3.0.5 -BuildRequires: rubygem-yast-rake +BuildRequires: rubygem(yast-rake) # extensions BuildRequires: freetype2-devel BuildRequires: fontconfig-devel @@ -41,7 +41,7 @@ # for testing BuildRequires: rubygem(rspec) BuildRequires: dejavu-fonts -BuildRequires: fonts-config +BuildRequires: fonts-config >= 20150424 Summary: YaST2 - Fonts Configuration Group: System/YaST @@ -57,12 +57,12 @@ %setup -n %{name}-%{version} %build -# build FreeType2 ruby binding +# build ruby bindings rake compile %install rake install DESTDIR="%{buildroot}" -# install FreeType2 ruby binding +# install ruby bindings mkdir -p %{buildroot}%{_libdir}/ruby/vendor_ruby/%{rb_ver}/%{rb_arch}/yast for ext in `ls src/ext`; do install -m 755 src/ext/$ext/$ext.so %{buildroot}%{_libdir}/ruby/vendor_ruby/%{rb_ver}/%{rb_arch}/yast diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fonts-3.1.12/src/lib/fonts/fonts-config-state.rb new/yast2-fonts-3.1.14/src/lib/fonts/fonts-config-state.rb --- old/yast2-fonts-3.1.12/src/lib/fonts/fonts-config-state.rb 2014-12-19 11:16:00.000000000 +0100 +++ new/yast2-fonts-3.1.14/src/lib/fonts/fonts-config-state.rb 2015-05-08 16:38:27.000000000 +0200 @@ -4,8 +4,8 @@ class FontsConfigState include Yast extend Yast::I18n - - SC_PATH = ".sysconfig.fonts-config" + include Yast::I18n + include FileUtils HINT_STYLES = [ "none", @@ -120,10 +120,10 @@ "ebl" => [ "ja", "ko", "zh" ], "lcd_filter" => LCD_FILTERS[0], "subpixel_layout" => SUBPIXEL_LAYOUTS[0], - "help" => N_("Fonts rendered without antialiasing (grayscale smoothing), black and white. In contrast with smoothed fonts, they are much more readable without any drawback of smoothing (fuzzy or uneven stems etc.). In connection with good hinted fonts (e. g. Liberation 1 fonts), this setting can give bitmap quality fonts while maintaining scalability. Default family preference list is used."), + "help" => N_("Fonts rendered without antialiasing (grayscale smoothing), black and white. In contrast with smoothed fonts, they are much more readable without any drawback of smoothing (fuzzy or uneven stems etc.). In connection with good hinted fonts (e. g. Liberation 1 fonts), this setting can give bitmap quality fonts while maintaining scalability."), }, "bw_mono_fonts" => { - "name" => N_("Black and White Rendering for Monospace Fonts"), + "name" => N_("Black and White Rendering for Monospaced Fonts"), "fpl" => { "sans-serif" => [], "serif" => [], @@ -140,7 +140,7 @@ "ebl" => [ "ja", "ko", "zh" ], "lcd_filter" => LCD_FILTERS[0], "subpixel_layout" => SUBPIXEL_LAYOUTS[0], - "help" => N_("Monospace fonts rendered not smoothed, other fonts (sans-serif, sans and unspecified) will use default setting. Default family preference list is used."), + "help" => N_("Monospaced fonts rendered not smoothed, other fonts (sans-serif, sans and unspecified) will use default setting. Default family preference list is used."), }, "default" => { "name" => N_("Default"), @@ -160,7 +160,7 @@ "ebl" => [ "ja", "ko", "zh" ], "lcd_filter" => LCD_FILTERS[0], "subpixel_layout" => SUBPIXEL_LAYOUTS[0], - "help" => N_("Fonts are smoothed with antialiasing. Unlike black and white rendered fonts, this setting can produce 'beautiful' fonts sometimes to the detriment of readability. TrueType fonts, which are known to have good hinting instructions are rendered with bytecode interpreter, otherwise freetype autohinter is used on the 'hintslight' hinting level. Using font native hinting instructions produces glyphs displayed with thiner stems. Default family preference list is used (nowdays TrueType fonts with good instructions are prefered)."), + "help" => N_("Fonts are smoothed with antialiasing. Unlike black and white rendered fonts, this setting can produce 'beautiful' fonts sometimes to the detriment of readability. TrueType fonts, which are known to have good hinting instructions are rendered with bytecode interpreter, otherwise FreeType autohinter is used on the 'hintslight' hinting level. Using font native hinting instructions produces glyphs displayed with thiner stems. Default family preference list is used (nowdays TrueType fonts with good instructions are prefered)."), }, "cff_fonts" => { "name" => N_("CFF Fonts"), @@ -202,7 +202,7 @@ "ebl" => [ "ja", "ko", "zh" ], "lcd_filter" => LCD_FILTERS[0], "subpixel_layout" => SUBPIXEL_LAYOUTS[0], - "help" => N_("Given Adobe's contribution to freetype library, CFF fonts can be considered good compromise between readability and smoothness of rendered glyphs."), + "help" => N_("Given Adobe's contribution to FreeType library, CFF fonts can be considered good compromise between readability and smoothness of rendered glyphs."), }, "autohinter" => { "name" => N_("Exclusive Autohinter Rendering"), @@ -222,7 +222,7 @@ "ebl" => [ "ja", "ko", "zh" ], "lcd_filter" => LCD_FILTERS[0], "subpixel_layout" => SUBPIXEL_LAYOUTS[0], - "help" => N_("Unlike in default profile, even for good hinted fonts, freetype's autohinter is used (on the 'hintslight' level). That leads to thicker, but sometimes fuzzier (and therefore less readable), glyphs. Default family preference list is used."), + "help" => N_("Unlike in default profile, even for good hinted fonts, FreeType's autohinter is used (on the 'hintslight' level). That leads to thicker, but sometimes fuzzier (and therefore less readable), glyphs. Default family preference list is used."), }, "subpixel_rendering" => { "name" => N_("Subpixel Rendering"), @@ -269,12 +269,43 @@ attr_accessor :lcd_filter attr_accessor :subpixel_layout - def initialize + def initialize(root_user = true) + @root_user = root_user + textdomain "fonts" load_preset("unset") end + def initialize_agent(write) + if (@root_user) + # system mode + # (yes, root user can't change his font setting via this module :)) + @agent_path = ".sysconfig.fonts-config" + else + # user mode + # ~/.config/fontconfig/fonts-config + @agent_path = ".userconfig.fonts-config" + @agent_file_path = FontsConfigCommand.user_sysconfig_file + + if (write && !File.exists?(@agent_file_path)) + mkdir_p(File.dirname(@agent_file_path)) + touch(@agent_file_path) + end + + SCR.RegisterAgent(path(@agent_path), + term(:ag_ini, term(:SysConfigFile, @agent_file_path))) + end + end + + def finalize_agent + if (!@root_user) + SCR.UnregisterAgent(path(@agent_path)) + end + @agent_path = "" + end + # create list of preset [key, name] pairs def self.preset_list + textdomain "fonts" PRESETS.keys.drop(1).map do |preset| [ preset, _(PRESETS[preset]["name"]) ] end @@ -318,56 +349,58 @@ end def write + initialize_agent(true) + temp = @fpl["sans-serif"].join(':') SCR.Write( - path(SC_PATH + ".PREFER_SANS_FAMILIES"), + path(@agent_path + ".PREFER_SANS_FAMILIES"), temp ) temp = @fpl["serif"].join(':') SCR.Write( - path(SC_PATH + ".PREFER_SERIF_FAMILIES"), + path(@agent_path + ".PREFER_SERIF_FAMILIES"), temp ) temp = @fpl["monospace"].join(':') SCR.Write( - path(SC_PATH + ".PREFER_MONO_FAMILIES"), + path(@agent_path + ".PREFER_MONO_FAMILIES"), temp ) temp = @search_metric_compatible ? "yes" : "no" SCR.Write( - path(SC_PATH + ".SEARCH_METRIC_COMPATIBLE"), + path(@agent_path + ".SEARCH_METRIC_COMPATIBLE"), temp ) temp = @really_force_fpl ? "yes" : "no" SCR.Write( - path(SC_PATH + ".FORCE_FAMILY_PREFERENCE_LISTS"), + path(@agent_path + ".FORCE_FAMILY_PREFERENCE_LISTS"), temp ) temp = @force_aa_off ? "yes" : "no" SCR.Write( - path(SC_PATH + ".FORCE_BW"), + path(@agent_path + ".FORCE_BW"), temp ) temp = @force_aa_off_mono ? "yes" : "no" SCR.Write( - path(SC_PATH + ".FORCE_BW_MONOSPACE"), + path(@agent_path + ".FORCE_BW_MONOSPACE"), temp ) temp = @force_ah_on ? "yes" : "no" SCR.Write( - path(SC_PATH + ".FORCE_AUTOHINT"), + path(@agent_path + ".FORCE_AUTOHINT"), temp ) SCR.Write( - path(SC_PATH + ".FORCE_HINTSTYLE"), + path(@agent_path + ".FORCE_HINTSTYLE"), @force_hintstyle ) @@ -376,7 +409,7 @@ # the list is empty -- empty string would mean 'ALL') temp = !@embedded_bitmaps || (!@all_ebl && @ebl.empty?) ? "no" : "yes" SCR.Write( - path(SC_PATH + ".USE_EMBEDDED_BITMAPS"), + path(@agent_path + ".USE_EMBEDDED_BITMAPS"), temp ) @@ -386,84 +419,87 @@ temp = @ebl.join(':') end SCR.Write( - path(SC_PATH + ".EMBEDDED_BITMAPS_LANGUAGES"), + path(@agent_path + ".EMBEDDED_BITMAPS_LANGUAGES"), temp ) SCR.Write( - path(SC_PATH + ".USE_LCDFILTER"), + path(@agent_path + ".USE_LCDFILTER"), @lcd_filter ) SCR.Write( - path(SC_PATH + ".USE_RGBA"), + path(@agent_path + ".USE_RGBA"), @subpixel_layout ) # flush SCR.Write( - path(SC_PATH), + path(@agent_path), nil ) + + finalize_agent end def read # use values from "default" profile in case # some sysconfig variables are missing load_preset("default") + initialize_agent(false) temp = SCR.Read( - path(SC_PATH + ".PREFER_SANS_FAMILIES") + path(@agent_path + ".PREFER_SANS_FAMILIES") ) @fpl["sans-serif"] = temp.split(':') unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".PREFER_SERIF_FAMILIES") + path(@agent_path + ".PREFER_SERIF_FAMILIES") ) @fpl["serif"] = temp.split(':') unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".PREFER_MONO_FAMILIES") + path(@agent_path + ".PREFER_MONO_FAMILIES") ) @fpl["monospace"] = temp.split(':') unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".SEARCH_METRIC_COMPATIBLE"), + path(@agent_path + ".SEARCH_METRIC_COMPATIBLE"), ) @search_metric_compatible = temp == "yes" unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".FORCE_FAMILY_PREFERENCE_LISTS"), + path(@agent_path + ".FORCE_FAMILY_PREFERENCE_LISTS"), ) @really_force_fpl = temp == "yes" unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".FORCE_BW"), + path(@agent_path + ".FORCE_BW"), ) @force_aa_off = temp == "yes" unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".FORCE_BW_MONOSPACE"), + path(@agent_path + ".FORCE_BW_MONOSPACE"), ) @force_aa_off_mono = temp == "yes" unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".FORCE_AUTOHINT"), + path(@agent_path + ".FORCE_AUTOHINT"), ) @force_ah_on = temp == "yes" unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".FORCE_HINTSTYLE"), + path(@agent_path + ".FORCE_HINTSTYLE"), ) @force_hintstyle = temp unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".USE_EMBEDDED_BITMAPS") + path(@agent_path + ".USE_EMBEDDED_BITMAPS") ) @embedded_bitmaps = temp == "yes" unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".EMBEDDED_BITMAPS_LANGUAGES") + path(@agent_path + ".EMBEDDED_BITMAPS_LANGUAGES") ) unless temp.nil? if (temp == "") @@ -476,15 +512,17 @@ end temp = SCR.Read( - path(SC_PATH + ".USE_LCDFILTER"), + path(@agent_path + ".USE_LCDFILTER"), ) @lcd_filter = temp unless temp.nil? temp = SCR.Read( - path(SC_PATH + ".USE_RGBA"), + path(@agent_path + ".USE_RGBA"), ) @subpixel_layout = temp unless temp.nil? - end + + finalize_agent + end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fonts-3.1.12/src/lib/fonts/fonts-dialog.rb new/yast2-fonts-3.1.14/src/lib/fonts/fonts-dialog.rb --- old/yast2-fonts-3.1.12/src/lib/fonts/fonts-dialog.rb 2015-01-06 17:13:54.000000000 +0100 +++ new/yast2-fonts-3.1.14/src/lib/fonts/fonts-dialog.rb 2015-05-08 16:38:27.000000000 +0200 @@ -30,7 +30,9 @@ FONTCONFIG_PATH = "/etc/fonts" def initialize - @fcstate = FontsConfigState.new + textdomain "fonts" + + @fcstate = FontsConfigState.new(root_user?) @current_fpl = @fcstate.fpl.keys[0] @current_family = nil @current_families = Hash.new @@ -55,31 +57,31 @@ end private - def initialize_aaoff_checkbox(key) - UI.ChangeWidget(Id("chkb_aa_off"), :Value, - @fcstate.force_aa_off) + def initialize_antialias_checkbox(key = nil) + UI.ChangeWidget(Id("chkb_antialias"), :Value, + !@fcstate.force_aa_off) end - def handle_aaoff_checkbox(key, map) + def handle_antialias_checkbox(key, map) @fcstate.force_aa_off = - UI.QueryWidget(Id("chkb_aa_off"), :Value) - UI.ChangeWidget(Id("chkb_aa_mono_off"), :Enabled, !@fcstate.force_aa_off) + !UI.QueryWidget(Id("chkb_antialias"), :Value) + UI.ChangeWidget(Id("chkb_antialias_mono"), :Enabled, !@fcstate.force_aa_off) return nil end - def initialize_aamonooff_checkbox(key) - UI.ChangeWidget(Id("chkb_aa_mono_off"), :Value, - @fcstate.force_aa_off_mono) - UI.ChangeWidget(Id("chkb_aa_mono_off"), :Enabled, !@fcstate.force_aa_off_mono) + def initialize_antialias_mono_checkbox(key = nil) + UI.ChangeWidget(Id("chkb_antialias_mono"), :Value, + !@fcstate.force_aa_off_mono) + UI.ChangeWidget(Id("chkb_antialias_mono"), :Enabled, !@fcstate.force_aa_off) end - def handle_aaoffmono_checkbox(key, map) + def handle_antialias_mono_checkbox(key, map) @fcstate.force_aa_off_mono = - UI.QueryWidget(Id("chkb_aa_mono_off"), :Value) + !UI.QueryWidget(Id("chkb_antialias_mono"), :Value) return nil end - def initialize_ahon_checkbox(key) + def initialize_ahon_checkbox(key = nil) UI.ChangeWidget(Id("chkb_ah_on"), :Value, @fcstate.force_ah_on) end @@ -90,7 +92,7 @@ return nil end - def initialize_searchmc_checkbox(key) + def initialize_searchmc_checkbox(key = nil) UI.ChangeWidget(Id("chkb_search_mc"), :Value, @fcstate.search_metric_compatible) end @@ -101,7 +103,7 @@ return nil end - def initialize_noother_checkbox(key) + def initialize_noother_checkbox(key = nil) UI.ChangeWidget(Id("chkb_no_other"), :Value, @fcstate.really_force_fpl) end @@ -112,7 +114,7 @@ return nil end - def initialize_hintstyle_combo(key) + def initialize_hintstyle_combo(key = nil) UI.ChangeWidget(Id("cmb_hintstyle"), :Items, FontsConfigState::HINT_STYLES) UI.ChangeWidget(Id("cmb_hintstyle"), :Value, @@ -125,7 +127,7 @@ return nil end - def initialize_lcdfilter_combo(key) + def initialize_lcdfilter_combo(key = nil) UI.ChangeWidget(Id("cmb_lcd_filter"), :Items, FontsConfigState::LCD_FILTERS) UI.ChangeWidget(Id("cmb_lcd_filter"), :Value, @@ -139,7 +141,7 @@ return nil end - def initialize_subpixellayout_combo(key) + def initialize_subpixellayout_combo(key = nil) UI.ChangeWidget(Id("cmb_subpixel_layout"), :Items, FontsConfigState::SUBPIXEL_LAYOUTS) UI.ChangeWidget(Id("cmb_subpixel_layout"), :Value, @@ -156,7 +158,7 @@ return nil end - def initialize_genericaliases_table(key) + def initialize_genericaliases_table(key = nil) items = [] @fcstate.fpl.keys.each do |generic_alias| items.push(Item(generic_alias)) @@ -172,7 +174,7 @@ return nil end - def initialize_familylist_widget(key) + def initialize_familylist_widget(key = nil) items = [] @fcstate.fpl[@current_fpl].each do |f| indication = family_installed?(f) ? @@ -241,7 +243,7 @@ UI.ChangeWidget(Id("txt_add_manual"), :Value, "") end - initialize_familylist_widget("") + initialize_familylist_widget return nil end @@ -287,7 +289,7 @@ @fcstate.all_ebl = false end - initialize_embeddedbitmaps_widget("") + initialize_embeddedbitmaps_widget return nil end @@ -296,20 +298,20 @@ FontsConfigState::preset?(event["ID"]) @fcstate.load_preset(event["ID"]) if CWMTab.CurrentTab == "specimens" - initialize_specimen_widget("") + initialize_specimen_widget elsif CWMTab.CurrentTab == "algorithms" - initialize_aaoff_checkbox("") - initialize_aamonooff_checkbox("") - initialize_ahon_checkbox("") - initialize_hintstyle_combo("") - initialize_lcdfilter_combo("") - initialize_subpixellayout_combo("") - initialize_embeddedbitmaps_widget("") + initialize_antialias_checkbox + initialize_antialias_mono_checkbox + initialize_ahon_checkbox + initialize_hintstyle_combo + initialize_lcdfilter_combo + initialize_subpixellayout_combo + initialize_embeddedbitmaps_widget else - initialize_genericaliases_table("") - initialize_familylist_widget("") - initialize_searchmc_checkbox("") - initialize_noother_checkbox("") + initialize_genericaliases_table + initialize_familylist_widget + initialize_searchmc_checkbox + initialize_noother_checkbox end subpixel_freetype_warning installation_summary_check @@ -366,7 +368,7 @@ return pattern end - def initialize_specimen_widget(key) + def initialize_specimen_widget(key = nil) @fcstate.fpl.keys.each do |generic_alias| @current_families[generic_alias] = installed_families_from(@fcstate.fpl[generic_alias])[0] @@ -406,7 +408,7 @@ # folowing widgets exist only in graphical mode if (!UI.TextMode) UI.ChangeWidget(Id("chkb_specimen_antialiasing"), :Value, - @fcstate.force_aa_off ? true : false ) + @fcstate.force_aa_off ? false : true ) UI.ChangeWidget(Id("chkb_specimen_autohinter"), :Value, @fcstate.force_ah_on ? true : false ) UI.ChangeWidget(Id("cmb_specimen_hintstyle"), :Value, @@ -432,7 +434,7 @@ end @fcstate.force_aa_off = - UI.QueryWidget(Id("chkb_specimen_antialiasing"), :Value) + !UI.QueryWidget(Id("chkb_specimen_antialiasing"), :Value) @fcstate.force_ah_on = UI.QueryWidget(Id("chkb_specimen_autohinter"), :Value) @fcstate.force_hintstyle = @@ -555,7 +557,7 @@ def specimen_alias_widget(generic_alias) VBox( HBox(Left( - Label(Id("lbl_specimen_#{generic_alias}"), "Match for #{generic_alias}") + Label(Id("lbl_specimen_#{generic_alias}"), _("Match for %s") % generic_alias) ), Right( UI.TextMode ? Label("") : ComboBox(Id("cmb_specimen_scripts_#{generic_alias}"), Opt(:notify, :immediate), "", []) @@ -570,25 +572,25 @@ def widgets help = FontsConfigDialogHelp.new widgets_description = { - "chkb_aa_off" => { + "chkb_antialias" => { "widget" => :checkbox, - "label" => _("Turn &Antialiasing Off"), - "init" => fun_ref(method(:initialize_aaoff_checkbox), + "label" => _("Font &Antialiasing"), + "init" => fun_ref(method(:initialize_antialias_checkbox), "void (string)"), "opt" => [ :notify, :immediate ], - "handle_events" => [ "chkb_aa_off" ], - "handle" => fun_ref(method(:handle_aaoff_checkbox), + "handle_events" => [ "chkb_antialias" ], + "handle" => fun_ref(method(:handle_antialias_checkbox), "symbol (string, map)"), "help" => help.antialiasing, }, - "chkb_aa_mono_off" => { + "chkb_antialias_mono" => { "widget" => :checkbox, - "label" => _("Turn Antialiasing Off for &Monospaced Fonts"), - "init" => fun_ref(method(:initialize_aamonooff_checkbox), + "label" => _("Antialias Also &Monospaced Fonts"), + "init" => fun_ref(method(:initialize_antialias_mono_checkbox), "void (string)"), "opt" => [ :notify, :immediate ], - "handle_events" => [ "chkb_aa_mono_off" ], - "handle" => fun_ref(method(:handle_aaoffmono_checkbox), + "handle_events" => [ "chkb_antialias_mono" ], + "handle" => fun_ref(method(:handle_antialias_mono_checkbox), "symbol (string, map)"), "no_help" => true }, @@ -741,7 +743,7 @@ }, "chkb_no_other" => { "widget" => :checkbox, - "label" => _("Really do not use o&ther fonts"), + "label" => _("Never use o&ther fonts"), "opt" => [ :notify, :immediate ], "init" => fun_ref(method(:initialize_noother_checkbox), "void (string)"), @@ -761,7 +763,7 @@ ), UI.TextMode ? Label("") : HBox( CheckBox(Id("chkb_specimen_antialiasing"), Opt(:notify, :immediate), - _("Turn &Antialiasing Off")), + _("Font &Antialiasing")), HStretch(), CheckBox(Id("chkb_specimen_autohinter"), Opt(:notify, :immediate), _("Force A&utohinting On")), @@ -800,8 +802,8 @@ Frame( _("Antialiasing"), VBox( - Left("chkb_aa_off"), - Left("chkb_aa_mono_off") + Left("chkb_antialias"), + Left(HBox(HSpacing(4), "chkb_antialias_mono")) ), ), Frame( @@ -822,8 +824,8 @@ VStretch() ), "widget_names" => [ - "chkb_aa_off", - "chkb_aa_mono_off", + "chkb_antialias", + "chkb_antialias_mono", "chkb_ah_on", "cmb_hintstyle", "cstm_embedded_bitmaps", @@ -891,7 +893,7 @@ family_list_file = FontsConfigCommand.local_family_list_file rendering_file = FontsConfigCommand.rendering_config metric_bw_symlink = FontsConfigCommand.metric_compatibility_bw_symlink - metric_file = FontsConfigCommand.metric_compatibility_config + metric_avail = FontsConfigCommand.metric_compatibility_avail metric_symlink = FontsConfigCommand.metric_compatibility_symlink mkdir_p("#{@tmp_dir}#{@fontconfig_path}") @@ -902,7 +904,7 @@ rm_f("#{@tmp_dir}#{family_list_file}") rm_f("#{@tmp_dir}#{rendering_file}") rm_f("#{@tmp_dir}#{metric_bw_symlink}") - ln_sf("#{metric_file}", "#{@tmp_dir}#{metric_symlink}") + ln_sf("#{metric_avail}", "#{@tmp_dir}#{metric_symlink}") ENV['FONTCONFIG_PATH'] = "#{@tmp_dir}#{@fontconfig_path}" end @@ -932,7 +934,7 @@ " ", 1, [ _("Read sysconfig file") ], - [ _("Reading #{sysconfig_file}...") ], + [ _("Reading %s...") % sysconfig_file ], "" ) @@ -952,10 +954,13 @@ "widget_descr" => widgets_description, "contents" => VBox(HBox(HStretch(), "btn_presets"), "tabs_fonts_configuration"), - "caption" => _("Font Configuration"), + "caption" => _("Font Configuration") + + (root_user? ? "" : _(" (User Mode)")), "next_button" => Label.OKButton, "abort_button" => Label.AbortButton, - "back_button" => "", + # misuse back_button a bit + "back_button" => (root_user? || !File.exists?(FontsConfigCommand.user_sysconfig_file) ? + nil : _("&Use system settings")), } ) @@ -965,36 +970,38 @@ case ret when :next - if (root_user?) - y2milestone("saving configuration") - Progress.New( - _("Writing Font Configuration"), - " ", - 2, - [ _("Write sysconfig file"), - _("Run fonts-config") ], - [ _("Writing %s...") % sysconfig_file, - _("Running fonts-config...") ], - "" - ) - - Progress.NextStage - y2milestone("writing #{sysconfig_file}") - @fcstate.write - y2milestone("written: " + @fcstate.to_s) - Progress.NextStage - y2milestone("running fonts-config") - FontsConfigCommand::run_fonts_config - Progress.Finish - y2milestone("module finished") - else - Yast.import "Popup" - text = _("root user privileges are required "\ - "to save and apply font settings. ") - Popup.Error(text) - end + y2milestone("saving configuration") + Progress.New( + _("Writing Font Configuration"), + " ", + 2, + [ _("Write sysconfig file"), + _("Run fonts-config") ], + [ _("Writing %s...") % sysconfig_file, + _("Running fonts-config...") ], + "" + ) + + Progress.NextStage + y2milestone("writing #{sysconfig_file}") + @fcstate.write + y2milestone("written: " + @fcstate.to_s) + Progress.NextStage + y2milestone("running fonts-config") + FontsConfigCommand::run_fonts_config(root_user? ? "" : "--user") + Progress.Finish + y2milestone("module finished") when :abort y2milestone("aborted, do not save configuration") + when :back + # we are in user mode + Yast.import "Popup" + text = _("This will irrecoverably remove user setting done previously " + + "with this module.") + if (Popup.YesNo(text)) + FontsConfigCommand::run_fonts_config("--remove-user-setting") + y2milestone("remove user setting") + end end Wizard.CloseDialog end @@ -1006,6 +1013,8 @@ include I18n def initialize + textdomain "fonts" + Yast.import "UI" @fcstate = FontsConfigState.new @fcstate.load_preset("default") @@ -1015,8 +1024,22 @@ Yast.import "String" presets = FontsConfigState::PRESETS _("<h1>Font Configuraution Module</h1>") + - _("<p>Module to control system wide font rendering setting.") + - _(" Help for <i>Presets</i> button and for the current tab follows.</p>") + + _("<p>Module to control <b>system wide</b> or <b>user</b> font rendering setting.</p>") + + _("<i>Distribution default</i> is font setting shipped on media and " + + "it is that one almost same for years (not counting decisions of individual DE). ") + + _("This setting can be changed:<ul>") + + _("<li>system wide when module is run with <tt>root</tt> credentials "+ + "to create <i>system setting.</i> ") + + _("System, where font module never run or <b>Default</b> preset was chosen, " + + "uses distribution default.</li>") + + _("<li>for <i>user setting</i> when module is run as ordindary user. ") + + _("User, which never run this module or chooses to <b>Use system settings</b>, uses system settings. ") + + _("User, which chooses <b>Default</b> preset, uses distribution default.</li></ul>") + + _("<p><b>NOTE:</b> ") + + _("In general, it is not recommended to combine font module user mode with other font setting. ") + + _("Nevertheless, setting in <tt>~/.config/fontconfig/fonts.conf</tt> " + + "should always have precendence before arbitrary font module setting.</p>") + + _("<p>Help for <i>Presets</i> button and for the current tab follows.</p>") + _("<p><b>Presets</b> button serves a possibility to choose predefined profiles: <ul>") + presets.keys.drop(1).map do |preset| _("<li><b>%{name}: </b>%{help}</li>") % { @@ -1024,9 +1047,9 @@ :help => _(presets[preset]["help"]) } end.join + "</ul>" + - _("Every single item there just fills appropriate setting in both tabs. " \ + _("Every single menu item there just fills appropriate setting in all tabs. " \ "That setting can be later arbitrarily customized in depth by respective " \ - "individual fields of both tabs.</p>") + "individual fields of corresponding tabs.</p>") end def match_preview @@ -1034,9 +1057,9 @@ _("<p>In this paragraph, <i>current setting</i> means setting " \ "of the system plus changes made in currently running fonts module.</p>") + _("<p>Matches to system generic aliases can be seen in this initial tab. ") + - _("In other words, for every alias () you can see family name, which" \ - " resolves to given alias according to <i>current setting.</i></p>") % - @fcstate.fpl.keys.join(", ") + + _("In other words, for every alias (%s) you can see family name, which" \ + " resolves to given alias according to <i>current setting.</i></p>" \ + "") % @fcstate.fpl.keys.join(", ") + _("<p>In adition to that, graphical mode allows to display " \ "font specimen of the matched font rendered (again) taking " \ "<i>current setting</i> into account. ") + @@ -1088,9 +1111,9 @@ "colour primaries (subpixels) of an LCD display.</p>") + _("<p>Choose LCD filter, which should be used, and subpixel layout " \ "corresponding to display and its rotation.</p>") + - _("<p>Note, that due to patent reasons, FreeType2 has subpixel " \ + _("<p>Note, that due to patent reasons, FreeType has subpixel " \ "rendering turned off by default.") + - _(" Without FreeType2's subpixel rendering support compiled in, " \ + _(" Without FreeType's subpixel rendering support compiled in, " \ "setting in this section has no effect.</p>") + _("<p>See: %s<\p>") % "<i>Wikipedia: Subpixel rendering</i>" end @@ -1099,12 +1122,12 @@ _("<h2>Prefered Families Tab</h2>") + _("<p>This tab controls <b>which</b> fonts are rendered.</p>") + _("<h3>Preference Lists</h3>") + - _("<p>Family preference lists (FPL) for generic aliases (%s) " \ + _("<p>Here, Family Preference Lists (FPL) for generic aliases (%s) " \ "can be defined.") % @fcstate.fpl.keys.join(', ') + _(" These are sorted lists of family names, with most prefered " \ "family first.") + _(" There is default (system-wide) FPL yet defined for each generic alias.") + - _(" FPLs defined in this dialog will be prepended to them.<\p>") + + _(" FPLs defined in this dialog will be prepended to them.</p>") + _("<p>System will look for the first <b>installed</b> family in the list," \ " other query elements taking into account of course. Available font" \ " packages for SUSE distributions can be" \ @@ -1120,10 +1143,10 @@ _("<p>Two fonts are metric compatible, when all corresponding letters" \ " are of the same size. That implies, document displayed using these" \ " fonts has the same same size too, same line wraps etc.</p>") + - _("<p>Via default setting, fontconfig substitutes metric compatible fonts preferably," \ + _("<p>Via default setting, system substitutes metric compatible fonts preferably," \ " and FPLs defined in this dialog can be circumvented by this rule.</p>") + - _("<p>Where metric compatibility do not matter, this option can be unchecked.</p>") + - _("<h4>Really do not use other fonts</h4>") + + _("<p>Where metric compatibility does not matter, this option can be unchecked.</p>") + + _("<h4>Never use other fonts</h4>") + _("<p>When checked, this option introduces very strong position for here" \ " defined preference lists. It pushes families from there before" \ " document or GUI requests, if they cover required charset.</p>") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fonts-3.1.12/src/lib/fonts/fpl-add-dialog.rb new/yast2-fonts-3.1.14/src/lib/fonts/fpl-add-dialog.rb --- old/yast2-fonts-3.1.12/src/lib/fonts/fpl-add-dialog.rb 2014-12-04 01:14:13.000000000 +0100 +++ new/yast2-fonts-3.1.14/src/lib/fonts/fpl-add-dialog.rb 2015-05-08 16:38:27.000000000 +0200 @@ -17,6 +17,8 @@ ] def initialize(fcstate) + textdomain "fonts" + @fcstate = fcstate @available_families = installed_families(["family", "fontformat"]) # delete families, that are part of list for some alias diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fonts-3.1.12/src/lib/fonts/rich-text-dialog.rb new/yast2-fonts-3.1.14/src/lib/fonts/rich-text-dialog.rb --- old/yast2-fonts-3.1.12/src/lib/fonts/rich-text-dialog.rb 2014-11-26 12:57:42.000000000 +0100 +++ new/yast2-fonts-3.1.14/src/lib/fonts/rich-text-dialog.rb 2015-05-08 16:38:27.000000000 +0200 @@ -7,6 +7,7 @@ include I18n def initialize + textdomain "fonts" end def run(text, summary) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fonts-3.1.12/src/lib/fonts/select-ebl-dialog.rb new/yast2-fonts-3.1.14/src/lib/fonts/select-ebl-dialog.rb --- old/yast2-fonts-3.1.12/src/lib/fonts/select-ebl-dialog.rb 2014-11-26 12:57:42.000000000 +0100 +++ new/yast2-fonts-3.1.14/src/lib/fonts/select-ebl-dialog.rb 2015-05-08 16:38:27.000000000 +0200 @@ -218,6 +218,7 @@ include I18n def initialize + textdomain "fonts" end def run(selected_langs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fonts-3.1.12/src/lib/fonts/shell-commands.rb new/yast2-fonts-3.1.14/src/lib/fonts/shell-commands.rb --- old/yast2-fonts-3.1.12/src/lib/fonts/shell-commands.rb 2014-12-19 13:51:54.000000000 +0100 +++ new/yast2-fonts-3.1.14/src/lib/fonts/shell-commands.rb 2015-05-08 16:38:27.000000000 +0200 @@ -4,13 +4,14 @@ module FontsConfig BASH_SCR_PATH = Yast::Path.new(".target.bash_output") FONTS_CONFIG_CMD = "/usr/sbin/fonts-config" + XDG_PREFIX = ENV['HOME'] + '/.config/' class FontsConfigCommand - def self.run_fonts_config - return false unless File.executable?(FONTS_CONFIG_CMD) + def self.run_fonts_config(args) + return false unless have_fonts_config? - cmd = FONTS_CONFIG_CMD + cmd = FONTS_CONFIG_CMD + " " + args result = Yast::SCR.Execute(BASH_SCR_PATH, cmd) unless (result["exit"].zero?) Yast.import "Popup" @@ -28,8 +29,8 @@ return fonts_config_file("rendering config") end - def self.metric_compatibility_config - return fonts_config_file("metric compatibility config") + def self.metric_compatibility_avail + return fonts_config_file("metric compatibility avail") end def self.metric_compatibility_symlink @@ -44,6 +45,10 @@ return fonts_config_file("sysconfig file") end + def self.user_sysconfig_file + return XDG_PREFIX + fonts_config_file("user sysconfig file") + end + def self.have_fonts_config? return File.executable?(FONTS_CONFIG_CMD) end @@ -54,7 +59,7 @@ cmd = "#{FONTS_CONFIG_CMD} --info" result = Yast::SCR.Execute(BASH_SCR_PATH, cmd) - file = result["stdout"].lines.select{|l| l =~ /#{file_id}/}[0].gsub(/.*: /, '').gsub(/\n/, '') + file = result["stdout"].lines.select{|l| l =~ /^\s*#{file_id}:/}[0].gsub(/.*: /, '').gsub(/\n/, '') if (!result["exit"].zero? || file.length == 0) Yast.import "Popup" Yast::Popup.Error(cmd + " run failed:" + result["stdout"]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-fonts-3.1.12/test/shell-commands_spec.rb new/yast2-fonts-3.1.14/test/shell-commands_spec.rb --- old/yast2-fonts-3.1.12/test/shell-commands_spec.rb 2014-12-19 13:52:31.000000000 +0100 +++ new/yast2-fonts-3.1.14/test/shell-commands_spec.rb 2015-05-08 16:38:27.000000000 +0200 @@ -6,9 +6,14 @@ describe FontsConfig::FontsConfigCommand do describe "#run_fonts_config" do - it "error popup when not run under root" do + it "returns false for system mode" do if (FontsConfig::FontsConfigCommand::have_fonts_config?) - expect(FontsConfig::FontsConfigCommand::run_fonts_config).to be false + expect(FontsConfig::FontsConfigCommand::run_fonts_config("")).to be false + end + end + it "returns true for user mode" do + if (FontsConfig::FontsConfigCommand::have_fonts_config?) + expect(FontsConfig::FontsConfigCommand::run_fonts_config("--user")).to be true end end end @@ -34,12 +39,12 @@ end end - describe "#metric_compatibility_config" do + describe "#metric_compatibility_avail" do it "returns existing file name" do if (FontsConfig::FontsConfigCommand::have_fonts_config?) - metric_config = FontsConfig::FontsConfigCommand::metric_compatibility_config - expect(metric_config).to be_a(String) - expect(File.exist?(metric_config)).to be true + metric_avail = FontsConfig::FontsConfigCommand::metric_compatibility_avail + expect(metric_avail).to be_a(String) + expect(File.exist?(metric_avail)).to be true end end end