ইউআই কোডটি ম্যাকআপ করে


17

আমার ইউআই ডিজাইনার ইউআই এর একটি সুন্দর ফটোশপ পিএসডি এবং সমস্ত কিছু সুন্দর করেছে। আমার সবচেয়ে বড় সমস্যাটি হ'ল আরও কিছু মার্জিত ফন্টকে ব্যবহৃত হয়েছে যা গেমটি রেন্ডারেবল কিছুতে রূপান্তরিত করে। ফটোশপের এই ফন্ট শৈলীগুলি কোনও ধরণের বিটম্যাপ ফন্টে রূপান্তর করার কোনও উপায় আছে কি?

আমার কোডের মধ্যে এই জাতীয় পাঠ্য রেন্ডার করতে আমার সক্ষম হওয়া দরকার:

এখানে চিত্র বর্ণনা লিখুন


আপনি কি এই মতো সাইটগুলি চেক করেছেন? blogs.msdn.com/b/garykac/archive/2006/08/30/732007.aspx
SSB

অনুগ্রহের জন্য আপনাকে অনেক ধন্যবাদ, কিন্তু আমি লক্ষ্য করেছি যে আপনি এটি গৃহীত উত্তর হিসাবে চিহ্নিত করেন নি। আপনি প্রতিক্রিয়া অসন্তুষ্ট? আপনি কি আলাদা ধরণের উত্তর আশা করছেন? আমি আমার দিনের কাজের অংশ হিসাবে গেম জিইউগুলিকে একত্রিত করি, তাই আমি মনে করি আমি আপনার প্রশ্নের উত্তর দিতে সক্ষম হতে পারি। আপনার যদি প্রয়োজন হয় তবে নির্দ্বিধায় স্পষ্টতা বা আরও বিশদ ব্যাখ্যা জিজ্ঞাসা করুন।
পান্ডা পাইজামা

আমার পক্ষ থেকে একটি তদারকি। :) আমি এখন এটি সংশোধন করেছি। উপভোগ করুন এবং আপনাকে ধন্যবাদ!
ভন হিল্ট

উত্তর:


18

ঠিক আছে, আপনাকে নির্দিষ্ট এক্সএনএ কোড না দেওয়ার জন্য আপনি আমাকে ক্ষমা করতে চলেছেন, কারণ আমি সেই প্ল্যাটফর্মটিতে জ্ঞাত নই, তবে আমি আপনাকে যা বলতে চাইছি এমন কোনও গেম ইঞ্জিনে কাজ করা উচিত যা আপনাকে স্প্রেটিস আঁকতে দেয়।

হরফগুলি আপনার একমাত্র সমস্যা নয়, সুতরাং আমি আপনাকে এক টুকরো পরামর্শ দিতে যাচ্ছি, এবং তারপরে আমি আপনার প্রশ্নের উত্তর দিতে যাচ্ছি। এই দুটি জিনিসের সাহায্যে আপনার জিইউআই ডিজাইনারের সাথে একটি প্রেমময়-কবি সম্পর্ক তৈরি করতে সক্ষম হওয়া উচিত এবং আপনি দুজনেই খুব আনন্দের সাথে গেম তৈরি করতে সক্ষম হবেন।

প্রথমটি হ'ল আপনি আপনার ডিজাইনারের সাথে বসে যাবেন এবং আপনি তাকে দুটি সেট ফাইল দিতে বলছেন। প্রথমটি হ'ল স্বচ্ছ ফাইলগুলির একটি সেট যা আপনার জিইউআই তৈরি করে (অনুকূলভাবে পিএসডি বা ডিএক্সটি ফর্ম্যাটে)। প্রতিটি বোতাম, ফিক্সড লেবেল, ব্যাকগ্রাউন্ড, সীমানা এবং পাঠ্যবক্সের জন্য আপনি একটি ফাইল পাবেন (আপনি টেক্সচার অ্যাটলাসিংও করতে পারেন, তবে আমি আপনাকে সুপারিশ করব যে আপনি আপনার জিইউআই জড়ো করার পরে এটি করবেন, এবং তারপরে ব্লিটি করার সময় আপনার উত্স স্থানাঙ্কগুলি সামঞ্জস্য করুন)। অ স্থির পাঠ্যটি এই মুহুর্তে ছেড়ে দেওয়া উচিত (আমি এটি পরে আবার ঘুরে দেখব)।

