Add additional characters to Consolas Font #588

Closed
opened 2026-01-30 21:56:14 +00:00 by claunia · 17 comments
Owner

Originally created by @be5invis on GitHub (Mar 12, 2019).

Many OSS projects use various Unicode symbols as dingbats in CLI, and if Consolas can support them it may be helpful for OSS developers.

The list below is an incomplete list that modern OSS programs use.

NOTE: Some of these characters are punctuations in non-Latin scripts. It is NOT recommended to include them.

"Figures" Name Character Unicode CP437? Notes
tick U+2714
cross U+2716
star U+2605
square U+2587 LOWER SEVEN EIGHTHS BLOCK, close to U+2588
squareSmall U+25FB
squareSmallFilled U+25FC
play U+25B6
circle U+25EF
circleFilled U+25C9
circleDotted U+25CC
circleDouble U+25CE
circleCircle U+24DE
circleCross U+24E7
circlePipe U+24BE
circleQuestionMark ?⃝ U+003F U+20DD Combination of U+003F and U+20DD
bullet U+25CF
dot U+2024
line U+2500
ellipsis U+2026
pointer U+276F May also include its mirror
pointerSmall U+203A May also include its mirror
info U+2139
warning U+26A0
hamburger U+2630
smiley U+32E1 Enclosed form of TSU (ツ). Not recommended
mustache U+0DF4 Sinhala punctuation Kunddaliya. Not recommended
heart U+2665
arrowUp U+2191
arrowDown U+2193
arrowLeft U+2190
arrowRight U+2192
radioOn U+25C9
radioOff U+25EF
checkboxOn U+2612
checkboxOff U+2610
oneHalf ½ U+00BD
oneThird U+2153
oneQuarter ¼ U+00BC
oneFifth U+2155
oneSixth U+2159
oneSeventh U+2150
oneEighth U+215B
oneNinth U+2151
oneTenth U+2152
twoThirds U+2154
twoFifths U+2156
threeQuarters ¾ U+00BE
threeFifths U+2157
threeEighths U+215C
fourFifths U+2158
fiveSixths U+215A
fiveEighths U+215D
sevenEighths U+215E
Originally created by @be5invis on GitHub (Mar 12, 2019). Many OSS projects use various Unicode symbols as dingbats in CLI, and if Consolas can support them it may be helpful for OSS developers. The list below is an **incomplete** list that modern OSS programs use. NOTE: Some of these characters are punctuations in non-Latin scripts. It is NOT recommended to include them. |"Figures" Name|Character|Unicode|CP437?|Notes| |---|---|---|---|---| |`tick`|`✔`|`U+2714`| | | |`cross`|`✖`|`U+2716`| | | |`star`|`★`|`U+2605`| | | |`square`|`▇`|`U+2587`| | LOWER SEVEN EIGHTHS BLOCK, close to U+2588 | |`squareSmall`|`◻`|`U+25FB`| | | |`squareSmallFilled`|`◼`|`U+25FC`| | | |`play`|`▶`|`U+25B6`| | | |`circle`|`◯`|`U+25EF`| | | |`circleFilled`|`◉`|`U+25C9`| | | |`circleDotted`|`◌`|`U+25CC`| | | |`circleDouble`|`◎`|`U+25CE`| | | |`circleCircle`|`ⓞ`|`U+24DE`| | | |`circleCross`|`ⓧ`|`U+24E7`| | | |`circlePipe`|`Ⓘ`|`U+24BE`| | | |`circleQuestionMark`|`?⃝`|`U+003F U+20DD`| | Combination of U+003F and U+20DD | |`bullet`|`●`|`U+25CF`| | | |`dot`|`․`|`U+2024`| | | |`line`|`─`|`U+2500`|✔|| |`ellipsis`|`…`|`U+2026`| | | |`pointer`|`❯`|`U+276F`| | May also include its mirror | |`pointerSmall`|`›`|`U+203A`| | May also include its mirror | |`info`|`ℹ`|`U+2139`| | | |`warning`|`⚠`|`U+26A0`| | | |`hamburger`|`☰`|`U+2630`| | | |`smiley`|`㋡`|`U+32E1`| | Enclosed form of TSU (ツ). **Not recommended** | |`mustache`|`෴`|`U+0DF4`| | Sinhala punctuation _Kunddaliya_. **Not recommended** | |`heart`|`♥`|`U+2665`|✔|| |`arrowUp`|`↑`|`U+2191`|✔|| |`arrowDown`|`↓`|`U+2193`|✔|| |`arrowLeft`|`←`|`U+2190`|✔|| |`arrowRight`|`→`|`U+2192`|✔|| |`radioOn`|`◉`|`U+25C9`| | | |`radioOff`|`◯`|`U+25EF`| | | |`checkboxOn`|`☒`|`U+2612`| | | |`checkboxOff`|`☐`|`U+2610`| | | |`oneHalf`|`½`|`U+00BD`|✔|| |`oneThird`|`⅓`|`U+2153`| | | |`oneQuarter`|`¼`|`U+00BC`|✔|| |`oneFifth`|`⅕`|`U+2155`| | | |`oneSixth`|`⅙`|`U+2159`| | | |`oneSeventh`|`⅐`|`U+2150`| | | |`oneEighth`|`⅛`|`U+215B`| | | |`oneNinth`|`⅑`|`U+2151`| | | |`oneTenth`|`⅒`|`U+2152`| | | |`twoThirds`|`⅔`|`U+2154`| | | |`twoFifths`|`⅖`|`U+2156`| | | |`threeQuarters`|`¾`|`U+00BE`| | | |`threeFifths`|`⅗`|`U+2157`| | | |`threeEighths`|`⅜`|`U+215C`| | | |`fourFifths`|`⅘`|`U+2158`| | | |`fiveSixths`|`⅚`|`U+215A`| | | |`fiveEighths`|`⅝`|`U+215D`| | | |`sevenEighths`|`⅞`|`U+215E`| | |
claunia added the Issue-FeatureProduct-ConhostArea-FontsResolution-Won't-Fix labels 2026-01-30 21:56:14 +00:00
Author
Owner

