There are a few ways this can be done.
The most straightforward, which may be enough in your case, is to have line of dots put in at the bottom of each line of text as a repeating background pattern and then hide the bit that goes beneath the actual text by giving the text a background color.
Here's an example snippet:
div {
width: 6.27in;
position: relative;
background-image: radial-gradient(circle, black 0 30%, transparent 30% 100%);
background-size: 8px 8px;
background-position: left bottom;
background-repeat: repeat no-repeat;
}
span {
background: white;
padding-right: 0.25em;
}
<div><span>John Doe</span></div>
<div><span>Lorem Ipsum</span></div>
<div><span>Hello world</span></div>
<div><span>Test</span></div>
Note that the original spans have been replaced by divs as your example in the question shows them one under the other.
You could use an alternative method, an after pseudo element with 100% width (and the parent with overflow-x hidden) and the same sort of dotted background. In this case though the dots don't necessarily line up.