यूआई कोड के लिए नकली


17

मेरे यूआई डिजाइनर ने यूआई का एक सुंदर फ़ोटोशॉप PSD और सब कुछ सुंदर बना दिया है। सबसे बड़ी समस्या यह है कि मैं कुछ अधिक सुंदर फोंट को कुछ रेंडर करने योग्य इन-गेम में उपयोग कर रहा हूं। वहाँ फ़ोटोशॉप में इन फ़ॉन्ट शैलियों को किसी प्रकार के बिटमैप फ़ॉन्ट में बदलने का एक तरीका है?

मुझे अपने कोड के अंदर इस तरह से टेक्स्ट रेंडर करने में सक्षम होना चाहिए:

यहां छवि विवरण दर्ज करें


क्या आपने इस तरह की साइटों की जाँच की है? blogs.msdn.com/b/garykac/archive/2006/08/30/732007.aspx
ssb

इनाम के लिए बहुत बहुत धन्यवाद, लेकिन मैंने देखा कि आपने इसे स्वीकार किए गए उत्तर के रूप में चिह्नित नहीं किया है। क्या आप प्रतिक्रिया से असंतुष्ट हैं? क्या आप एक अलग प्रकार के उत्तर की उम्मीद कर रहे थे? मैं अपने दिन के काम के हिस्से के रूप में गेम जीयूआई को इकट्ठा करता हूं, इसलिए मुझे लगता है कि मैं आपके सवालों का जवाब देने में सक्षम हो सकता हूं। यदि आपको ज़रूरत है तो स्पष्टीकरण या अधिक गहन स्पष्टीकरण के लिए स्वतंत्र महसूस करें।
पांडा पाजामा

मेरी तरफ से बस एक निगाह। :) मैंने इसे अब ठीक कर दिया है। आनंद लें और धन्यवाद!
वॉन हिल्ट्स

जवाबों:


18

ठीक है, आपको मुझे विशिष्ट XNA कोड न देने के लिए मुझे माफ़ करना होगा, क्योंकि मैं उस प्लेटफ़ॉर्म का जानकार नहीं हूं, लेकिन जो मैं आपको बताने जा रहा हूं वह आपको किसी भी गेम इंजन पर काम करना चाहिए जो आपको स्प्राइट्स आकर्षित करने देता है।

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

पहली बात यह है कि आप अपने डिजाइनर के साथ बैठने जा रहे हैं, और आप उससे दो सेट फाइलें देने के लिए कहेंगे। पहला पारदर्शी फाइलों का एक सेट है जो आपके GUI (संभवतः PSD या DXT प्रारूप में) बनाता है। हर बटन, फिक्स्ड लेबल, बैकग्राउंड, बॉर्डर और टेक्स्टबॉक्स के लिए, आपको एक फाइल मिलेगी (आप टेक्सटाइल एटलसिंग भी कर सकते हैं, लेकिन मैं आपको सलाह दूंगा कि आप अपने जीयूआई को इकट्ठा करने के बाद, और फिर ब्लिट करते समय अपने सोर्स कोऑर्डिनेट एडजस्ट करें)। गैर-स्थिर पाठ को इस बिंदु पर छोड़ दिया जाना चाहिए (मैं इसे बाद में फिर से लिखूंगा)।

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

वह फिर किसी भी प्रभाव का उपयोग करते हुए प्रत्येक GUI तत्व को एक अलग परत में डालने जा रही है। आप उसे इस पिक्सेल को सही करने के लिए बताने जा रहे हैं, क्योंकि वह स्थान जहाँ वह सब कुछ डालने जा रही है, जहाँ वह सब कुछ होगा जो वास्तव में अंतिम रूप से गेम में होगा।

एक बार जब आप इसे प्राप्त कर लेते हैं, प्रत्येक परत के लिए, आप Ctrl-T दबाएंगे, और जानकारी फलक (F8) पर, आप प्रत्येक तत्व के लिए X और Y निर्देशांक पर ध्यान देंगे। सुनिश्चित करें कि आपकी इकाइयाँ पिक्सेल पर सेट हैं (प्राथमिकताएँ-> इकाइयाँ और शासक-> इकाइयाँ)। ये ऐसे स्थान हैं जिनका उपयोग आप अपने स्प्राइट्स को खींचते समय करते हैं।

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

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

