| Found the problem, I think. In displayString: from: to: at: strikeFont: kern: we have: secondPassMap := colorMap. colorMap := sourceForm depth ~= destForm depth ifTrue: [ self cachedFontColormapFrom: sourceForm depth to: destForm depth ]. So if colorMap is set to nil for black text in install... method, it works fine for the first string displayed. However, since the StrikeFonts have depth 16, and display depth is 32, in subsequent calls to displayString:... (without intermittent installs), colorMap will be the cached colorMap, and the second pass done no matter what. This happens in MultiDisplayScanner when a stopCondition has been met as part of a string, f.ex. a tab. The easiest solution I could find was simply resetting colorMap to secondPassMap at the end of displayString:... regardless of whether it's nil or not. Attached is the smallish patch (removing the preference, and including the two changes), to be installed after EnhancedStrikeFonts-Pharo.4.cs; with that and the latest VM, I think we can safely enjoy single-pass rendering of black text without experiencing visual artifacts (well, in the cases I could find at least) Cheers, Henry PS. if we want Pharo to look good on display depths < 32, we should probably look into AlphaInfiniteForms, and an alternate draw method for the drop shadow while dragging :) Try f.ex. evaluating Display setExtent: Display extent depth: 16 |
EnhancedStrikeFonts-PharoSinglePassBlackText.1.cs
Description: Binary data
On Aug 21, 2009, at 11:41 49AM, Henrik Johansen wrote:
|
_______________________________________________ Pharo-project mailing list [email protected] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
