<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="ARTICLE @ XOOPS powered by FeedCreator" -->
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xml:lang="en">
    <title>XooFoo Community :: Index</title>
    <tagline>XML for index page</tagline>
    <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/index.php"/>
    <id>http://community.xoofoo.org/modules/actus_webmaster/index.php</id>
    <modified>2012-05-24T01:23:35+02:00</modified>
    <author>
        <name>community at xoofoo dot org</name>
    </author>
    <generator>ARTICLE @ XOOPS powered by FeedCreator</generator>
    <entry>
        <title>Replicating MySQL AES Encryption Methods With PHP</title>
        <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6679"/>
        <created>2012-05-22T13:38:35+02:00</created>
        <issued>2012-05-22T13:38:35+02:00</issued>
        <modified>2012-05-22T13:38:35+02:00</modified>
        <id>http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6679</id>
        <author>
            <name>Chad Smith &amp; Derek Woods</name>
        </author>
        <summary>&lt;p&gt;At our company, we process a lot of requests on the leading gift cards and coupons websites in the world. The senior developers had a meeting in late October to discuss working on a solution to replicate the MySQL functions of &lt;code&gt;AES_ENCRYPT&lt;/code&gt; and &lt;code&gt;AES_DECRYPT&lt;/code&gt; in the language of PHP. This article centers on what was produced by senior developer Derek Woods and how to use it in your own applications.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Security should be at the top of every developer's mind when building an application that could hold sensitive data. We wanted to replicate MySQL's functions because a lot of our data is already AES-encrypted in our database, and if you're like us, you probably have that as well.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Why Does Encryption Matter?&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;We will begin by examining why security and encryption matter at all levels of an application. Every application, no matter how large or small, needs some form of security and encryption. Any user data you have is extremely valuable to potential hackers and should be protected. Basic encryption should be used when your application stores a password or some other form of identifying information.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Different levels of sensitive data require different encryption algorithms. Knowing which level to use can be determined by answering the basic question, &quot;Will I ever need access to the original data after it has been encrypted?&quot; When storing a user's password, using a heavily salted MD5 hash and storing that in the database is sufficient; then, you would use the same MD5 hashing on the input and compare the result from the database. When storing other sensitive data that will need to be returned to its original input, you would not be able to use a one-way hashing algorithm such as MD5; you would need a two-way encryption scheme to ensure that the original data can be returned after it's been encrypted.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Encryption is only as powerful as the key used to protect it. Imagine that an attacker breaches your firewall and has an exact clone of your database; without the key, breaking the encryption that protects the sensitive data would be nearly impossible. Keeping the key in a safe place should always be priority number one. Many people use an &lt;code&gt;ini&lt;/code&gt; file that's read at runtime and that is not publicly accessible within the scope of the Web server. If your application requires two-way encryption, there are industry standards for protecting such data, one being AES encryption.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;What Is AES Encryption?&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;AES, which stands for Advanced Encryption Standard, was developed by Joan Daemen and Vincent Rijmen. They named their cipher, Rijndael, after a play on their two names. AES was announced as the winner of a five-year competition conducted by the National Institute of Standards and Technology (NIST) on 26 November 2001.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;AES is a two-way encryption and decryption mechanism that provides a layer of security for sensitive data while still allowing the original data to be retrieved. To do this, it uses an encryption key that is used as a seed in the AES algorithm. As long as the key remains the same, the original data can be decrypted. This is necessary if your sensitive data needs to be returned to its original state. &lt;/p&gt;&lt;br /&gt;&lt;h4&gt;How Does It Work?&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;AES uses a complex mathematical algorithm, which we will explore later, to combine two main concepts: confusion and diffusion. Confusion is a process that hides the relationship between the original data and the encrypted result. A classic example of this is the Caesar Cipher, which applies a simple shift of letters so that A becomes C, B becomes D, etc. Diffusion is a process that shifts, adjusts or otherwise alters the data in complex ways. This can be done using bit-shifts, replacements, additions, matrix manipulations and more. A combination of these two methods provides the layer of security that AES needs in order to give us a secure algorithm for our data.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In order to be bi-directional, the confusion and diffusion process is managed by the secret key that we provide to AES. Running the algorithm in one direction with a key and data will output an obfuscated string, thus encrypting the data. By passing that string back into the algorithm with the same key, running the algorithm in reverse will output the original data. Instead of attempting to keep the algorithm secret, the AES algorithm relies on complete key secrecy. According to its &lt;a href=https://www.owasp.org/index.php/Cryptographic_Storage_Cheat_Sheet#Rule_-_Rekey_data_at_least_every_one_to_three_years&gt;cryptographic storage guidelines&lt;/a&gt;, OWASP recommends rotating the key every one to three years. The guidelines also go through methods of rotating AES keys.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;PHP Mcrypt Specifics&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;PHP provides AES implementation through the Mcrypt extension, which gives us a number of other ciphers as well. In addition to the algorithm itself, Mcrypt provides multiple modes that alter the security level of the AES algorithm to make it more secure. The two definitions that we will need to use in our PHP functions are &lt;code&gt;MCRYPT_RIJNDAEL_256&lt;/code&gt; and &lt;code&gt;MCRYPT_MODE_ECB&lt;/code&gt;. Rijndael 256 is the encryption cipher that we will use for our AES encryption. Additionally, the code uses an &quot;Electronic Code Book&quot; that segments the data into blocks and encrypts them separately. Alternative and more secure modes are available, but MySQL uses ECB by default, so we will be crafting our PHP implementation around that.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Why Should You Avoid AES In MySQL?&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Using MySQL's AES encryption and decryption functions is very simple. Setting up requires less work, and it is generally far easier to understand. Apart from the obvious benefit of simplicity, there are three main reasons why PHP's Mcrypt is superior to MySQL's AES functions:&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;MySQL needs a database link between the application and database in order for encryption and decryption to occur. This could lead to unnecessary scalability issues and fatal errors if the database has internal failures, thus rendering your application unusable.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;PHP can do the same MySQL decryption and encryption with some effort but without a database connection, which improves the application's speed and efficiency.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;MySQL often logs transactions, so if the database's server has been compromised, then the log file would produce both the encryption key and the original value.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;h3&gt;MySQL AES Key Modification&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Out of the box, PHP's Mcrypt functions unfortunately do not provide encrypted strings that match those of MySQL. There are a few reasons for this, but the root cause of the difference is the way that MySQL treats both the key and the input. To understand the causes, we have to delve into MySQL's default AES encryption algorithm. The code segments presented below have been tested up to the latest version of MySQL, but MySQL could possibly alter their encryption scheme. The first problem we encounter is that MySQL will break up our secret key into 16-byte blocks and XOR the characters together from left to right. XOR is an exclusive disjunction, and if the two bytes are the same, then the output is &lt;code&gt;0&lt;/code&gt;; if they are different, then the output is &lt;code&gt;1&lt;/code&gt;. Additionally, it begins with a 16-byte block of null characters, so if we pass in a key of fewer than 16 bytes, then the rest of the key will contain null characters.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Say we have a 34-character key: &lt;code&gt;123456789abcdefghijklmnopqrstuvwxy&lt;/code&gt;. MySQL will start with the first 16 characters.&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;new_key = 123456789abcdefg&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The second step taken is to XOR (&amp;oplus;) the next 16 characters in the value in &lt;code&gt;new_key&lt;/code&gt; with the first 16.&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;new_key = new_key ^ hijklmnopqrstuvw&lt;br /&gt;new_key = 123456789abcdefg ^ hijklmnopqrstuvw&lt;br /&gt;new_key = Y[Y_Y[YWI&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Finally, the two remaining characters will be XOR'd starting from the left.&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;new_key = new_key ^ xy&lt;br /&gt;new_key =  Y[Y_Y[YWI ^ xy&lt;br /&gt;new_key = !&quot;Y_Y[YWI&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;This is, of course, drastically different from our original key, so if this process does not take place, then the return value from the decrypt/encrypt functions will be incorrect.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Key Padding&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;The second major difference between Mcrypt PHP and MySQL is that the length of the Mcrypt value must have padding to ensure it is a multiple of 16 bytes. There are numerous ways to do this, but the standard is to pad the key with the byte value equal to the number of bytes left over. So, if our value is 34 characters, then we would pad with a byte value of 14.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To calculate this, we use the following formula:&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;$pad_value = 16-(strlen($value) % 16);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Using our 34-character example, we would end up with this:&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;$pad_value = 16-(strlen(&quot;123456789abcdefghijklmnopqrstuvwxy&quot;) % 16);&lt;br /&gt;$pad_value = 16-(34 % 16);&lt;br /&gt;$pad_value = 16-(2);&lt;br /&gt;$pad_value = 14;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h3&gt;MySQL Key Function&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;In the previous section, we dove into the issues surrounding the MySQL key used to encrypt and decrypt. Below is the function that's used in both our encryption and decryption functions.&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;function mysql_aes_key($key)&lt;br /&gt;{&lt;br /&gt;	$new_key = str_repeat(chr(0), 16);&lt;br /&gt;	for($i=0,$len=strlen($key);$i&amp;lt;$len;$i++)&lt;br /&gt;	{&lt;br /&gt;		$new_key[$i%16] = $new_key[$i%16] ^ $key[$i];&lt;br /&gt;	}&lt;br /&gt;	return $new_key;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;First, we instantiate our key value with 16 null characters. Then we iterate through each character in the key and XOR it with the current position in &lt;code&gt;new_key&lt;/code&gt;. Since we're moving from left to right and using modulus 16, we will always be XOR'ing the correct characters together. This function changes our secret key to the MySQL standard and is the first step in achieving interoperability between PHP and MySQL.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Value Transformation&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;We run into the last caveat when we pull the data from MySQL. For the data encrypted with AES, the padded values that we added before encryption will remain tacked onto the end after we decrypt. In general, this would go unnoticed if we were only fetching the data in order to display it; but if we're using any of basic string functions on the decrypted data, such as &lt;code&gt;strlen&lt;/code&gt;, then the results will be incorrect. There are a couple ways to handle this, and we will be removing all characters with a byte position of 0 through 16 from the right of our value since they are the only characters used in our padding algorithm.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The code below will handle the transformation.&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;$decrypted_value = rtrim($decrypted_value, &quot;\0..\16&quot;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Throwing all the concepts together, we have a few main points:&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;We have to transform our AES key to MySQL's standards;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;We have to pad the value that we want to encrypt if it's not a multiple of 16 bytes in size;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;We have to strip off the padded values after we decrypt the encrypted value from MySQL.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;It's advantageous to segment these concepts into components that can be reused throughout the project and in other areas that use AES encryption. The following two functions are the end result and perform the encryption and decryption before sending the data to MySQL for storage.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;MySQL AES Encryption&lt;/h4&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;function aes_encrypt($val)&lt;br /&gt;{&lt;br /&gt;	$key = mysql_aes_key('Ralf_S_Engelschall__trainofthoughts');&lt;br /&gt;	$pad_value = 16-(strlen($val) % 16);&lt;br /&gt;	$val = str_pad($val, (16*(floor(strlen($val) / 16)+1)), chr($pad_value));&lt;br /&gt;	return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $val, MCRYPT_MODE_ECB, mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_DEV_URANDOM));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The first line is where we get the MySQL encoded key using the previously defined &lt;code&gt;mysql_aes_key&lt;/code&gt; function. We are not using our real key in this article, but are instead paying homage to one of the creators of OpenSSL (among other technologies that he's been involved in). The next line determines the character value with which to pad our data. The last two lines perform the actual padding of our data and call the &lt;code&gt;mcrypt_encrypt&lt;/code&gt; function with the appropriate key and value. The return of this function will be the encrypted value that can be sent to MySQL for storage &amp;mdash; or used anywhere else that requires encrypted data.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;MySQL AES Decryption&lt;/h4&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;function aes_decrypt($val)&lt;br /&gt;{&lt;br /&gt;	$key = mysql_aes_key('Ralf_S_Engelschall__trainofthoughts');&lt;br /&gt;	$val = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $val, MCRYPT_MODE_ECB, mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_DEV_URANDOM));&lt;br /&gt;	return rtrim($val, &quot;\0..\16&quot;);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The first line of the decrypt function again generates the MySQL version of our secret key using &lt;code&gt;mysql_aes_key&lt;/code&gt;. We then pass that key, along with the encrypted data, to the &lt;code&gt;mcrypt_decrypt&lt;/code&gt; function. The final line returns the original data after stripping away any padded characters that we might have used in the encryption process.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;See It In Action&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;To show that the encryption and decryption schemes here do in fact work, we must exercise both encryption and decryption functions in PHP and MySQL and compare the results. In this example, we have integrated the &lt;code&gt;aes_encrypt&lt;/code&gt;/&lt;code&gt;aes_decrypt&lt;/code&gt; and key function into a CakePHP model, and we are using Cake to run the database queries for MySQL. You can replace the CakePHP functions with &lt;code&gt;mysql_query&lt;/code&gt; to obtain the results outside of Cake. In the first group, we are encoding the same data with the same key in both PHP and MySQL. We then &lt;code&gt;base64_encode&lt;/code&gt; the result and print the data. The second group runs the MySQL encrypted data through PHP decrypt, and vice versa for the PHP encrypted data. We're also outputting the result. The final block guarantees that the inputs and outputs are identical.&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;define('MY_KEY','Ralf_S_Engelschall__trainofthoughts');&lt;br /&gt;&lt;br /&gt;// Group 1&lt;br /&gt;$a = $this-&gt;User-&gt;aes_encrypt('test');&lt;br /&gt;echo base64_encode($a).'';&lt;br /&gt;&lt;br /&gt;$result = $this-&gt;User-&gt;query(&quot;SELECT AES_ENCRYPT('test', '&quot;.MY_KEY.&quot;') AS enc&quot;);&lt;br /&gt;$b = $result[0][0]['enc'];&lt;br /&gt;echo base64_encode($b).'';&lt;br /&gt;&lt;br /&gt;// Group 2&lt;br /&gt;$result = $this-&gt;User-&gt;query(&quot;SELECT AES_DECRYPT('&quot;.$a.&quot;', '&quot;.MY_KEY.&quot;') AS decc&quot;);&lt;br /&gt;$c = $result[0][0]['decc'];&lt;br /&gt;echo $c.&quot;&lt;br/&gt;&quot;;&lt;br /&gt;&lt;br /&gt;$d = $this-&gt;User-&gt;aes_decrypt($b);&lt;br /&gt;echo $d.&quot;&lt;br/&gt;&quot;;&lt;br /&gt;&lt;br /&gt;// Comparison&lt;br /&gt;var_dump($a===$b);&lt;br /&gt;var_dump($c===$d);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h4&gt;Output&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;The snippet below is the output when you run the PHP commands listed above.&lt;/p&gt;&lt;br /&gt;&lt;pre class=&quot;brush: php&quot;&gt;&lt;br /&gt;L8534Dj1sH6IRFrUXXBkkA==&lt;br /&gt;L8534Dj1sH6IRFrUXXBkkA==&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;bool(true) bool(true)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h3&gt;Final Thoughts&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;AES encryption can be a bit painful if you are not familiar with the specifics of the algorithm or familiar with any differences between implementations that you might have to work with in your various libraries and software packages. As you can see, it is indeed possible to use native PHP functions to handle encryption and decryption and to actually make it work seamlessly with any legacy MySQL-only encrypted data that your application might have. These methods should be used regardless so that you can use MySQL to decrypt data if a scenario arises in which that is the only option.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;(al)&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;small&gt;© Chad Smith &amp;amp; Derek Woods for &lt;a href=&quot;http://www.smashingmagazine.com&quot;&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;br /&gt;Source: http://www.smashingmagazine.com/2012/05/22/replicating-mysql-aes-encryption-methods-with-php/ Chad Smith &amp; Derek Woods</summary>
    </entry>
    <entry>
        <title>Locux + Internet Dongle = Low Cost Anywhere Connected devices</title>
        <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6678"/>
        <created>2012-05-22T09:08:51+02:00</created>
        <issued>2012-05-22T09:08:51+02:00</issued>
        <modified>2012-05-22T09:08:51+02:00</modified>
        <id>http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6678</id>
        <author>
            <name>Vikas Patial</name>
        </author>
        <summary>&lt;p&gt;Low cost anywhere internet connectivity is always an issue when designing devices. Also when building in low quantity , most are not able to keep costs low. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;So here is a low cost demo of a internet connected platform which can be used for a lot of things like monitoring , information display , communication , control , tracking etc.&lt;br /&gt;&lt;br /&gt;So a basic device should be achievable at &lt; USD 40 BOM at 100x quantity. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Internet Dongles are subsidized by carriers and bought in bulk so its cheaper to use them , they also come with Free data plans at start .&lt;br /&gt;&lt;br /&gt;GMS/CDMA Internet modules on other hand when imported are quite expensive at low quantities. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Also the whole design is a low power and can easily run on batteries, Currently it runs linux 2.6.35 and has python so people should be able to develop easily. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://ngcoders.com/images/embedded/locux/locux_3g.jpg&quot; alt=&quot;Low cost 3g setup&quot; /&gt;&lt;/p&gt;&lt;br /&gt;Source: http://www.ngcoders.com/embedded/locux-internet-dongle-low-cost-anywhere-connected-devices Vikas Patial</summary>
    </entry>
    <entry>
        <title>Locux @ GitHub</title>
        <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6677"/>
        <created>2012-05-18T09:09:00+02:00</created>
        <issued>2012-05-18T09:09:00+02:00</issued>
        <modified>2012-05-18T09:09:00+02:00</modified>
        <id>http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6677</id>
        <author>
            <name>Vikas Patial</name>
        </author>
        <summary>&lt;p&gt;We have put the files on GitHub , So anyone wanting to fabricate and Build Locux should be able to do it &amp;#8211; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/baseapp/locux&quot;&gt;&lt;a href=&quot;https://github.com/baseapp/locux&quot; title=&quot;https://github.com/baseapp/locux&quot; target=&quot;_blank&quot;&gt;https://github.com/baseapp/locux&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;Source: http://www.ngcoders.com/embedded/locux-github Vikas Patial</summary>
    </entry>
    <entry>
        <title>How To Choose The Right Face For A Beautiful Body</title>
        <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6676"/>
        <created>2012-05-21T15:23:55+02:00</created>
        <issued>2012-05-21T15:23:55+02:00</issued>
        <modified>2012-05-21T15:23:55+02:00</modified>
        <id>http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6676</id>
        <author>
            <name>Dan Reynolds</name>
        </author>
        <summary>&lt;p&gt;What is it that makes a typeface into a text font, instead of a font for larger sizes? The answer differs slightly, depending on whether one aims for print or Web-based environments.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Nevertheless, there are certain features that most good text faces have in common. Familiarity with these helps to select the right fonts for a given project. This article presents a few criteria to help the process along.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Some of today's most successful typefaces were designed to excel in very specific areas of use: Frutiger grew out of airport signage, Georgia and Verdana were among the first mass-market fonts created for on screen reading, FF Meta was conceived as a telephone book face, and even the Stalwart Times New Roman was tailored for the pages of the London Newspaper &lt;em&gt;The Times&lt;/em&gt;. Many typefaces are also often &lt;strong&gt;fine-tuned for using in certain sizes&lt;/strong&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It should be noted that in this article, when &quot;text&quot; is mentioned, it is in discussion of &lt;em&gt;body&lt;/em&gt; text, or &lt;em&gt;running&lt;/em&gt; text (in other words, text at a similar size to what you are probably reading right now, rather than much larger sized words).&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Features Of A Good Text Typeface&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;The features outlined in this article are those that &lt;em&gt;type designers&lt;/em&gt; keep in mind while developing new typefaces. It's important to realize that these aspects of typeface design are different from the text treatment a graphic designer employs while laying out a book page or website&amp;mdash;no matter what a typeface's inherent rhythm and niceties are, setting a text is still something that must be done with great care in respect to readability. There are problems that good fonts themselves cannot solve&amp;mdash;whether or not a text sings on the page or screen depends on factors like the width of the column, the amount of space between each line, the contrast between the foreground/background and a number of other factors.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Bembo-Bembo-Bembo-Book.gif&quot; alt=&quot;Different versions of the Bembo design&quot;/&gt;&lt;br /&gt;&lt;em&gt;Above, Bembo over the years: this typeface was a favorite of many book designers throughout the 20th century. At the top of the image is a scan of the original Bembo typeface, printed with letterpress. The digital version of the typeface&amp;mdash;&lt;a href=&quot;http://www.fonts.com/findfonts/detail.htm?productid=215078&quot;&gt;Bembo&lt;/a&gt;, seen in the middle, is too light for ideal text in print. A newer digitization was published in 2002&amp;mdash;&lt;a href=&quot;http://www.fonts.com/findfonts/detail.htm?productid=215077&quot;&gt;Bembo Book&lt;/a&gt;, seen at the bottom. This font is much darker, and is a better representation of the original Bembo idea. However, the middle version is still very elegant, and may still be used well in sub-headlines.&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Every typeface has its own inherent rhythm, created by the designer who made the font. With typefaces that are intended for use in body text, it is primarily &lt;em&gt;this&lt;/em&gt; rhythm that will make the typeface readable. But there are additional factors that go into the making of a good text face: the space between the letters, the degree of contrast in the letters' strokes, as well as the x-height and relative size of the whitespace inside of the letters. Not every typeface that works well in text will apply all of these factors in the same way, but all good ones will have many of these features in common.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;1. Stroke Contrast&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;When it comes to typefaces, the term &amp;ldquo;monolinear&amp;rdquo; is used to describe letters that appear to be designed with a consistent stroke thickness. Monolinear typefaces are low-contrast typefaces. Stroke contrast can be a helpful feature in small text sizes, but &lt;strong&gt;it is not paramount that a text face appears to be monolinear&lt;/strong&gt;. Indeed, many newspapers employ high-contrast fonts; the question that must be considered is just &lt;em&gt;how thick&lt;/em&gt; the thin strokes in high-contrast typefaces are.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Cycles-Text.gif&quot; alt=&quot;Sample Layout in the Cycles typefaces&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The images in this section show different ends of the contrast spectrum: the &lt;a href=&quot;http://www.stonetypefoundry.com/cyclesoverview.html&quot;&gt;Cycles&lt;/a&gt; types shown above are serifed, with a good deal of contrast. Sumner Stone's Cycles typeface is an excellent choice for book design as its letter forms combine clarity with a rather high degree of stroke contrast and an almost timeless appearance. Five separate &amp;ldquo;versions&amp;rdquo; of Cycles are used in the above image; each block of text is set in its own optically-sized font.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Below, Avenir Next&amp;mdash;also a great text face&amp;mdash;is from another style of letter, and has very little contrast. I wouldn't split good typefaces up into &lt;em&gt;good contrast&lt;/em&gt; and &lt;em&gt;bad contrast&lt;/em&gt; groups. Rather, some typefaces have a degree of contrast&amp;mdash;be it too high or too low&amp;mdash;that makes them less suitable for use in text. There is no definite rule on how much or how little contrast impacts a text face's legibility. However, it is clear that both &lt;em&gt;no contrast&lt;/em&gt; and &lt;em&gt;excessive contrast&lt;/em&gt; can have adverse effects.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Planeta-Avenir_Next.gif&quot; alt=&quot;Text in Planeta and Avenir Next&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Geometric sans serif typefaces often appear to be monolinear stokes; their letters seem not to have any stroke contrast. In order to achieve this effect to the max, type designers have always made slight optical corrections. To look monolinear, a geometric sans needs some degree of thinning. In the image above, Planeta (left) is compared with Avenir Next (right). Both typefaces are more recent additions to the geometric sans category than stalwart faces (like Futura), or classic display designs (like ITC Avant Garde Gothic). Planeta has no visible stroke contrast, which must be a conscious decision on the part of its designer. While this does give it a unique style, it makes the face less suitable for text than Avenir Next, which is actually not as monolinear as it appears at first glance.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;2. Optical Sizes&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Garamond-Premiere-Pro-minimum.gif&quot; alt=&quot;Text in Garamond Premiere Pro Caption and Display Sizes&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The &lt;a href=&quot;http://store1.adobe.com/cfusion/store/html/index.cfm?store=OLS-US&amp;amp;event=displayFontPackage&amp;amp;code=1738&quot;&gt;Garamond Premiere Pro&lt;/a&gt; typeface family features different versions of each font. These variants are tailored for use in a certain size range. Above, the Display font (left) is compared with the Caption font (right). The Display font is optimized for texts that will appear in very large point sizes, while the Caption font has been optimized for very small text.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In her book &lt;em&gt;Thinking with Type&lt;/em&gt;, Ellen Lupton writes:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;blockquote&gt;&quot;A type family with &lt;em&gt;optical sizes&lt;/em&gt; has different styles for different sizes of output. The graphic designer selects a style based on context. Optical sizes designed for headlines or display tend to have delicate, lyrical forms, while styles created for text and captions are built with heavier strokes.&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;The intended size of a text should be considered when selecting the typeface: is the typeface you want to use appropriate for the size in which you need to set it? Does the family include optical sizes (that is, different versions of the typeface that are tailored specifically for use at different sizes)? As with each of the factors mentioned in this article, &lt;strong&gt;the size at which a font is set can make or break your text&lt;/strong&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In many ways, it is easiest to see the qualities necessary for good text faces by comparing potential selections with &quot;display&quot; faces. Like the term &quot;text,&quot; &quot;display&quot; refers to the size at which a specific font may best be used. In print media, as well as in many screen and mobile-based applications, the term &quot;display&quot; is often analogous with &quot;headlines.&quot; If a typeface that you are considering looks more like something that you might like to use for a headline, it won&amp;#8217;t be the best choice for body text.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the comparison image below, the Garamond Premiere Pro Display font has a tighter rhythm than the Caption font&amp;mdash;not as much space is necessary between letters when they are set in large point sizes. Why should one consider type families with optical sizes, anyway? Well, as users bump up the point size of digital fonts, the space between letters increases in equal proportion. This inter-letter space slowly becomes too large, and makes a text feel like it is breaking apart. When a proper text font is set large, it may require some tighter tracking. Typeface families that offer optically-sized variants of their styles play a helpful role here.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Garamond-Premiere-Pro-Caption-and-Display_01.gif&quot; alt=&quot;Text in Garamond Premiere Pro Caption and Display Sizes&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the image above, the first line of text&amp;mdash;&quot;Stanley Morison&quot;&amp;mdash;is set in the Garamond Premiere Pro Display font, while the lines of text underneath it are set in Garamond Premiere Pro Caption. Each font is balanced for its size, and they also harmonize well with one another. In another image (below), these fonts have been switched: the headline is now set in the Garamond Premiere Pro Caption font, and the text in the Garamond Premiere Pro Display. The letters in the Caption face look too clumsy when they are set so large, while the Display fonts&amp;#8217; letters appear uncomfortably thin in a &quot;text&quot; setting.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Garamond-Premiere-Pro-Caption-and-Display_02.gif&quot; alt=&quot;Text in Garamond Premiere Pro Caption and Display Sizes&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The amount of stroke contrast visible in caption-sized fonts is much lower than in display-sized fonts. If the Garamond Premiere Pro Display font (from the above image) was rendered in a smaller point size, its thin strokes would begin to break apart, making the text unreadable. But this would not occur with the Caption version.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Garamond Premiere Pro Caption can robustly set real text, even in poor printing conditions. How well a font will render in small sizes &lt;em&gt;on screen&lt;/em&gt; depends on the operating system and applications in question. Font formats themselves also play a role; in certain environments, TrueType fonts with &quot;hinting&quot; information may vastly improve on screen display (see the &quot;Hinting&quot; section at the end of this article).&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;3. x-Height&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Garamond-Premiere-Pro-X-Heights.gif&quot; alt=&quot;Text in Garamond Premiere Pro Caption and Display Sizes&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Garamond Premiere Pro's Display face (above left) is shown next to the Caption face (above right). Both fonts are set at the same point size. The Caption face features a much higher x-height than the Display font.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Many successful text faces feature high x-heights; this means that the ratio of the central vertical area of lowercase letters&amp;mdash;the height of the letter x, for instance&amp;mdash;is large when compared to the length of the ascenders and descenders. Depending on its design, a text face may have a low x-height and still be quite legible. But the benefit of incorporating a large x-height in a design is that it maximizes the area of primary activity.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A high x-height may also prevent some letters, like the a or the s, from appearing to become too dark; these two letters have three horizontal strokes inside the x-height space, which is a very small area in text sizes. In order for letters to maintain clarity and understandability, they must have a consistent rhythm, as well as include large, open forms.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;4. The Spaces Inside of Letters&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;The images below illustrate just a few of the intra-letter spacing elements that should be understood and considered when choosing which typeface to choose for your body text. In order for the white spaces inside of letters to remain visible in small sizes, it is necessary for their counterforms to have a certain minimum mass, proportionally.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Counters&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/ITC-Bodoni-Counters.gif&quot; alt=&quot;ITC Bodoni Six and ITC Bodoni Seventytwo&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The image above shows text set in two members of the &lt;a href=&quot;http://www.fonts.com/findfonts/detail.htm?productid=662864&quot;&gt;ITC Bodoni&lt;/a&gt; family: ITC Bodoni Seventytwo and ITC Bodoni Six typefaces. In the first line, &quot;Randgloves&quot; is set in a size mastered for 72pt display (ITC Bodoni Seventytwo), while &quot;and jam&quot; is in the Caption size (ITC Bodoni Six). These words are reversed in the second line. Note how the enclosed white space in the top portion of the &lt;code&gt;e&lt;/code&gt; changes between the display and text optical sizes.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Apertures&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Four-Lowercase-Aperatures.gif&quot; alt=&quot;Apertures in FF Meta&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&quot;Apertures&quot; are the gateways that whitespaces use to move in and out of the counterforms of a typeface's letter. The above image highlights the wide apertures in four letters from Erik Spiekermann's &lt;a href=&quot;https://www.fontfont.com/fonts/meta&quot;&gt;FF Meta&lt;/a&gt; typeface. These allow for the typeface&amp;#8217;s letterforms to feel more open. In certain sizes and settings, wide apertures&amp;mdash;and the large counterforms that are their result&amp;mdash;will make a text more readable.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Frutiger-Helvetica-adhesion.gif&quot; alt=&quot;Apertures in Frutiger and Helvetica&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The top line of the image above is set in &lt;a href=&quot;http://www.linotype.com/526/Helvetica-family.html&quot;&gt;Helvetica&lt;/a&gt;, and the bottom line in &lt;a href=&quot;http://www.linotype.com/2534/frutiger.html&quot;&gt;Frutiger&lt;/a&gt;. While the counterforms inside the letters of these two typefaces are similar in size, Helvetica's apertures are much smaller. Because of this, white spaces inside of Helvetica's letters and between Helvetica's letters are much more closed off from each other than in a typeface with more open counters&amp;mdash;like Frutiger.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Other counterforms and problematic letters worth remembering include the &lt;code&gt;c&lt;/code&gt;; if the apertures of &lt;code&gt;a, e, s&lt;/code&gt; are very open, the &lt;code&gt;c&lt;/code&gt; should follow this same route. Then there are lowercase letters like &lt;code&gt;a, e, g, s&lt;/code&gt; that often have rather complex shapes&amp;mdash;specifically, they each feature several horizontal strokes inside a small amount of vertical space. How do their forms relate to one another? How large is the typeface's x-height? Do the ascenders and descenders have enough room, particularly &lt;code&gt;f&lt;/code&gt; and &lt;code&gt;g&lt;/code&gt;? Do the counterforms inside of roundish letters (e.g., &lt;code&gt;b, d, p, q, o&lt;/code&gt;) have the same optical size and color as those inside of straight-sided letters like, &lt;code&gt;h, n, m&lt;/code&gt;, and &lt;code&gt;u&lt;/code&gt;? How different from one another are the forms of the capital &lt;code&gt;I&lt;/code&gt;, the lowercase &lt;code&gt;i&lt;/code&gt; and &lt;code&gt;l&lt;/code&gt;, and the figure &lt;code&gt;1&lt;/code&gt;? Can the &lt;code&gt;3&lt;/code&gt; and the &lt;code&gt;8&lt;/code&gt; be quickly differentiated from each other? How about the &lt;code&gt;5&lt;/code&gt; and the &lt;code&gt;6&lt;/code&gt;?&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;5. Kerning&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Carter-Sans-Kerning.gif&quot; alt=&quot;Sample text in Carter Sans, with and without kerning&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the sample above, kerning has been deactivated for the second line. The gaps between the letters &lt;code&gt;T y&lt;/code&gt; and &lt;code&gt;V o&lt;/code&gt; are too large when compared with the amount of space between the other letters in the text. The typeface used in the image is &lt;a href=&quot;http://www.linotype.com/759464/CarterSans-family.html&quot;&gt;Carter Sans&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Despite the popular misuse of the term in graphic design circles, &quot;kerning&quot; does not refer to the spacing values to the left and right of the letters in a font. Rather, fonts contain a list of &lt;em&gt;kerning&lt;/em&gt; pairs to improve the spacing between the most troubling lettering combinations. The importance of kerning in a font is the role it may play in maintaining an optimal rhythm. &lt;strong&gt;Just as kerning describes something much more specific than a typeface&amp;#8217;s overall spacing&amp;mdash;or the tracking that a graphic designer might apply to a text&amp;mdash;kerning is not the rhythm of a typeface itself, but an element that may strengthen a typeface&amp;#8217;s already existing rhythm.&lt;/strong&gt; Not every typeface design requires kerning, and there are typefaces on the market that indeed may have too many kerning pairs&amp;mdash;a sign that the basic letter spacing in the font could have been too faulty in the beginning.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;6. Consistent Rhythm Along the Line&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Frutiger-Helvetica-minimum.gif&quot; alt=&quot;Simple Text Sample in Frutiger and Helvetica&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the image above, compare the spaces between the letters of the Helvetica typeface (first row) with Frutiger&amp;#8217;s (second row). Frutiger is a more humanist design, featuring a slight diagonal axis in its letters; many of them look similar to Helvetica's, at least at face value. However, the space between Helvetica's letters is much tighter.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;While most of the images in this article feature typeface families that include Optical Size variants, many commonly used typefaces on the market today do not offer these options. This is why it is helpful to be able to identify text typefaces based on their features, rather than just on their names in the font menu. As mentioned earlier, it is primarily the typeface&amp;#8217;s rhythm that dictates the readability of a block of text.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Take Frutiger and Helvetica, which are both commonly used in text, especially for corporate communication&amp;mdash;Neue Helvetica is even the UI typeface in iOS and MacOS X 10.7. Yet, despite its popularity, Helvetica is not very effective as a text typeface; its rhythm is too tight. By rhythm, I&amp;#8217;m not referring to tracking&amp;mdash;or any other feature that a designer can employ when typesetting&amp;mdash;but the natural flow of space between letters, and within them as well. Frutiger is a much more open typeface&amp;mdash;the spaces between its letters are closer in size to the white spaces inside of the letters than in the case of Helvetica. Like all good text typefaces, Frutiger has an even rhythm&amp;mdash;space weaves in and out of the letters easily.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;7. Caveat: Signage Faces&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;To round off my discussion on text typefaces, I'd like to briefly mention some fonts that are often shown in rather large sizes: fonts for signage. Interestingly, many signage typefaces have design features very similar to typefaces created for very small applications. The Frutiger typeface, based on letters that Adrian Frutiger originally developed for the Roissy airport in Paris (now named after Charles De Gaulle), is quite legible in small sizes precisely because it is a good signage typeface. Despite their size, signage fonts serve a rather different purpose than Display fonts.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Frutiger-Airport.gif&quot; alt=&quot;Frutiger in an airport signage-like setting&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Additional Elements To Consider&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;After considering the criteria mentioned above, the next question that often comes up is, &quot;does this font have oldstyle figures, or small caps and ligatures, etc.?&quot; A font's letters might look really great in text, but if they do not include additional elements and features, their use is somewhat minimized. I avoid using fonts with small character and feature sets where I can, because I feel that the lack of these &quot;extras&quot; may break the kind of rhythm I aim to achieve.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;1. OpenType Features&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;Once you've established a consistent rhythm by setting your text according to the correct size and application, it would be a pity to inadvertently break that flow. Large blocks of tall figures or capital letter combinations do just that.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Even in languages like German, where capital letters appear at the start of many words, the majority of letters in a text planned for immersive reading will be lowercase letters. Every language has its own frequency concerning the ratio of &quot;simple&quot; lowercase letters like &lt;code&gt;a c e m n o r s u v w x z&lt;/code&gt; to lowercase letters with ascenders or descenders&amp;mdash;&lt;code&gt;b d f g h j k l p q y&lt;/code&gt;. In international communication, language support is a key consideration when choosing a font, and other character set considerations may especially play a role.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/FF-Meta-OsF.gif&quot; alt=&quot;FF Meta Pro Book and two examples from its many figure styles&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Traditionally, the style of figures used in running text also have ascenders and descenders. These figures&amp;mdash;often called &lt;em&gt;oldstyle figures&lt;/em&gt; or &lt;em&gt;text figures&lt;/em&gt;&amp;mdash;harmonize better with text than the &quot;uppercase&quot; lining figures. These so-called &lt;em&gt;lining figures&lt;/em&gt; either align with the height of a typeface's capital letters, or are slightly shorter. It is no surprise that, when shipping the Georgia fonts for use onscreen and online, Matthew Carter and Microsoft made the figures take the oldstyle form. Many other typefaces that have long been popular with graphic designers, like FF Meta (seen above), also use oldstyle figures as the default style. In my opinion, lining figures are best relegated to text set in all-caps.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Long all-caps acronyms&amp;mdash;like NAFTA, NATO, or USSR&amp;mdash;also create an uncomfortable block in the line for the reader. Setting these letter-strings in small caps helps reestablish a specific typeface's natural rhythm in reading sizes, as may be seen in the first line of the image below (set in Erik Spiekermann's FF Meta).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/FF-Meta-SC.gif&quot; alt=&quot;FF Meta Pro Book and its small caps&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Along with common ligatures like &lt;code&gt;fi ff fl&lt;/code&gt;, small caps and the many figure options are the most common OpenType features found in quality text fonts. Aside from having both lining and oldstyle figures, OpenType-functionality can enable a font to include both tabular and proportionally-spaced figures, numerators and denominators for fractions, as well as superior and inferior figures for academic setting. Additional OpenType features (such as contextual alternates or discretionary ligatures), are more powerfully noticed in display sizes, and in some cases can even be distracting in text.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;2. Hinting&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;The display of text on screen, particularly on computers running a version of the Windows operating system, may be fine-tuned and improved with the help of size-specific instructions inside of the font file. These instructions are commonly referred to as &quot;hints.&quot; A TrueType font (or a TrueType-flavored OpenType font), is capable of including hinting. However, not every font manufacturer goes to the effort of optimizing the onscreen appearance of its fonts for Windows&amp;mdash;even those fonts specially created for use in text sizes.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Prensa-Three-Renderings.gif&quot; alt=&quot;Prensa in three different rendering environments&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;All of the text in the above image is shown in the same font: &lt;a href=&quot;http://www.fontbureau.com/fonts/Prensa/&quot;&gt;Prensa&lt;/a&gt;, set at 18 pixels. The lowest row shows this at actual size in three different onscreen rendering environments. In the enlargements, the top row shows a close-up of rendering in Safari on MacOS X, which ignores the hinting data in fonts. The second row shows rendering in Internet Explorer/WindowsXP (Grayscale only, for this sample). The third row is from a ClearType environment&amp;mdash;in this case, from Firefox on Windows7. Prensa is a typeface designed by Cyrus Highsmith at the Font Bureau; the &lt;a href=&quot;http://www.webtype.com/font/prensa-complete-family/&quot;&gt;Web font&lt;/a&gt; is served by the Webtype service.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Recommended Typefaces For Readability&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;Aside from the typefaces already mentioned in this article and its images, here is a small selection of faces that I personally enjoy at the moment. Even though lists of &quot;favorite&quot; typefaces are about as useful as lists of favorite songs or favorite colors, I am happy to pass my subjective recommendations along. No doubt that as new projects arise, my list of favorites is likely to change, too. I do think that these typefaces serve as great starting places. Some are also just from cool friends whose work I dig. Alongside each selection, I mention whether this choice is currently available for print only, or if there is a Web font version, as well. Don&amp;#8217;t forget: the typefaces that you pick in the end should depend on your projects, their audience, and the content at hand.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Arnhem-Type-Sample.png&quot; alt=&quot;Small sample of the Arnhem typeface&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://ourtype.com/#/try/pro-fonts/arnhem/&quot;&gt;Arnhem&lt;/a&gt; is a no-nonsense high-contrast oldstyle-serif face. It is a contemporary classic for newspaper and book setting, designed by Fred Smeijers and distributed via OurType. Available for print and &lt;a href=&quot;http://www.extensis.com/en/WebINK/fonts/font.jsp?family=Arnhem%20Pro&quot;&gt;Web&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Benton-Sans-Sample.png&quot; alt=&quot;Small sample of the Benton Sans typeface&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.fontbureau.com/fonts/BentonSans/&quot;&gt;Benton Sans&lt;/a&gt; is a Tobias Frere-Jones performance of Morris Fuller Benton's News Gothic genre. Designed for Font Bureau, it is not only a great typeface for small print in newspapers, but one of the best-rendering text faces for the Web as well. Available for print and &lt;a href=&quot;http://www.webtype.com/font/bentonsansre-family/&quot;&gt;Web&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Ibis-Type-Sample.png&quot; alt=&quot;Small sample of the Ibis typeface&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.fontbureau.com/fonts/IbisText/styles/&quot;&gt;Ibis&lt;/a&gt; is another Font Bureau typeface, designed by Cyrus Highsmith. This square serif family is also no stranger to cross-media text-setting. Ibis works just as well whether you use it in print or on screen. Available for print and &lt;a href=&quot;http://www.webtype.com/font/ibisre-family/&quot;&gt;Web&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Ingeborg-Type-Sample.png&quot; alt=&quot;Small sample of the Ingeborg typeface&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.typejockeys.com/fonts/Ingeborg&quot;&gt;Ingeborg&lt;/a&gt; is modern serif family from the Viennese type and lettering powerhouse, the Typejockeys. Like any proper family should, Ingeborg has optically-sized variants for text and display settings. The display versions of the typeface can get pretty far out, too! Designer Michael Hochleitner named this typeface after his mother. Available for print and &lt;a href=&quot;http://www.typejockeys.com/specimen/ingeborg.html&quot;&gt;Web&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Ludwig-Type-Sample.png&quot; alt=&quot;Small sample of the Ludwig typeface&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Fred Smeijer&amp;amp;srsquo;s work in contempory type design is so significant that he gets &lt;em&gt;two&lt;/em&gt; shout-outs in my list. His &lt;a href=&quot;https://ourtype.com/#/try/pro-fonts/ludwig/&quot;&gt;Ludwig&lt;/a&gt; type family takes a nod from 19th century grotesques, but he does not try to sanitize their quirky forms, as so many type designers had tried to do before him. Available for print and &lt;a href=&quot;http://www.extensis.com/en/WebINK/fonts/font.jsp?family=Ludwig%20Pro&quot;&gt;Web&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Malabar-Type-Sample.png&quot; alt=&quot;Small sample of the Malabar typeface&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This is one of the typefaces that I've designed. I'm somewhat partial to &lt;a href=&quot;http://www.linotype.com/521506/Malabar-family.html&quot;&gt;Malabar&lt;/a&gt;. Available for print and &lt;a href=&quot;http://webfonts.fonts.com/en-US/Project/ChooseFonts?fontQuery=malabar#keyword%3Dmalabar%26page%3D1&quot;&gt;Web&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/FF-Scala-Sans-Type-Sample.png&quot; alt=&quot;Small sample of the FF Scala Sans typeface&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Martin Majoor's &lt;a href=&quot;https://www.fontfont.com/fonts/scala-sans&quot;&gt;FF Scala Sans&lt;/a&gt; has been my top go-to typeface for almost 15 years. It mixes well with the serif FF Scala type, but it&amp;#8217;s also really great on its own. Available for print and Web.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/URW-Grotesk-Type-Sample.png&quot; alt=&quot;Small sample of the URW Grotesk typeface&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Of all the typefaces designed by Hermann Zapf over his long career, &lt;a href=&quot;http://www.myfonts.com/fonts/urw/grotesk/&quot;&gt;URW Grotesk&lt;/a&gt; is clearly the best. Unfortunately, it has been a little overlooked. URW Grotesk is a geometric sans, with a humanist twist that brings much more life into the letters than this genre usually allows for. Plus, the family is super big. Available for print and Web.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/03/Weiss-Antiqua-Type-Sample.png&quot; alt=&quot;Small sample of the Weiß-Antiqua Typeface&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Are you a DIY-fan? Do you like to print with letter press, whether you set your own type by hand, or have polymer plates made? Then check out the typefaces of Emil Rudolf Weiß! His &lt;a href=&quot;http://www.myfonts.com/fonts/urw/weiss-antiqua/&quot;&gt;Weiß-Antiqua&lt;/a&gt; is an eternal classic. Weiß may have passed away 70 years ago, but his work is still relevant. He was German, so his last name is sort of pronounced like &lt;em&gt;Vice,&lt;/em&gt; as in &lt;em&gt;Miami Vice.&lt;/em&gt; Available for print and Web.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;There are many factors that play a role in typeface selection. Aside from just browsing through the available fonts that they have, or fonts that could be newly licensed for a project, designers regularly spend considerable effort determining &lt;em&gt;the right typeface&lt;/em&gt; to complement a project's content, or the message at hand. Understanding some of the thoughts that go into the making of text typeface&amp;mdash;including how a typeface's letters are fitted to each other to determine a text's default underlying rhythm&amp;mdash;helps lead to better informed decisions regarding what types are indeed apt, and which faces are better suited for other sorts of jobs. After having read this article, I hope you feel more comfortable with this kind of decision making, and that you will know what to look for with a font in the future.&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Other Resources&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;For more information about choosing the right text fonts, you may be interested in the following books and Web resources:&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;1. Websites&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.opentype.info/blog/2010/08/14/better-web-typography-with-opentype-features/&quot;&gt;Better Web Typography With OpenType Features&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://fontfeed.com/archives/figuring-out-numerals/&quot;&gt;Figuring Out Numerals&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://fontfeed.com/archives/figuring-out-numerals-the-sequel/&quot;&gt;Figuring Out Numerals -- The Sequel&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2011/03/02/the-font-face-rule-and-useful-tricks&quot;&gt;The @Font-Face Rule And Useful Web Font Tricks&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.ilovetypography.com/2011/10/05/the-making-of-ff-tundra&quot;&gt;The Making Of FF Tundra&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.design-by-izo.com/2011/10/18/what-should-i-look-for-in-a-ui-typeface/&quot;&gt;What Should I Look For In A UI Typeface?&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://typographica.org/2010/on-typography/making-geometric-type-work/&quot;&gt;Making Geometric Type Work&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h4&gt;2. Books&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.hyphenpress.co.uk/books/978-0-907259-42-8&quot;&gt;Counterpunch: Making Typefaces In The Sixteenth Century, Designing Typefaces Now&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.markbattypublisher.com/books/typography-monographs-volume-2-size-specific-adjustments-to-type-designs-an-investigation-of-the-principles-guiding-the-design-of-optical-sizes/&quot;&gt;Size-Specific Adjustments To Type Designs&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.thinkingwithtype.com/&quot;&gt;Thinking With Type&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;: A big thank you to our fabulous Typography editor, &lt;a href=&quot;http://retinart.net/&quot;&gt;Alexander Charchar&lt;/a&gt;, for preparing this article.&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;(jvb) (il)&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;small&gt;© Dan Reynolds for &lt;a href=&quot;http://www.smashingmagazine.com&quot;&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;&lt;/p&gt;&lt;br /&gt;Source: http://www.smashingmagazine.com/2012/05/21/how-to-choose-the-right-face-for-a-beautiful-body/ Dan Reynolds</summary>
    </entry>
    <entry>
        <title>Three planets and the moon animation for Safari, Chrome and Firefox</title>
        <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6675"/>
        <created>2012-05-21T00:00:00+02:00</created>
        <issued>2012-05-21T00:00:00+02:00</issued>
        <modified>2012-05-21T00:00:00+02:00</modified>
        <id>http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6675</id>
        <author>
            <name>Stu Nicholls</name>
        </author>
        <summary>Using CSS3 transitions, transforms and keyframes to produce a 3D animation of the Earth, Mars, Jupiter and the Moon.&lt;br /&gt;Source: http://www.cssplay.co.uk/menu/cssplay-planets-moon.html Stu Nicholls</summary>
    </entry>
    <entry>
        <title>Learn to Test Your Pages Effectively</title>
        <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6674"/>
        <created>2012-05-21T10:00:22+02:00</created>
        <issued>2012-05-21T10:00:22+02:00</issued>
        <modified>2012-05-21T10:00:22+02:00</modified>
        <id>http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6674</id>
        <summary>&lt;p&gt;&lt;br /&gt;&lt;img class=&quot;alignright&quot; src=&quot;http://0.tqn.com/h/webdesign/1/3/L/l/1/browser-testing.jpg&quot; alt=&quot;Browsers you should be testing with&quot; /&gt;&lt;br /&gt;Testing your web pages in multiple browsers is critical to ensure that your pages work for as many people as possible. &lt;a href=&quot;http://clk.about.com/?zi=1/1hc&amp;#038;zu=http://webdesign.about.com/od/webdesignhtmlatoz/p/alexander-peev.htm&quot;&gt;Alexander Peev&lt;/a&gt; provides us with information on how to test, what to do when problems crop up during testing, and even how to deal with changes to the site after testing is complete. This is part two of the article &lt;a href=&quot;http://clk.about.com/?zi=1/1hc&amp;#038;zu=http://webdesign.about.com/od/testing/a/cross-browser-testing.htm&quot;&gt;Cross Browser Testing&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Read the full article:&lt;/strong&gt; &lt;a href=&quot;http://clk.about.com/?zi=1/1hc&amp;#038;zu=http://webdesign.about.com/od/testing/a/how-to-test-web-page-designs.htm&quot;&gt;How to Test Web Page Designs&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;&lt;/h3&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://clk.about.com/?zi=1/1hc&amp;#038;zu=http://webdesign.about.com//u/ua/browsers/what-web-browsers-do-you-use.htm&quot;&gt;What Browsers Do You Use?&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://clk.about.com/?zi=1/1hc&amp;#038;zu=http://webdesign.about.com/od/testing/a/cross-browser-testing.htm&quot;&gt;Cross Browser Testing&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://clk.about.com/?zi=1/1hc&amp;#038;zu=http://webdesign.about.com/od/testing/Testing_Your_Web_Pages.htm&quot;&gt;Testing Your Web Pages&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://clk.about.com/?zi=1/1hc&amp;#038;zu=http://webdesign.about.com/od/usability/a/aa072507.htm&quot;&gt;Graceful Degradation - Make Your Pages Work Even in Older Browsers&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Source: http://webdesign.about.com/b/2012/05/21/259733.htm </summary>
    </entry>
    <entry>
        <title>Web Design / HTML Interns Wanted</title>
        <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6673"/>
        <created>2012-05-21T01:23:34+02:00</created>
        <issued>2012-05-21T01:23:34+02:00</issued>
        <modified>2012-05-21T01:23:34+02:00</modified>
        <id>http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6673</id>
        <summary>&lt;p&gt;&lt;br /&gt;Are you looking for technical writing experience on HTML, web design, or XML? I am looking for one to three interns for the second half of 2012. Interns for this site will write one article (650-800 words) per month, July through December, on topics related to HTML, web design, web editors, and XML.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This internship is unpaid, but you can work from anywhere in the world and all your articles will appear with your byline along with an author profile describing you and your expertise.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;This internship is open to any current graduate or undergraduate students studying web design, computer science or a related discipline. Recent graduates are also invited to apply. You must know HTML and be able to write clear, accurate articles about HTML and web design.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;To apply: please send a cover letter, current resume, writing sample, and the URL for at least one web page you have built to &lt;a href=&quot;mailto:webdesign.guide@about.com.&quot; title=&quot;webdesign.guide@about.com.&quot;&gt;webdesign.guide@about.com.&lt;/a&gt; Please indicate what web editor you use for building web pages and what topics you would be most interested in writing about. Deadline for applications: June 15, 2012.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Source: http://webdesign.about.com/b/2012/05/20/web-design-html-interns-wanted.htm </summary>
    </entry>
    <entry>
        <title>Practical Prototype and script.aculo.us</title>
        <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6672"/>
        <created>2012-05-22T02:12:45+02:00</created>
        <issued>2012-05-22T02:12:45+02:00</issued>
        <modified>2012-05-22T02:12:45+02:00</modified>
        <id>http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6672</id>
        <summary>&lt;p&gt;&lt;a href=&quot;http://www.apress.com/book/view/1590599195&quot;&gt;&lt;img src=&quot;/assets/2008/8/11/9781590599198.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;(cross-posted from &lt;a href=&quot;http://prototypejs.org/2008/8/11/practical-prototype-and-scriptaculous&quot;&gt;the official Prototype blog&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I'm very happy to announce a new addition to the Prototype bookshelf: core committer &lt;a href=&quot;http://andrewdupont.net/&quot;&gt;Andrew Dupont&lt;/a&gt;'s &lt;a href=&quot;http://www.apress.com/book/view/1590599195&quot;&gt;Practical Prototype and script.aculo.us&lt;/a&gt; published by Apress.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Obviously, &lt;a href=&quot;http://www.apress.com/book/view/1590599195&quot;&gt;Practical Prototype and script.aculo.us&lt;/a&gt; covers all you need to know about the latest versions of Prototype and script.aculo.us. But it goes well beyond that. Andrew does an awesome job at setting the context and giving appropriate background information, so much so that you'll end up knowing not only the &lt;em&gt;how&lt;/em&gt; but also the &lt;em&gt;why&lt;/em&gt;. In the ruthless world of client-side development, that's serious asset!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.apress.com/book/view/1590599195&quot;&gt;Practical Prototype and script.aculo.us&lt;/a&gt; is a pleasure to read - the style is both straightforward &lt;em&gt;and&lt;/em&gt; witty - and should appeal to beginners and confirmed developers alike.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;If you want to try before you buy, you can always download a &lt;a href=&quot;http://www.apress.com/book/downloadfile/4037&quot;&gt;sample chapter&lt;/a&gt; or the &lt;a href=&quot;http://www.apress.com/book/downloadfile/4038&quot;&gt;table of content&lt;/a&gt; from the Apress website. Else, you can directly grab a hard copy and/or a pdf from the &lt;a href=&quot;http://www.apress.com/book/view/1590599195&quot;&gt;Apress website&lt;/a&gt; or from &lt;a href=&quot;http://www.amazon.com/Practical-Prototype-script-aculo-us-Experts-Development/dp/1590599195/&quot;&gt;Amazon&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;As always, happy Prototyping!&lt;/p&gt;&lt;br /&gt;Source:  </summary>
    </entry>
    <entry>
        <title>Practical Prototype and script.aculo.us</title>
        <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6671"/>
        <created>2012-05-20T02:30:45+02:00</created>
        <issued>2012-05-20T02:30:45+02:00</issued>
        <modified>2012-05-20T02:30:45+02:00</modified>
        <id>http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6671</id>
        <summary>&lt;p&gt;&lt;a href=&quot;http://www.apress.com/book/view/1590599195&quot;&gt;&lt;img src=&quot;/assets/2008/8/11/9781590599198.gif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;(cross-posted from &lt;a href=&quot;http://prototypejs.org/2008/8/11/practical-prototype-and-scriptaculous&quot;&gt;the official Prototype blog&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I'm very happy to announce a new addition to the Prototype bookshelf: core committer &lt;a href=&quot;http://andrewdupont.net/&quot;&gt;Andrew Dupont&lt;/a&gt;'s &lt;a href=&quot;http://www.apress.com/book/view/1590599195&quot;&gt;Practical Prototype and script.aculo.us&lt;/a&gt; published by Apress.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Obviously, &lt;a href=&quot;http://www.apress.com/book/view/1590599195&quot;&gt;Practical Prototype and script.aculo.us&lt;/a&gt; covers all you need to know about the latest versions of Prototype and script.aculo.us. But it goes well beyond that. Andrew does an awesome job at setting the context and giving appropriate background information, so much so that you'll end up knowing not only the &lt;em&gt;how&lt;/em&gt; but also the &lt;em&gt;why&lt;/em&gt;. In the ruthless world of client-side development, that's serious asset!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.apress.com/book/view/1590599195&quot;&gt;Practical Prototype and script.aculo.us&lt;/a&gt; is a pleasure to read - the style is both straightforward &lt;em&gt;and&lt;/em&gt; witty - and should appeal to beginners and confirmed developers alike.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;If you want to try before you buy, you can always download a &lt;a href=&quot;http://www.apress.com/book/downloadfile/4037&quot;&gt;sample chapter&lt;/a&gt; or the &lt;a href=&quot;http://www.apress.com/book/downloadfile/4038&quot;&gt;table of content&lt;/a&gt; from the Apress website. Else, you can directly grab a hard copy and/or a pdf from the &lt;a href=&quot;http://www.apress.com/book/view/1590599195&quot;&gt;Apress website&lt;/a&gt; or from &lt;a href=&quot;http://www.amazon.com/Practical-Prototype-script-aculo-us-Experts-Development/dp/1590599195/&quot;&gt;Amazon&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;As always, happy Prototyping!&lt;/p&gt;&lt;br /&gt;Source:  </summary>
    </entry>
    <entry>
        <title>CSS generated content and screen readers</title>
        <link rel="alternate" type="text/html" href="http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6670"/>
        <created>2012-05-18T11:25:27+02:00</created>
        <issued>2012-05-18T11:25:27+02:00</issued>
        <modified>2012-05-18T11:25:27+02:00</modified>
        <id>http://community.xoofoo.org/modules/actus_webmaster/view.article.php/6670</id>
        <author>
            <name>Roger Johansson</name>
        </author>
        <summary>&lt;p class=&quot;preamble&quot;&gt;As all widely used web browsers (unless you still consider IE7 as being widely used) now support &lt;a href=&quot;http://www.w3.org/TR/CSS21/generate.html#before-after-content&quot;&gt;the :before and :after pseudo-elements&lt;/a&gt; along with &lt;a href=&quot;http://www.w3.org/TR/CSS21/generate.html#content&quot;&gt;the content property&lt;/a&gt;, using those pseduo-elements has become more and more common.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;There are many clever CSS tricks they can be used for, like implementing a particular design without having to insert extra markup into your HTML. There is one catch though, and many developers seem unaware of this: several screen readers will speak content that is created this way. VoiceOver does (in both OS X and iOS). NVDA does when used with Firefox, though not with IE. I made a &lt;a href=&quot;http://www.456bereastreet.com/lab/generated-content/&quot;&gt;CSS generated content demo page&lt;/a&gt; so you can try it yourself.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.456bereastreet.com/archive/201205/css_generated_content_and_screen_readers/&quot;&gt;Read full post&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Posted in &lt;a href=&quot;http://www.456bereastreet.com/archive/categories/accessibility/&quot; rel=&quot;tag&quot;&gt;Accessibility&lt;/a&gt;, &lt;a href=&quot;http://www.456bereastreet.com/archive/categories/css/&quot; rel=&quot;tag&quot;&gt;CSS&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Copyright © &lt;a href=&quot;http://www.456bereastreet.com/&quot;&gt;Roger Johansson&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/DhR_G3Bf0THuSgnDYE5TUO9ZcIk/0/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/DhR_G3Bf0THuSgnDYE5TUO9ZcIk/0/di&quot; border=&quot;0&quot; ismap=&quot;true&quot;&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href=&quot;http://feedads.g.doubleclick.net/~a/DhR_G3Bf0THuSgnDYE5TUO9ZcIk/1/da&quot;&gt;&lt;img src=&quot;http://feedads.g.doubleclick.net/~a/DhR_G3Bf0THuSgnDYE5TUO9ZcIk/1/di&quot; border=&quot;0&quot; ismap=&quot;true&quot;&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;&lt;br /&gt;&lt;a href=&quot;http://feeds.feedburner.com/~ff/456bereastreet?a=MVWLI033vvI:j2t-ECI3LP4:I9og5sOYxJI&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/456bereastreet?d=I9og5sOYxJI&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/456bereastreet?a=MVWLI033vvI:j2t-ECI3LP4:bcOpcFrp8Mo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/456bereastreet?d=bcOpcFrp8Mo&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/456bereastreet?a=MVWLI033vvI:j2t-ECI3LP4:F7zBnMyn0Lo&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/456bereastreet?i=MVWLI033vvI:j2t-ECI3LP4:F7zBnMyn0Lo&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/456bereastreet?a=MVWLI033vvI:j2t-ECI3LP4:gIN9vFwOqvQ&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/456bereastreet?i=MVWLI033vvI:j2t-ECI3LP4:gIN9vFwOqvQ&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/456bereastreet/~4/MVWLI033vvI&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;&lt;br /&gt;Source: http://www.456bereastreet.com/archive/201205/css_generated_content_and_screen_readers/ Roger Johansson</summary>
    </entry>
</feed>
