<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p><font face="Georgia">5.1</font><br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 10/7/17 8:17 AM, Marcel Taeumel
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:df08aa5a-2539-402b-b9ac-238fee165037@getmailbird.com">
      <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;">
          <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">
            <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>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">
</pre>
    </blockquote>
    <br>
  </body>
</html>