@be5invis commented on GitHub (Mar 12, 2019):

cc. @sindresorhus The list above comes from your figures lib.

@be5invis commented on GitHub (Mar 12, 2019): cc. @sindresorhus The list above comes from your `figures` lib.
Author
Owner

@sindresorhus commented on GitHub (Mar 12, 2019):

It shouldn't just include symbols from my figures package, it should include all Unicode characters.

@sindresorhus commented on GitHub (Mar 12, 2019): It shouldn't just include symbols from my [`figures`](https://github.com/sindresorhus/figures) package, it should include **all** Unicode characters.
Author
Owner

@be5invis commented on GitHub (Mar 12, 2019):

@sindresorhus
There are 87,887 ideographs currently in Unicode. You need all of them too?
We need a boundary, and characters beyond that boundary should be handled by font fallback / font linking / whatever.

What Consolas should cover:

  • Characters that used as symbols that used by modern OSS programs in CLI.
  • These characters should follow Consolas' design and metrics, and properly aligned with existing Consoals characters.

What Consolas should NOT cover:

  • Characters and punctuations of scripts that beyond Latin, Greek and Cyrillic, especailly characters need complex shaping (like Arabic).
  • These characters should be handled with font fallback.
@be5invis commented on GitHub (Mar 12, 2019): @sindresorhus There are 87,887 ideographs currently in Unicode. You need all of them too? We need a boundary, and characters beyond that boundary should be handled by font fallback / font linking / whatever. What Consolas should cover: - Characters that used as symbols that used by modern OSS programs in CLI. - These characters should follow Consolas' design and metrics, and properly aligned with existing Consoals characters. What Consolas should NOT cover: - Characters and punctuations of scripts that beyond Latin, Greek and Cyrillic, especailly characters need complex shaping (like Arabic). - These characters should be handled with font fallback.
Author
Owner

@sindresorhus commented on GitHub (Mar 12, 2019):

There are 87,887 ideographs currently in Unicode. You need all of them too?

I don't need them all, but it shouldn't be limited to an arbitrarily chosen subset.

should be handled by font fallback / font linking / whatever.

This is more important IMHO. As a developer, I just want all Unicode characters to be available in some form. I don't care which font it is.

@sindresorhus commented on GitHub (Mar 12, 2019): > There are 87,887 ideographs currently in Unicode. You need all of them too? I don't need them all, but it shouldn't be limited to an arbitrarily chosen subset. > should be handled by font fallback / font linking / whatever. This is more important IMHO. As a developer, I just want all Unicode characters to be available in some form. I don't care which font it is.
Author
Owner

@be5invis commented on GitHub (Mar 12, 2019):

@sindresorhus
I added a note that it is not a complete list.
Font fallback is not a simple task. Trust me, I maintain one, and it used >2000 lines of C++ to cover all the edge cases.

@be5invis commented on GitHub (Mar 12, 2019): @sindresorhus I added a note that it is not a complete list. Font fallback is not a simple task. Trust me, I maintain one, and it used >2000 lines of C++ to cover all the edge cases.
Author
Owner

