<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><font face="Georgia">Here it is boiled down:</font></p>
<p><font face="Georgia">x _ #('Bitmap DejaVu Sans' 'Atlanta') at: 1.<br>
f1 _ Form extent: 100@100 depth: 32.<br>
f1 fillColor: Color green.<br>
Form allInstancesDo: [ :f | f hibernate].<br>
f1 getCanvas drawString: 'Black on green' in: (0@0 extent:
100@100) font: (StrikeFont familyName: x size: 12) color: Color
black.<br>
f1 asMorph openInWorld.</font></p>
<p><font face="Georgia">Do this in a clean 5.1 image and all looks
as expected.</font></p>
<p><font face="Georgia">Turn off subPixelRendering and the problem
appears.</font></p>
<p>The Atlanta font works fine either way.<br>
</p>
<br>
<div class="moz-cite-prefix">On 10/7/17 8:32 AM, Marcel Taeumel
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:6f5ea390-73a0-44d1-93c6-8215afb07a05@getmailbird.com">
<div id="__MailbirdStyleContent" style="font-size:
12pt;font-family: calibri;color: #000000"> Hi Bob,
<div><br>
</div>
<div>I would look for state that changes via preferences
updates. Here are two side-effects that might help understand
the situation:</div>
<div><br>
</div>
<div>Preferences class >> #storePreferencesIn:</div>
<div>It is odd that there is a hidden clean-up of the var
"Parameters" in this method. You image might have specifics in
that var?</div>
<div><br>
</div>
<div>Preference >> #notifyInformeeOfChange</div>
<div>PragmaPreference >> #notifyInformeeOfChange</div>
<div>Your current image and a fresh 5.1 image might trigger
different amounts of those update calls.</div>
<div><br>
</div>
<div>Best,</div>
<div>Marcel</div>
<blockquote class="history_container" type="cite"
style="border-left-style: solid;border-width: 1px;margin-top:
20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
<p style="color: #AAAAAA; margin-top: 10px;">Am 07.10.2017
14:17:48 schrieb Marcel Taeumel
<a class="moz-txt-link-rfc2396E" href="mailto:marcel.taeumel@hpi.de"><marcel.taeumel@hpi.de></a>:</p>
<div id="__MailbirdStyleContent" style="font-size:
12pt;font-family: calibri;color: #000000"> What's the image
version you export your prefs from?
<div><br>
</div>
<div>Best,</div>
<div>Marcel</div>
<blockquote class="history_container" type="cite"
style="border-left-style: solid;border-width:
1px;margin-top: 20px;margin-left: 0px;padding-left:
10px;min-width: 500px">
<p style="color: #AAAAAA; margin-top: 10px;">Am 07.10.2017
14:15:46 schrieb Bob Arning
<a class="moz-txt-link-rfc2396E" href="mailto:arning315@comcast.net"><arning315@comcast.net></a>:</p>
<p><span style="font-family: Georgia">A bit more on what's
happening</span></p>
<p><span style="font-family: Georgia">If the font used
(the default font in the example below) is a
StrikeFont, then this<br>
</span></p>
<p><span style="font-family: Georgia">f1 _ Form extent:
100@100 depth: 32.<br>
f1 fillColor: Color green.<br>
Form allInstancesDo: [ :f | f hibernate].<br>
f1 getCanvas drawString: 'Black on green' in: (0@0
extent: 100@100) font: nil color: Color black.<br>
f1 asMorph openInWorld.<br>
</span></p>
<p>draws black text on a white rectangle on a larger green
rectangle. StrikeFonts are drawn (in depth 32, anyway)
by a primitive using rule 34. If the primitive fails,
then #copyBits is used character by character.<br>
</p>
primDisplayString: aString from: startIndex to: stopIndex
map: glyphMap xTable: xTable kern: kernDelta<br>
| ascii |<br>
<primitive:'primitiveDisplayString'
module:'BitBltPlugin'><br>
startIndex to: stopIndex do:[:charIndex|<br>
ascii := (aString at: charIndex) asciiValue.<br>
glyphMap ifNotNil:[ascii := glyphMap at: ascii+1].<br>
sourceX := xTable at: ascii + 1.<br>
width := (xTable at: ascii + 2) - sourceX.<br>
self copyBits.<br>
destX := destX + width + kernDelta.<br>
].<br>
<br>
It seems like rule 34 is handled differently by
primitiveDisplayString and primitiveCopyBits. If I add
code as exists elsewhere to unhibernate forms and retry,
all is working as expected:<br>
<br>
primDisplayString: aString from: startIndex to: stopIndex
map: glyphMap xTable: xTable kern: kernDelta<br>
| ascii |<br>
<primitive:'primitiveDisplayString'
module:'BitBltPlugin'><br>
(sourceForm isForm and: [sourceForm unhibernate])
ifTrue: [<br>
^self primDisplayString: aString from: startIndex
to: stopIndex map: glyphMap xTable: xTable kern: kernDelta<br>
].<br>
(destForm isForm and: [destForm unhibernate]) ifTrue:
[<br>
^self primDisplayString: aString from: startIndex
to: stopIndex map: glyphMap xTable: xTable kern: kernDelta<br>
].<br>
(halftoneForm isForm and: [halftoneForm unhibernate])
ifTrue: [<br>
^self primDisplayString: aString from: startIndex
to: stopIndex map: glyphMap xTable: xTable kern: kernDelta<br>
].<br>
startIndex to: stopIndex do:[:charIndex|<br>
ascii := (aString at: charIndex) asciiValue.<br>
glyphMap ifNotNil:[ascii := glyphMap at: ascii+1].<br>
sourceX := xTable at: ascii + 1.<br>
width := (xTable at: ascii + 2) - sourceX.<br>
self copyBits.<br>
destX := destX + width + kernDelta.<br>
].<br>
<br>
<div class="moz-cite-prefix">On 10/6/17 10:59 PM, Bob
Arning wrote:<br>
</div>
<blockquote type="cite"
cite="mid:4a91c131-0650-c21b-60c5-39c95a3fdbc3@comcast.net"
style="min-width: 500px">
<p><span style="font-family: Georgia">Here is a strange
one. I noticed a few morphs changing appearance
after saving the image. It seems to be related to
the hibernation of Forms which happens prior to
saving the image. This snippet<br>
</span></p>
<p><span style="font-family: Georgia">(m :=
SimpleButtonMorph new)<br>
label: 'Black on yellow';<br>
color: Color yellow.<br>
Form allInstancesDo: [ :f | f hibernate]. "this
happens when saving image"<br>
m imageForm asMorph openInWorld</span></p>
<p>has a white background for the text with a bit of
yellow surrounding it. Running it in a clean 5.1 image
gets the expected result: black text on a yellow
background. However, if I load the preferences from my
current image into the clean image, then the problem
occurs: black on white on yellow. My prefs are
attached if you would like to take a stab at it (and
if it isn't too large an attachment).</p>
<p><br>
</p>
</blockquote>
<br>
</blockquote>
</div>
</blockquote>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">
</pre>
</blockquote>
<br>
</body>
</html>