diff options
Diffstat (limited to 'Doc/source/designspaceLib/xml.rst')
-rw-r--r-- | Doc/source/designspaceLib/xml.rst | 1017 |
1 files changed, 1017 insertions, 0 deletions
diff --git a/Doc/source/designspaceLib/xml.rst b/Doc/source/designspaceLib/xml.rst new file mode 100644 index 00000000..6267b025 --- /dev/null +++ b/Doc/source/designspaceLib/xml.rst @@ -0,0 +1,1017 @@ +.. _document-xml-structure: + +********************** +Document XML structure +********************** + +.. sectnum:: + :start: 2 +.. Note: impossible with Sphinx to avoid numbering the document title +.. See this issue: https://github.com/sphinx-doc/sphinx/issues/4628 + +.. contents:: Table of contents (levels match the document structure) + :local: + +======== +Overview +======== + + +.. code:: xml + + <?xml version='1.0' encoding='utf-8'?> + <designspace format="5.0"> + <axes> + <!-- define axes here --> + <axis... /> + </axes> + <labels> + <!-- define STAT format 4 labels here --> + <!-- New in version 5.0 --> + <label... /> + </labels> + <sources> + <!-- define masters here --> + <source... /> + </sources> + <variable-fonts> + <!-- define variable fonts here --> + <!-- New in version 5.0 --> + <variable-font... /> + </variable-fonts> + <instances> + <!-- define instances here --> + <instance... /> + </instances> + <rules> + <!-- define rules here --> + <rule... /> + </rules> + <lib> + <dict> + <!-- store custom data here --> + </dict> + </lib> + </designspace> + +================== +``<axes>`` element +================== + +The ``<axes>`` element contains one or more ``<axis>`` elements. + +.. rubric:: Attributes + +- ``elidedfallbackname``: optional, string. + STAT Style Attributes Header field ``elidedFallbackNameID``. + See: `OTSpec STAT Style Attributes Header + <https://docs.microsoft.com/en-us/typography/opentype/spec/stat#style-attributes-header>`_ + + .. versionadded:: 5.0 + + +``<axis>`` element +================== + +- Define a single axis +- Child element of ``axes`` +- The axis can be either continuous (as in version 4.0) or discrete (new in version 5.0). + Discrete axes have a list of values instead of a range minimum and maximum. + + +.. rubric:: Attributes + +- ``name``: required, string. Name of the axis that is used in the + location elements. +- ``tag``: required, string, 4 letters. Some axis tags are registered + in the OpenType Specification. +- ``default``: required, number. The default value for this axis, in user space coordinates. +- ``hidden``: optional, 0 or 1. Records whether this axis needs to be + hidden in interfaces. + +For a continuous axis: + - ``minimum``: required, number. The minimum value for this axis, in user space coordinates. + - ``maximum``: required, number. The maximum value for this axis, in user space coordinates. + +For a discrete axis: + - ``values``: required, space-separated numbers. The exhaustive list of possible values along this axis. + + .. versionadded:: 5.0 + + +.. rubric:: Example + +.. code:: xml + + <axis name="weight" tag="wght" minimum="1" maximum="1000" default="400"> + + <!-- + Discrete axes provide a list of discrete values. + No interpolation is allowed between these. + --> + <axis name="Italic" tag="ital" default="0" values="0 1"> + + +.. _labelname: + +``<labelname>`` element (axis) +------------------------------ + +- Defines a human readable name for UI use. +- Optional for non-registered axis names. +- Can be localised with ``xml:lang`` +- Child element of ``<axis>`` or ``<label>`` + + +.. rubric:: Attributes + +- ``xml:lang``: required, string. `XML language + definition <https://www.w3.org/International/questions/qa-when-xmllang.en>`__ + + +.. rubric:: Value + +- The natural language name of this axis or STAT label. + + +.. rubric:: Example + +.. code:: xml + + <labelname xml:lang="fa-IR">قطر</labelname> + <labelname xml:lang="en">Wéíght</labelname> + + +``<map>`` element +----------------- + +- Defines a single node in a series of input value (user space coordinate) + to output value (designspace coordinate) pairs. +- Together these values transform the designspace. +- Child of ``<axis>`` element. + +.. rubric:: Example + +.. code:: xml + + <map input="1.0" output="10.0" /> + <map input="400.0" output="66.0" /> + <map input="1000.0" output="990.0" /> + + +``<labels>`` element (axis) +--------------------------- + +The ``<labels>`` element contains one or more ``<label>`` elements. + +.. versionadded:: 5.0 + + +``<label>`` element (axis) +.......................... + +- Define STAT format 1, 2, 3 labels for the locations on this axis. +- The axis can have several child ``<label>`` elements, one for each STAT entry. +- This ``<label>`` element can have several ``<labelname>`` child elements, + to provide translations of its ``name`` attribute. + +.. versionadded:: 5.0 + +.. rubric:: Attributes + +- ``name``: required, string. the name of this label +- ``elidable``: optional, boolean, default: false. STAT flag ``ELIDABLE_AXIS_VALUE_NAME``. +- ``oldersibling``: optional, boolean, default: false. STAT flag ``OLDER_SIBLING_FONT_ATTRIBUTE``. + + See: `OTSpec STAT Flags <https://docs.microsoft.com/en-us/typography/opentype/spec/stat#flags>`_ + +Depending on the intended target STAT format, use a combination of the following +field, all in user coordinates. Check the following table for the format +correspondences. + +- ``uservalue``: (required) STAT field ``value`` (format 1, 3) or ``nominalValue`` (format 2). +- ``userminimum``: STAT field ``rangeMinValue`` (format 2). +- ``usermaximum``: STAT field ``rangeMaxValue`` (format 2). +- ``linkeduservalue``: STAT field ``linkedValue`` (format 3). + +=========== ========= =========== =========== =============== +STAT Format uservalue userminimum usermaximum linkeduservalue +=========== ========= =========== =========== =============== +1 ✅ ❌ ❌ ❌ +2 ✅ ✅ ✅ ❌ +3 ✅ ❌ ❌ ✅ +=========== ========= =========== =========== =============== + +.. rubric:: Example + +.. code:: xml + + <label userminimum="200" uservalue="200" usermaximum="250" name="Extra Light"> + <labelname xml:lang="de">Extraleicht</labelname> + <labelname xml:lang="fr">Extra léger</labelname> + </label> + <label userminimum="350" uservalue="400" usermaximum="450" name="Regular" elidable="true" /> + + +``<labelname>`` element (axis STAT label) +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, + +User-facing translations of this STAT label. Keyed by ``xml:lang`` code. + +.. versionadded:: 5.0 + +Same attribute and value as :ref:`the axis' \<labelname\> element <labelname>`. + + +Example of all axis elements together +===================================== + +.. code:: xml + + <axes elidedfallbackname="Regular"> + <axis default="1" maximum="1000" minimum="0" name="weight" tag="wght"> + <labelname xml:lang="fa-IR">قطر</labelname> + <labelname xml:lang="en">Wéíght</labelname> + <labels> + <label userminimum="200" uservalue="200" usermaximum="250" name="Extra Light"> + <labelname xml:lang="de">Extraleicht</labelname> + <labelname xml:lang="fr">Extra léger</labelname> + </label> + <label userminimum="350" uservalue="400" usermaximum="450" name="Regular" elidable="true" /> + </labels> + </axis> + <axis default="100" maximum="200" minimum="50" name="width" tag="wdth"> + <map input="50.0" output="10.0" /> + <map input="100.0" output="66.0" /> + <map input="200.0" output="990.0" /> + </axis> + </axes> + + +================================ +``<labels>`` element (top-level) +================================ + +The ``<labels>`` element contains one or more ``<label>`` elements. + +.. versionadded:: 5.0 + +``<label>`` element (top-level) +=============================== + +- Define STAT format 4 labels for a free-standing location. +- The designspace can have several top-level ``<label>`` elements, one for each + STAT format 4 entry. +- This ``<label>`` element must have a child ``<location>`` element that + represents the location to which the label applies. +- This ``<label>`` element may have several child ``<labelname>`` elements to + provide translations of its ``name`` attribute. + + +See: `OTSpec STAT Axis value table, format 4 <https://docs.microsoft.com/en-us/typography/opentype/spec/stat#axis-value-table-format-4>`_ + +.. versionadded:: 5.0 + +.. rubric:: Attributes + +- ``name``: required, string. the name of this label +- ``elidable``: optional, boolean, default: false. STAT flag ``ELIDABLE_AXIS_VALUE_NAME``. +- ``oldersibling``: optional, boolean, default: false. STAT flag ``OLDER_SIBLING_FONT_ATTRIBUTE``. + + See: `OTSpec STAT Flags <https://docs.microsoft.com/en-us/typography/opentype/spec/stat#flags>`_ + + +.. _location: + +``<location>`` element (top-level STAT label) +--------------------------------------------- + +- Defines a coordinate in either user or design space. +- Encodes a dictionary of ``{ axisname: axisvalue }``. +- Also used in ``<source>``, ``<instance>`` and ``<glyph>`` elements. +- This ``<location>`` element must have one or more child ``<dimension>`` + elements. + +.. _dimension: + +``<dimension>`` element +....................... + +- Child element of ``<location>`` + +.. rubric:: Attributes + +- ``name``: required, string. Name of the axis. + +Depending on whether you're representing a location in user or design coordinates, +provide one of the attributes below. + +For user-space coordinates: + +- ``uservalue``: required, number. The value on this axis in user coordinates. + + .. versionadded:: 5.0 + +For design-space coordinates: + +- ``xvalue``: required, number. The value on this axis in design coordinates. +- ``yvalue``: optional, number. Separate value for anisotropic interpolations. + + +.. rubric:: Example + +.. code:: xml + + <location> + <dimension name="Width" uservalue="125" /> + <dimension name="Weight" xvalue="10" yvalue="20.5" /> + </location> + + +``<labelname>`` element (top-level STAT label) +---------------------------------------------- + +User-facing translations of this STAT label. Keyed by ``xml:lang`` code. + +.. versionadded:: 5.0 + +Same attribute and value as :ref:`the axis' \<labelname\> element <labelname>`. + + +.. _rules-element: + +=================== +``<rules>`` element +=================== + +The ``<rules>`` element contains one or more ``<rule>`` elements. + +The rules are evaluated in this order. + +Rules describe designspace areas in which one glyph should be replaced by another. +A rule has a name and a number of conditionsets. The rule also contains a list of +glyphname pairs: the glyphs that need to be substituted. For a rule to be triggered +**only one** of the conditionsets needs to be true, ``OR``. Within a conditionset +**all** conditions need to be true, ``AND``. + + +.. rubric:: Attributes + +- ``processing``: flag, optional. Valid values are [``first``, ``last``]. This + flag indicates whether the substitution rules should be applied before or after + other glyph substitution features. + + - If no ``processing`` attribute is given, interpret as ``first``, and put + the substitution rule in the ``rvrn`` feature. + - If ``processing`` is ``last``, put it in ``rclt``. + - The default is ``first``. For new projects, you probably want ``last``. + See the following issues for more information: + `fontTools#1371 <https://github.com/fonttools/fonttools/issues/1371#issuecomment-590214572>`__ + `fontTools#2050 <https://github.com/fonttools/fonttools/issues/2050#issuecomment-678691020>`__ + - If you want to use a different feature altogether, e.g. ``calt``, + use the lib key ``com.github.fonttools.varLib.featureVarsFeatureTag`` + + .. code:: xml + + <lib> + <dict> + <key>com.github.fonttools.varLib.featureVarsFeatureTag</key> + <string>calt</string> + </dict> + </lib> + + + +``<rule>`` element +================== + +- Defines a named rule. +- Each ``<rule>`` element contains one or more ``<conditionset>`` elements. +- **Only one** ``<conditionset>`` needs to be true to trigger the rule (logical OR). +- **All** conditions in a ``<conditionset>`` must be true to make the ``<conditionset>`` true. (logical AND) +- For backwards compatibility a ``<rule>`` can contain ``<condition>`` elements outside of a conditionset. These are then understood to be part of a single, implied, ``<conditionset>``. Note: these conditions should be written wrapped in a conditionset. +- A rule element needs to contain one or more ``<sub>`` elements in order to be compiled to a variable font. +- Rules without sub elements should be ignored when compiling a font. +- For authoring tools it might be necessary to save designspace files without ``<sub>`` elements just because the work is incomplete. + + +.. rubric:: Attributes + +- ``name``: optional, string. A unique name that can be used to + identify this rule if it needs to be referenced elsewhere. The name + is not important for compiling variable fonts. + +``<conditionset>`` element +-------------------------- + +- Child element of ``<rule>`` +- Contains one or more ``<condition>`` elements. + + +``<condition>`` element +....................... + +- Child element of ``<conditionset>`` +- Between the ``minimum`` and ``maximum`` this condition is ``True``. +- ``minimum`` and ``maximum`` are in designspace coordinates. +- If ``minimum`` is not available, assume it is ``axis.minimum``, mapped to designspace coordinates. +- If ``maximum`` is not available, assume it is ``axis.maximum``, mapped to designspace coordinates. +- The condition must contain at least a minimum or maximum or both. + + +.. rubric:: Attributes + +- ``name``: string, required. Must match one of the defined ``axis`` + name attributes. +- ``minimum``: number, required*. The low value, in design coordinates. +- ``maximum``: number, required*. The high value, in design coordinates. + +.. If you want to specify the condition limits in design coordinates: + +.. If you want to specify the condition limits in user coordinates: + +.. - ``userminimum``: number, required*. The low value, in design coordinates. +.. - ``usermaximum``: number, required*. The high value, in design coordinates. + +``<sub>`` element +----------------- + +- Child element of ``<rule>``. +- Defines which glyph to replace when the rule evaluates to **True**. +- The ``<sub>`` element contains a pair of glyphnames. The ``name`` attribute is the glyph that should be visible when the rule evaluates to **False**. The ``with`` attribute is the glyph that should be visible when the rule evaluates to **True**. + + +.. rubric:: Attributes + +- ``name``: string, required. The name of the glyph this rule looks + for. +- ``with``: string, required. The name of the glyph it is replaced + with. + + +.. rubric:: Example + +Example with an implied ``<conditionset>``. Here the conditions are not +contained in a conditionset. + +.. code:: xml + + <rules processing="last"> + <rule name="named.rule.1"> + <condition minimum="250" maximum="750" name="weight" /> + <condition minimum="50" maximum="100" name="width" /> + <sub name="dollar" with="dollar.alt"/> + </rule> + </rules> + +Example with ``<conditionsets>``. All conditions in a conditionset must be true. + +.. code:: xml + + <rules> + <rule name="named.rule.2"> + <conditionset> + <condition minimum="250" maximum="750" name="weight" /> + <condition minimum="50" maximum="100" name="width" /> + </conditionset> + <conditionset> + <condition... /> + <condition... /> + </conditionset> + <sub name="dollar" with="dollar.alt"/> + </rule> + </rules> + + +===================== +``<sources>`` element +===================== + +The ``<sources>`` element contains one or more ``<source>`` elements. + + +``<source>`` element +==================== + +- Defines a single font or layer that contributes to the designspace. +- Child element of ``<sources>`` +- Location in designspace coordinates. + + +.. rubric:: Attributes + +- ``familyname``: optional, string. The family name of the source font. + While this could be extracted from the font data itself, it can be + more efficient to add it here. +- ``stylename``: optional, string. The style name of the source font. +- ``name``: required, string. A unique name that can be used to + identify this font if it needs to be referenced elsewhere. +- ``filename``: required, string. A path to the source file, relative + to the root path of this document. The path can be at the same level + as the document or lower. +- ``layer``: optional, string. The name of the layer in the source file. + If no layer attribute is given assume the foreground layer should be used. + + +``<familyname>`` element: localised names for sources +----------------------------------------------------- + +Localised family names for sources can be included with this ``<familyname>`` +element with an ``xml:lang`` attribute: +`XML language definition <https://www.w3.org/International/questions/qa-when-xmllang.en>`__ + +.. versionadded:: 5.0 + +.. rubric:: Example + +.. code:: xml + + <familyname xml:lang="fr">Montserrat</familyname> + <familyname xml:lang="ja">モンセラート</familyname> + + +``<location>`` element (source) +------------------------------- + +Defines the coordinates of this source in the design space. + +.. seealso:: `Full documentation of the <location> element <location>`__ + + +``<dimension>`` element (source) +................................ + +.. seealso:: `Full documentation of the <dimension> element <dimension>`__ + + +``<lib>`` element (source) +-------------------------- + +- Example: ``<lib copy="1" />`` +- Child element of ``<source>`` +- Defines if the instances can inherit the data in the lib of this source. +- MutatorMath only. + +.. deprecated:: 5.0 + +.. note:: + + Don't confuse with other ``<lib>`` elements which allow storing + arbitrary data. Sources don't have such a ``<lib>`` because usually the + backing UFO file has one itself. + + +``<info>`` element +------------------ + +- Example: ``<info copy="1" />`` +- Child element of ``<source>`` +- Defines if the instances can inherit the non-interpolating font info + from this source. +- MutatorMath only. + +.. deprecated:: 5.0 + + +``<features>`` element +---------------------- + +- Example: ``<features copy="1" />`` +- Defines if the instances can inherit opentype feature text from this + source. +- Child element of ``<source>`` +- MutatorMath only. + +.. deprecated:: 5.0 + + +``<glyph>`` element (source) +---------------------------- + +- Example: ``<glyph mute="1" name="A"/>`` +- In a ``<source>`` element this states if a glyph is to be excluded from + the calculation. +- MutatorMath only. + +.. rubric:: Attributes + +- ``mute``: optional attribute, number 1 or 0. Indicate if this glyph + should be ignored as a master. + +.. note:: + + Do not confuse with the ``<glyph>`` element in instances, which achieves + something different. + + +.. _kerning_source: + +``<kerning>`` element (source) +------------------------------ + +- Example: ``<kerning mute="1" />`` +- Can appear in ``<source>`` as well as in ``<instance>`` elements. +- MutatorMath only. + +.. rubric:: Attributes + +- ``mute``: required attribute, number 1 or 0. Indicate if the kerning + data from this source is to be excluded from the calculation. + + - If the kerning element is not present, assume ``mute=0``, yes, + include the kerning of this source in the calculation. + + +.. rubric:: Example + +.. code:: xml + + <source familyname="MasterFamilyName" filename="masters/masterTest1.ufo" name="master.ufo1" stylename="MasterStyleNameOne"> + <location> + <dimension name="width" xvalue="0.000000" /> + <dimension name="weight" xvalue="0.000000" /> + </location> + <glyph mute="1" name="A" /> + <glyph mute="1" name="Z" /> + </source> + + +============================ +``<variable-fonts>`` element +============================ + +The ``<variable-fonts>`` element contains one or more ``<variable-font>`` elements. + +.. versionadded:: 5.0 + + +``<variable-font>`` element +=========================== + +- Child of ``<variable-fonts>`` +- Describe a variable font that can be built from an interpolating subset of + the design space. +- The document may have zero to many variable fonts. + + - If no variable fonts are defined, and all the axes are continuous, then we + assume, as in version 4 of the format, that the whole document describes + one variable font covering the whole space. + +- Each variable font covers a subset of the whole designspace, defined using + ``<axis-subset>`` elements. +- Each variable font can have custom associated data using a ``<lib>`` element. + +.. versionadded:: 5.0 + +.. rubric:: Attributes + +- ``name``: string, required. Each variable font has a name, that can be + used by build tools to refer to the font that gets built from this element. +- ``filename``: string, optional. This filename will be used by tools to decide + where to store the built font on the disk. If not given, a filename can be + computed from the ``name``. The filename may include an extension (e.g. + `.ttf`) and the build tools can replace that extension with another (e.g. + `.otf` or `.woff2`) as needed. + +.. rubric:: Example + +.. code:: xml + + <variable-font name="MyFontVF_Italic"> + <axis-subsets> + <axis-subset name="Weight"/> + <axis-subset name="Italic" uservalue="1"/> + </axis-subsets> + </variable-font> + + +``<axis-subsets>`` element +-------------------------- + +- Child of ``<variable-font>`` +- Defines the portion of the design space that this variable font covers. +- Each axis that you want to include in the VF needs to be mentioned here. +- Not mentioning an axis is equivalent to slicing the space at the default + value of that axis. + +.. versionadded:: 5.0 + + +``<axis-subset>`` element +......................... + +- Child of ``<axis-subsets>`` +- Defines the subset of one axis, by ``name=""``, that the variable font covers. +- If this axis is continuous, the VF can either cover: + + 1. the whole axis + + .. code:: xml + + <axis-subset name="Weight"/> + + 2. a sub-range of the full axis + + .. code:: xml + + <axis-subset name="Weight" userminimum="400" usermaximum="500" userdefault="400"/> + + 3. a specific value along that axis; then the axis is not functional in the VF + but the design space is sliced at the given location. *Note:* While valid to have a + specific value that doesn’t have a matching ``<source>`` at that value, currently there + isn’t an implentation that supports this. See `this fontmake issue + <https://github.com/googlefonts/fontmake/issues/920>`. + + .. code:: xml + + <!-- Make a bold VF --> + <axis-subset name="Weight" uservalue="700"/> + +- If this axis is discrete, then only the third option above is possible: + give one value along the axis. + + .. code:: xml + + <!-- Make an italic VF --> + <axis-subset name="Italic" uservalue="1"/> + + +.. versionadded:: 5.0 + +.. rubric:: Attributes + +- ``name``: required, string. Name of the axis to subset. + +When defining a range: + +- ``userminimum``: optional, number. + Lower end of the range, in user coordinates. + If not mentioned, assume the axis's minimum. +- ``usermaximum``: optional, number. + Upper end of the range, in user coordinates. + If not mentioned, assume the axis's maximum. +- ``userdefault``: optional, number. + New default value of subset axis, in user coordinates. + If not mentioned, assume the axis's default. + If the axis's default falls outside of the subset range, then the new default + will be the extremum that is closest to the full axis's default. + +When defining a single value: + +- ``uservalue``: required, number. + Single value, in user coordinates, at which to snapshot the design space + while building this VF. + + +``<lib>`` element (variable font) +--------------------------------- + +Arbitrary data about this variable font. + +.. versionadded:: 5.0 + +.. seealso:: :ref:`lib` + + +Instances included in the variable font +--------------------------------------- + +.. figure:: v5_variable_fonts_vs_instances.png + :width: 650px + :alt: A designspace version 5 lists many instances and variable fonts. Each + variable font gets in its fvar table whichever instances fall within + the bounds of the variable font's subset axes. + + Illustration of instances included in a variable font. + + +======================= +``<instances>`` element +======================= + +The ``<instances>`` element contains one or more ``<instance>`` elements. + + +``<instance>`` element +====================== + +- Defines a single font that can be calculated with the designspace. +- Child element of ``<instances>`` +- For use in Varlib the instance element really only needs the names + and the location. The ``<glyphs>`` element is not required. +- MutatorMath uses the ``<glyphs>`` element to describe how certain + glyphs need different masters, mainly to describe the effects of + conditional rules in Superpolator. +- Location in designspace coordinates. + + +.. rubric:: Attributes + +- ``familyname``: required, string. The family name of the instance + font. Corresponds with ``font.info.familyName`` +- ``stylename``: required, string. The style name of the instance font. + Corresponds with ``font.info.styleName`` +- ``name``: required, string. A unique name that can be used to + identify this font if it needs to be referenced elsewhere. +- ``filename``: string. Required for MutatorMath. A path to the + instance file, relative to the root path of this document. The path + can be at the same level as the document or lower. +- ``postscriptfontname``: string. Optional for MutatorMath. Corresponds + with ``font.info.postscriptFontName`` +- ``stylemapfamilyname``: string. Optional for MutatorMath. Corresponds + with ``styleMapFamilyName`` +- ``stylemapstylename``: string. Optional for MutatorMath. Corresponds + with ``styleMapStyleName`` + + +``<location>`` element (instance) +--------------------------------- + +Defines the coordinates of this instance in the design space. + +.. seealso:: `Full documentation of the <location> element <location>`__ + + +``<dimension>`` element (instance) +.................................. + +.. seealso:: `Full documentation of the <dimension> element <dimension>`__ + + +``<lib>`` element (instance) +---------------------------- + +Arbitrary data about this instance. + +.. seealso:: :ref:`lib` + + +``<stylename>``, ``<familyname>``, ``<stylemapstylename>``, ``<stylemapfamilyname>`` elements: localised names for instances +---------------------------------------------------------------------------------------------------------------------------- + +Localised names for instances can be included with these simple elements +with an ``xml:lang`` attribute: +`XML language definition <https://www.w3.org/International/questions/qa-when-xmllang.en>`__ + +- ``<stylename>`` +- ``<familyname>`` +- ``<stylemapstylename>`` +- ``<stylemapfamilyname>`` + + +.. rubric:: Example + +.. code:: xml + + <stylename xml:lang="fr">Demigras</stylename> + <stylename xml:lang="ja">半ば</stylename> + <familyname xml:lang="fr">Montserrat</familyname> + <familyname xml:lang="ja">モンセラート</familyname> + <stylemapstylename xml:lang="de">Standard</stylemapstylename> + <stylemapfamilyname xml:lang="de">Montserrat Halbfett</stylemapfamilyname> + <stylemapfamilyname xml:lang="ja">モンセラート SemiBold</stylemapfamilyname> + + +Example for varlib +------------------ + +.. code:: xml + + <instance familyname="InstanceFamilyName" filename="instances/instanceTest2.ufo" name="instance.ufo2" postscriptfontname="InstancePostscriptName" stylemapfamilyname="InstanceStyleMapFamilyName" stylemapstylename="InstanceStyleMapStyleName" stylename="InstanceStyleName"> + <location> + <dimension name="width" xvalue="400" yvalue="300" /> + <dimension name="weight" xvalue="66" /> + </location> + <lib> + <dict> + <key>com.coolDesignspaceApp.specimenText</key> + <string>Hamburgerwhatever</string> + </dict> + </lib> + </instance> + + +``<glyphs>`` element (instance) +------------------------------- + +- Container for ``<glyph>`` elements. +- Optional +- MutatorMath only. + +.. deprecated:: 5.0 + + +``<glyph>`` element (instance) +.............................. + +- Child element of ``<glyphs>`` +- May contain a ``<location>`` element. + +.. deprecated:: 5.0 + +.. rubric:: Attributes + +- ``name``: string. The name of the glyph. +- ``unicode``: string. Unicode values for this glyph, in hexadecimal. + Multiple values should be separated with a space. +- ``mute``: optional attribute, number 1 or 0. Indicate if this glyph + should be supressed in the output. + + +``<note>`` element +,,,,,,,,,,,,,,,,,, + +- String. The value corresponds to glyph.note in UFO. + +.. deprecated:: 5.0 + + +``<masters>`` element +,,,,,,,,,,,,,,,,,,,,, + +- Container for ``<master>`` elements +- These ``<master>`` elements define an alternative set of glyph masters + for this glyph. + +.. deprecated:: 5.0 + + +``<master>`` element +++++++++++++++++++++ + +- Defines a single alternative master for this glyph. + +.. deprecated:: 5.0 + +.. rubric:: Attributes + +- ``glyphname``: the name of the alternate master glyph. +- ``source``: the identifier name of the source this master glyph needs + to be loaded from + + +Example for MutatorMath +....................... + +.. code:: xml + + <instance familyname="InstanceFamilyName" filename="instances/instanceTest2.ufo" name="instance.ufo2" postscriptfontname="InstancePostscriptName" stylemapfamilyname="InstanceStyleMapFamilyName" stylemapstylename="InstanceStyleMapStyleName" stylename="InstanceStyleName"> + <location> + <dimension name="width" xvalue="400" yvalue="300" /> + <dimension name="weight" xvalue="66" /> + </location> + <glyphs> + <glyph name="arrow2" /> + <glyph name="arrow" unicode="0x4d2 0x4d3"> + <location> + <dimension name="width" xvalue="100" /> + <dimension name="weight" xvalue="120" /> + </location> + <note>A note about this glyph</note> + <masters> + <master glyphname="BB" source="master.ufo1"> + <location> + <dimension name="width" xvalue="20" /> + <dimension name="weight" xvalue="20" /> + </location> + </master> + </masters> + </glyph> + </glyphs> + <kerning /> + <info /> + <lib> + <dict> + <key>com.coolDesignspaceApp.specimenText</key> + <string>Hamburgerwhatever</string> + </dict> + </lib> + </instance> + + +.. _lib: + +============================= +``<lib>`` element (top-level) +============================= + +The ``<lib>`` element contains arbitrary data. + +- Child element of ``<designspace>``, ``<variable-font>`` and ``<instance>`` +- Contains arbitrary data about the whole document or about a specific + variable font or instance. +- Items in the dict need to use **reverse domain name notation** + <https://en.wikipedia.org/wiki/Reverse_domain_name_notation>__ + +.. rubric:: Example: + +.. code:: xml + + <lib> + <dict> + <key>com.company.fontEditor.myString</key> + <string>The contents use the PLIST format.</string> + </dict> + </lib> + + |