দ্বিতীয় জিনিসটি আপনি পাবেন আসল জিইউআই ডিজাইন, এবার ফটোশপের ফর্ম্যাটে। এই ফাইলটি জন্য, আপনি সমগ্র গুই নকশা করার জন্য আপনার ডিজাইনার জিজ্ঞাসা করতে ব্যবহার চলুন শুধুমাত্র ফাইল সে পূর্বে আপনাকে দিয়েছেন।

তারপরে তিনি প্রতিটি জিইআইআই উপাদানকে কোনও পৃথক স্তরে রাখবেন, কোনও প্রভাব ছাড়াই ব্যবহার করুন। আপনি তাকে এই পিক্সেলটি নিখুঁত করতে বলছেন, কারণ যে জায়গাগুলিতে তিনি সমস্ত কিছু স্থাপন করতে চলেছেন, সেখানেই সবকিছুই চূড়ান্ত খেলায় আসবে।

এটি একবার পেয়ে গেলে, প্রতিটি স্তরের জন্য, আপনি Ctrl-T টিপতে চলেছেন, এবং তথ্য ফলকে (F8), আপনি প্রতিটি উপাদানটির জন্য এক্স এবং ওয়াই স্থানাঙ্কের নোট নেবেন। নিশ্চিত করুন যে আপনার ইউনিটগুলি পিক্সেল (পছন্দসমূহ-> ইউনিট এবং শাসক-> ইউনিট) এ সেট আছে। আপনার স্প্রেটিস আঁকতে আপনি যে অবস্থানগুলি ব্যবহার করতে যাচ্ছেন এটি এটি।

এখন, ফন্টগুলির জন্য, আপনি এখন স্পষ্টভাবে জানতে পারেন, আপনি টেক্সট রেন্ডারিং এপিআইগুলি ব্যবহার করে আপনার ফন্টগুলি ফটোশপটিতে দেখতে দেখতে ঠিক একইভাবে দেখতে পাবেন না। আপনাকে আপনার গ্লাইফগুলি প্রি-রেন্ডার করতে হবে এবং তারপরে আপনার পাঠ্যক্রমগুলিকে প্রোগ্রামাগুলি একত্রিত করতে হবে। এটি করার অনেকগুলি উপায় রয়েছে এবং আমি যেটি ব্যবহার করি তার উল্লেখ করব।

প্রথম জিনিসটি হ'ল আপনার সমস্ত গ্লাইফগুলি এক বা একাধিক ফাইলে রেন্ডার করা। আপনি যদি কেবল ইংরেজিকেই যত্নশীল করেন তবে সমস্ত গ্লাইফগুলির জন্য একটি টেক্সচার যথেষ্ট হবে তবে আপনি যদি আরও বর্ধিত অক্ষর সেট করতে চান তবে আপনি বেশ কয়েকটি ফাইল ব্যবহার করতে পারেন। কেবলমাত্র নিশ্চিত করুন যে আপনার পছন্দসই সমস্ত গ্লাইফগুলি আপনার ডিজাইনার চয়ন করেছেন ফন্টে উপলব্ধ।

সুতরাং, গ্লাইফগুলি রেন্ডার করতে, আপনি 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());

এটির সাহায্যে আপনি পিএনজি ফাইলগুলির একগুচ্ছ স্বচ্ছ পটভূমিতে সাদা গ্লাইফগুলি আঁকেন এবং একটি সূচি ফাইল তৈরি করেছেন যা প্রতিটি কোডপয়েন্টের জন্য আপনাকে বলে, কোন ফাইলটিতে গ্লাইফটি রয়েছে, এর অবস্থান এবং মাত্রা। লক্ষ্য করুন যে আমি প্রতিটি গ্লিফ পৃথক করতে আরও দুটি অতিরিক্ত পিক্সেল রেখেছি (আরও প্রভাবের জন্য সামঞ্জস্য করতে)

