Hi why ofTrueTypeFont do not draw character as œ ?
this character is in the true type font (https://www.dafont.com/fr/kg-ten-thousand-reasons.font), full character set option is on …
Any advice ? ii it an issue ?
Cheers
Sebastien
Hi why ofTrueTypeFont do not draw character as œ ?
this character is in the true type font (https://www.dafont.com/fr/kg-ten-thousand-reasons.font), full character set option is on …
Any advice ? ii it an issue ?
Cheers
Sebastien
you need to load the needed character ranges.
I don’t know which range includes that one but to do so use the following
ofTrueTypeFontSettings settings("font.ttf", size);
// add the ranges that you need.
settings.addRanges(ofAlphabet::Emoji);
settings.addRanges(ofAlphabet::Japanese);
settings.addRanges(ofAlphabet::Chinese);
settings.addRanges(ofAlphabet::Korean);
settings.addRanges(ofAlphabet::Arabic);
settings.addRanges(ofAlphabet::Devanagari);
settings.addRanges(ofAlphabet::Latin);
settings.addRanges(ofAlphabet::Greek);
settings.addRanges(ofAlphabet::Cyrillic);
font.load(settings); // font is an instance of ofTrueTypeFont
You could also load just the particular range of characters.
use any of the following:
settings.addRange(ofUnicode::Space);
settings.addRange(ofUnicode::IdeographicSpace);
settings.addRange(ofUnicode::Latin);
settings.addRange(ofUnicode::Latin1Supplement);
settings.addRange(ofUnicode::LatinA);
settings.addRange(ofUnicode::Greek);
settings.addRange(ofUnicode::Cyrillic);
settings.addRange(ofUnicode::Arabic);
settings.addRange(ofUnicode::ArabicSupplement);
settings.addRange(ofUnicode::ArabicExtendedA);
settings.addRange(ofUnicode::Devanagari);
settings.addRange(ofUnicode::HangulJamo);
settings.addRange(ofUnicode::VedicExtensions);
settings.addRange(ofUnicode::LatinExtendedAdditional);
settings.addRange(ofUnicode::GreekExtended);
settings.addRange(ofUnicode::GeneralPunctuation);
settings.addRange(ofUnicode::SuperAndSubScripts);
settings.addRange(ofUnicode::CurrencySymbols);
settings.addRange(ofUnicode::LetterLikeSymbols);
settings.addRange(ofUnicode::NumberForms);
settings.addRange(ofUnicode::Arrows);
settings.addRange(ofUnicode::MathOperators);
settings.addRange(ofUnicode::MiscTechnical);
settings.addRange(ofUnicode::BoxDrawing);
settings.addRange(ofUnicode::BlockElement);
settings.addRange(ofUnicode::GeometricShapes);
settings.addRange(ofUnicode::MiscSymbols);
settings.addRange(ofUnicode::Dingbats);
settings.addRange(ofUnicode::Hiragana);
settings.addRange(ofUnicode::Katakana);
settings.addRange(ofUnicode::HangulCompatJamo);
settings.addRange(ofUnicode::KatakanaPhoneticExtensions);
settings.addRange(ofUnicode::CJKLettersAndMonths);
settings.addRange(ofUnicode::CJKUnified);
settings.addRange(ofUnicode::DevanagariExtended);
settings.addRange(ofUnicode::HangulExtendedA);
settings.addRange(ofUnicode::HangulSyllables);
settings.addRange(ofUnicode::HangulExtendedB);
settings.addRange(ofUnicode::AlphabeticPresentationForms);
settings.addRange(ofUnicode::ArabicPresFormsA);
settings.addRange(ofUnicode::ArabicPresFormsB);
settings.addRange(ofUnicode::KatakanaHalfAndFullwidthForms);
settings.addRange(ofUnicode::KanaSupplement);
settings.addRange(ofUnicode::RumiNumericalSymbols);
settings.addRange(ofUnicode::ArabicMath);
settings.addRange(ofUnicode::MiscSymbolsAndPictographs);
settings.addRange(ofUnicode::Emoticons);
settings.addRange(ofUnicode::TransportAndMap);
settings.addRange(ofUnicode::EnclosedCharacters);
settings.addRange(ofUnicode::Uncategorized);
settings.addRange(ofUnicode::AdditionalEmoticons);
settings.addRange(ofUnicode::AdditionalTransportAndMap);
The default range is ofUnicode::Latin1Supplement
(added automatically).
Check http://jrgraphix.net/research/unicode_blocks.php for a reference to these ranges
hope this helps
Thanks. That makes sense to me,
but I can not find the class ofTrueTypeFontSettings even it is in OF documentation.
is it OF.10.0 feature ? Could you tell me more ?
Sebastien
Yes, it is a v0.10 feature. it is a really simple class, it is mostly a data holder.
At this time, my project is a 0.9.8 project, and I don’t really want to change now (because of some addons maybe not compatible, project nearly finished and i don’t want surprises)
I tried to convert my project to OF10, but ofxBullet seems no more compatible, is there a way to add special characters in OF0.9.8 ?
Bests
in my opinion, it is an issue because extented characters as Ù or ç are availables…
this is pretty much what is supported until 0.9.8:
https://cs.stanford.edu/people/miles/iso8859.html
anything not in that table except for a couple of symbols we were pulling manually won’t be rendered
You could try to bring the new ofTrueTypeFont in 0.10 to 0.9.8 but it has dependencies with glm so it won’t work right away
Yeah,
œ is in Latin A supplement, but ç and Ù are not.
I tried to put the new ofTrueTypeFont, I had to stop because of some ofGetRenderer() faults that I don’t get.
I switch into a rough replacement œ -> oe … not proud of it
Hi ! I´ve been facing the same issue, i´ve already tryed what @roymacdonald posted.
Im only trying to put latin special characters wich are áéíóú.
This is my code :
ofTrueTypeFontSettings settings(fontpath, 24);
//settings.
// add the ranges that you need.
//settings.addRanges(ofAlphabet::Emoji);
//settings.addRanges(ofAlphabet::Japanese);
//settings.addRanges(ofAlphabet::Chinese);
//settings.addRanges(ofAlphabet::Korean);
//settings.addRanges(ofAlphabet::Arabic);
//settings.addRanges(ofAlphabet::Devanagari);
settings.addRanges(ofAlphabet::Latin);
//settings.addRanges(ofAlphabet::Greek);
//settings.addRanges(ofAlphabet::Cyrillic);
P.load(settings);
As you can see im using Arial font wich has the special characters.
Actually no , Im facing the same issue.
Im using 0.10.1.
My font is arialbd wich has the special characters.
What else can I try?
I´ve tryed using all other alphabets as well to see is they are working, but they are also not working.
And some alphabets are making my code crash.
This are the alphabets that i´ve tryed :
//--------------------------------------------------------------
void ofApp::setup(){
ofSetWindowShape(600, 600);
string fontpath = "arial.ttf";
ofTrueTypeFontSettings settings(fontpath, 40);
settings.antialiased = true;
settings.addRange(ofUnicode::CJKUnified);
settings.addRanges(ofAlphabet::Latin);
//settings.addRanges(ofAlphabet::Emoji); //This one makes my soft crash
settings.addRanges(ofAlphabet::Japanese);
settings.addRanges(ofAlphabet::Chinese);
//settings.addRanges(ofAlphabet::Korean); //This one makes my soft crash
//settings.addRanges(ofAlphabet::Arabic); //This one makes my soft crash
settings.addRanges(ofAlphabet::Devanagari);
settings.addRanges(ofAlphabet::Greek);
settings.addRanges(ofAlphabet::Cyrillic);
P.load(settings);
ofSetBackgroundColor(0);
}
This is how im drawing them :
void ofApp::draw(){
ofSetColor(200, 0, 0);
float sepy = 80;
float y = 30;
P.drawString("AEIOUÁÉÍÓÚáéíóú26+15641", ofGetWidth() / 2, y);
P.drawString("こんにちは", ofGetWidth() / 2, y +=sepy);
P.drawString("안녕하세요", ofGetWidth() / 2, y += sepy);
P.drawString("नमस्ते", ofGetWidth() / 2, y += sepy);
P.drawString("γεια", ofGetWidth() / 2, y += sepy);
P.drawString("привет", ofGetWidth() / 2, y += sepy);
}
This is what im getting :
I´ve tryed :
2)Tryed with two different PCS without succes.
My specs :
PC1 :
-gtx 1050.
-16gb ram .
-AMD Ryzen 5 1600 six-core processor.
PC2 :
-Intel core i7.
-8gb ram.
-Intel HD graphics 620.
Im using windows in both PCS.
Usually using so many alphabets in one font won’t work cause the texture needed is too big. try using latin only to see if those characters appear and also any messages in the console to make sure that the font is being setup correctly
Apart from that be careful that the source file is saved as utf8, visual studio doesn’t use utf8 by default, i think, which is the encoding we use to load the characters
if it’s helpful, working with a student just now on a windows / VS machine, we had to put u8 in front of strings to get everything to work properly – otherwise we didn’t anything:
u8"......."
potentially useful? https://en.cppreference.com/w/cpp/language/string_literal
Already tryed this .
STILL NOT WORKING.
I need to use the Ñ letter.
Not apearing.
Im using arial(arial has the “Ñ” letter).
I was working with Arabic a month ago and ended up using this addon and got great results. https://github.com/armadillu/ofxFontStash
Ok so, i´ve tryed this addon. The addon works well but i still can´t get special characters like :
ááááááéééééóóóó´´iííí
Im starting to think that maybe it has something to do with my visual studio configuration ? I don´t know. . .
Having the same issue with ITC Franklin Gothic font and the character " ° " (degree).
This character is actually in the Latin 1 Supplement so it should be there by default.
Any ideas? Is there a way to force the print out of unicode characters?
This should work with ofTruetypeFont without problem. As you said those symbols seem to be on Latin1Supplement which is included by default but check that you are setting the font either using ofTruetypeFontSettings with Latin1 Alphabet or enabling the full character set parameter with the old function
the other usual problem with this is the encoding of the file in which the text is which has to be utf8. you can either make sure to save the file with that encoding or if it’s a string literal in the code then you can use a u8 prefix as in:
string somestring = u8" ° ";
Finally ! This one works like a charm! Thanks so much