इसलिए, ग्लिफ़ को प्रस्तुत करने के लिए, आप System.Drawingफ़ॉन्ट मेट्रिक्स प्राप्त करने और अपने ग्लिफ़ को आकर्षित करने के लिए सुविधाओं का उपयोग कर सकते हैं :

Color clearColor = Color.Transparent;
Color drawColor = Color.White;
Brush brush = new SolidBrush(drawColor);
TextRenderingHint renderingType = TextRenderingHint.AntiAliasGridFit; // Antialias is fine, but be careful with ClearType, which can blergh your renders when you apply effects
StringFormat stringFormat = StringFormat.GenericTypographic;
string fileNameFormat = "helvetica14_{0}.png";
string mapFileFormat = "helvetica14.txt";
string fontName = "Helvetica";
string fontPath = @"c:\windows\fonts\helvetica.ttf";
float fontSize = 14.3f;
int spacing = 2;

Font font = new Font(fontName, fontSize);
int x = 0;
int y = 0;
int width = 1024; // Force a maximum texture size
int height = 1024;
StringBuilder data = new StringBuilder();
int lineHeight = 0;
int currentPage = 1;
var families = Fonts.GetFontFamilies(fontPath);
List<char> codepoints = new List<char>();
HashSet<char> usedCodepoints = new HashSet<char>();
foreach (FontFamily family in families)
{
    var typefaces = family.GetTypefaces();
    foreach (Typeface typeface in typefaces)
    {
        GlyphTypeface glyph;
        typeface.TryGetGlyphTypeface(out glyph);
        foreach (KeyValuePair<int, ushort> kvp in glyph.CharacterToGlyphMap) // Render all available glyps
        {
            char c = (char)kvp.Key;
            if (!usedCodepoints.Contains(c))
            {
                codepoints.Add(c);
                usedCodepoints.Add(c);
            }
        }
    }
}
Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(bitmap);
g.Clear(clearColor);
g.TextRenderingHint = renderingType;

foreach (char c in codepoints)
{
    string thisChar = c.ToString();
    Size s = g.MeasureString(thisChar, font); // Use this instead of MeasureText()
    if (s.Width > 0)
    {
        s.Width += (spacing * 2);
        s.Height += (spacing * 2);
        if (s.Height > lineHeight)
            lineHeight = s.Height;
        if (x + s.Width >= width)
        {
            x = 0;
            y += lineHeight;
            lineHeight = 0;
            if (y + s.Height >= height)
            {
                y = 0;
                g.Dispose();
                bitmap.Save(string.Format(fileNameFormat, currentPage));
                bitmap.Dispose();
                bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb);
                g = Graphics.FromImage(bitmap);
                g.Clear(clearColor);
                g.TextRenderingHint = renderingType;
                currentPage++;
            }
        }
        g.DrawString(thisChar, font, brush, new PointF((float)x + spacing, (float)y + spacing), stringFormat);
        data.AppendFormat("{0} {1} {2} {3} {4} {5}\n", (int)c, currentPage, x, y, s.Width, s.Height);
        x += s.Width;
    }
}
g.Dispose();
bitmap.Save(string.Format(fileNameFormat, currentPage));
bitmap.Dispose();
File.WriteAllText(mapFileFormat, data.ToString());

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

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

ड्राइंग पाठ बहुत सरल होना चाहिए। प्रत्येक चार्ट के लिए जिसे आप प्रिंट करना चाहते हैं, सूचकांक का उपयोग करके उसका स्थान ढूंढें, उसे ड्रा करें, स्थिति को आगे बढ़ाएं और दोहराएं। आप रिक्ति, कर्लिंग (मुश्किल), ऊर्ध्वाधर रिक्ति और यहां तक ​​कि रंग भरने के लिए भी समायोजित कर सकते हैं। लुआ में:

function load_font(name)
    local font = {}
    font.name = name
    font.height = 0
    font.max_page = 0
    font.glyphs = {}
    font.pages = {}
    font_definition = read_all_text("font/" .. name .. ".txt")

    for codepoint, page, x, y, width, height in string.gmatch(font_definition, "(%d+) (%d+) (%d+) (%d+) (%d+) (%d+)") do
        local page = tonumber(page)
        local height_num = tonumber(height)
        if height_num > font.height then
            font.height = height_num
        end
        font.glyphs[tonumber(codepoint)] = { page=tonumber(page), x=tonumber(x), y=tonumber(y), width=tonumber(width), height=height_num } 
        if font.max_page < page then
            font.max_page = page
        end
    end

    for page = 1, font.max_page do
        font.pages[page] = load_image("font/" .. name .. "_" .. page .. ".png")
    end

    return font
