Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows-3.1 Hercules CP850 uses Indexer to set character labels #44

Open
hackerb9 opened this issue Jan 28, 2025 · 1 comment
Open

Windows-3.1 Hercules CP850 uses Indexer to set character labels #44

hackerb9 opened this issue Jan 28, 2025 · 1 comment

Comments

@hackerb9
Copy link

$ monobit-convert windows/windows-3.1/Terminal_Hercules_cp850.yaff foo.png
ERROR: Can only use Indexer to set codepoints, not character labels.

Fortunately, a working copy of this font already exists in the Hoard in the windows-3.0 directory.

Looking at the diff, it looks like the 3.1 version should be deleted as the Unicode code point was not assigned for any of the glyphs. The 3.0 version looks correct.

8c8
< encoding: cp850
---
> encoding: 850
15,17c15
< 
< # [☺] WHITE SMILING FACE
< u+263a:
---
> u+0001:
33,35c31
< 
< # [☻] BLACK SMILING FACE
< u+263b:
---
> u+0002:

All the glyphs are the same.

Same

In fact, it looks like many of the Windows 3.1 fonts are pixel-for-pixel identical to the ones in Windows 3.0. Looking at just the top-level fonts these are definitely the same and could be replaced with aliases:

  • FixedSys_EGA,
  • FixedSys_VGA,
  • System_8514,
  • Terminal_Hercules_cp437,
  • Terminal_Hercules_cp850,
  • Terminal_VGA_cp860,
  • Terminal_VGA_cp861,
  • Terminal_VGA_cp865.
$ for f in *3.1; do g=${f%.3.1}; mf=$(md5sum "$f"); mg=$(md5sum "$g"); if [[ ${mf% *} == ${mg% *} ]]; then echo $mf; echo $mg; echo; fi; done
1ce16ed4fa2ae5de2d453f51bfe1432e FixedSys_EGA.png.3.1
1ce16ed4fa2ae5de2d453f51bfe1432e FixedSys_EGA.png

585acca0f5987d0d91eba0fc6a015453 FixedSys_VGA.png.3.1
585acca0f5987d0d91eba0fc6a015453 FixedSys_VGA.png

d99eea14d5126c3ffe5626ca7fe2b931 System_8514.png.3.1
d99eea14d5126c3ffe5626ca7fe2b931 System_8514.png

4d1e39459277b45e6d2dbc9c97e4a845 Terminal_Hercules_cp437.png.3.1
4d1e39459277b45e6d2dbc9c97e4a845 Terminal_Hercules_cp437.png

b0ae7ee5ed6bf6dde0757d70b60d1280 Terminal_VGA_cp860.png.3.1
b0ae7ee5ed6bf6dde0757d70b60d1280 Terminal_VGA_cp860.png

6005a0b9f4d076ff63ff710daf54be49 Terminal_VGA_cp861.png.3.1
6005a0b9f4d076ff63ff710daf54be49 Terminal_VGA_cp861.png

647bf6384f067e3dafdad0d7e5763fa5 Terminal_VGA_cp865.png.3.1
647bf6384f067e3dafdad0d7e5763fa5 Terminal_VGA_cp865.png

Different

These fonts are subtly different between Windows 3.0 and 3.1:

  • FixedSys_8514

    • Ô ↔ Õ
  • System_EGA

    • ÿ → ý
  • System_VGA

    • Þ ↔ þ
  • Terminal_CGA40_cp437

    • ╪, ╫ look like capacitors in 3.1, pierce through in 3.0
  • Terminal_EGA80_cp437

    • Thinner ₧ in 3.1
  • Terminal_CGA80_cp437

    • Kermit the Ö in 3.1, umlauts disconnected in 3.0
    • capacitor-style ╪, ╫
    • shorter ¥
    • thinner ₧
    • ₧ missing vertical bar of P in 3.0, fixed in 3.1
  • Terminal_EGA40_cp437

    • ┤ fixed in 3.1, stubby left in 3.0
    • thinner ₧
  • Terminal_VGA_cp850

    • stubby left ┤
  • Terminal_VGA_cp863

    • ú → ù
@hackerb9 hackerb9 changed the title Windows-3.1 Hercules CP850 uses Indexer to set codepoints Windows-3.1 Hercules CP850 uses Indexer to set character labels Jan 28, 2025
@hackerb9
Copy link
Author

Looks like Windows 3.1 CGA40, CGA80, EGA40, and EGA80 all have the same problem.

$ grep -l "u+0001:" windows/windows-3.1/*.yaff
windows/windows-3.1/Terminal_CGA40_cp850.yaff
windows/windows-3.1/Terminal_CGA80_cp850.yaff
windows/windows-3.1/Terminal_EGA40_cp850.yaff
windows/windows-3.1/Terminal_EGA80_cp850.yaff
windows/windows-3.1/Terminal_Hercules_cp850.yaff

None of those show any changes in the glyph pixels which is suspicious since Terminal_VGA_cp850, which doesn't have the Indexer issue, fixes the stubby left ┤ (U+2524).

Are these broken files actually from Windows 3.1? If so, why did Microsoft not fix U+2524 in the EGA40 and EGA80 files as they did for code page 437?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant