Resources
Directory actions
More options
Directory actions
More options
Resources
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ASD_STRING_DICT</key> <dict> <key>ASD_RANGES</key> <array> <array> <integer>0</integer> <integer>29</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-BoldMT</string> <real>34</real> </array> <key>NSParagraphStyle</key> <array> <integer>2</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>29</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>2</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>30</integer> <integer>574</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>604</integer> <integer>49</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>CTForegroundColor</key> <array> <real>1</real> <real>0.0</real> <real>0.0</real> <real>1</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>653</integer> <integer>46</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>699</integer> <integer>9</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-BoldMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>708</integer> <integer>42</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>750</integer> <integer>25</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-BoldMT</string> <real>18</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>775</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>18</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>776</integer> <integer>1215</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>1991</integer> <integer>14</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-BoldMT</string> <real>18</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>2005</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-BoldMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>2006</integer> <integer>141</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>2147</integer> <integer>19</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>2166</integer> <integer>701</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>2867</integer> <integer>18</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>2885</integer> <integer>2584</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>5469</integer> <integer>20</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>11</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>5489</integer> <integer>245</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>5734</integer> <integer>13</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-BoldMT</string> <real>18</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>5747</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-BoldMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>5748</integer> <integer>20</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>5768</integer> <integer>124</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>5892</integer> <integer>20</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>5912</integer> <integer>205</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6117</integer> <integer>19</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6136</integer> <integer>262</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6398</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6399</integer> <integer>20</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6419</integer> <integer>169</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>37</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6588</integer> <integer>19</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>37</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6607</integer> <integer>202</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>37</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6809</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>37</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6810</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6811</integer> <integer>17</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-BoldMT</string> <real>18</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6828</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-BoldMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6829</integer> <integer>22</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>6851</integer> <integer>199</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7050</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7051</integer> <integer>21</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7072</integer> <integer>84</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7156</integer> <integer>21</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7177</integer> <integer>153</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7330</integer> <integer>13</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7343</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7344</integer> <integer>72</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7416</integer> <integer>21</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7437</integer> <integer>22</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7459</integer> <integer>20</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7479</integer> <integer>141</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7620</integer> <integer>17</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>7637</integer> <integer>483</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>8120</integer> <integer>21</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> <array> <integer>8141</integer> <integer>72</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>8213</integer> <integer>21</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>8234</integer> <integer>22</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>8256</integer> <integer>20</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>8276</integer> <integer>275</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>8551</integer> <integer>16</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>8567</integer> <integer>150</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPSMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>8717</integer> <integer>1</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>37</real> <real>0.0</real> <real>38</real> <real>0.0</real> </array> </dict> </array> <array> <integer>8718</integer> <integer>3</integer> <dict> <key>ASD_FONT</key> <array> <string>TimesNewRomanPS-ItalicMT</string> <real>16</real> </array> <key>NSParagraphStyle</key> <array> <integer>4</integer> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> <real>0.0</real> </array> </dict> </array> </array> <key>ASD_STRING</key> <string>CoreText Page Drawing Sample This example shows how CoreText may be used to effectively draw large bodies of text without blocking the user interface. The sample uses NSOperations to render CoreText frames into CALayers in the background. It shows how to break large bodies of text into smaller blocks so that the text layout is performed in smaller blocks (and results shared when possible) rather than applying a single layout operation for the whole text. This example will also show you how to manipulate attributed strings, change fonts in text, apply font features, and simple text highlighting (right to left text highlighting not supported yet). Finally, this example shows you how to add VoiceOver support to text rendered with CoreText. Application functionality From a user's point of view, this sample is a simple Page Layout application. The input document is broken into pages for display and the user can the search or change the font for the text. The input document defines how each page is laid out. It may do so in a few ways. It can define specific frames in each page (text or picture), it can also consist of free flowing text like in a book, or a combination of both. Pages having free flowing text may also define how many columns the page will use to render text. Finally a background color can be assigned to each page. Fonts can be changed for the entire document or a frame. The user may select a frame by double tapping on the text or picture for the frame. Once a frame is selected, font changes will only occur for the selected frame. Note that a font change may cause significant text reflow. After reflow, the current page may change. The current behavior is to display the first page that contains the first word in the page that was being viewed prior to the reflow. You as a developer should probably modify the behavior so that it displays the first full paragraph that was being viewed or something similar. This may be more acceptable to a user. Implementation The first thing we need in order to display text using CoreText is an AttributedString. AttributedStrings are constructed by a class called AttributedStringDoc. This class reads an input file (xml or binary plist) that defines the structure of the pages for the document to be displayed. Within this structure, strings are found along with the attributes that apply to the string. The next thing we need is a view that can display a page of text. Since our documents likely contain multiple pages, this view should be able to handle the display of arbitrary pages. The first implementation of this example used a single view and each page was drawn into a sublayer. This was shown at WWDC 2010. However, a more appropriate implementation would be to use a UIScrollView to display the text. The current implantation subclasses UIScrollView. The class name is CoreTextScrollView. This view keeps track of the AttributedStringDoc and manages the display of pages in the view. To do so, it keeps up to 3 rendered pages in memory: the previous, current, and next pages. Much of the code of this sample is in managing these subviews and the proper loading of text into each of these views when necessary. The CoreTextScrollView will lay out the entire document. However, it will do so in the background. Initially it will load the first 2 pages of the document (the current, and next views). All other pages will be loaded asynchronously into a scratch view. A holdover from the first implementation of this example is to use a CALayers to layout the text. In theory, we could just use the views directly to layout our text. However, CALayers are very convenient as you can control exactly when you want drawing to take place. You don't have to wait for the drawing cycle of a view. This makes drawing in the background a little bit easier even though a bit more objects are involved. Ideally one should not layout the entire text for the document. Laying out 10 pages ahead or something similar should be more than plenty. This would be a nice enhancement. A performance trick we use while laying out our text is to break it into smaller chunks. The typical CoreText drawing cycle involves getting an AttributedString, creating a CTFrameSetter from the string, and then creating and drawing frames from the CTFrameSetter. However, if the AttributedString is very big, say 500 pages worth, it will certainly take CoreText a considerable amount of time to layout all the text. The user will experience a visible lag before they start seeing the first page. What we do to avoid this lag is to estimate a range of text that can fit in a page and create a CTFrameSetter for the range. This estimate is very conservative. Typically we are able to layout multiple pages based on the CTFrameSetter created. The algorithm for estimating the range of text is an area that can be improved in this sample. We have not done any measurements to prove the algorithm used is optimal. A lot of the complexity related to CoreText operations in this example stems from sharing the CTFrameSetter among pages. It is the price to pay to achieve the performance and user interface goals for this sample. The use of a UIScrollView requires the use of a delegate object to instruct it how to switch pages. In this sample, the toolbar search view controller implements the delegate methods. Note that we only care about loading paging as the user switches from one page to the next. The scrollViewDidScroll method may get called for many reasons including when we add pages to the view (the content of the view is resized). One must be careful how this method is implemented as it is very easy to create feedback loops that yield undesirable results. Main Classes AttributedStringDoc Manages the construction of AttributedStrings from xml/plist documents. These documents are generated on Mac OS X using the AttributedStringDoc Gen sibling project to this demo. It takes an RTF document created using TextEdit, reads it into an AttributedString, and finally proceeds to serialize it into a format (xml/plist) that is readable by the AttributedStringDoc class. In fact, the AttributedStringDoc class is also used on the desktop to serialize the file. This class also keeps track of the characteristics of the document: background colors, frames for each page, page number display, and number of columns to display. CoreTextScrollView Manages the display of pages for a given document to display. This is the view that you will use in Interface Builder or create directly to display and interact with an AttributedStringDoc in an application. It is also fair to say that this view acts as a controller for CoreTextViews. You can change the page to display, manage text selection, and change font parameters for the document. Support Classes CoreTextViewFrameInfo Keeps track of information for a particular frame to be rendered in a page/view. It caches all layout information used by CoreText along with the string range for the particular frame if applicable. CoreTextViewPageInfo Keeps track of information for a page to be rendered. It keeps track of all frames (CoreTextViewFrameInfo) for the particular page, the string range for the whole page, caches the rendered layer, and keeps tab on when we need to redraw or relayout the page. CoreTextView Manages the CoreText layout and drawing for a page. It generates al the CoreTextViewFrameInfo objects and supplies CoreTextViewPageInfo with string range information for the page. This view also implements highlighting of text and provides accessibility (VoiceOver) support. CoreTextViewDraw Delegate object used to draw the CoreTextView contents into a CALayer. We never draw directly into the view. Drawing into layers has the advantage that you have full control on when drawing takes place. We don't have to wait for the view drawing cycle. We take advantage of this fact because we want to layout text in the background. In order to layout text with CoreText, we need to go through all the motions to render the text into a context. So drawing into a layer is perfect. AsyncLayerOperation Manages the CoreText layout and drawing for a page. It generates al the CoreTextViewFrameInfo objects and supplies CoreTextViewPageInfo with string range information for the page. This view also implements highlighting of text and provides accessibility (VoiceOver) support. Used to layout text in the background. It keeps track of a target CALayer and a CoreTextView. The layer's delegate drawing object is a CoreTextViewDraw which in turn calls the CoreTextView draw method. Note, the CoreTextView is set to only layout text. It will not call any CoreText drawing routines. </string> </dict> <key>ASD_VERSION</key> <array> <integer>1</integer> <integer>1</integer> </array> </dict> </plist>