<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>