এখন, এই ফাইলগুলির প্রত্যেকের জন্য, আপনি এটি ফটোশপটিতে রেখেছেন এবং আপনার পছন্দসই সমস্ত ফিল্টার করুন। আপনি রঙ, সীমানা, ছায়া, আউটলাইন এবং আপনার পছন্দসই কিছু সেট করতে পারেন। কেবল নিশ্চিত হয়ে নিন যে প্রভাবগুলি গ্লাইফগুলি ওভারল্যাপ করে না। যদি তাই হয় তবে ব্যবধানটি সামঞ্জস্য করুন, পুনরায় রেন্ডার করুন, ধুয়ে নিন এবং পুনরাবৃত্তি করুন। পিএনজি বা ডিএক্সটি হিসাবে সংরক্ষণ করুন এবং সূচি ফাইল সহ, আপনার প্রকল্পে সমস্ত কিছু রাখুন।

অঙ্কন পাঠ্য খুব সহজ হওয়া উচিত। প্রতিটি চরের জন্য আপনি মুদ্রণ করতে চান, সূচীটি ব্যবহার করে এর অবস্থানটি সন্ধান করুন, এটি আঁকুন, অবস্থানটি এগিয়ে করুন এবং পুনরাবৃত্তি করুন। আপনি ব্যবধান, কর্নিং (কৌতূহলী), উল্লম্ব ব্যবধান এবং রঙ করার জন্যও সামঞ্জস্য করতে পারেন। লুয়া ইন:

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

