Home » U++ Library support » Draw, Display, Images, Bitmaps, Icons » What is the U++ way to replace a missing font glyph?
What is the U++ way to replace a missing font glyph? [message #54283] |
Fri, 19 June 2020 13:33  |
Oblivion
Messages: 1021 Registered: August 2007
|
Senior Contributor |
|
|
Hello,
I am working on a range-based and fallback font substitution mechanism for Terminal ctrl and I don't want to reinvent the wheel.
Is there already a way to replace missing glphs in U++ API?
For example, most fonts do not have the glyphs for braille alhabet or unicode emojis/icons. I want to use alternative fonts for missing glpyhs.
I see some methods for Font, suggesting that it is possible but I couldn't find a simple example.
I'd be grateful if anyone could clarify this point and/or post an example.
Edit: I see a static font replacement list in Draw/FontCR.cpp. Is it how U++ does this? If so, can we have a way to modify and let apps manage the list?
Best regards,
Oblivion
Github page: https://github.com/ismail-yilmaz
upp-components: https://github.com/ismail-yilmaz/upp-components
[Updated on: Fri, 19 June 2020 15:35] Report message to a moderator
|
|
|
|
Re: What is the U++ way to replace a missing font glyph? [message #54311 is a reply to message #54303] |
Mon, 22 June 2020 17:20   |
Oblivion
Messages: 1021 Registered: August 2007
|
Senior Contributor |
|
|
Hello Mirek,
Quote:
Generally, it would probably be more simple to just keep the list updated...
What I have in my mind can be summarized as follows:
1) Make the same list dynamic (using a vector maybe?)
2) Accordinly, add global functions to manipulate or query the list on demand.
3) Keep the existing code as intact as possible.
Basically, it is a global list management.
For example (just to give an idea)
void AddFallbackFont()
void RemoveFallbackFont()
void InsertFallbackFont()
void ResetFallbackFonts() // Always resets the list to U++ defaults.
const Vector<>& GetFallbackFonts() // Not sure about this one, but may be used to fill font lists in UI, if needed;
Frankly I don't really care about emojis or icons. The "modern terminal emulation scene" is a very interesting and weird habitat, but what I really need is some special fallback fonts when a terminal connection requires font adjusting depending on the environment over a remote (SSH) connection, for example.
Besides U++ apps in general can benefit from this.
My main concern would be performance (though the impact of using a dynamic list should be negligable) and the potential concurrency problems these functions may bring in.
What do you think?
Best regards,
Oblivion
Github page: https://github.com/ismail-yilmaz
upp-components: https://github.com/ismail-yilmaz/upp-components
[Updated on: Mon, 22 June 2020 17:38] Report message to a moderator
|
|
|
Re: What is the U++ way to replace a missing font glyph? [message #54314 is a reply to message #54311] |
Mon, 22 June 2020 20:42   |
 |
mirek
Messages: 13849 Registered: November 2005
|
Ultimate Member |
|
|
Oblivion wrote on Mon, 22 June 2020 17:20Hello Mirek,
Quote:
Generally, it would probably be more simple to just keep the list updated...
What I have in my mind can be summarized as follows:
1) Make the same list dynamic (using a vector maybe?)
2) Accordinly, add global functions to manipulate or query the list on demand.
3) Keep the existing code as intact as possible.
Basically, it is a global list management.
For example (just to give an idea)
void AddFallbackFont()
void RemoveFallbackFont()
void InsertFallbackFont()
void ResetFallbackFonts() // Always resets the list to U++ defaults.
const Vector<>& GetFallbackFonts() // Not sure about this one, but may be used to fill font lists in UI, if needed;
Frankly I don't really care about emojis or icons. The "modern terminal emulation scene" is a very interesting and weird habitat, but what I really need is some special fallback fonts when a terminal connection requires font adjusting depending on the environment over a remote (SSH) connection, for example.
Besides U++ apps in general can benefit from this.
My main concern would be performance (though the impact of using a dynamic list should be negligable) and the potential concurrency problems these functions may bring in.
What do you think?
Best regards,
Oblivion
I think that whatever fonts you might add by AddFallbackFont, you can have in the list already... 
I mean, how are you going to use this?
Mirek
|
|
|
Re: What is the U++ way to replace a missing font glyph? [message #54317 is a reply to message #54314] |
Mon, 22 June 2020 23:11   |
Oblivion
Messages: 1021 Registered: August 2007
|
Senior Contributor |
|
|
Quote:
I think that whatever fonts you might add by AddFallbackFont, you can have in the list already... Smile
I mean, how are you going to use this?
OK, if we can add some new faces to fallback fonts list, it would be sufficient and great. 
For one, an important monospace font with great glpyh coverage is missing: FreeMono. (FreeSans and FreeSerif is already in the list but their monospaced counterpart is missing).
Also, FontAwesome should be in that list too. (It has extensive icons coverage, used by many apps.)
These two would improve the result of font glyph substitution mechanism of U++.
There are other font families such as Noto for extensive CJK, Devanagari, etc. coverage but they can be picked and added later, if needed.
As a side note, I think it would be better to have a Font constructor that takes a facename. (Can be used to construct font arrays from facenames, using the C++11 initializer lists.)
Best regards,
Oblivion
Github page: https://github.com/ismail-yilmaz
upp-components: https://github.com/ismail-yilmaz/upp-components
[Updated on: Mon, 22 June 2020 23:23] Report message to a moderator
|
|
|
|
|
|
Goto Forum:
Current Time: Sat Mar 25 09:21:30 CET 2023
Total time taken to generate the page: 0.01937 seconds
|