<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Can UFO-specific extension settings be stored in a property list (.plist) file, in the UFO?]]></title><description><![CDATA[<p dir="auto"><strong>Scenario:</strong> an extension that provides glyph-specific visualizations to assist drawing. These visualizations can be offset in different ways, specific to the glyph.</p>
<p dir="auto"><strong>Need:</strong> a way to store these UFO-specific, glyph-specific settings.</p>
<p dir="auto"><strong>Goal:</strong> avoid storing data in <code>.glif</code> files themselves, as this could mess with the clarity of version control history (e.g. changing the extension visualization would appear as a change to the glyph, when it is merely a layer of additional information.</p>
<p dir="auto"><strong>Rough plan:</strong> I think that a new <code>.plist</code> file can be created and inserted into a UFO, in order to store information such as this. This would be distinct from storing extension-specific preferences because the offset values wouldn't be globally applicable.</p>
<p dir="auto"><strong>Question:</strong> Is it true that one could make a <code>.plist</code> file and store data within it? E.g. could I make <code>viz_settings.plist</code> and store a dictionary of glyphs &amp; their offset settings within it? I'm having a hard time finding documentation of this type of thing, but I wouldn't want to mess with it if it is somehow a bad idea.</p>
<p dir="auto">Thanks for any insights!</p>
]]></description><link>https://forum.robofont.com/topic/660/can-ufo-specific-extension-settings-be-stored-in-a-property-list-plist-file-in-the-ufo</link><generator>RSS for Node</generator><lastBuildDate>Sat, 07 Mar 2026 03:17:50 GMT</lastBuildDate><atom:link href="https://forum.robofont.com/topic/660.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 01 Jul 2019 13:55:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Can UFO-specific extension settings be stored in a property list (.plist) file, in the UFO? on Mon, 01 Jul 2019 17:54:57 GMT]]></title><description><![CDATA[<p dir="auto"><strong>Scenario:</strong> an extension that provides glyph-specific visualizations to assist drawing. These visualizations can be offset in different ways, specific to the glyph.</p>
<p dir="auto"><strong>Need:</strong> a way to store these UFO-specific, glyph-specific settings.</p>
<p dir="auto"><strong>Goal:</strong> avoid storing data in <code>.glif</code> files themselves, as this could mess with the clarity of version control history (e.g. changing the extension visualization would appear as a change to the glyph, when it is merely a layer of additional information.</p>
<p dir="auto"><strong>Rough plan:</strong> I think that a new <code>.plist</code> file can be created and inserted into a UFO, in order to store information such as this. This would be distinct from storing extension-specific preferences because the offset values wouldn't be globally applicable.</p>
<p dir="auto"><strong>Question:</strong> Is it true that one could make a <code>.plist</code> file and store data within it? E.g. could I make <code>viz_settings.plist</code> and store a dictionary of glyphs &amp; their offset settings within it? I'm having a hard time finding documentation of this type of thing, but I wouldn't want to mess with it if it is somehow a bad idea.</p>
<p dir="auto">Thanks for any insights!</p>
]]></description><link>https://forum.robofont.com/post/2469</link><guid isPermaLink="true">https://forum.robofont.com/post/2469</guid><dc:creator><![CDATA[StephenNixon]]></dc:creator><pubDate>Mon, 01 Jul 2019 17:54:57 GMT</pubDate></item><item><title><![CDATA[Reply to Can UFO-specific extension settings be stored in a property list (.plist) file, in the UFO? on Mon, 01 Jul 2019 14:11:45 GMT]]></title><description><![CDATA[<p dir="auto">yes, there are even multiple options!</p>
<p dir="auto"><a href="http://unifiedfontobject.org/versions/ufo3/lib.plist/" rel="nofollow">the lib</a>: <code>font.lib</code> and <code>glyph.lib</code> with <a href="http://unifiedfontobject.org/versions/ufo3/conventions/#reverse-domain-naming-schemes" rel="nofollow">reversed domain lib key</a>, a lib can handle numbers, strings, lists and dicts.</p>
<p dir="auto">if you have more complex data to store you can also use the <a href="http://unifiedfontobject.org/versions/ufo3/data/" rel="nofollow">data folder</a>.</p>
]]></description><link>https://forum.robofont.com/post/2472</link><guid isPermaLink="true">https://forum.robofont.com/post/2472</guid><dc:creator><![CDATA[frederik]]></dc:creator><pubDate>Mon, 01 Jul 2019 14:11:45 GMT</pubDate></item><item><title><![CDATA[Reply to Can UFO-specific extension settings be stored in a property list (.plist) file, in the UFO? on Mon, 01 Jul 2019 15:45:50 GMT]]></title><description><![CDATA[<p dir="auto">To add another bit of implementation detail to Frederik's response... You can access the data directory abstractly through the <a href="https://github.com/robotools/defcon/blob/master/Lib/defcon/objects/font.py#L615" rel="nofollow">font.data</a> attribute of the defcon font object. (Get to this with <code>font.naked()</code> This will return the <a href="https://github.com/robotools/defcon/blob/master/Lib/defcon/objects/dataSet.py" rel="nofollow">DataSet</a> object that you can put/pull raw data into/from. I don't think this is wrapped by fontParts yet. It's probably worth opening an issue on the fontParts project about this.</p>
]]></description><link>https://forum.robofont.com/post/2475</link><guid isPermaLink="true">https://forum.robofont.com/post/2475</guid><dc:creator><![CDATA[tal]]></dc:creator><pubDate>Mon, 01 Jul 2019 15:45:50 GMT</pubDate></item><item><title><![CDATA[Reply to Can UFO-specific extension settings be stored in a property list (.plist) file, in the UFO? on Mon, 01 Jul 2019 15:59:41 GMT]]></title><description><![CDATA[<p dir="auto">I don't think Glyph.lib is the best idea, because it adds data to the glyph that isn't really relevant to the actual history of that glyph – it's only a visualization, and not (in my mind) pertinent to the development history of a particular glyph. In particular, I don't want a change to the visualization to be indicated as a change to the glyph, in a project's commit history.</p>
<p dir="auto">However, font.lib might be better. I think that probably, font.data is the most appealing solution, but still relatively unclear on how to use. But, it's probably the kind of thing that will be clearer with experimentation. Probably, it would be simpler if added to FontParts.</p>
]]></description><link>https://forum.robofont.com/post/2476</link><guid isPermaLink="true">https://forum.robofont.com/post/2476</guid><dc:creator><![CDATA[StephenNixon]]></dc:creator><pubDate>Mon, 01 Jul 2019 15:59:41 GMT</pubDate></item><item><title><![CDATA[Reply to Can UFO-specific extension settings be stored in a property list (.plist) file, in the UFO? on Mon, 01 Jul 2019 16:04:03 GMT]]></title><description><![CDATA[<p dir="auto">(FontParts issue added at <a href="https://github.com/robotools/fontParts/issues/439" rel="nofollow">https://github.com/robotools/fontParts/issues/439</a>)</p>
]]></description><link>https://forum.robofont.com/post/2477</link><guid isPermaLink="true">https://forum.robofont.com/post/2477</guid><dc:creator><![CDATA[StephenNixon]]></dc:creator><pubDate>Mon, 01 Jul 2019 16:04:03 GMT</pubDate></item><item><title><![CDATA[Reply to Can UFO-specific extension settings be stored in a property list (.plist) file, in the UFO? on Wed, 31 Jul 2019 18:44:09 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.robofont.com/uid/230">@StephenNixon</a> if you wish to create your own <code>.plist</code> files, you can do it using the <a href="http://docs.python.org/3.6/library/plistlib.html" rel="nofollow">plistlib</a>:</p>
<pre><code class="language-python">import plistlib

