JUCE

2017-05-12 49 views
13

में फ़ॉन्ट एम्बेड करना मैं JUCE में फ़ॉन्ट एम्बेड करने के लिए एक सरल चरण-दर-चरण समाधान की तलाश में हूं।JUCE

मुझे अपने ऐप में फोंट एम्बेड करने में कुछ परेशानी हो रही है (पूरी तरह से ऐप रिलीज से पहले इसमें समय डालना भूल गया है, और अब मेरा ऐप उपयोगकर्ता सिस्टम पर अपना फ़ॉन्ट प्रदर्शित नहीं कर रहा है - समझ में आता है)।

मैंने इस विषय पर उपलब्ध सभी पोस्टों की खोज की और उनका पालन किया है, लेकिन अभी भी समस्याएं हैं। मैं एम्बेडेड फ़ॉन्ट को अपने ऐप में पहले से मौजूद लेबल में जोड़ना चाहता हूं जिसे हम प्रोजेकर जीयूआई घटक के माध्यम से बनाए और रखे गए हैं।

मैं अब तक क्या किया है:

1) मेरी ProJucer सत्र के लिए फ़ॉन्ट जोड़ा गया है ताकि यह BinaryData

2) बनाया गया एक वर्ग मैं कहा जाता है पर जुड़ जाता है "EmbeddedFont:"

#include "../JuceLibraryCode/JuceHeader.h" 

class EmbeddedFonts 
{ 
private: 
    Font calistoMT; 

public: 
    EmbeddedFonts(); 
    Font& getCalistoMT(); 
}; 

और

EmbeddedFonts::EmbeddedFonts() 
{ 
    // in the line below is where I'm getting the assertion error: jassert (typefaceName.isNotEmpty()); 
    calistoMT = Font(Typeface::createSystemTypefaceFor(BinaryData::Calisto_MT, 
                 BinaryData::Calisto_MTSize)); 
} 

Font& EmbeddedFonts::getCalistoMT() 
{ 
    return calistoMT; 
} 

3) मेरी जीयूआई कंप्यूटर अनुप्रयोग के शीर्षक में इस का एक उदाहरण बना दिया onent वर्ग 4) लेबल फ़ॉन्ट के लिए इस फ़ॉन्ट गुजर कोशिश की थी:

genericLabelName->setFont(embeddedFont.getCalistoMT()); 

वास्तव में यहां से क्या करना सुनिश्चित नहीं हैं। साथ ही, जब मैं काम करने के लिए एम्बेडेड फ़ॉन्ट प्राप्त करता हूं, तो क्या कुछ विशिष्ट है जो मुझे प्रोजेक्टर जीयूआई घटक में फ़ॉन्ट फ़ील्ड में करना चाहिए? क्या मुझे इसे एक ही फ़ॉन्ट पर सेट करना चाहिए? मैं केवल इसलिए पूछता हूं क्योंकि मैं तकनीकी रूप से कन्स्ट्रक्टर में दो बार फ़ॉन्ट स्थापित कर रहा हूं (एक बार जीयूआई घटक विकल्प ड्रॉप-डाउन मेनू से और एक बार हाथ से एम्बेडेड फ़ॉन्ट कोडिंग)।

मैंने कुछ दिनों के लिए यह कोशिश की है और अभी भी समस्या हो रही है। किसी भी मदद के लिए धन्यवाद। यह मेरा आखिरी ऐप अपडेट जारी करने से पहले आखिरी चीज है, इसलिए किसी भी सहायता की सराहना की जाती है।

+0

क्या आपने फ़ॉन्ट बनाने के बाद 'calistoMT-> setTypefaceName ("फ़ॉन्ट से टाइपफेस नाम")' और 'setTypefaceStyle()' को आजमाया था? फ़ॉन्ट ब्राउज़ करें और सुनिश्चित करें कि आपके द्वारा निर्दिष्ट टाइपफ़ेस एक फ़ॉन्ट का समर्थन करता है। –

+0

मैंने उस समय कोशिश नहीं की, मैं वर्तमान में उन लोगों के साथ खेल रहा हूं जिनके बारे में आपने इसका उल्लेख किया है, लेकिन मुझे अभी भी वही जसर्ट मिल रहा है। दावा: 'jassert (typefaceName.isNotEmpty());' मुझे विश्वास है कि यह पॉप-अप हो रहा है क्योंकि टाइपफ़ेसनाम में कुछ टेक्स्ट है, जो मुझे लगता है कि इसमें कोई टेक्स्ट नहीं होना चाहिए, फिर भी, क्या इसमें टेक्स्ट है या नहीं, जेसर्ट अभी भी पॉप अप करता है। –

+0

इसके अलावा, मैं प्रोजेकर में लेबल को हटाने और कोड के माध्यम से जोड़ने का विरोध नहीं कर रहा हूं, इससे अब और अधिक समझ हो सकती है। –

उत्तर

0

चूंकि ऐसा लगता है कि आप चीजों के JUCE पक्ष पर सही तरीके से काम कर रहे हैं, मुझे विश्वास है कि जिस फ़ॉन्ट फ़ाइल में आप लोड करने का प्रयास कर रहे हैं उसके साथ कोई नाम नहीं है। मैं निम्नलिखित की कोशिश करेंगे:

  • Typeface अपने createSystemTypefaceFor कॉल से लौटे के नाम की जाँच करें इससे पहले कि आप Font निर्माता के लिए गुजरती हैं। मेरा मानना ​​है कि इसका नाम प्राप्त करने के लिए getName() या समान कॉल होना चाहिए। यदि वह नाम खाली है (और मुझे उम्मीद है कि यह आपके दावे को दिया जाए), तो आपकी समस्या है।

  • आप एक टीटीएफ फ़ाइल व्यूअर डाउनलोड करने का प्रयास करना चाह सकते हैं जो आपको उस फ़ाइल पर कुछ जानकारी दे सकता है जिसे आप लोड करने का प्रयास कर रहे हैं। यह भी संकेत दे सकता है कि जिस फ़ॉन्ट में आप पढ़ रहे हैं उसका नाम है या नहीं। अगर ऐसा लगता है कि इसके मेटाडेटा में कोई नाम है, तो यह JUCE लाइब्रेरी में एक बग इंगित कर सकता है।

  • आप एक अलग फ़ॉन्ट या विभिन्न फ़ॉन्ट्स में लोड करने का प्रयास कर सकते हैं जो आपको पता है कि मेटाडेटा में सही नाम है (क्योंकि आपने किसी प्रकार के दर्शक या टूल के साथ जांच की है), और देखें कि उनके लिए बनाए गए टाइपफ़ेस में क्या है नाम सेट, और, यदि ऐसा है, तो उन टाइपफेस में से एक से Font बनाने का प्रयास करें और देखें कि यह सफल होता है या नहीं।

टाइपफेस वास्तव में लोड एक नाम सेट करता है, तो इस सिद्धांत तरह से बाहर खिड़की चला जाता है, लेकिन मैं अभी भी तीसरे चरण कोशिश करते हैं और यदि आप हमेशा हर फॉन्ट के साथ या यदि यह त्रुटि प्राप्त देखना होगा यह केवल एक तक ही सीमित है।