I've recently been editing a long, scholarly tome that, for reasons I'll discuss in a future newsletter, my co-workers and I decided to typeset in Microsoft Word, following the techniques explained here:
http://www.topica.com/lists/editorium/read/message.html?mid=1708956278
Our intrepid typesetter has been fairly content except for one thing: there seems to be no way to keep a word from breaking at the end of a line. Microsoft Word happily breaks "Je-sus" and "Bud-dha," for example, which we'd like to avoid. We could force a word down with a soft return, but that doesn't seem like a very elegant solution. Clever idea: how about putting an optional hyphen (CTRL + -) at the *beginning* of the word? That works, but it also *displays* a hyphen at the beginning of the word, which certainly won't do. Can the optional hyphen go at the end of the word? No, that doesn't work at all. So where might we find an answer?
Well, Unicode fonts include all kinds of interesting things. Would they, by chance, include a zero-width nonbreaking space? If we had one of those, we could insert it at the spot where we didn't want a break to occur. I went to Alan Wood's spectacular Unicode Resources site and searched for "zero-width nonbreaking space":
http://www.alanwood.net/unicode/search.html
There it was, not under general punctuation but as the last entry under Arabic Presentation Forms, of all things:
http://www.alanwood.net/unicode/arabic_presentation_forms_b.html
The Web site told me the decimal number (65279) and hex number (FEFF) of the character, so I fired up Word 2002 (XP) and entered the character by typing the hex number followed by ALT + x. With nonprinting characters showing, I could see the little beauty--it looked like a gray box inside a gray box. When nonprinting characters *weren't* showing, the character was invisible, since it had no width. And sure enough, when I put the character into a word and then pushed that word to the end of the line, the word refused to break. Success!
I sent a sample to Word guru Steve Hudson, who tested the idea in various ways and pronounced it good. Thanks, Steve! So now I share this little marvel with you. If you'd like to see the character in action (and get a sample of the character that you can copy and use in your own documents), you can download the following document to play around with:
http://www.editorium.com/ftp/nonbreaking.zip
After you download, unzip, and open the document, notice the automatically hyphenated "excellent" on the first line. Now add a character somewhere in the middle of the *second* line--enough to make the second "excellent" break. But it won't!
Incidentally, the character works in Word 2000 and later versions as long as you have Unicode fonts installed on your computer. You can learn more here:
http://www.alanwood.net/unicode/fonts.html
Please note that using this character within a word will mess up spell-checking for that word, so you might want to check spelling *before* inserting the character hither and yon. If you need to get rid of the characters, display nonprinting characters; then search for ^u65279 and replace with nothing.
_________________________________________
READERS WRITE
After reading last week's article on finding and replacing weird WordPerfect characters, Jane Lyle (jlyle@indiana.edu), managing editor at Indiana University Press, sent the following macro. Thanks, Jane! The macro does its work by searching for characters formatted in the WP TypographicSymbols font, and it includes some characters that last week's macro overlooked. If you don't know how to use such macros, you can find out here.
'MACRO BEGINS HERE
' WPTyp Macro
' Macro recorded 10/25/2001 by Jane Lyle
'
Selection.Find.ClearFormatting
With Selection.Find
.Replacement.Font.Name = "Times New Roman"
.Font.Name = "WP TypographicSymbols"
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Replacement.Font.Name = "Times New Roman"
.Font.Name = "WP TypographicSymbols"
.Text = "A"
.Replacement.Text = """"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Replacement.Font.Name = "Times New Roman"
.Font.Name = "WP TypographicSymbols"
.Text = "@"
.Replacement.Text = """"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Replacement.Font.Name = "Times New Roman"
.Font.Name = "WP TypographicSymbols"
.Text = ">"
.Replacement.Text = "'"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Replacement.Font.Name = "Times New Roman"
.Font.Name = "WP TypographicSymbols"
.Text = "="
.Replacement.Text = "'"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Replacement.Font.Name = "Times New Roman"
.Font.Name = "WP TypographicSymbols"
.Text = "B"
.Replacement.Text = "^="
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Replacement.Font.Name = "Times New Roman"
.Font.Name = "WP TypographicSymbols"
.Text = "C"
.Replacement.Text = "^+"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Replacement.Font.Name = "Times New Roman"
.Font.Name = "WP TypographicSymbols"
.Text = "?"
.Replacement.Text = """"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Replacement.Font.Name = "Times New Roman"
.Font.Name = "WP TypographicSymbols"
.Text = "Y"
.Replacement.Text = ". . ."
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
'MACRO ENDS HERE
_________________________________________
RESOURCES
You can find lots of interesting spaces, hyphens, and other Unicode characters here:
http://www.alanwood.net/unicode/general_punctuation.html