# write to .plist file

myCustomData = {
    'A' : 100,
    'B' : True,
    'C' : 'hamburgefons',
    'D' : [10, 20, 30, 50],
}

plistPath = 'myFolder/test.plist'

with open(plistPath, 'wb') as f: 
    plistlib.dump(myCustomData, f)

# read from .plist file

with open(plistPath, 'rb') as f: 
    myData = plistlib.load(f)

print(myData)
</code></pre>
]]></description><link>https://forum.robofont.com/post/2478</link><guid isPermaLink="true">https://forum.robofont.com/post/2478</guid><dc:creator><![CDATA[gferreira]]></dc:creator><pubDate>Wed, 31 Jul 2019 18:44:09 GMT</pubDate></item><item><title><![CDATA[Reply to Can UFO-specific extension settings be stored in a property list (.plist) file, in the UFO? on Mon, 01 Jul 2019 16:40:54 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://forum.robofont.com/uid/22">@gferreira</a></p>
<p dir="auto">Awesome, thanks for making it so clear! Okay, yes, this is very easy to work with, now.</p>
<p dir="auto"><img src="/assets/uploads/files/1561999065965-08c951fd-117c-423d-a538-57ae1894dce7-image-resized.png" alt="08c951fd-117c-423d-a538-57ae1894dce7-image.png" class="img-responsive img-markdown" /></p>
]]></description><link>https://forum.robofont.com/post/2479</link><guid isPermaLink="true">https://forum.robofont.com/post/2479</guid><dc:creator><![CDATA[StephenNixon]]></dc:creator><pubDate>Mon, 01 Jul 2019 16:40:54 GMT</pubDate></item></channel></rss>