<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>Comments on: A Development Note about Internationalization</title>
	<atom:link href="https://braid-game.com/news/2007/12/a-development-note-about-internationalization/feed/" rel="self" type="application/rss+xml" />
	<link>https://braid-game.com/news/2007/12/a-development-note-about-internationalization/</link>
	<description></description>
	<lastBuildDate>Wed, 25 May 2016 15:09:43 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.2</generator>
	<item>
		<title>By: Jonathan Blow</title>
		<link>https://braid-game.com/news/2007/12/a-development-note-about-internationalization/#comment-910</link>
		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Sun, 30 Dec 2007 16:24:44 +0000</pubDate>
		<guid isPermaLink="false">https://braid-game.com/news/?p=136#comment-910</guid>
		<description><![CDATA[Ooh, y&#039;know, I suppose I should have looked into the size of Asian fonts.

I am really loving the direct-ttf-usage for day-to-day work, though... I feel that I attained good visual quality on the style of the game much more easily than I would have using my previous pre-baked-font system.

Anyway, we&#039;ll see how it works out... of course, I will do whatever is necessary.  I have yet to talk to the internationalization guys at all so I have no idea.]]></description>
		<content:encoded><![CDATA[<p>Ooh, y&#8217;know, I suppose I should have looked into the size of Asian fonts.</p>
<p>I am really loving the direct-ttf-usage for day-to-day work, though&#8230; I feel that I attained good visual quality on the style of the game much more easily than I would have using my previous pre-baked-font system.</p>
<p>Anyway, we&#8217;ll see how it works out&#8230; of course, I will do whatever is necessary.  I have yet to talk to the internationalization guys at all so I have no idea.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: raigan</title>
		<link>https://braid-game.com/news/2007/12/a-development-note-about-internationalization/#comment-909</link>
		<dc:creator><![CDATA[raigan]]></dc:creator>
		<pubDate>Sun, 30 Dec 2007 16:14:05 +0000</pubDate>
		<guid isPermaLink="false">https://braid-game.com/news/?p=136#comment-909</guid>
		<description><![CDATA[One thing you might want to look out for is that the font file can be quite large -- we didn&#039;t have time or money to license fonts, so we used the Microsoft-provided Asian font.. the .ttf file was something like 50mb!

So, if you&#039;re only using a couple of different font sizes it might make more sense to pre-bake the textures and ship those rather than doing the baking on startup. You could also try to hack at the .ttf file -- there are thousands of characters you don&#039;t need since it includes dozens of Asian alphabets, of which you probably only need 3-4.

Or if you&#039;re not incredibly cheap like us, you could just license proper Asian fonts ;)]]></description>
		<content:encoded><![CDATA[<p>One thing you might want to look out for is that the font file can be quite large &#8212; we didn&#8217;t have time or money to license fonts, so we used the Microsoft-provided Asian font.. the .ttf file was something like 50mb!</p>
<p>So, if you&#8217;re only using a couple of different font sizes it might make more sense to pre-bake the textures and ship those rather than doing the baking on startup. You could also try to hack at the .ttf file &#8212; there are thousands of characters you don&#8217;t need since it includes dozens of Asian alphabets, of which you probably only need 3-4.</p>
<p>Or if you&#8217;re not incredibly cheap like us, you could just license proper Asian fonts 😉</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Blow</title>
		<link>https://braid-game.com/news/2007/12/a-development-note-about-internationalization/#comment-901</link>
		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Fri, 21 Dec 2007 22:13:11 +0000</pubDate>
		<guid isPermaLink="false">https://braid-game.com/news/?p=136#comment-901</guid>
		<description><![CDATA[Parveen: Freetype2 compiled for me immediately today, without problems, on Windows at least.  (They had a Visual Studio project file folder, and everything).  I have yet to try this stuff on the 360.

I&#039;ve got it rendering individual glyphs and then displaying them in-game, so now all I have to do is the packing.  For anyone who has done this kind of thing -- I need to make an index that goes from character codes to (application-specific) glyph data records.  Am I better off using a hash table keyed on the utf32 character code, or else using sequential utf8 characters to navigate a trie or some other structure like that?

The hash table would be a lot easier programming-wise, since I can just plug one in and go.  But... it seems kind of bleah.]]></description>
		<content:encoded><![CDATA[<p>Parveen: Freetype2 compiled for me immediately today, without problems, on Windows at least.  (They had a Visual Studio project file folder, and everything).  I have yet to try this stuff on the 360.</p>
<p>I&#8217;ve got it rendering individual glyphs and then displaying them in-game, so now all I have to do is the packing.  For anyone who has done this kind of thing &#8212; I need to make an index that goes from character codes to (application-specific) glyph data records.  Am I better off using a hash table keyed on the utf32 character code, or else using sequential utf8 characters to navigate a trie or some other structure like that?</p>
<p>The hash table would be a lot easier programming-wise, since I can just plug one in and go.  But&#8230; it seems kind of bleah.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Blow</title>
		<link>https://braid-game.com/news/2007/12/a-development-note-about-internationalization/#comment-900</link>
		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Fri, 21 Dec 2007 20:06:19 +0000</pubDate>
		<guid isPermaLink="false">https://braid-game.com/news/?p=136#comment-900</guid>
		<description><![CDATA[That makes sense, but the situation is more complicated than that.  For example, the game levels have strings in them (for stuff like the name of the level, which gets drawn as a caption when the player goes there).  The levels are stored in their own binary format, so these strings obviously are not going to be caught by any kind of preprocessing tool.  So any time one wants to change one of these strings, changes have to be made in multiple places (the level itself, then in the translation files). 

I would rather confine the changes just to the translation files.  This is a general rule of good software design: Don&#039;t make it so that small changes in one place will magically break something in another place, without ever notifying you, unless you notice by happening to run that one code path and paying attention.

So, if there is some automated process for updating things, but it only works sometimes on some subset of the project, then I view that as a liability and would rather not use it.  Because the existence of that thing makes the project more complicated, and then you have to have all this specialized knowledge about what gets tracked and what doesn&#039;t.  Whereas if nothing ever gets tracked, that is easy, and less complicated.

About translator convenience; I have been envisioning that they would just start with the default.po (which is in English) and replace the translations.  So the English would still be right there.  That does override some of the features of poedit (the way it tracks untranslated strings and highlights them for you) but I don&#039;t necessarily think that is very useful anyway, for a project like this one.]]></description>
		<content:encoded><![CDATA[<p>That makes sense, but the situation is more complicated than that.  For example, the game levels have strings in them (for stuff like the name of the level, which gets drawn as a caption when the player goes there).  The levels are stored in their own binary format, so these strings obviously are not going to be caught by any kind of preprocessing tool.  So any time one wants to change one of these strings, changes have to be made in multiple places (the level itself, then in the translation files). </p>
<p>I would rather confine the changes just to the translation files.  This is a general rule of good software design: Don&#8217;t make it so that small changes in one place will magically break something in another place, without ever notifying you, unless you notice by happening to run that one code path and paying attention.</p>
<p>So, if there is some automated process for updating things, but it only works sometimes on some subset of the project, then I view that as a liability and would rather not use it.  Because the existence of that thing makes the project more complicated, and then you have to have all this specialized knowledge about what gets tracked and what doesn&#8217;t.  Whereas if nothing ever gets tracked, that is easy, and less complicated.</p>
<p>About translator convenience; I have been envisioning that they would just start with the default.po (which is in English) and replace the translations.  So the English would still be right there.  That does override some of the features of poedit (the way it tracks untranslated strings and highlights them for you) but I don&#8217;t necessarily think that is very useful anyway, for a project like this one.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gsoto</title>
		<link>https://braid-game.com/news/2007/12/a-development-note-about-internationalization/#comment-899</link>
		<dc:creator><![CDATA[gsoto]]></dc:creator>
		<pubDate>Fri, 21 Dec 2007 19:10:07 +0000</pubDate>
		<guid isPermaLink="false">https://braid-game.com/news/?p=136#comment-899</guid>
		<description><![CDATA[As far as I know, text extraction is normally done by parsing the _() macro; that way you end with a catalogue (.po) containing only the relevant strings.
I&#039;m not sure if it&#039;s a good idea to rewrite the strings in a code/label fashion; actually the interesting part is to write everything in one language and have it automagically set for translation. Having the strings in English will be more friendly for the translators too. It also helps with printf-like format specifiers.
You don&#039;t have to worry if some strings get changed in the code, because you can update the catalogues any time. Poedit has a function that scans a group of files (or a directory, can&#039;t remember) and updates the catalogue. It shows a summary with the new and obsolete strings (unchanged strings remain translated).]]></description>
		<content:encoded><![CDATA[<p>As far as I know, text extraction is normally done by parsing the _() macro; that way you end with a catalogue (.po) containing only the relevant strings.<br />
I&#8217;m not sure if it&#8217;s a good idea to rewrite the strings in a code/label fashion; actually the interesting part is to write everything in one language and have it automagically set for translation. Having the strings in English will be more friendly for the translators too. It also helps with printf-like format specifiers.<br />
You don&#8217;t have to worry if some strings get changed in the code, because you can update the catalogues any time. Poedit has a function that scans a group of files (or a directory, can&#8217;t remember) and updates the catalogue. It shows a summary with the new and obsolete strings (unchanged strings remain translated).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Parveen</title>
		<link>https://braid-game.com/news/2007/12/a-development-note-about-internationalization/#comment-898</link>
		<dc:creator><![CDATA[Parveen]]></dc:creator>
		<pubDate>Fri, 21 Dec 2007 18:38:23 +0000</pubDate>
		<guid isPermaLink="false">https://braid-game.com/news/?p=136#comment-898</guid>
		<description><![CDATA[FreeType is a PITA to compile, but the results are nice.

I&#039;m not sure if you need to support Kanji or Korean, but there are a lot of characters and you may need to pack glyphs dynamically.

Multisample will blur your characters, so don&#039;t render two triangles cutting across a quad.

You may need to reduce VRAM usage by using shader trickery.

That&#039;s all of the subtle details I can think of off the top of my head.]]></description>
		<content:encoded><![CDATA[<p>FreeType is a PITA to compile, but the results are nice.</p>
<p>I&#8217;m not sure if you need to support Kanji or Korean, but there are a lot of characters and you may need to pack glyphs dynamically.</p>
<p>Multisample will blur your characters, so don&#8217;t render two triangles cutting across a quad.</p>
<p>You may need to reduce VRAM usage by using shader trickery.</p>
<p>That&#8217;s all of the subtle details I can think of off the top of my head.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Coca Cola Zero</title>
		<link>https://braid-game.com/news/2007/12/a-development-note-about-internationalization/#comment-897</link>
		<dc:creator><![CDATA[Coca Cola Zero]]></dc:creator>
		<pubDate>Fri, 21 Dec 2007 05:32:46 +0000</pubDate>
		<guid isPermaLink="false">https://braid-game.com/news/?p=136#comment-897</guid>
		<description><![CDATA[I&#039;ve used FreeType.  It is quite nice and works well for what you&#039;re proposing, just make sure you completely ignore the Fontconfig stuff that tends to get lumped in with FreeType.  You don&#039;t need it and if you think trying to get gettext compiled was a chore, you ain&#039;t seen nothing yet (this applies to Fontconfig, not the base freetype lib).]]></description>
		<content:encoded><![CDATA[<p>I&#8217;ve used FreeType.  It is quite nice and works well for what you&#8217;re proposing, just make sure you completely ignore the Fontconfig stuff that tends to get lumped in with FreeType.  You don&#8217;t need it and if you think trying to get gettext compiled was a chore, you ain&#8217;t seen nothing yet (this applies to Fontconfig, not the base freetype lib).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan</title>
		<link>https://braid-game.com/news/2007/12/a-development-note-about-internationalization/#comment-896</link>
		<dc:creator><![CDATA[Dan]]></dc:creator>
		<pubDate>Fri, 21 Dec 2007 02:27:43 +0000</pubDate>
		<guid isPermaLink="false">https://braid-game.com/news/?p=136#comment-896</guid>
		<description><![CDATA[Although it&#039;s written in D, this site has a good overview and code samples for using freetype to render to a texture with nice kerning.

http://dmedia.dprogramming.com/?n=Tutorials.TextRendering1]]></description>
		<content:encoded><![CDATA[<p>Although it&#8217;s written in D, this site has a good overview and code samples for using freetype to render to a texture with nice kerning.</p>
<p><a href="http://dmedia.dprogramming.com/?n=Tutorials.TextRendering1" rel="nofollow">http://dmedia.dprogramming.com/?n=Tutorials.TextRendering1</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
