From kde-core-devel Tue Jan 30 09:58:43 2001 From: Lars Knoll Date: Tue, 30 Jan 2001 09:58:43 +0000 To: kde-core-devel Subject: Fwd: Re: So we really want *pixel* size X-MARC-Message: https://marc.info/?l=kde-core-devel&m=98084882120700 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--------------Boundary-00=_VPZYEV4WI1OH46AWC0SA" --------------Boundary-00=_VPZYEV4WI1OH46AWC0SA Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit FYI, Lars ---------- Forwarded Message ---------- Subject: Re: So we really want *pixel* size Date: Tue, 30 Jan 2001 09:33:41 +0000 From: Magnus Kessler To: lars@trolltech.com Dear Lars, I just want to give my thoughts for the discussion on kde-core-devel. Excuse me for sending this directly to you -- I'm currently not subscribed to the list. I am currently using KDE on a system with a (real) screen resolution of 133dpi. This high resolution allows me easily to use a default font size of 9pt (> 16px @ 133dpi) and I can read fonts down to about 4pt (> 7 px @ 133dpi). For me (working on a Laptop) the "smallest" setting in khtml is just about right, but I would still prefer to be able to set the fontsize (in POINTS) per value. In a previous job I worked in an environment where my homedirectory was accessible from different computers each of which had a different screen resolution (out of my control, since the XServer could not be persuaded to change its dpi settings (SGI)). Using points even in this environment it was possible to get a relatively consistent look across the different machines, whereas fonts looked hugely different in size when specified as pixels. I have been using the following patch on khtml_settings.cc for a couple of weeks now without any problems (both on KDE_2_0_1BRANCH and CVS HEAD). I have attempted to create a minimum impact (for normal users) patch while allowing users to set point values in the konquerorrc file (set FontSize to an (positive) integer other than -2, -1, 0, 1, 2). Please review the attached patch and tell me what you think. BTW this patch has been inspired by an article by Todd Fahrner on http://style.metrius.com/font_size_intervals/altintervals.html. The formula used in this patch is analogous to similar formulae used to create well tempered intervals in music, as hinted in Todd's article. Somewhere on Todd's site I also found his proposal for a UI, which I attach as well. I would be very glad if my patch (or something similar) would make it into the 2.1 release. Best wishes, Magnus Kessler ------------------------------------------------------- --------------Boundary-00=_VPZYEV4WI1OH46AWC0SA Content-Type: text/x-c++; charset="iso-8859-1"; name="khtml_settings.patch" Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="khtml_settings.patch" retrieving revision 1.39 diff -u -3 -p -r1.39 khtml_settings.cc --- khtml_settings.cc 2000/11/12 14:40:46 1.39 +++ khtml_settings.cc 2000/11/27 21:59:49 @@ -25,6 +25,7 @@ #include #include #include +#include #define MAXFONTSIZES 15 // xx-small, x-small, small, medium, large, x-large, xx-large, ... @@ -127,8 +128,6 @@ void KHTMLSettings::init( KConfig * conf if ( reset || config->hasKey( "MinimumFontSize" ) ) { m_minFontSize = config->readNumEntry( "MinimumFontSize", HTML_DEFAULT_MIN_FONT_SIZE ); - if(m_minFontSize < 6) - m_minFontSize = 6; } if( reset ) { @@ -306,12 +305,34 @@ void KHTMLSettings::resetFontSizes() { m_fontSizes.clear(); for ( int i = 0; i < MAXFONTSIZES; i++ ) - if( m_fontSize == 0 ) // small + { + if( m_fontSize == 0 ) + { + // small predefined m_fontSizes << defaultSmallFontSizes[ i ]; - else if( m_fontSize == 2 ) // large + } + else if( m_fontSize == 1 ) + { + // medium predefined + m_fontSizes << defaultMediumFontSizes[ i ]; + } + else if( m_fontSize == 2 ) + { + // large predefined m_fontSizes << defaultLargeFontSizes[ i ]; + } else - m_fontSizes << defaultMediumFontSizes[ i ]; + { + /* + the formula used here satisfies the condition, that + after 4 steps the size has exactly doubled and that + there is a constant ratio beween subsequent steps (before round+ (pow(2, 0.25) == 1.189207115; close to CSS recommendation of 1.+ */ + double tone = i - 3; // this is because i==3 is the medium sized en+ m_fontSizes << rint(m_fontSize * pow(pow(2, 1.0/4.0), tone)); + } + } } void KHTMLSettings::setFontSizes(const QValueList &_newFontSizes ) Index: khtml_settings.cc =================================================================== RCS file: /home/kde/kdelibs/khtml/khtml_settings.cc,v retrieving revision 1.52 diff -u -3 -p -r1.52 khtml_settings.cc --- khtml_settings.cc 2001/01/15 21:31:27 1.52 +++ khtml_settings.cc 2001/01/30 09:15:36 @@ -27,6 +27,8 @@ #include #include +#include + #define MAXFONTSIZES 15 // xx-small, x-small, small, medium, large, x-large, xx-large, ... const int defaultXSmallFontSizes[MAXFONTSIZES] = @@ -134,8 +136,6 @@ void KHTMLSettings::init( KConfig * conf if ( reset || config->hasKey( "MinimumFontSize" ) ) { m_minFontSize = config->readNumEntry( "MinimumFontSize", HTML_DEFAULT_MIN_FONT_SIZE ); - if(m_minFontSize < 6) - m_minFontSize = 6; } if( reset ) { @@ -385,6 +385,7 @@ void KHTMLSettings::resetFontSizes() { m_fontSizes.clear(); for ( int i = 0; i < MAXFONTSIZES; i++ ) + { switch( m_fontSize ) { case -1: m_fontSizes << defaultXSmallFontSizes[ i ]; @@ -399,10 +400,21 @@ void KHTMLSettings::resetFontSizes() m_fontSizes << defaultXLargeFontSizes[ i ]; break; case 1: - default: m_fontSizes << defaultMediumFontSizes[ i ]; break; + default: + /* + the formula used here satisfies the condition, that + after 4 steps the size has exactly doubled and that + there is a constant ratio beween subsequent steps (before rounding). + (pow(2, 0.25) == 1.189207115; close to CSS recommendation of 1.2 + i == 3 is the medium sized entry + */ + m_fontSizes << rint(m_fontSize * pow(pow(2, 1.0/4.0), i-3)); + break; + } + } } void KHTMLSettings::setFontSizes(const QValueList &_newFontSizes ) --------------Boundary-00=_VPZYEV4WI1OH46AWC0SA Content-Type: image/gif; charset="iso-8859-1"; name="cssuiprefs.GIF" Content-Transfer-Encoding: base64 Content-Description: UI for font settings Content-Disposition: attachment; filename="cssuiprefs.GIF" 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 --------------Boundary-00=_VPZYEV4WI1OH46AWC0SA--