message: text run properties order matters
diff: @@ -967,11 +967,15 @@ function genXmlTextRunProperties(opts: ObjectOptions | TextPropsOptions, isDefau
  runProps += opts.charSpacing ? ' spc="' + opts.charSpacing * 100 + '" kern="0"' : '' // IMPORTANT: Also disable kerning; otherwise text won't actually expand
  runProps += ' dirty="0">'
  // Color / Font / Outline are children of <a:rPr>, so add them now before closing the runProperties tag
  - if (opts.color || opts.fontFace || opts.outline) {
  + if (opts.color || opts.fontFace || opts.outline || typeof opts.underline === "object" && opts.underline.color) {
  if (opts.outline && typeof opts.outline === 'object') {
  runProps += `<a:ln w="${valToPts(opts.outline.size || 0.75)}">${genXmlColorSelection(opts.outline.color || 'FFFFFF')}</a:ln>`
  }
  if (opts.color) runProps += genXmlColorSelection(opts.color)
  + // underline color
  + if (typeof opts.underline === "object" && opts.underline.color) {
  + runProps += `<a:uFill><a:solidFill><a:srgbClr val="${opts.underline.color}"/></a:solidFill></a:uFill>`
  + }
  if (opts.glow) runProps += `<a:effectLst>${createGlowElement(opts.glow, DEF_TEXT_GLOW)}</a:effectLst>`
  if (opts.fontFace) {
  // NOTE: 'cs' = Complex Script, 'ea' = East Asian (use "-120" instead of "0" - per Issue #174); ea must come first (Issue #174)
  @@ -996,11 +1000,6 @@ function genXmlTextRunProperties(opts: ObjectOptions | TextPropsOptions, isDefau
  }
  }
  - // underline color
  - if (typeof opts.underline === "object" && opts.underline.color) {
  - runProps += `<a:uFill><a:solidFill><a:srgbClr val="${opts.underline.color}"/></a:solidFill></a:uFill>`
  - }
  -
  // END runProperties
  runProps += `</${runPropsTag}>`
  