3

My computer recently displayed Unicode characters fine. However; it recently stopped displaying them, I can successfully display the characters in notepad on another computer, running the same Win 7 but it is x86 instead of x64. Both cases are using the same font (arial) switching to a unicode supported font on the x64 machine fixes the problem. Any thoughts?

음식

0

1 Answer 1

1

Any thoughts?

Notepad Font

In Windows Notepad, you cannot (in general) mix fonts, you can only select one font at a time. However, this statement has to be qualified for recent versions of Windows.


Windows XP and earlier

On Windows XP and before, Notepad could not display characters which were not in the selected Font. Therefore a missing or incorrectly displayed character (typically shown as an empty box) could be caused by:

Using Arial instead of Arial Unicode.
Arial is 778,552 bytes, Arial Unicode is 23,275,812 bytes. The difference is that a huge number of characters are in Arial Unicode but not in Arial. (these sizes are from Vista not XP but the difference will be similar).

Omitting the Byte Order Mark(BOM)
Windows expects Unicode files (UTF-8, UTF-16 LE, etc) to contain a BOM. If not, Windows then guesses the encoding using a Windows API function (isTextUnicode) which is well-known to make mistakes, resulting in multiple Latin-1 characters being shown instead of a single correct character.


(update)

Windows Vista onwards

Notepad has now adopted the strategy first seen in web-browsers - if the character does not exist in the current font, find a font that does contain that character and, for that character only, use the other font. Therefore if you have different additional fonts on one computer, it can behave differently to other computers (even though the OS is the same).

"Wrong" Arial
I don't know the algorithm used but it seems possible that if you have a corrupted or much smaller Arial Unicode that lacks some characters, Notepad may believe the font contains a character it does not. An Arial font of 3,395 KB is not what I would expect on Windows 7. Perhaps installing some application has replaced the default font with one that is faulty in some way?

Additional "bad" font Alternatively Notepad might search a different, recently added, font for the missing character before looking at Arial Unicode. If this different font claims to contain the character but does not (e.g. incorrect layout tags, Notepad could fail to display the character


(update 2)

Suggested action

On the computer that has the 3,395 KB Arial regular, copy the font file to a safe place, un-install it, then install the 761 KB Arial regular font file copied from the other computer.

6
  • Arial seems to work on other system, and the text I am uses seems to be including the BOM. It displays properly if I switch to arial unicode.
    – msarchet
    Commented Nov 7, 2011 at 19:52
  • @msarchet: what are the sizes of the "Arial" fonts on the two systems? Commented Nov 7, 2011 at 19:58
  • My arial is 3,395 KB and the Unicode is the same as yours however I don't have a just Arial font in the sub folder for arial and the Unicode MS isn't insluded in that one
    – msarchet
    Commented Nov 7, 2011 at 20:01
  • The Arial Regular is 761 KB, on the machine that it is working on is a clean install on Win 7 Ultimate x64 (it's in a VM)
    – msarchet
    Commented Nov 7, 2011 at 20:02
  • Any other thoughts? It's strange to me that it's functioning differently under different computers with the same OS
    – msarchet
    Commented Nov 8, 2011 at 17:23

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .