-
Notifications
You must be signed in to change notification settings - Fork 46
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
Symbols for Legacy Computing, IBM PC, MS-DOS, and HP 4260 Series compatibility #144
Open
PhMajerus
wants to merge
33
commits into
slavfox:main
Choose a base branch
from
PhMajerus:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Sextants (U+1FB00 - U+1FB3B, Unicode 13.0) - Separated Quadrants (U+1CC21 - U+1CC2F, Unicode 16.0) - Separated Sextants (U+1CE51 - U+1CE8F, Unicode 16.0)
- Segmented digits (U+1FBF0 - U+1FBF9, Unicode 13.0) - Outlined capital letters (U+1CCD6 - U+1CCEF, Unicode 16.0) - Outlined digits (U+1CCF0 - U+1CCF9, Unicode 16.0)
- Smooth Sextants (U+1FB3C - U+1FB67, Unicode 13.0) - Triangles (U+25E2 - U+25E5; U+1FB68 - U+1FB6F; U+1FB9A - U+1FB9B, Unicode 13.0)
- Shaded blocks (U+1FB8C - U+1FB92; U+1FB94 - U+1FB99; U+1FB9C - U+1FB9F, Unicode 13.0) - Semicircles and extra quadrants (U+1FBE0 - U+1FBEF, Unicode 16.0)
Improved the appearance of the outlined letters.
Added the new characters to img/characters.txt and img/charmap.txt.
Added the U+25E2 to U+25E5 that I forgot to add to img/characters.txt and img/charmap.txt in the previous commit.
- Large Type Pieces (U+1CE1A - U+1CE50, Unicode 16.0) (From Hewlett-Packard 2640 Series Terminals)
- Extra box drawing lines (U+1FB70 - U+1FB7F, Unicode 13.0) - Extra block elements (U+1FB82 - U+1FB8B; U+1FBCE; U+1FBCF, Unicode 13.0) - MouseText (U+1FB80; U+1FB81; U+1FBB0 - U+1FBBC, Unicode 13.0) - Misc sprites, UI, etc... (U+1FBBD - U+1FBCD, Unicode 13.0) - Added crossed outlined seven (U+1CCF7) to CozetteCrossedSeven.sfd
- Fixed and improved a few characters - Replaced U+1FB95 and U+1FB96 with more organic fill patterns as checkerboard cannot be regular tiling patterns at 6x13.
- Legacy systems arrows (U+1F8B0 - U+1F8BB, Unicode 13.0 and 16.0)
Added the U+1F8B0 to U+1F8BB that I forgot to add to img/characters.txt and img/charmap.txt in the previous commit.
- Added legacy computers delete symbols (U+2427 - U+2429, Unicode 16.0) - Completed missing control pictures in the U+2400 - U+2446 range
Minor adjustments to make control pictures more consistent with the main latin characters.
Minor fixes to the smooth sextants slopes.
- Box drawing and tick lines (U+1CE0D - U+1CE19, Unicode 16.0) - Terminal graphic symbols (U+1CE00 - U+1CE0C, Unicode 16.0)
- One sixteenth blocks (U+1CE90 - U+1CE9F, Unicode 16.0) - Other 8×8-based patterns (U+1CEA0 - U+1CEAF, Unicode 16.0)
- Octants (U+1CD00 - U+1CDE5, Unicode 16.0)
- Sharp MZ stick figures, ruler, electronics, and more (U+1CC00 - U+1CC20, Unicode 16.0)
- Changed corner pieces from chamfered to curved style.
- Double-width chess pieces (U+2654 - U+265F) - 2×2 chess pieces + standing knight (U+1CCBA - U+1CCD5, Unicode 16.0)
- Smalltalk-72 symbols (U+1CEB0 - U+1CEB3, Unicode 16.0)
- Black Large Circle (U+2B24, required for some sprites below) - Sprites (U+1CC48 - U+1CC59; U+1CC60 - U+1CC9F, Unicode 16.0)
Removed some characters that were included by mistake in characters.txt and charmap.txt.
- More sprites (U+2708; U+1F6E7; U+1CDF5; U+1CDF8 - U+1CDFF, Unicode 16.0)
- Adjusted U+2429 (Amstrad CPC delete control picture) - AutoHint'ed all 944 glyphs added in my commits.
- More sprites (U+1CC5A - U+1CC5F; U+1CCA0 - U+1CCB9; U+1CDE6 - U+1CDF4; U+1CDF6 - U+1CDF7, Unicode 16.0)
- Add missing characters for IBM PC and MS-DOS codepage 437 support (U+20A7; U+21A8; U+2310; U+25AC; U+25D8; U+25D9; U+263C)
- Made U+1CEB0 (horizontal zigzag line) more similar to Smalltalk-78 on Macintosh.
- Add missing arrows U+25BA and U+25C4 required for CP437 support.
- Added U+2628, U+2243, and U+2244 to complete HP 2640 standard character sets.
- Added Playing Cards (U+1F0A0 - U+1F0AE, U+1F0B1 - U+1F0BF, U+1F0C1 - U+1F0CF, U+1F0D1 - U+1F0DF, Unicode 7.0) (Note the tarot cards are not included in this commit)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I tried adding the Symbols for Legacy Computing and Symbols for Legacy Computing Supplement to Cozette.
These characters are important in terminals both for historical reasons and to give more flexibility to modern TUI apps, so much so that their original proposals were named
terminals-prop
andterminals-supplement
. They include denser pseudopixels to complement the existing half-blocks and quadrants, extra box drawing and block elements, fill patterns, etc….Most only have been added to Unicode very recently, some as late as September 2024, and therefore are not widely used yet, but having them in a few fonts is needed as the first step before any app can consider taking advantage of them.
They have been requested in #44, and this pull request contains all the characters needed to close that issue.
I couldn't get a build environment working, so this only provides 1065 new glyphs in the
Cozette.sfd
file, and 5 variants in theCozetteCrossedSeven.sfd
file.I'm also new to FontForge, so hopefully I didn't mess up anything else and the new code points work, but please check what was changed as it seems it touched some other parts of the file as well.
I couldn't get FontForge to acknowledge the new characters in their corresponding Unicode blocks in Edit > Font Info > Unicode Ranges.
Symbols for Legacy Computing U+1FB00-U+1FBFF
still shows0/212
even though selecting that range highlights the new characters in the grid.I probably missed something, but hopefully you can integrate them properly into your build system.
This pull request contains all of the Symbols for Legacy Computing (
U+1FB00
-U+1FBFF
), Symbols for Legacy Computing Supplement (U+1CC00
-U+1CEBF
) blocks, characters missing for codepage 437 (required for all classic PC ANSI-art), and a few extras in other blocks that have been added either as part of legacy character sets but grouped into existing similar sets, or existing in other blocks and required as part of sets spread across Symbols for Legacy Computing and other blocks. It also includes chess pieces and playing cards (#153).In more details, the characters included are as follows:
U+1FB00
-U+1FB3B
, Unicode 13.0, from TRS-80, Teletext)U+1CD00
-U+1CDE5
, Unicode 16.0, from Kaypro II).U+1FB3C
-U+1FB67
, Unicode 13.0, from Teletext)U+25E2
-U+25E5
;U+1FB68
-U+1FB6F
;U+1FB9A
-U+1FB9B
, Unicode 13.0)U+1FB8C
-U+1FB92
;U+1FB94
-U+1FB99
;U+1FB9C
-U+1FB9F
, Unicode 13.0, from Sharp MZ, Sinclair ZX, Commodore,…)U+1FBA0
-U+1FBAE
, Unicode 13.0, from Amstrad CPC,…)U+1FBD0
-U+1FBDF
, Unicode 16.0, from Ohio Scientific, Sharp MZ,…)U+1FBE0
-U+1FBEF
, Unicode 16.0, required for octants)U+1FB70
-U+1FB7F
, Unicode 13.0)U+1CE0D
-U+1CE19
, Unicode 16.0, from Hewlett-Packard 2640 Series terminals)U+1FB82
-U+1FB8B
;U+1FBCE
;U+1FBCF
, Unicode 13.0)U+1FB80
;U+1FB81
;U+1FBB0
-U+1FBBC
, Unicode 13.0, from Apple II)U+1FBBD
-U+1FBCD
, Unicode 13.0, from TRS-80 and others)U+1CC21
-U+1CC2F
, Unicode 16.0, from Sharp MZ)U+1CE51
-U+1CE8F
, Unicode 16.0, from Teletext)U+1FBF0
-U+1FBF9
, Unicode 13.0, from Atari ST, LCD/LED seven-segment displays,…)U+1CCD6
-U+1CCF9
, Unicode 16.0, from Sharp MZ) - Also added crossed outlined seven (U+1CCF7
) to CozetteCrossedSeven.sfdU+1CE1A
-U+1CE50
, Unicode 16.0, from Hewlett-Packard 2640 Series terminals)U+1F8B0
-U+1F8BB
, Unicode 13.0 and 16.0, from Atari 8-bit and others)U+2400
-U+2429
, including Unicode 16.0 delete symbols from Apple II, TRS-80, and Amstrad CPC)U+1CE00
-U+1CE0C
, Unicode 16.0, from Ohio Scientific)U+1CE90
-U+1CEAF
, Unicode 16.0, from Robotron Z9001, required for octants)U+1CC00
-U+1CC20
, Unicode 16.0, from Sharp MZ)U+2654
-U+265F
;U+1CCBA
-U+1CCD5
, Unicode 16.0, from Sharp MZ)U+1CEB0
-U+1CEB3
, Unicode 16.0, from Xerox Alto and Macintosh Smalltalk environments)U+2B24
;U+1CC48
-U+1CCB9
;U+2708
;U+1F6E6
-U+1CDFF
, Unicode 16.0, from Mattel Aquarius, Ohio Scientific, and Sharp MZ)U+20A7
;U+21A8
;U+2310
;U+25AC
;U+25BA
;U+25C4
;U+25D8
;U+25D9
;U+263C
, from IBM PC and MS-DOS)U+2628
;U+2243
; and extraU+2244
, from Hewlett-Packard 2640 Series terminals)U+1F0A0
-U+1F0AE
;U+1F0B1
-U+1F0BF
;U+1F0C1
-U+1F0CF
;U+1F0D1
-U+1F0DF
, Unicode 7.0)The
Mosaics design.png
contains the details of how the smooth sextants/diagonals and triangles combine with straight slopes.For the separated quadrants and sextants, I followed the same design as your existing Braille (which are pretty much separated octants).
The extra box drawing lines follow the same design principles as the existing ones, including the 1px overflow on the right of the cell.
The two checkerboard fill patterns
U+1FB95
andU+1FB96
are reinterpretations of the original 4×4 checkerboards because it's impossible to make regular cherckerboards with a 6×13 resolution, so the more organic design I used provide a tiling pattern that looks more regular.The sprites such as the running man, the stick figures, and the pointing hand are slightly adjusted versions of their original 8×8 characters from the Apple II and TRS-80, while the MouseText elements are based on Macintosh classic versions of the same GUI elements to better take advantage of the extra resolution.
You can test the pseudopixels using
curl "https://raw.githubusercontent.com/PhMajerus/Documents/refs/heads/main/CheatSheets/Blocks%20tables.txt"
.I also have some Sextants and Octants-based ANSI-art you can use to see the result.
Similarly, many of the new box drawing characters can be tested using
curl "https://raw.githubusercontent.com/PhMajerus/Documents/refs/heads/main/CheatSheets/Lines%20tables.txt"
.For Large Type Pieces, see
curl "https://raw.githubusercontent.com/PhMajerus/Documents/refs/heads/main/HowTos/HowTo%20Large%20Type%20Pieces.txt"
for explanations.I included the 9 characters missing to support the original IBM PC / MS-DOS codepage 437, as that is required for legacy PC text apps. Those are also used by other codepages, and from my limited tests, it appears Cozette already contains all the other characters required for CP850 (MS-DOS Latin 1), CP1252 (Windows Latin 1), CP850 (MS-DOS Portuguese), CP863 (MS-DOS fr-Canada), and CP865 (MS-DOS Nordic).
So adding the missing CP437 characters also make Cozette support most MS-DOS codepages (except CP720 Arabic and CP932 Japanese).
I added 2 characters missing to support the standard HP 4260 charset ROMs
U+2628
andU+2243
(andU+2244
for consistency, although it is not available in the original HP terminals). This is detailed in #146 and this PR closes that issue as well.I adjusted
≅
(U+2245
) that was a pixel too high compared to other mathematical operators alignments. That is the only existing character that I touched in the PR, everything else is just new glyphs.