diff --git a/markup/goldmark/toc.go b/markup/goldmark/toc.go
index 897f0098b6d..1753ede1bce 100644
--- a/markup/goldmark/toc.go
+++ b/markup/goldmark/toc.go
@@ -79,9 +79,8 @@ func (t *tocTransformer) Transform(n *ast.Document, reader text.Reader, pc parse
 			if found {
 				header.ID = string(id.([]byte))
 			}
-		case ast.KindText:
-			textNode := n.(*ast.Text)
-			headingText.Write(textNode.Text(reader.Source()))
+		case ast.KindText, ast.KindString:
+			headingText.Write(n.Text(reader.Source()))
 		}
 
 		return s, nil
diff --git a/markup/goldmark/toc_test.go b/markup/goldmark/toc_test.go
index f2e15f59389..d3a1613cf0b 100644
--- a/markup/goldmark/toc_test.go
+++ b/markup/goldmark/toc_test.go
@@ -32,7 +32,7 @@ func TestToc(t *testing.T) {
 	content := `
 # Header 1
 
-## First h2
+## First h2---now with typography!
 
 Some text.
 
@@ -61,7 +61,7 @@ And then some.
 	got := b.(converter.TableOfContentsProvider).TableOfContents().ToHTML(2, 3)
 	c.Assert(got, qt.Equals, `<nav id="TableOfContents">
   <ul>
-    <li><a href="#first-h2">First h2</a>
+    <li><a href="#first-h2---now-with-typography">First h2&mdash;now with typography!</a>
       <ul>
         <li><a href="#h3">H3</a></li>
       </ul>