end

function draw_text(font, chars, range, initial_x, initial_y, width, color, spacing)
    local x = initial_x - spacing
    local y = initial_y - spacing
    if range == nil then
        range = { from=1, to=#chars }
    end
    for i = 1, range.to do
        local char = chars[i]
        local glyph = font.glyphs[char]
        if char == 10 then -- line break
            x = initial_x - spacing
            y = y + ((font.height - (spacing * 2)) * 1.4)
        elseif glyph == nil then
            if unavailable_glyphs[char] == nil then
                unavailable_glyphs[char] = true
            end
        else
            if x + glyph.width - spacing > initial_x + width then
                x = initial_x - spacing
                y = y + ((font.height - (spacing * 2)) * 1.4)
            end
            if i >= range.from then
                draw_sprite(font.pages[glyph.page], x, y, glyph.x, glyph.y, glyph.width, glyph.height, color)
            end
            x = x + glyph.width - (spacing * 2)
        end
    end
end

और वहां तुम जाओ। हर दूसरे फ़ॉन्ट के लिए दोहराएँ (और साथ ही आकार)

संपादित करें : मैंने Graphics.MeasureStringइसके बजाय उपयोग करने के लिए कोड को बदल दिया TextRenderer.MeasureText()क्योंकि वे दोनों अलग-अलग माप प्रणालियों का उपयोग करते हैं, और मापा ग्लिफ़ और तैयार किए गए एक के बीच विसंगतियों को जन्म दे सकते हैं, विशेष रूप से कुछ फोंट में पाए जाने वाले ओवरहालिंग ग्लिफ़ के साथ। अधिक जानकारी यहाँ


2
मुझे इस पर एक अपमान क्यों मिला? यदि आप नीचे जा रहे हैं, तो कृपया कम से कम कुछ टिप्पणियां दें जो मैंने गलत कीं ताकि मैं अगली बार इसे ठीक कर सकूं।
पांडा पजामा

मैं नहीं। यह एक उत्कृष्ट उत्तर है। +1 :-)
क्रॉम्स्टर कहते हैं कि

6

