Это, конечно, не семантично, но можно использовать <fieldset>
<fieldset><legend>Hello World</legend></fieldset>
fieldset {
border: 0;
border-top: solid 1px red;
}
legend {
margin: 0 auto;
padding: 1em;
}
https://jsfiddle.net/umLocy7e/
Или создать псевдоэлементы
https://jsfiddle.net/hhsfbz5c/
Но в таком случае, нужно в css указывать длину текста. Или оборачивать текст в span с паддиногм и непрозрачным фоном.