ঠিক আছে, অন্য কেউ যেমন বলেছিলেন, এক্সএনএ-তে স্প্রাইটফন্ট আপনার জন্য ভারী উত্তোলন করে। নির্মাতারা ক্লাবের ওয়েবসাইটে একটি বিটম্যাপ ফন্ট রফতানিকারী রয়েছে যা এক্সএনএ স্টাইলের ফন্ট চিত্রগুলিতে রফতানি করে। ( http://xbox.create.msdn.com/en-US/education/catolog/utility/bitmap_font_maker ) তারপরে, আপনি ফটোশপ বা যে কোনও ক্ষেত্রে এটি খুলতে পারেন এবং এটিকে সুন্দর দেখায়। সেখান থেকে, আপনি আপনার সামগ্রী প্রকল্পে টেক্সচার যুক্ত করুন এবং সামগ্রী প্রকারে স্প্রাইট ফন্ট টেক্সচার নির্বাচন করুন। আপনার কোডে, আপনি এটিকে একটি সাধারণ স্প্রাইট ফন্টের মতো লোড করুন

(উদাহরণ: http://www.youtube.com/watch?v=SynGWrWYUQI )


সমস্যাটি হ'ল আমি ঠিক নিশ্চিত নই যে কেউ ফটোশপ ফন্ট থেকে স্টাইলগুলি কীভাবে নিতে পারে এবং এগুলি কোনও টেক্সচারে প্রয়োগ করতে পারে।
ভন হিল্টস

এখানে, আমি একটি ভিডিও করব
কোবল্টহেক্স


বিএমফন্ট একই কাজ করে, তবে আমার মতে একটি ভাল প্রোগ্রাম। অ্যাঞ্জেলকোড
সাইফার

হ্যাঁ, একটি বেসিক স্প্রিটফন্ট রফতানি করে আপনি ফটোশপটিতে যাইহোক এটি কাস্টমাইজ করতে পারেন
কোবল্টহেক্স

4

সমাধানটি বেশ সহজ এবং প্রচুর গেমস দ্বারা ব্যবহৃত হয়। আপনাকে যা করতে হবে তা হ'ল আপনার ফন্টগুলি এমনভাবে ব্যবহার করা হয় যেন সে স্প্রাইটস।

আপনার ডিজাইনারকে আপনি আপনার গেমটিতে ব্যবহার করতে চান এমন সংখ্যা এবং অক্ষরের পুরো পরিসীমা আঁকতে বলুন। তারপরে তাদের বিভিন্ন আকারের স্থির চিত্রগুলিতে রেন্ডার করুন (.png, .bmp, আপনি যে কোনও ফর্ম্যাটই ব্যবহার করুন)। আপনার কাছে এরকম কিছু থাকবে:

এখানে চিত্র বর্ণনা লিখুন

এখন আপনাকে যা করতে হবে তা হ'ল আপনার "ফন্ট শীট" থেকে প্রতিটি অক্ষরকে রেন্ডার করা যেন এটি স্ক্রিনে স্প্রিট। এটি অবশ্যই স্ট্রিং এবং স্প্রাইটের মধ্যে অনুবাদ করতে একটি সহায়ক শ্রেণি তৈরি করতে সহায়তা করে।

আমার বাস্তবায়ন আরও জটিল, তবে কার্যকর। ফন্ট শিটটি এক .png ফাইলে একাধিক ফন্টের সাথে উপরের চিত্রের মতো নির্মিত। আমার কাছে একটি .iniফাইল রয়েছে যা প্রতিটি ফন্টের চিঠিটির প্রস্থ এবং উচ্চতা সহ শীটের একটি অবস্থানে ম্যাপ করে। এটি আমার ডিজাইনারকে (এবং আমি) কোনও কোড স্পর্শ না করেই দুর্দান্ত ফন্ট তৈরি করতে বাদাম যেতে দেয়। যখন পর্দায় একটি স্ট্রিং অঙ্কন, আমি একটি পদ্ধতি আছে হরফ এবং আপ সৌন্দর্য charঅবস্থান ও ফন্ট শীট থেকে চিঠি সীমানা পেতে .ini ফাইল থেকে, তারপর আমি শুধু আঁকা Texture2Dসঙ্গে SpriteBatch.Draw()সোর্স ব্যবহারের Rectangleচিঠির প্রশ্নে.


2

ইউআই একটি বিস্তৃত এবং জটিল বিষয়। হরফ রেন্ডারিং একটি শক্ত অংশ। আমি আপনাকে ইতিমধ্যে বিদ্যমান লাইব্রেরি ব্যবহার করার পরামর্শ দিচ্ছি যা আপনাকে নিজেরাই সবকিছু পুনরায় করার পরিবর্তে খেলায় ফ্ল্যাশ বা এইচটিএমএল সামগ্রী প্রদর্শন করতে দেয় allows

অ্যাভোসোমিয়াম প্রতিশ্রুতিবদ্ধ দেখায় এবং এক্সএনএ-এর সাথে কাজ করা উচিত , যাতে আপনি এটি চেষ্টা করে দেখতে পারেন। এটি অ-বাণিজ্যিক গেমগুলির জন্য ব্যবহারের জন্য নিখরচায় বা আপনি যদি টন অর্থ উপার্জন না করেন:

ইন্ডি সংস্থাগুলির জন্য বিনামূল্যে
    যদি আপনার সংস্থা গত বছর $ 100K এর চেয়ে কম উপার্জন করে থাকে তবে আপনি যোগ্যতা অর্জন করুন! মূল্যায়ন ও উন্নয়নের
জন্য অ-বাণিজ্যিক ব্যবহারের
জন্য বিনামূল্যে


এটি একটি সুন্দর নিফটি ধারণা - আমি অনুমান করি এটি আমার লিখতে হবে এমন কিছু ইউআই কোডও দূরে ফেলে। আমি এটা চেষ্টা করে দেখব. ধন্যবাদ!
ভন হিলস

এটি ওয়েবকিট ইঞ্জিনের একটি বন্দর হিসাবে আপনার স্ট্রোকের রূপরেখা, ড্রপ ছায়া এবং গ্রেডিয়েন্টস সহ আপনার বেশিরভাগ পাঠ্য শৈলী সিএসএসের সাথে করতে সক্ষম হওয়া উচিত।
ক্রিসি

এটি কেবল ফন্ট আঁকার জন্য জটিলতার চেয়ে বেশি উপায়
কোবল্টহেক্স

1
@ কোবালহেক্স আমি এই মনোভাবটি অনেকবার দেখেছি এবং এতগুলি নষ্ট ইউআইআই পেয়েছি যা প্রাথমিক থেকে শুরু হয়েছে "ইয়ে স্ক্র্যাচ থেকে একটি ইউআই তৈরি করা সহজ এটি অবশ্যই সহজ হবে, আমরা চাকাটিকে পুনরায় উদ্ভব করব যখন আমরা সেখানে থাকি" যে আমি বেড়েছি এটা অসুস্থ. অনুশীলন হিসাবে, ওপি মক-আপ ছবিটি দেখুন এবং কল্পনা করুন যে আপনাকে বেশ কয়েকটি প্ল্যাটফর্ম, স্ক্রিন রেজোলিউশন এবং অনুপাত জুড়ে একই স্টাইলে পুরো ইউআই রেন্ডার করতে হবে। এখন যথাযথ ইউআইয়ের প্রয়োজনীয়তা স্পষ্ট হয়ে উঠেছে, এ কারণেই আমি প্রদত্ত সমস্যার সরাসরি সমাধান না হলেও এই উত্তর পোস্ট করার জন্য আমি স্বাধীনতা নিয়েছি।
লরেন্ট কুইভিডু

আমি এটি বলছি না যে আপনি স্ক্র্যাচ থেকে একটি ইউআই তৈরি করেন তবে আপনি যদি কেবল কোনও ফন্ট আঁকতে চান তবে পুরো রেন্ডারিং ইঞ্জিনটি a
োকানো

1

আপনি যদি সরল .spritfont আমদানিকারকের চেয়ে ফ্যানসিয়ার এফেক্টস খুঁজছেন তবে আপনি একটি "বিটম্যাপ ফন্ট জেনারেটর" অনুসন্ধানের চেষ্টা করতে পারেন।

ব্যক্তিগতভাবে আমি এটিকে পছন্দ করি: http://www.ironstarmedia.co.uk/2010/01/free-game-dev-utility-fancy-bitmap-font-generator/

কিছু অন্যান্য ধারণা:

  • বিটম্যাপ ফন্ট জেনারেটর ব্যবহার করুন এবং তারপরে এটি ফটোশপ ইত্যাদিতে আরও বিটম্যাপটি সম্পাদন করে edit
  • প্রাক-অঙ্কিত স্প্রাইটে যতটা সম্ভব স্থির পাঠ্য রাখুন। তারপরে গিটারট্যাগ এবং বিটম্যাপ ফন্ট জেনারেটর থেকে উত্পাদিত স্প্রিটফন্ট বা ফন্ট ব্যবহার করে মোট স্কোরের মতো জিনিসগুলি পূরণ করুন।

আমি অবশ্যই দেখেছি (এবং এটি খুব দুর্দান্ত, তবে) তবে আমি সরাসরি আমার ফটোশপ পাঠ্য শৈলীর ব্যবহারযোগ্য, বিটম্যাপ ফন্টে পরিণত করার প্রত্যাশা করছিলাম।
ভন হিলস

0

XNAআপনার জন্য সমস্ত কঠোর পরিশ্রম করে। সঙ্গে Spritefontআপনি সহজেই পরী শীট ধরনের আপনার সম্পর্কে একটি XML ফাইল নির্ধারণ করে জিজ্ঞাসা করা হয় আপনার মেশিনে একটি ফন্ট ফাইল রূপান্তর করতে পারেন।

আপনি একবার আপনার সামগ্রী প্রকল্পে এক্সএমএল ফাইল যুক্ত করলে এটিকে লোড করুন ContentManager:

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

আমার কন্টেন্ট প্রকল্পের একটি .spritfont ফাইলের উদাহরণ এখানে:

<?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 ফন্ট সম্পাদক ব্যবহার করে এমন লোক রয়েছে ।

ইন এই ওয়েবসাইট অন্যান্য ফন্টের সম্পাদক তোমার দিকে কটাক্ষপাত আছে চাইবেন একটি তালিকা আছে।

কোনটি আপনার পক্ষে সবচেয়ে ভাল কাজ করে তা আমাকে জানান:

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.