Complete Composites

The decimal code-points in CompositeData.xml can be written in the hexadecimal form $25 instead of decimal 37, etc. For example, the definition for A Grave in decimal:

<Composite><!-- A Grave -->
<GlyphMapping>192</GlyphMapping>
	<Member id="1">
	<GlyphMapping>65</GlyphMapping>
		<UseMetrics>TRUE</UseMetrics>
	</Member>
	<Member id="2">
	<GlyphMapping>57365</GlyphMapping>
		<GlyphMapping>96</GlyphMapping>
		<Pos>Auto</Pos>
	</Member>
	</Composite>

Would be written like this in hexadecimal:

<Composite><!-- A Grave -->
<GlyphMapping>$C0</GlyphMapping>
	<Member id="1">
	<GlyphMapping>$41</GlyphMapping>
		<UseMetrics>TRUE</UseMetrics>
	</Member>
	<Member id="2">
	<GlyphMapping>$E015</GlyphMapping>
		<GlyphMapping>$60</GlyphMapping>
		<Pos>Auto</Pos>
	</Member>
	</Composite>

The coding methods can be mixed in the file too, so it might be a useful way to distinguish your changes from the original definitions.

Perhaps in the future, CompositeData.xml will be able to use glyphnames instead of code-points, then we can get away from using large parts of the PUA for composing Stacking Diactrics, Petite Capitals, OldStyle Figures, etc.

The code-points in the PUA are for low-profile diacritics. These are useful for some fonts to apply to uppercase base glyphs. If they do not exist, the fall-back glyphs will be used instead, e.g. if $E015 (low profile grave) does not exist, $60 (grave accent) will be used.

Normally, one would use the code-points in the Spacing Modifier Letter or Combining Diacritical Marks character sets.

The PUA is also used for Stacking Diacritics needed for Vietnamese.

Stacking diacritics, such as those used to write Vietnamese, pose difficult problems for the font designer. For example, U+1EA4 : LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE (decimal 7844) requires too much vertical space if the standard diacritics are just stacked vertically. Some designers scale down the diacritics vertically and/or move them closer together than normal to save space. Other designers may opt to place them side by side. I found it is best to define the stacking diacritics in the Private Use Area. CompositeData.xml uses the range from decimal 57344-57364. After inserting these glyphs with “Insert Characters” use Complete Composites to compose them roughly from the single accents. Then decompose them and adjust them to fit the uppercase vowel E.