@zadjii-msft commented on GitHub (Mar 12, 2019):

I don't believe our team owns Consolas, nor am I really sure any team owns Consolas. I do know that our team certainly doesn't have the resources to make changes to a font ourselves, but I can sic @bitcrazed on trying to find a person to make updates to Consolas.

This is now the "Make Improvements to Consolas" thread

@zadjii-msft commented on GitHub (Mar 12, 2019): I don't believe our team owns Consolas, nor am I really sure any team owns Consolas. I do know that our team certainly doesn't have the resources to make changes to a font ourselves, but I can sic @bitcrazed on trying to find a person to make updates to Consolas. This is now the "Make Improvements to Consolas" thread
Author
Owner

@be5invis commented on GitHub (Mar 13, 2019):

May also include full block elements support (U+2580--U+259F)

@be5invis commented on GitHub (Mar 13, 2019): May also include full block elements support (U+2580--U+259F)
Author
Owner

@E3V3A commented on GitHub (Mar 28, 2019):

@be5invis

Just a few notes about the box characters:

See:

My experiments have show that:

  • 2585, # Look best but is not part of cp437 and thus font dependent & not widely available
  • 2580, 25A0, 2588 # IBM-437
def print_legend():
    #cc = u'\u2585' # Unicode Character for a "5/8th box"           # (U+2585) is not part of IBM-437
    #cc = u'\u2588' # Unicode Character for a "full box"            # (U+2588) is part of IBM-437
    #cc = u'\u25A0' # Unicode Character for a "black square"        # (U+25A0) is part of IBM-437
    cc = u'\u2580'  # Unicode Character for a "Upper half block"    # (U+2580) is part of IBM-437

The other "boxes" was not even considered, as they either didn't render anything like what one would expect from a "box", or it was placed too high/low within the character frame.

Running the following in a PWSH using Deja Vu Sans Mono, yield:

pwsh_2019-03-28_10-12-36

As you can see \u2587 renders as a rectangle in most windows consoles, and not like a box as in the GitHub using a browser (shown in OP.) So if you're going to add 2587 you should probably consider adding 2585, 2580, 25A0 as well, to make sure people actually can print a box when intended.

@E3V3A commented on GitHub (Mar 28, 2019): @be5invis Just a few notes about the *box* characters: See: * https://github.com/PowerShell/PowerShell/issues/8409 * https://en.wikipedia.org/wiki/Code_page_437 * https://en.wikipedia.org/wiki/Box-drawing_character * https://en.wikipedia.org/wiki/Block_Elements My experiments have show that: * 2585, # Look best but is not part of cp437 and thus font dependent & not widely available * 2580, 25A0, 2588 # IBM-437 ```python def print_legend(): #cc = u'\u2585' # Unicode Character for a "5/8th box" # (U+2585) is not part of IBM-437 #cc = u'\u2588' # Unicode Character for a "full box" # (U+2588) is part of IBM-437 #cc = u'\u25A0' # Unicode Character for a "black square" # (U+25A0) is part of IBM-437 cc = u'\u2580' # Unicode Character for a "Upper half block" # (U+2580) is part of IBM-437 ``` The other "boxes" was not even considered, as they either didn't render anything like what one would expect from a "box", or it was placed too high/low within the character frame. Running the following in a PWSH using `Deja Vu Sans Mono`, yield: ![pwsh_2019-03-28_10-12-36](https://user-images.githubusercontent.com/194392/55141145-a7161380-5131-11e9-94f3-3540a09f3be6.png) As you can see `\u2587` renders as a rectangle in most windows consoles, and not like a box as in the GitHub using a browser (shown in OP.) So if you're going to add 2587 you should probably consider adding `2585, 2580, 25A0` as well, to make sure people actually can print a box when intended.
Author
Owner

@miniksa commented on GitHub (May 18, 2019):

This will probably not be necessary if Terminal is used or if DX is turned on in conhost since it will have font fallback.

@miniksa commented on GitHub (May 18, 2019): This will probably not be necessary if Terminal is used or if DX is turned on in conhost since it will have font fallback.
Author
Owner

@eryksun commented on GitHub (May 18, 2019):

@miniksa, IIRC, conhost sort of works with manual font linking configured for Consolas in "HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink". But last I checked the rendering seems to gets widths wrong, and the result is erratic. I suppose it's because it's based on the selected font instead of the linked font. Is there any way to improve the result with font linking?

