a:buChar (Bullet Character)
Specifies a character to use as a bullet point in text formatting.
Parent elements
Description
\:buChar\ is the DrawingML element that defines a character to use as a bullet point. It is defined in ECMA-376 Part 1 §21.1.2.1.2.
Bullet characters provide:
- Custom bullets: Replace default circles with any Unicode character
- Semantic bullets: Use symbols (★, ✓, ◆, etc.) for meaning
- Branded bullets: Match corporate identity (company logo/symbol)
- Visual emphasis: Draw attention to list items
- Localization: Use region-specific symbols
Common bullet characters:
| Character | Unicode | Visual | Use Case |
|---|---|---|---|
| • | U+2022 | Filled circle | Standard bullet |
| ◦ | U+25E6 | Empty circle | Secondary level |
| ◾ | U+25FE | Filled square | Block bullet |
| ◻ | U+25FB | Empty square | Hollow bullet |
| ★ | U+2605 | Filled star | Emphasis/rating |
| ✓ | U+2713 | Checkmark | Completed/done |
| ✗ | U+2717 | X/cross | Not done/error |
| → | U+2192 | Right arrow | Direction/next |
| ✔ | U+2714 | Heavy checkmark | Strong emphasis |
| ◆ | U+25C6 | Filled diamond | Alternative |
| ► | U+25B6 | Play/triangle | Play/action |
| – | U+2013 | En dash | Dash bullet |
| — | U+2014 | Em dash | Longer dash |
Bullet characters differ from:
- Bullet font (\:buFont) — Font for rendering character
- Bullet number (\:buNone) — No bullet (empty list)
- Bullet size (\:buSzPct) — Bullet size percentage
- Auto-numbered bullets (\:buAutoNum) — Sequential numbers
Attributes
| Attribute | Type | Values | Description |
|---|---|---|---|
| \char\ | String | Unicode character | Character to use as bullet (e.g., “•”, “★”) |
Content Model
\:buChar\ has no child elements. It is a self-closing element.
xml
<a:buChar char="•"/>
Examples
Standard Filled Circle Bullet
<a:pPr>
<a:buChar char="•"/>
<a:buFont typeface="Arial"/>
<a:buSzPct val="100000"/>
</a:pPr>
<a:t>Standard bullet point</a:t>
using DocumentFormat.OpenXml.Drawing;
var pPr = new ParagraphProperties();
pPr.Append(new BulletCharacter { Char = "•" });
pPr.Append(new BulletFont { Typeface = "Arial" });
pPr.Append(new BulletSizePercent { Val = 100000 });
var run = new Run();
run.Append(new Text { Text = "Standard bullet point" });
Star Bullet (★)
<a:pPr>
<a:buChar char="★"/>
<a:buFont typeface="Wingdings"/>
<a:buSzPct val="120000"/>
<a:buClr><a:srgbClr val="FFD700"/></a:buClr>
</a:pPr>
<a:t>Important item</a:t>
var pPr = new ParagraphProperties();
pPr.Append(new BulletCharacter { Char = "★" });
pPr.Append(new BulletFont { Typeface = "Wingdings" });
pPr.Append(new BulletSizePercent { Val = 120000 });
var buClr = new BulletColorSchemeClr();
var srgbClr = new RgbColorModelHex { Val = "FFD700" };
buClr.Append(srgbClr);
pPr.Append(buClr);
Checkmark Bullet (✓)
<a:pPr>
<a:buChar char="✓"/>
<a:buFont typeface="Wingdings"/>
<a:buSzPct val="100000"/>
<a:buClr><a:srgbClr val="008000"/></a:buClr>
</a:pPr>
<a:t>Completed task</a:t>
var pPr = new ParagraphProperties();
pPr.Append(new BulletCharacter { Char = "✓" });
pPr.Append(new BulletFont { Typeface = "Wingdings" });
pPr.Append(new BulletSizePercent { Val = 100000 });
var buClr = new BulletColorSchemeClr();
var srgbClr = new RgbColorModelHex { Val = "008000" };
buClr.Append(srgbClr);
pPr.Append(buClr);
Arrow Bullet (→)
<a:pPr>
<a:buChar char="→"/>
<a:buFont typeface="Symbol"/>
<a:buSzPct val="110000"/>
<a:buClr><a:srgbClr val="0070C0"/></a:buClr>
</a:pPr>
<a:t>Next step</a:t>
var pPr = new ParagraphProperties();
pPr.Append(new BulletCharacter { Char = "→" });
pPr.Append(new BulletFont { Typeface = "Symbol" });
pPr.Append(new BulletSizePercent { Val = 110000 });
var buClr = new BulletColorSchemeClr();
var srgbClr = new RgbColorModelHex { Val = "0070C0" };
buClr.Append(srgbClr);
pPr.Append(buClr);
Diamond Bullet (◆)
<a:pPr>
<a:buChar char="◆"/>
<a:buFont typeface="Arial"/>
<a:buSzPct val="100000"/>
<a:buClr><a:srgbClr val="FF0000"/></a:buClr>
</a:pPr>
<a:t>Critical point</a:t>
var pPr = new ParagraphProperties();
pPr.Append(new BulletCharacter { Char = "◆" });
pPr.Append(new BulletFont { Typeface = "Arial" });
pPr.Append(new BulletSizePercent { Val = 100000 });
var buClr = new BulletColorSchemeClr();
var srgbClr = new RgbColorModelHex { Val = "FF0000" };
buClr.Append(srgbClr);
pPr.Append(buClr);
X/Cross Bullet (✗)
<a:pPr>
<a:buChar char="✗"/>
<a:buFont typeface="Wingdings"/>
<a:buSzPct val="100000"/>
<a:buClr><a:srgbClr val="FF0000"/></a:buClr>
</a:pPr>
<a:t>Not completed</a:t>
var pPr = new ParagraphProperties();
pPr.Append(new BulletCharacter { Char = "✗" });
pPr.Append(new BulletFont { Typeface = "Wingdings" });
pPr.Append(new BulletSizePercent { Val = 100000 });
var buClr = new BulletColorSchemeClr();
var srgbClr = new RgbColorModelHex { Val = "FF0000" };
buClr.Append(srgbClr);
pPr.Append(buClr);
Character Selection
Symbol Fonts
Wingdings/Wingdings 2/Wingdings 3 provide special symbols:
| Font | Symbols | Use |
|---|---|---|
| Wingdings | ★✓✗→◆ | Standard symbols |
| Wingdings 2 | ✔✕✿◈ | Extended symbols |
| Wingdings 3 | Special shapes | Specialized graphics |
| Symbol | Greek/math | Scientific content |
| Marlett | Buttons/UI | Interface elements |
Unicode Character Ranges
| Range | Examples | Category |
|---|---|---|
| 2022–2B50 | •◦★✓ | General Punctuation, Dingbats |
| 2190–2195 | ←→↑↓ | Arrows |
| 25A0–25FF | ▲■●◆ | Geometric Shapes |
| 2600–26FF | ☀☁✈ | Miscellaneous Symbols |
| 2700–27BF | ✈✉✌ | Dingbats |
Character Encoding
Specify characters by:
- Direct Unicode: <a:buChar char=”★”/>\
- UTF-8 in XML: Direct character in source
- HTML entity: \☆\ (in some contexts)
Bullet Formatting Properties
Typically paired with bullet-related elements:
| Element | Purpose | Paired With |
|---|---|---|
| \:buChar\ | Character shape | Always used together |
| \:buFont\ | Font family | Specifies rendering font |
| \:buSzPct\ | Size percentage | Relative to text size |
| \:buClr\ | Color | RGB or scheme color |
| \:buSzPts\ | Point size | Absolute size |
| \:buOff\ | Offset from indent | Horizontal position |
| \:buSpcPct\ | Space after bullet | Before text |
Common Patterns
Standard Bullet List
xml
<a:pPr>
<a:buChar char="•"/>
<a:buFont typeface="Arial"/>
</a:pPr>
Hierarchical Bullets
`xml
`
Colored Bullets
xml
<a:buChar char="★"/>
<a:buClr><a:srgbClr val="FFD700"/></a:buClr>
Oversized Bullets
xml
<a:buChar char="◆"/>
<a:buSzPct val="150000"/> <!-- 150% of text size -->
Bullet Hierarchy Table
Professional bullet hierarchy:
| Level | Primary | Secondary | Tertiary |
|---|---|---|---|
| Style A | • | ◦ | – |
| Style B | ■ | ▪ | ▫ |
| Style C | ★ | ✓ | ► |
| Style D | ◆ | ◇ | ◆ |
Rendering Behavior
| Property | Effect | Notes |
|---|---|---|
| Char | Bullet symbol | Determines bullet appearance |
| Font | Rendering engine | Some symbols need specific fonts |
| Size | Relative to text | Usually 100-120% of text size |
| Color | Bullet hue | Can differ from text color |
| Position | Horizontal offset | Managed by buOff, margin settings |
Compatibility Matrix
| Feature | PowerPoint | Word | Excel | Notes |
|---|---|---|---|---|
| Custom characters | ✓ | ✓ | ✓ | Full support |
| Bullet color | ✓ | ✓ | Partial | Word limited |
| Symbol fonts | ✓ | ✓ | ✓ | Font dependent |
| Unicode chars | ✓ | ✓ | ✓ | Font dependent |
Common Issues
Character Not Displaying
| Problem | Cause | Solution |
|---|---|---|
| Missing symbol | Font doesn’t support char | Choose different font |
| Wrong appearance | Wrong font selected | Use Wingdings/Symbol |
| Size mismatch | buSzPct incorrect | Adjust size percentage |
| Color invisible | Foreground = background | Change color |
Notes
Element Characteristics
- Self-closing: No child elements
- Character-based: Uses single Unicode character
- Font-dependent: Rendering depends on typeface
- Customizable: Size and color independently adjustable
- Semantic: Communicates intent via symbol choice
Design Considerations
- Choose intuitive symbols (★ for important, ✓ for done)
- Match bullet style to document tone
- Test on target platforms (symbol availability varies)
- Use hierarchy for multi-level lists
- Document custom bullet meanings
- Maintain consistency across documents
Unicode Selection
- Common symbols (•, ◦, ★) widely supported
- Specialized symbols may require specific fonts
- Test on different OS/applications
- Consider accessibility (some symbols unclear)
- Verify Web/PDF export compatibility
Performance
- Minimal impact on file size
- Character selection doesn’t affect rendering speed
- Font requirement may add file size if embedding
Best Practices
- Use standard symbols for accessibility
- Pair with \:buFont\ for consistent rendering
- Test bullet appearance at multiple zoom levels
- Document any non-standard bullets in templates
- Consider color-blind friendly bullet choices
- Validate symbol appearance in target format (PDF, Web)