I am working on a page about World War 1 (WWI). when NVDA reads the page it says "WW eye". I can correct this by using the following:
<span aria-hidden="true">WWI</span> <span style="display:inline-block; text-indent: -10000px;">World War One</span>
However, I have WWI in the page title:
<title>WWI ...</title>
When a user loads the page, NVDA reads the page title and, in this case, will say WW "eye."
Is there a similar technique to make NVDA say something different as it appears in the title tag?
You wrote a 1 in your example <title>
I presume that is meant to be an "i".
Short answer is there is nothing you can do with the title if you must use an "I" and nothing you need to do, screen reader users are used to this kind of behaviour and will gain context very quickly from the document, from links they followed to get to the page etc.
Just use WW1 it makes more sense than WWI to everybody, not just screen reader users (or better yet World War 1).
Plus in terms of search terms I doubt anyone would use WWI to look for WW1 so go with the obvious choice.
Also in terms of hiding information from screen readers a better approach is to use this visually hidden text class for compatibility (you can inline the CSS if you must, but using classes is obviously preferable as the mark-up is much cleaner and you can use the class elsewhere.)
HTML
<span aria-hidden="true">WWI</span>
<span class="visually-hidden">World War One</span>
CSS
.visually-hidden {
border: 0;
padding: 0;
margin: 0;
position: absolute !important;
height: 1px;
width: 1px;
overflow: hidden;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 - a 0 height clip, off to the bottom right of the visible 1px box */
clip: rect(1px, 1px, 1px, 1px); /*maybe deprecated but we need to support legacy browsers */
clip-path: inset(50%); /*modern browsers, clip-path works inwards from each corner*/
white-space: nowrap; /* added line to stop words getting smushed together (as they go onto seperate lines and some screen readers do not understand line feeds as a space */
}