Commit graph

16 commits

Author SHA1 Message Date
Mathias Gumz
118ea25f9d Speedup overlong text detection
Detecting very long window titles is done via FbTk::TextUtils::doAlignment().
Instead of removing one char from the title at a time to see if it fits into a
given 'max_width', we now use a binary-search like approach to get faster to
the right value. This massively improves the speed for windows with
(arbitrary) long window titles (see bug #1090, javascript

    document.title = new Array(4999).join(".");

leads to massive waiting for fluxbox to detect that this window has a very
long title).

In addition to that Xft returns 'wrapped' shorts ('integer overflows') for
long texts: XGlpyhInfo.xOff is declared as signed short, it's able to hold
~32k pixels. A monospace font with font-size 10 produces an integer
overflow after 3276 chars / glyphs, thus rendering the check

    if (text_width < max_width) { /* ... */ }

pointless and leading rendering the whole title. By calculating some kind of
upper limit for a pseudo-wide glyph ("WW") and strictly cutting off the input
string at that limit prevents this issue.
2013-06-18 17:43:28 +02:00
Mathias Gumz
690d926ac4 introduced FbTk::BidiString
a 'BidiString' holds both the logical content and the visual reordered
version of the content of a string. this helps to reduce the number of
calls to reorder the string before drawing it (as introduced in the patch
from Ken Bloom) and to be more consistent in menus and textboxes (drawing
cursors and underlining text).
2010-09-08 20:17:21 +02:00
Mark Tiefenbruck
9c105111d2 remove old svn $Id$ tags 2008-01-03 17:34:12 -08:00
Mathias Gumz
04cd2fd14c removed some unneeded headers 2007-12-30 16:32:53 +01:00
simonb
ad7fd2d867 fix loading of rotated fonts on style change 2007-01-05 13:43:54 +00:00
simonb
520f552be7 handle utf-8 strings properly.
use utf8 internally
2006-05-07 03:41:27 +00:00
simonb
af74a22845 rotated fonts, buttons, containers. Used for tabs for now 2006-03-26 04:02:30 +00:00
mathias
ef76b45ab1 - Usage of xft-fonts is prefered, except a font-description starts with '-'
- Removed "antialias"-option completly, to enable/disable "antialias"
  use either  <fontname>:antialias=<bool> in the style or use
  Xft.antialias: <bool> in your .Xdefaults
- Added new styleresources: 
    *.font.effect: <halo|shadow>
    *.font.shadow.x : <int>       - shadow x offset
    *.font.shadow.y : <int>       - shadow y offset
    *.font.shadow.color : <color> - color of shadow
    *.font.halo.color : <color>   - color of halo
- Removed 'shadow' and 'halo' options from fontdefinitions:
    !! Style authors have to update their styles !!
- Simplified XmbFontImp to not try all possible fonts to match locale
- Style authors may specify multiple fonts:
    <font1>|<font2>|<font3>
  if loading of font1 fails, fluxbox probes <font2>, etc. The last font is
  "fixed". Hints for style authors:
    - if xft tries to load a font it will _ALWAYS_ return a valid font,
      it doesnt have to look like the one you want to have, read more
      about it: http://fontconfig.org/fontconfig-user.html
    - export XFT_DEBUG=1  before running fluxbox helps to see
      which fonts are picked.
  eg:
      *.font: Verdana,Arial-12:antialias=true|-artwiz-snap-*-
      if fluxbox is compiled with xft this will NEVER try to
      load "-artwiz-snap-*-" since xft gives for sure a font,
      most likely Verdana or Arial but noone knows. So, if
      fluxbox has no xft support the first fontpattern fails
      and fluxbox tries the next one, which might be successful.
      if everything fails, it will use "fixed"
- Added caching of fonts, fonts are only loaded once.
- Fixed #1090902 (slow utf8 start)
2005-06-03 07:25:48 +00:00
mathias
6b8fca511c copyright date 2005-01-24 18:02:34 +00:00
mathias
66a3fc1c4d fixes fontsituations when text disappears in non-antialias mode
primary problem was to use utf8 when in fact the FontSet wasnt
utf8.
2004-11-19 12:00:20 +00:00
mathias
993c17cf2e svn propset svn:keywords "Id" 2004-11-19 11:37:27 +00:00
fluxgen
049e40c9eb Font::drawText takes reference to FbDrawable instead of X Drawable + some code cleaning 2004-09-11 23:01:34 +00:00
fluxgen
72b878f78c fixed some icc warnings 2003-12-16 17:06:52 +00:00
fluxgen
28ec637856 minor comments fixes 2003-01-05 23:39:50 +00:00
rathnor
28b5c60449 Indenting from tabs to emacs 4-space 2002-12-01 13:42:15 +00:00
fluxgen
ac4420cdc5 initial import 2002-11-26 16:01:28 +00:00