Open main menu

CDOT Wiki β

Changes

BTC640/Text

4,660 bytes added, 11:09, 14 May 2013
Part 1
Definitions: glyphs, fonts, styles, rasterizing, serif, sans serif, anti-aliasing, true type fonts (TTF), PostScript.
Font attributes: point size, weight, slope, widthMore info about fonts: http://www.typesoffonts.com/
== Font availability ==
PDF is one of the very few text formats where the file includes the fonts so that it looks identical on all platforms.
Text can be rasterised before distribution (turned into a bitmap), which will ensure that text looks the same on all platforms, but a bitmap of a text is usually not a good option excapt except for titles and perhaps buttons.
Consider also that on different platforms it may be ''desirable'' to have the text look different, for example to match a default system font.
== Languages ==
English is the primary language of computers, but it's far from beeing the only one that matters. Operting Operating systems (Windows, OSX, Linux) and most software ships in many different languages and many non-english-speaking users never have the need to learn english to use a computer or the internet effectively.
To make use of different languages we separate the representation of the information (e.g. "Create" and "Créer") from the information itself (this is text that will be shown to the user and they will be able to click on it to create a page). Then a list of strings can be extracted from the software or website and translated into different languages without programming knowledge. Because the mapping of meaning to representation is static (only the language of the representation changes) the table can be easily dropped back into the software which is now available in an extra language.
= Lab =
 
This is a marked lab. Please submit it using Moodle (Lab2). Please keep in mind that you're supposed to complete the lab yourself, not just copy someone else's work. I will notice!
 
== Part 1 ==
 
You will need to do the following on two platforms (windows, linux, or mac). The windows with IE and/or matrix with Firefox and/or the OSX with Safari on the lab machines will work:
 
# Create an HTML page with:
## Simple headers in <h1>, <h2>, and <h3> tags. Don't specify any styles for the headers.
## Add some text in tags with CSS attributes that set the font, each of these separately:
### CSS font-family, with text explaining what this property can be used for. To make it more interesting - pick fonts only available on one platform and see what the fallback is.
### CSS font-style, with text explaining what this property can be used for.
### CSS font-size, with examples of using different unit types (see [http://kyleschaeffer.com/user-experience/css-font-size-em-vs-px-vs-pt-vs/ this for example]).
# Make sure the whole thing fits into one page (no scrolling), and make a screenshot of it.
# Open the exact same page on the other platform (preferably in a different browser), and make a screenshot of that.
# In the same HTML file: list the differences you see, and explain why the two don't look exactly the same. Depending on the fonts you chose and the units you used the differences may be very minor.
# The two screenshots, your css and html files must be submitted to Blackboard/Lab2.
 
== Part 2 ==
 
You'll need to use matrix (or your own Linux box) for this part. Here we're going to create a small program that prints hello world, and we'll translate that string into french. The point of the exercise is to see the entire process - from writing the code to running it.
 
Our program is here. Note that since we don't have permissions to write to the system directories we're going to put the translations in a local directory (locale).
 
<pre>
 
#include <libintl.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
setlocale(LC_ALL, "");
//bindtextdomain("hello", "/usr/share/locale");
bindtextdomain("hello", "./locale");
textdomain("hello");
 
printf(gettext("Hello, world!\n"));
printf("This is how you say 'crazy' in the current language: ");
printf(gettext("crazy\n"));
printf(gettext("Note that newlines at the end of the translated strings matter\n"));
 
return 0;
}
</pre>
 
Compile this using cc hello.c -o hello (note that no special compile flags are needed).
 
Now extract the translatable strings from your program into a template (hello.pot) file:
 
<pre>xgettext -d hello -s -o hello.pot hello.c</pre>
 
Edit hello.pot (it's a text file) and replace the values for all the default-looking strings with your own. Delete the "fuzzy" line. Change the charset to UTF-8.
 
This template file is what you would send off to a french-speaking translator, who will create fr.po out of it. But since we don't have a french-speaking translator - we're just going to do it ourselves.
 
<pre>cp hello.pot fr.po</pre>
 
Edit the file fr.po and set the msgstr for the hello world string to something different. It doesn't need to be french, just type something different in there. You can try a string from another language with more exotic characters if you like.
 
Create the local locale directory I mentioned above. Normally you wouldn't do this, it's only for this exercise:
 
<pre>mkdir -p locale/fr_CA/LC_MESSAGES</pre>
 
And compile your new french translation file:
 
<pre>msgfmt -c -v -o locale/fr_CA/LC_MESSAGES/hello.mo fr.po</pre>
 
If at this point you get any warnings - fix them, and rerun the msgfmt command.\
 
Run <pre>LC_ALL=fr_CA.UTF-8 ./hello</pre> and if you did everything right - you should see the translated string instead of the "Hello, world!" which you get from running ./hello without setting any variables.
 
Basically this means that your software will look different based on an environment variable (LC_ALL) so by changing one environment variable you can switch the language of all the software that's been translated into that language.
 
Try also to run some existing software on Matrix using various language codes (e.g. de_DE, zh_CN, find some others).
 
Submit the following for this part:
* You french po file with the translation filled in.
* Run the following and make a screenshot of the terminal window:
<pre>
msgfmt -c -v -o locale/fr_CA/LC_MESSAGES/hello.mo fr.po
./hello
LC_ALL=fr_CA.UTF-8 ./hello
</pre>
 
== Submit ==
 
Please put all your files you want to submit into one zip file and upload that to Moodle.
1
edit