@eryksun commented on GitHub (May 18, 2019): @miniksa, IIRC, conhost sort of works with manual font linking configured for Consolas in "HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink". But last I checked the rendering seems to gets widths wrong, and the result is erratic. I suppose it's because it's based on the selected font instead of the linked font. Is there any way to improve the result with font linking?
Author
Owner

@miniksa commented on GitHub (May 18, 2019):

A major point of moving to the Terminal and to the DX renderer is to not fix/update the GDI one anymore. So while it is always possible to improve it, it would be out of scope for what we're trying to achieve.

@miniksa commented on GitHub (May 18, 2019): A major point of moving to the Terminal and to the DX renderer is to not fix/update the GDI one anymore. So while it is always *possible* to improve it, it would be out of scope for what we're trying to achieve.
Author
Owner

@eryksun commented on GitHub (May 18, 2019):

To clarify, I was wondering whether there's a way to tweak the configuration to get a better result, particularly in older Windows 7 systems. I know there's no chance to see font rendering improvements in the conhost window, at least not for a long while to come. You mentioned in another post that you might switch conhost to the DX renderer, but I won't get my hopes up for that.

@eryksun commented on GitHub (May 18, 2019): To clarify, I was wondering whether there's a way to tweak the configuration to get a better result, particularly in older Windows 7 systems. I know there's no chance to see font rendering improvements in the conhost window, at least not for a long while to come. You mentioned in another post that you might switch conhost to the DX renderer, but I won't get my hopes up for that.
Author
Owner

@miniksa commented on GitHub (May 18, 2019):

I probably will change conhost to the DX one once it stabilizes and I feel like I have the capacity to accept bugs on it.

I also have no advice for Windows 7. It's dead as of January 2020. It's time to accept that and move on.

@miniksa commented on GitHub (May 18, 2019): I probably will change conhost to the DX one once it stabilizes and I feel like I have the capacity to accept bugs on it. I also have no advice for Windows 7. It's dead as of January 2020. It's time to accept that and move on.
Author
Owner

@musm commented on GitHub (Dec 28, 2020):

Any chance we could also add ?

@musm commented on GitHub (Dec 28, 2020): Any chance we could also add `∅` ?
Author
Owner

@DHowett commented on GitHub (Dec 30, 2020):

To Consolas? No.

@DHowett commented on GitHub (Dec 30, 2020): To Consolas? No.
Author
Owner

@mdtauk commented on GitHub (Dec 30, 2020):

Cascadia Code/Mono is the font being targeted going forward, so you should direct your needs to that Repo

@mdtauk commented on GitHub (Dec 30, 2020): Cascadia Code/Mono is the font being targeted going forward, so you should direct your needs to that Repo
Author
Owner

@sergeevabc commented on GitHub (Jul 5, 2025):

@miniksa
I also have no advice for Windows 7. It's dead as of January 2020. It's time to accept that and move on.

Abandoned by the developer ≠ dead. I have a garage full of tools inherited from my father that have long since expired warranty, but they work better than what's out now. Fortunately, Windows 7 support was declared financially unprofitable at a time when this OS was polished to a high shine, so it will serve people for years to come. And there's nowhere to move on, because Microsoft's subsequent OSes are an embarrassment: e.g. you need a video card with DirectX 12 to run the damn calculator. Compare this twisted understanding of progress with the true revolution that NTFS and 64-bit have brought.

@mdtauk
Cascadia Code/Mono is the font being targeted going forward…

Meh. Consolas is here to stay.

@be5invis
Add additional characters to Consolas Font

Check DMCA Sans Serif and ConEmu.

@sergeevabc commented on GitHub (Jul 5, 2025): > @miniksa > I also have no advice for Windows 7. It's dead as of January 2020. It's time to accept that and move on. Abandoned by the developer ≠ dead. I have a garage full of tools inherited from my father that have long since expired warranty, but they work better than what's out now. Fortunately, Windows 7 support was declared financially unprofitable at a time when this OS was polished to a high shine, so it will serve people for years to come. And there's nowhere to move on, because Microsoft's subsequent OSes are an embarrassment: e.g. you need a video card with DirectX 12 to run the damn calculator. Compare this twisted understanding of progress with the true revolution that NTFS and 64-bit have brought. > @mdtauk > Cascadia Code/Mono is the font being targeted going forward… [Meh](http://xahlee.info/js/cascadia_vs_consolas.html). Consolas is here to stay. > @be5invis > Add additional characters to Consolas Font Check [DMCA Sans Serif](https://typedesign.replit.app/dmcasansserif.html) and [ConEmu](https://conemu.github.io/en/Screenshots.html).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#588