| name | pptx-font-normalizer |
|---|---|
| description | Inspect and repair PowerPoint `.pptx` files that render the same font inconsistently because slide XML requests one face name while the embedded font table exposes another. Use when Codex needs to diagnose font fallback, compare requested faces against embedded faces, normalize exact face-name mismatches, or write a repaired copy of a presentation. |
Treat a .pptx as an Open XML package. Verify what the slide XML actually requests before changing anything.
Use the bundled script:
python "$env:CODEX_HOME\skills\pptx-font-normalizer\scripts\repair_pptx_fonts.py" `
"C:\path\deck.pptx"That prints:
- embedded font faces from
ppt/presentation.xml - requested
typeface="..."counts across XML parts - requested faces that are not present in the embedded font table
- Run a report first. Do not assume the visible issue is text encoding.
- Compare slide-requested face names with embedded font face names.
- If the same visual font appears under mixed localized and English names, normalize slide references to one canonical face.
- If PowerPoint still needs to resolve both names, add an embedded alias entry that points the alternate face name to the same embedded font relationship.
- Write a repaired copy instead of overwriting the source when the file may be open in PowerPoint.
Report only:
python "$env:CODEX_HOME\skills\pptx-font-normalizer\scripts\repair_pptx_fonts.py" `
"C:\path\deck.pptx"Rewrite requested face names into a canonical embedded face:
python "$env:CODEX_HOME\skills\pptx-font-normalizer\scripts\repair_pptx_fonts.py" `
"C:\path\deck.pptx" `
--output "C:\path\deck.fixed.pptx" `
--replace "넥슨Lv2고딕 Medium=NEXON Lv2 Gothic Medium" `
--replace "넥슨Lv2고딕 Bold=NEXON Lv2 Gothic Bold"Add embedded aliases so both names resolve to the same embedded font:
python "$env:CODEX_HOME\skills\pptx-font-normalizer\scripts\repair_pptx_fonts.py" `
"C:\path\deck.pptx" `
--output "C:\path\deck.fixed.pptx" `
--replace "넥슨Lv2고딕 Medium=NEXON Lv2 Gothic Medium" `
--replace "넥슨Lv2고딕 Bold=NEXON Lv2 Gothic Bold" `
--alias "넥슨Lv2고딕 Medium=NEXON Lv2 Gothic Medium" `
--alias "넥슨Lv2고딕 Bold=NEXON Lv2 Gothic Bold"PowerPoint font resolution is often exact-name sensitive. The failure pattern to look for is:
- slides request
Localized Name Medium - embedded font table exposes
English Name Medium - the English name renders correctly
- the localized name falls back
When that happens, prefer one canonical requested face name across slides. Add aliases only when you need both names to resolve in the package.
- Default to writing a new output file.
- If the original deck is open, expect in-place replacement to fail on Windows.
- Do not describe this as an encoding issue unless the XML itself is actually corrupted.
- Keep replacements exact. Do not mass-rewrite partial substrings unless you have inspected the package first.