title: Formatted text encoding in binary plist
body: <p>I'm trying to do some scripting that edits a binary plist file. The plist describes the objects contained in a DVD studio pro file. It appears that a text box in DVD studio pro is encoded in the plist as base64 data that describes the text string along with its formatting. I can't seem to figure out how to understand this data. Ideally, I'd like to be able to alter the text string but not the formatting. The following seems to describe a text box that says "Menu title here". There are two strings, one with the key called "dictionary" and the other called "string"; both are CFData. Any ideas how I can parse this or convert this into a format that I can edit directly? I've been playing around with writing a little converter in cocoa, but no luck yet.</p>
  
  <pre><code>&lt;dict&gt;
                                              &lt;key&gt;Dictionary&lt;/key&gt;
                                              &lt;data&gt;
                              BAtzdHJlYW10
                              eXBlZIHoA4QB
                              QISEhAxOU0Rp
                              Y3Rpb25hcnkA
                              hIQITlNPYmpl
                              Y3QAhYQBaQaS
                              hISECE5TU3Ry
                              aW5nAZSEASsG
                              TlNGb250hpKE
                              hIQGTlNGb250
                              HpSVJIQFWzM2
                              Y10GAAAAGgAA
                              AP/+TAB1AGMA
                              aQBkAGEARwBy
                              AGEAbgBkAGUA
                              AACEAWYVhAFj
                              AJsBmwCbAIaS
                              hJaXB05TQ29s
                              b3KGkoSEhAdO
                              U0NvbG9yAJSb
                              AYQEZmZmZoPz
                              8nI/g/Dvbz+D
                              7OtrPwGGkoSW
                              lwtOU0V4cGFu
                              c2lvboaShISE
                              CE5TTnVtYmVy
                              AISEB05TVmFs
                              dWUAlIQBKoSa
                              moNHx9c9hpKE
                              lpcNTlNPYmxp
                              cXVlbmVzc4aS
                              hJ6ghIQBZKEA
                              hpKElpcQTlNQ
                              YXJhZ3JhcGhT
                              dHlsZYaShISE
                              EE5TUGFyYWdy
                              YXBoU3R5bGUA
                              lIQEQ0NAUwAA
                              hQCGkoSWlxFO
                              U0JhY2tncm91
                              bmRDb2xvcoaS
                              hJubA4QCZmYA
                              AIaG
                                              &lt;/data&gt;
                                              &lt;key&gt;String&lt;/key&gt;
                                              &lt;data&gt;
                              BAtzdHJlYW10
                              eXBlZIHoA4QB
                              QISEhBJOU0F0
                              dHJpYnV0ZWRT
                              dHJpbmcAhIQI
                              TlNPYmplY3QA
                              hZKEhIQITlNT
                              dHJpbmcBlIQB
                              Kw9OZW51IFRp
                              dGxlIEhlcmWG
                              hAJpSQEPkoSE
                              hAxOU0RpY3Rp
                              b25hcnkAlIQB
                              aQWShJaWDU5T
                              T2JsaXF1ZW5l
                              c3OGkoSEhAhO
                              U051bWJlcgCE
                              hAdOU1ZhbHVl
                              AJSEASqEhAFk
                              nQCGkoSWlgtO
                              U0V4cGFuc2lv
                              boaShJuchIQB
                              Zp6DR8fXPYaS
                              hJaWEE5TUGFy
                              YWdyYXBoU3R5
                              bGWGkoSEhBBO
                              U1BhcmFncmFw
                              aFN0eWxlAJSE
                              BENDQFMAAIUA
                              hpKElpYGTlNG
                              b250hpKEhIQG
                              TlNGb250HpSZ
                              JIQFWzM2Y10G
                              AAAAGgAAAP/+
                              TAB1AGMAaQBk
                              AGEARwByAGEA
                              bgBkAGUAAACe
                              FYQBYwCjAaMA
                              owCGkoSWlgdO
                              U0NvbG9yhpKE
                              hIQHTlNDb2xv
                              cgCUowGEBGZm
                              ZmaD8/JyP4Pw
                              728/g+zraz8B
                              hoaG
                                              &lt;/data&gt;
                                          &lt;/dict&gt;
  </code></pre>