खैर, जैसे किसी और ने कहा, XNA में, स्प्राइटफोंट आपके लिए भारी लिफ्टिंग करता है। रचनाकारों के क्लब की वेबसाइट पर एक बिटमैप फ़ॉन्ट निर्यातक है जो XNA शैली फ़ॉन्ट छवियों में निर्यात करता है। ( http://xbox.create.msdn.com/en-US/education/catalog/utility/bitmap_fit_maker ) इसके बाद, आप इसे फ़ोटोशॉप या जो कुछ भी खोल सकते हैं और सुंदर बना सकते हैं। वहां से, आप अपनी सामग्री परियोजना में बनावट जोड़ते हैं, और सामग्री प्रकार में, स्प्राइट फ़ॉन्ट बनावट का चयन करें। आपके कोड में, आप इसे सामान्य स्प्राइट फ़ॉन्ट की तरह लोड करते हैं

(उदाहरण: http://www.youtube.com/watch?v=SynGWrWYUQI )


समस्या यह है कि मुझे बिल्कुल यकीन नहीं है कि कोई फ़ोटोशॉप फ़ॉन्ट से शैलियों को कैसे ले सकता है और उन्हें इस तरह से बनावट में लागू कर सकता है।
वुहान हिल्ट्स 22

यहाँ, मैं एक वीडियो
बनाऊंगा


BMFont एक ही बात करता है, लेकिन मेरी राय में एक बेहतर कार्यक्रम है। angelcode.com/products/bmfont
साइफर

एह, एक बुनियादी स्प्राइटफोंट का निर्यात करके, आप इसे फ़ोटोशॉप में इच्छित रूप से अनुकूलित कर सकते हैं
कोबाल्टेक्स

4

समाधान काफी सरल है और बड़ी संख्या में गेम द्वारा उपयोग किया जाता है। आपको बस अपने फोंट का इलाज करना है जैसे कि वे स्प्राइट थे।

अपने डिजाइनर को उन संख्याओं और अक्षरों की पूरी श्रृंखला के बारे में बताएं जो आप अपने खेल में उपयोग करना चाहते हैं। फिर उन्हें अलग-अलग आकार की स्थिर छवियों (.png, .bmp, जो भी प्रारूप आप उपयोग करते हैं) के लिए प्रस्तुत करें। आपके पास कुछ इस तरह होगा:

यहां छवि विवरण दर्ज करें

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

मेरा कार्यान्वयन अधिक जटिल है, लेकिन आसान है। फॉन्ट शीट को उपरोक्त छवि की तरह बनाया गया है, जिसमें एक .png फ़ाइल में कई फोंट हैं। मेरे पास एक.ini फाइल है जो प्रत्येक फोंट के पत्र को शीट पर स्थिति के साथ-साथ उसकी चौड़ाई और ऊंचाई के साथ मैप करती है। यह मेरे डिजाइनर (और खुद को) किसी भी कोड को छूने के बिना कूल फोंट बनाने वाले पागल को जाने देता है। जब स्क्रीन के लिए एक स्ट्रिंग ड्राइंग, मैं एक विधि है कि फ़ॉन्ट और ऊपर दिखता है charस्थिति और फ़ॉन्ट चादर से पत्र की सीमाओं पाने के लिए .ini फ़ाइल से है, तो मैं सिर्फ आकर्षित Texture2Dसाथ SpriteBatch.Draw()स्रोत का उपयोग Rectangleपत्र की प्रश्न में।


2

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

Awesomium होनहार लग रहा है और XNA के साथ काम करना चाहिए , तो आप इसे एक कोशिश दे सकते हैं। यह गैर-व्यावसायिक खेलों के लिए उपयोग करने के लिए स्वतंत्र है, या यदि आप टन नहीं कमा रहे हैं:

इंडी कंपनियों के लिए नि: शुल्क
    यदि आपकी कंपनी ने पिछले साल $ 100K से कम किया है, तो आप योग्य हैं! मूल्यांकन और विकास के
लिए गैर-वाणिज्यिक उपयोग के लिए
नि: शुल्क


यह एक बहुत अच्छा विचार है - मुझे लगता है कि मुझे कुछ यूआई कोड लिखना होगा, जो मुझे भी लिखना है। मै उसे करने की एक कोशिश तो करूंगा। धन्यवाद!
वॉन हिल्ट्स

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

यह केवल फोंट को आकर्षित करने के लिए जटिल है
कोबाल्ट नेक्स

1
@CobaltHex मैंने यह रवैया बहुत बार देखा है और इतने सारे खराब हुए यूआई जो कि एक प्रारंभिक "yey से निकले हैं, चलो खरोंच से एक UI बना दें यह आसान होना चाहिए, हम पहिया को फिर से मजबूत करेंगे जबकि हम उस पर हैं" इससे परेशान। एक अभ्यास के रूप में, ओपी मॉक-अप तस्वीर की जांच करें, और कल्पना करें कि आपको पूरे यूआई को कई प्लेटफार्मों, स्क्रीन रिज़ॉल्यूशन और अनुपात में एक ही शैली में प्रस्तुत करना होगा। अब एक उचित UI की आवश्यकता स्पष्ट हो जाती है, इसीलिए मैंने इस उत्तर को पोस्ट करने के लिए स्वतंत्रता ले ली, भले ही यह दी गई समस्या का सीधा समाधान न हो।
लॉरेंट कौविदो

मैं यह नहीं कह रहा हूं कि आप स्क्रैच से एक यूआई बनाते हैं, लेकिन अगर आप केवल एक फॉन्ट खींचना चाहते हैं, तो एक संपूर्ण रेंडरिंग इंजन डालना थोड़ा ओवरकिल है
कोबाल्टएक्सएक्स

1

यदि आप सादा .spritefont आयातक की तुलना में कट्टर प्रभाव की तलाश कर रहे हैं, तो आप "बिटमैप जनरेटर" की खोज कर सकते हैं।

व्यक्तिगत रूप से मैं इसे पसंद करता हूं: http://www.ironstarmedia.co.uk/2010/01/free-game-dev-utility-fancy-bitmap-font-generator/

कुछ अन्य विचार:

  • एक बिटमैप फ़ॉन्ट जनरेटर का उपयोग करें और फिर फ़ोटोशॉप, इत्यादि में बिटमैप को संपादित करें।
  • पूर्व-तैयार स्प्राइट में जितना संभव हो उतना स्थिर पाठ डालें। फिर गेमरैग्स और स्कोर योग जैसे चीजों को भरें। एक बिटमैप फ़ॉन्ट जनरेटर से उत्पन्न .pritefonts या फोंट का उपयोग करें।

मैंने निश्चित रूप से देखा है कि (और यह बहुत अच्छा है, वैसे), लेकिन मैं सीधे अपने फ़ोटोशॉप पाठ शैलियों को उपयोगी, बिटमैप फोंट में बदलने की उम्मीद कर रहा था।
वॉन हिल्ट्स

0

XNAआप के लिए कड़ी मेहनत के सभी करता है। साथ मेंSpritefont आप आसानी से स्प्राइट शीट की तरह आप के बारे में एक XML फ़ाइल को परिभाषित करते हुए कह रहे हैं में आपकी मशीन पर एक फ़ॉन्ट फ़ाइल बदल सकते हैं।

एक बार जब आप XML फाइल को अपने कंटेंट प्रोजेक्ट में जोड़ते हैं, तो उसे ContentManagerनिम्न लोड करें :

ContentManager.Load<SpriteFont>(@"MyFont");

यहाँ मेरी सामग्री परियोजना से .spritefont फ़ाइल का एक उदाहरण है:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file contains an xml description of a font, and will be read by the XNA
Framework Content Pipeline. Follow the comments to customize the appearance
of the font in your game, and to change the characters which are available to draw
with.
-->
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
<Asset Type="Graphics:FontDescription">

    <!--
Modify this string to change the font that will be imported.
//TODO: A different font should be chosen before shipping for licensing reasons
-->
    <FontName>Pericles</FontName>

    <!--
Size is a float value, measured in points. Modify this value to change
the size of the font.
-->
    <Size>8.5</Size>

    <!--
Spacing is a float value, measured in pixels. Modify this value to change
the amount of spacing in between characters.
-->
    <Spacing>0</Spacing>

    <!--
UseKerning controls the layout of the font. If this value is true, kerning information
will be used when placing characters.
-->
    <UseKerning>true</UseKerning>

    <!--
Style controls the style of the font. Valid entries are "Regular", "Bold", "Italic",
and "Bold, Italic", and are case sensitive.
-->
    <Style>Bold</Style>

    <!--
If you uncomment this line, the default character will be substituted if you draw
or measure text that contains characters which were not included in the font.
-->
    <DefaultCharacter>@</DefaultCharacter>

    <!--
CharacterRegions control what letters are available in the font. Every
character from Start to End will be built and made available for drawing. The
default range is from 32, (ASCII space), to 126, ('~'), covering the basic Latin
character set. The characters are ordered according to the Unicode standard.
See the documentation for more information.
-->
    <CharacterRegions>
        <CharacterRegion>
            <Start>&#32;</Start>
            <End>&#126;</End>
        </CharacterRegion>
        <CharacterRegion>
            <Start>&#9;</Start>
            <End>&#9;</End>
        </CharacterRegion>
    </CharacterRegions>
</Asset>
</XnaContent>

1
समस्या यह है कि ये सीधे सादे, ट्रू टाइप फोंट हैं। मुझे अपने सभी ड्रॉपडाउन, चमक और अभी भी लागू की तरह बिटमैप फोंट या कुछ की आवश्यकता है।
वॉन हिल्ट्स

मेरे एडिट, फॉन्ट (ओं) को इनकी तरह देखें: i.imgur.com/VaBpQ.png
वॉन हिल्ट्स

0

मुझे यकीन नहीं है क्योंकि मैंने इसका इस्तेमाल कभी नहीं किया लेकिन लोगों ने मुझे ग्लिफ़ डिज़ाइनर का इस्तेमाल करने का सुझाव दिया। यहाँ एक वीडियो ट्यूटोरियल है:

http://vimeo.com/32777161

यहां फोटोशॉप का जिक्र करते हुए इस पर चर्चा हुई

वहाँ भी लोग Hiero फ़ॉन्ट संपादक का उपयोग कर रहे हैं ।

में इस वेबसाइट अन्य फ़ॉन्ट संपादक आप पर एक नज़र है करने के लिए चाहते हो सकता है की एक सूची है।

मुझे पता है जो आपके लिए सबसे अच्छा काम करता है :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.