WD2002: Symbol Characters Are Changed to Box Characters (290978)



The information in this article applies to:

  • Microsoft Word 2002

This article was previously published under Q290978
For a Microsoft Word 2000 version of this article, see 212396.

For a Microsoft Word 98 Macintosh Edition version of this article, see 184634.

For a Microsoft Word 97 version of this article, see 160022.

SYMPTOMS

In Microsoft Word, when you format text with a symbol font such as Wingdings, and then change to a non-symbol font such as Times New Roman, the text is replaced with box characters.

CAUSE

Word displays the box characters after it translates the symbol font to its Unicode equivalent. Therefore, this behavior occurs if the following steps are performed in the given order:
  1. The text is formatted with a symbol font, such as Wingdings.
  2. The file is saved.
  3. The text is reformatted with a non-symbol font, such as Times New Roman.

WORKAROUND

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific needs. If you have limited programming experience, you may want to contact a Microsoft Certified Partner or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Partners, please visit the following Microsoft Web site: For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site: For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

290140 OFFXP: How to Run Sample Code from Knowledge Base Articles

The following Microsoft Visual Basic for Applications (VBA) macro converts the symbol characters to non-symbol characters.

NOTE: Before you run this macro, select the box characters.
Sub ConvertSymbol()

   Dim dlg As Object
   Dim NoFC As Integer
   Dim SCP As Integer
   Dim StartRange As Range
   Dim UniCodeNum As Integer

   ' Temporarily disable Screen Updating
   Application.ScreenUpdating = False

   ' Temporarily disable Smart Cut & Paste
   If Options.SmartCutPaste = True Then
      SCP = 1
      Options.SmartCutPaste = False
   End If

   ' Temporarily display field text
   If ActiveWindow.View.ShowFieldCodes = False Then
      NoFC = 1
      ActiveWindow.View.ShowFieldCodes = True
   End If

   ' Set StartRange variable to current selection's range
   Set StartRange = Selection.Range
   Selection.Collapse

   ' Select first, then each next character in user-defined selection
   Selection.MoveRight unit:=wdCharacter, Extend:=wdExtend
   While Selection.End <= StartRange.End And _
      ActiveDocument.Content.End > Selection.End

      ' If the character is a space, then move to next character
      Set dlg = Dialogs(wdDialogInsertSymbol)
      UniCodeNum = dlg.charnum

      If UniCodeNum = 32 Then
         Selection.Collapse
         Selection.MoveRight unit:=wdCharacter, Extend:=wdMove
         Selection.MoveRight unit:=wdCharacter, Extend:=wdExtend
      End If

      ' Loop, converting symbol Unicode characters to ASCII characters
      Set dlg = Dialogs(wdDialogInsertSymbol)
      UniCodeNum = dlg.charnum

      While UniCodeNum < 0 And Selection.End <= StartRange.End _
         And ActiveDocument.Content.End > Selection.End
            Selection.Delete
            Selection.InsertAfter (ChrW(UniCodeNum + 4096))
            Selection.Collapse (wdCollapseEnd)
            Selection.MoveRight unit:=wdCharacter, Extend:=wdExtend
            Set dlg = Dialogs(wdDialogInsertSymbol)
            UniCodeNum = dlg.charnum
      Wend

      Selection.Collapse (wdCollapseEnd)
      Selection.MoveRight unit:=wdCharacter, Extend:=wdExtend
   Wend

   ' Reset Word document settings
   If SCP = 1 Then Options.SmartCutPaste = True
   If NoFC = 1 Then ActiveWindow.View.ShowFieldCodes = False
      Selection.Collapse (wdCollapseStart)
      Selection.MoveLeft unit:=wdCharacter
      Application.ScreenUpdating = True

End Sub
				
NOTE: After you run the macro and the text is converted to non-symbol characters, you may need to format the text to the correct font.

MORE INFORMATION

The following table lists common symbol and non-symbol fonts:

Symbol fonts Non-symbol fonts
Bookshelf Symbol 3 Arial
Marlett Book Antiqua
Monotype Sorts Bookman Old Style
MS Outlook Century Schoolbook
MT Extra Courier New
Symbol Garamond
Wingdings Times New Roman

Unicode

Unicode is a 16-bit character set designed to cover all of the world's major living languages, in addition to scientific symbols and dead languages that are the subject of scholarly interest. It eliminates the complexity of multi-byte character sets that are currently used in UNIX and Microsoft Windows to support Asian languages. A consortium of companies, including Apple, Microsoft, Hewlett-Packard (HP), Digital, and IBM, created Unicode. These companies used information from the ISO-10646 standard to produce a single standard in 1993. Unicode is the basis for the Microsoft Windows NT operating system.

Unicode is a 16-bit character set, in which all characters occupy the same space. The first 256 values are the same as the ISO-Latin character set, which is also the basis for the ANSI character set used in Microsoft Windows 3.1 and Microsoft Windows 95. However, Unicode defines 34,168 distinct coded characters. In most character sets, a single value is often assigned to several characters. For example, in ASCII a "-" character is used to represent a hyphen, a minus sign, a dash, and a non-breaking hyphen. In Unicode, each meaning is given its own code; that is, a hyphen is represented by a character different from a minus sign, and so forth. The Unicode standard contains only one instance of each character and assigns it a unique name and code value. It also supports combining accent characters, which follow the base character that they are to modify.

For more information about Unicode, visit the Unicode Web site at the following location:

Modification Type:MinorLast Reviewed:10/11/2006
Keywords:kbdtacode kbpending kbprb KB290978