Complete Composites
Posted: Sun Jan 15, 2006 2:18 pm
Introduction
The complete composites feature, which is available in FontCreator Professional, but not in the Home Edition, may be used to create common composites, or just as an aid to the design process.
Creating Composites in the Home Edition • Stacking Fractions
A composite glyph is a glyph composed of two or more glyphs. Often they are used for accented characters like é (e acute) which is a composite of e and ´ (acute accent). Fractions can be composed from superscripts and/or subscripts plus the fraction slash. Geometric symbols like that illustrated below may be composites too.
Many composites can be created by selecting empty glyphs that contain mapping data. To use this powerful feature, select a glyph, or a range of glyphs, right-click and select Complete Composites. The selected glyphs will be composed using data in CompositeData.xml, which is read when FontCreator first uses the feature. This data file contains the following information for each composite glyph defined in the file:
• GlyphMapping - The decimal unicode value of the composite glyph to be generated
• Member - The decimal unicode value of each glyph to be included in the generated composite
• XPos - The horizontal offset in funits of the glyph member. Negative values are offset to the left.
• YPos - The vertical offset in funits of the glyph member. Negative values are offset downwards.
• XScale - The horizontal scaling of the glyph member. Scaling affects the horizontal position as well as the size. Valid values are in the range ± 0.0001 to 1.9999
• YScale - The vertical scaling of the glyph member. Scaling affects the vertical position as well as the size. Valid values are in the range ± 0.0001 to 1.9999
• UseMetrics - TRUE or FALSE. If TRUE, use the font metrics (left side-bearing and advance width) of this glyph member for the composite glyph's metrics. If FALSE, do not use this glyph member's metrics, but allow manual adjustment of the composite glyph's metrics. Since FALSE is assumed if TRUE is not present this parameter can always be omitted if it is false.
With the release of FontCreator 5.6 it is no longer necessary to edit CompositeData.xml to adjust the positioning of composite glyph members in different fonts. Most composites now use automatic positioning, or relative positioning. Absolulte positioning is still used in a few cases, but the new relative positioning works much better with a wider range of fonts and typestyles.
Glyph Members
Typically, a composite glyph consists of two members - a base letter, and an accent. However, other combinations are permitted such as ij or Dz diagraphs, base letters with more than one accent (see Stacking Diacritics), fractions like ¾ with three glyph members, or superscripts like ³ with only one glyph member. A composite may itself be a member of another composite, e.g. superscript ³ could be a composite of 3, but also a glyph member of fraction ¾. When hinting is added by another program composites that are used by other composites will be decomposed. Any composites that use scaling should also be decomposed as the scaling conflicts with hinting.
Stacking Diacritics
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. Unlike single diacritics, they will be moved down for lowercase instead of being moved up for uppercase.
The above-mentioned composite gylph could be composed from two glyphs: LATIN CAPITAL LETTER A WITH CIRCUMFLEX plus ACUTE ACCENT, from three glyphs: LATIN CAPITAL LETTER A plus MODIFIER LETTER CIRCUMFLEX ACCENT plus ACUTE ACCENT, or from two glyphs: LATIN CAPITAL LETTER A plus stacking diacritic circumflex acute accent (decimal 57357). The latter method is used in CompositeData.xml, because it is more flexible for making adjustements after composition. The code-points in the Private Use area are (by definition) not assigned in Unicode. The code-points used by CompositeData.xml are used only by Font Creator.
Where they exist in both character sets, accents from Spacing Modifier Letters are used in preference to accents from Combining Diacritical Marks, because they sometimes need no horizontal offset, but Accents Grave, Diaeresis, Macron, Acute, Middle Dot, and Cedilla are used in preference to both, because they are more likely to be present. Accents Circumflex and Tilde are not used, as they are often much bigger than the spacing modifier accents.
Editing CompositeData.xml
This file is found in the folder <Install Directory>\Composites\ and can be edited in Wordpad or a similar text editor. For convenience, comments are inserted to indicate the beginning of each Unicode character set, e.g. <!-- Latin-1 Supplement -->, for each composite e.g. <!-- A Acute -->, and the structure of each composite is indented with tabs.
• The order of the composites defined in the file must be sequential.
• The text is Case Sensitive, and all entries must begin and end with valid markers. Any syntax errors will make the entire file invalid. Always make systematic backups when editing the XML file.
TIP: Parsing errors can be located by opening the file in Opera Browser. This will tell you in which line the error occurs. Internet Explorer displays the file with syntax highlighting, but it takes much longer to load the file.
• Comments may be added at any point with lines like this: <!-- Type your comment here -->
• Each composite begins with <Composite> and ends with </Composite>
• Each composite needs to be defined with a Unicode Decimal codepoint such as <GlyphMapping>192</GlyphMapping> and needs to include at least one glyph member
• Each member begins with <Member> and ends with </Member>
• Each member needs to be defined with a Unicode Decimal codepoint such as <GlyphMapping>65</GlyphMapping>
• The horizontal offset of the glyph member begins with <XPos> and ends with </XPos>. This line can be omitted if the horizontal offset is zero and will be ignored if Autopositioning is used.
• The vertical offset of the glyph member begins with <YPos> and ends with </YPos>. This line can be omitted if the vertical offset is zero.
• The horizontal scale of the glyph member begins with <XScale> and ends with </XScale>. This line can be omitted if the horizontal scaling is equal to 1. Negative values flip the glyph horizontally about the glyph's y-axis. Be aware that flipped contours will have opposite direction and so will be white if overlayed on regular contours. You can retain the direction of rotation by flipping in both X and Y directions. Where this is unsuitable, you must make the glyph simple to change the direction of flipped contours.
• The vertical scale of the glyph member begins with <YScale> and ends with </YScale>. This line can be omitted if the vertical scaling is equal to 1. Negative values flip the glyph vertically about the glyph's x-axis.
• If the glyph member's metrics are to be used for the composite's metrics the line <UseMetrics>TRUE</UseMetrics> must be included.
Editing Offsets
With the release of FontCreator 5.6 it is no longer necessary to edit offsets. Accents are positioned based on font metrics such as the CapHeight or xHeight. If uppercase accents are too high or too low after using Complete Composites, the user can temporarily change the CapHeight, and regenerate the composites to move the accents up or down.
Tips
This feature requires:
• The selected glyph(s) must be mapped with a Microsoft Unicode mapping.
• If the selected glyph(s) are empty or simple they will be replaced wherever composites are defined. Do not include simple glyphs in your selection if you don't wish to replace them with composites.
• If the selected glyph(s) are already composites they will be replaced only if the composite glyph members are different, not if their positions or scale factors are different. You can select a range of glyphs with shift-click, then deselect individual glyphs with control-click.
• All composite members must be present in the font. If any composite members are mapped, but still empty, the composite glyph will be completed, though obviously missing the contours that have not been defined yet. Contours can be added to the glyph member later, and will simultaneously be added to all composites using that glyph member.
• Scaled composites that are hinted do not scale correctly. After composition they should be decomposed. Composites that use hinted glyph members without scaling should be left as composites to retain the hinting. I recommend that all scaled composites should be decomposed. Any composite glyph members that have been flipped with a negative scale factor should also be decomposed.
• Scaled glyphs such as superscripts scaled from numerals usually need a bold transformation to make them match the weight of regular numerals. Transform scripts will do this automatically.
Autopositioning now aligns most accents correctly, though some like Ogonek and Combining Horn will still need manual adjustment.
Acute and grave accents are offset to the right and left respectively of the vertical centre of the base glyph. This may not be quite the same as the optical centre so they may need some adjustment. A work-around is to temporarily add a contour to the base glyph to shift the physical centre to align with the optical centre, then recompose the composites.
Autopositioning does not adjust the vertical position of accents on lowercase glyphs or of accents below the baseline, it only aligns them horizontally with the base glyph. Accents should be designed in the correct vertical position for lowercase. Use guidelines to align the accents vertically.
Spacing Modifier Letters are used by many other composites. Add these first.
Combining Diacritical Marks can be generated from other accents. Some, like dot below, do not have spacing modifier clones, and so are used by composites. Dot below can be generated from dot above, and is positioned relative to TypoDescender. Show the comparison toolbar (F11) and display the before and after glyphs to make correct alignment of combining diacritics easy. Autopositioning will align them anyway, but it is still good to align them correctly.
Combining hook above is defined as a superscripted question mark. After composition, make the composite glyph simple and delete the dot to get an accent that is approximately correct.
General Punctuation characters are composed from regular punctuation characters: full-stop, exclamation, question mark, apostrophe, en-dash, and em-dash. Double and triple primes and reversed primes all use single prime. Single, double, and triple dot leaders (ellipses) are designed to space evenly at 1/3 of an em.
Superscripts and Subscripts — Superscripts can be created using the Glyph Transform wizard. Change the weight and width to suit your font. Subscripts are composed from superscripts and aligned to bisect the baseline.
Currency Symbols are composed from letters and the underline glyph. Manual adjustment and Get Union of Composites will be needed to complete them. Several currency symbols use the advance width of figure zero. Where the design allows, currency symbols should have the same advance width as figures.
A few Letterlike Symbols can be composed e.g. c/o °F °C and Nº.
Number Forms include the fractions, which use the superscripts and fraction slash (8260). If this character is absent, division slash (8725), will be used if it exists. or as a last resort the forward slash. To adjust the spacing of fractions, adjust the advance width of the fraction slash.
Enclosed Alphanumerics use Geometric Shape, White Circle (9675) and superscripts. They are designed to align with Capitals and may be similar in size to © and ® though the latter are sometimes superscripted.
Block Elements use the full block element (9608) to compose other block elements. Light shade is used to compose medium and dark shades. Light shade is designed on a 256 pixel square with one 128 pixel square in each.
Geometric Shapes use white square and black squares as the basis for other shapes. I recommend that black square (decimal 9632) be designed on the Caps Height.
Miscellaneous Symbols Trigrams (9776-9783) and Digrams (9868-9871) are composed from Monogram (9866-9867) and align with the top of CapHeight.
Private Use Area - Stacking Diacritics can be composed from single accents. Decompose and adjust for uppercase vowel E. The limiting factor when designing glyphs with stacking diacritics is the space available above the uppercase. They are designed not to exceed the WinAscent line. Set guidelines for the upper and lower limits, and scale accents to fit, trying to maintain their weight as far as possible. Vietnamese characters in Latin Extended-B and Latin Extended Additional character sets can then be composed using complete composites and adjusted for horizontal position. Lowercase accents may also need adjustment for vertical position.
Alphabetic Presentation Forms can be composed using this feature, but should be made simple and combined into a harmonious single form, otherwise there is little point in adding these glyphs. "Get union of contours" makes this easy to do. After manually adjusting the spacing between the composite glyph members, convert to simple, select all, and select "Get union of contours" from the glyph toolbar.
The complete composites feature, which is available in FontCreator Professional, but not in the Home Edition, may be used to create common composites, or just as an aid to the design process.
Creating Composites in the Home Edition • Stacking Fractions
A composite glyph is a glyph composed of two or more glyphs. Often they are used for accented characters like é (e acute) which is a composite of e and ´ (acute accent). Fractions can be composed from superscripts and/or subscripts plus the fraction slash. Geometric symbols like that illustrated below may be composites too.
Many composites can be created by selecting empty glyphs that contain mapping data. To use this powerful feature, select a glyph, or a range of glyphs, right-click and select Complete Composites. The selected glyphs will be composed using data in CompositeData.xml, which is read when FontCreator first uses the feature. This data file contains the following information for each composite glyph defined in the file:
• GlyphMapping - The decimal unicode value of the composite glyph to be generated
• Member - The decimal unicode value of each glyph to be included in the generated composite
• XPos - The horizontal offset in funits of the glyph member. Negative values are offset to the left.
• YPos - The vertical offset in funits of the glyph member. Negative values are offset downwards.
• XScale - The horizontal scaling of the glyph member. Scaling affects the horizontal position as well as the size. Valid values are in the range ± 0.0001 to 1.9999
• YScale - The vertical scaling of the glyph member. Scaling affects the vertical position as well as the size. Valid values are in the range ± 0.0001 to 1.9999
• UseMetrics - TRUE or FALSE. If TRUE, use the font metrics (left side-bearing and advance width) of this glyph member for the composite glyph's metrics. If FALSE, do not use this glyph member's metrics, but allow manual adjustment of the composite glyph's metrics. Since FALSE is assumed if TRUE is not present this parameter can always be omitted if it is false.
With the release of FontCreator 5.6 it is no longer necessary to edit CompositeData.xml to adjust the positioning of composite glyph members in different fonts. Most composites now use automatic positioning, or relative positioning. Absolulte positioning is still used in a few cases, but the new relative positioning works much better with a wider range of fonts and typestyles.
Glyph Members
Typically, a composite glyph consists of two members - a base letter, and an accent. However, other combinations are permitted such as ij or Dz diagraphs, base letters with more than one accent (see Stacking Diacritics), fractions like ¾ with three glyph members, or superscripts like ³ with only one glyph member. A composite may itself be a member of another composite, e.g. superscript ³ could be a composite of 3, but also a glyph member of fraction ¾. When hinting is added by another program composites that are used by other composites will be decomposed. Any composites that use scaling should also be decomposed as the scaling conflicts with hinting.
Stacking Diacritics
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. Unlike single diacritics, they will be moved down for lowercase instead of being moved up for uppercase.
The above-mentioned composite gylph could be composed from two glyphs: LATIN CAPITAL LETTER A WITH CIRCUMFLEX plus ACUTE ACCENT, from three glyphs: LATIN CAPITAL LETTER A plus MODIFIER LETTER CIRCUMFLEX ACCENT plus ACUTE ACCENT, or from two glyphs: LATIN CAPITAL LETTER A plus stacking diacritic circumflex acute accent (decimal 57357). The latter method is used in CompositeData.xml, because it is more flexible for making adjustements after composition. The code-points in the Private Use area are (by definition) not assigned in Unicode. The code-points used by CompositeData.xml are used only by Font Creator.
Where they exist in both character sets, accents from Spacing Modifier Letters are used in preference to accents from Combining Diacritical Marks, because they sometimes need no horizontal offset, but Accents Grave, Diaeresis, Macron, Acute, Middle Dot, and Cedilla are used in preference to both, because they are more likely to be present. Accents Circumflex and Tilde are not used, as they are often much bigger than the spacing modifier accents.
Editing CompositeData.xml
This file is found in the folder <Install Directory>\Composites\ and can be edited in Wordpad or a similar text editor. For convenience, comments are inserted to indicate the beginning of each Unicode character set, e.g. <!-- Latin-1 Supplement -->, for each composite e.g. <!-- A Acute -->, and the structure of each composite is indented with tabs.
• The order of the composites defined in the file must be sequential.
• The text is Case Sensitive, and all entries must begin and end with valid markers. Any syntax errors will make the entire file invalid. Always make systematic backups when editing the XML file.
TIP: Parsing errors can be located by opening the file in Opera Browser. This will tell you in which line the error occurs. Internet Explorer displays the file with syntax highlighting, but it takes much longer to load the file.
• Comments may be added at any point with lines like this: <!-- Type your comment here -->
• Each composite begins with <Composite> and ends with </Composite>
• Each composite needs to be defined with a Unicode Decimal codepoint such as <GlyphMapping>192</GlyphMapping> and needs to include at least one glyph member
• Each member begins with <Member> and ends with </Member>
• Each member needs to be defined with a Unicode Decimal codepoint such as <GlyphMapping>65</GlyphMapping>
• The horizontal offset of the glyph member begins with <XPos> and ends with </XPos>. This line can be omitted if the horizontal offset is zero and will be ignored if Autopositioning is used.
• The vertical offset of the glyph member begins with <YPos> and ends with </YPos>. This line can be omitted if the vertical offset is zero.
• The horizontal scale of the glyph member begins with <XScale> and ends with </XScale>. This line can be omitted if the horizontal scaling is equal to 1. Negative values flip the glyph horizontally about the glyph's y-axis. Be aware that flipped contours will have opposite direction and so will be white if overlayed on regular contours. You can retain the direction of rotation by flipping in both X and Y directions. Where this is unsuitable, you must make the glyph simple to change the direction of flipped contours.
• The vertical scale of the glyph member begins with <YScale> and ends with </YScale>. This line can be omitted if the vertical scaling is equal to 1. Negative values flip the glyph vertically about the glyph's x-axis.
• If the glyph member's metrics are to be used for the composite's metrics the line <UseMetrics>TRUE</UseMetrics> must be included.
Editing Offsets
With the release of FontCreator 5.6 it is no longer necessary to edit offsets. Accents are positioned based on font metrics such as the CapHeight or xHeight. If uppercase accents are too high or too low after using Complete Composites, the user can temporarily change the CapHeight, and regenerate the composites to move the accents up or down.
Tips
This feature requires:
• The selected glyph(s) must be mapped with a Microsoft Unicode mapping.
• If the selected glyph(s) are empty or simple they will be replaced wherever composites are defined. Do not include simple glyphs in your selection if you don't wish to replace them with composites.
• If the selected glyph(s) are already composites they will be replaced only if the composite glyph members are different, not if their positions or scale factors are different. You can select a range of glyphs with shift-click, then deselect individual glyphs with control-click.
• All composite members must be present in the font. If any composite members are mapped, but still empty, the composite glyph will be completed, though obviously missing the contours that have not been defined yet. Contours can be added to the glyph member later, and will simultaneously be added to all composites using that glyph member.
• Scaled composites that are hinted do not scale correctly. After composition they should be decomposed. Composites that use hinted glyph members without scaling should be left as composites to retain the hinting. I recommend that all scaled composites should be decomposed. Any composite glyph members that have been flipped with a negative scale factor should also be decomposed.
• Scaled glyphs such as superscripts scaled from numerals usually need a bold transformation to make them match the weight of regular numerals. Transform scripts will do this automatically.
Autopositioning now aligns most accents correctly, though some like Ogonek and Combining Horn will still need manual adjustment.
Acute and grave accents are offset to the right and left respectively of the vertical centre of the base glyph. This may not be quite the same as the optical centre so they may need some adjustment. A work-around is to temporarily add a contour to the base glyph to shift the physical centre to align with the optical centre, then recompose the composites.
Autopositioning does not adjust the vertical position of accents on lowercase glyphs or of accents below the baseline, it only aligns them horizontally with the base glyph. Accents should be designed in the correct vertical position for lowercase. Use guidelines to align the accents vertically.
Spacing Modifier Letters are used by many other composites. Add these first.
Combining Diacritical Marks can be generated from other accents. Some, like dot below, do not have spacing modifier clones, and so are used by composites. Dot below can be generated from dot above, and is positioned relative to TypoDescender. Show the comparison toolbar (F11) and display the before and after glyphs to make correct alignment of combining diacritics easy. Autopositioning will align them anyway, but it is still good to align them correctly.
Combining hook above is defined as a superscripted question mark. After composition, make the composite glyph simple and delete the dot to get an accent that is approximately correct.
General Punctuation characters are composed from regular punctuation characters: full-stop, exclamation, question mark, apostrophe, en-dash, and em-dash. Double and triple primes and reversed primes all use single prime. Single, double, and triple dot leaders (ellipses) are designed to space evenly at 1/3 of an em.
Superscripts and Subscripts — Superscripts can be created using the Glyph Transform wizard. Change the weight and width to suit your font. Subscripts are composed from superscripts and aligned to bisect the baseline.
Currency Symbols are composed from letters and the underline glyph. Manual adjustment and Get Union of Composites will be needed to complete them. Several currency symbols use the advance width of figure zero. Where the design allows, currency symbols should have the same advance width as figures.
A few Letterlike Symbols can be composed e.g. c/o °F °C and Nº.
Number Forms include the fractions, which use the superscripts and fraction slash (8260). If this character is absent, division slash (8725), will be used if it exists. or as a last resort the forward slash. To adjust the spacing of fractions, adjust the advance width of the fraction slash.
Enclosed Alphanumerics use Geometric Shape, White Circle (9675) and superscripts. They are designed to align with Capitals and may be similar in size to © and ® though the latter are sometimes superscripted.
Block Elements use the full block element (9608) to compose other block elements. Light shade is used to compose medium and dark shades. Light shade is designed on a 256 pixel square with one 128 pixel square in each.
Geometric Shapes use white square and black squares as the basis for other shapes. I recommend that black square (decimal 9632) be designed on the Caps Height.
Miscellaneous Symbols Trigrams (9776-9783) and Digrams (9868-9871) are composed from Monogram (9866-9867) and align with the top of CapHeight.
Private Use Area - Stacking Diacritics can be composed from single accents. Decompose and adjust for uppercase vowel E. The limiting factor when designing glyphs with stacking diacritics is the space available above the uppercase. They are designed not to exceed the WinAscent line. Set guidelines for the upper and lower limits, and scale accents to fit, trying to maintain their weight as far as possible. Vietnamese characters in Latin Extended-B and Latin Extended Additional character sets can then be composed using complete composites and adjusted for horizontal position. Lowercase accents may also need adjustment for vertical position.
Alphabetic Presentation Forms can be composed using this feature, but should be made simple and combined into a harmonious single form, otherwise there is little point in adding these glyphs. "Get union of contours" makes this easy to do. After manually adjusting the spacing between the composite glyph members, convert to simple, select all, and select "Get union of contours" from the glyph toolbar.