NOTO, as in No Tofu

First of all, I love tofu.

But when you see it on a computer screen, it’s not so nice.

Like those two rows of “tofu-shaped” objects shown below that indicate a missing font:


Tofu used to be a much bigger problem ten years ago, back when fonts are strictly aligned with different character sets and computers shipped with very limited font families. Today, computers and phones ship with system fonts that can natively display a significant number of languages.

Nevertheless, as websites support more and more languages, the need for fully world-ready fonts will only grow.

So it’s nice to see Google investing in creating open-source font faces to support the world’s languages.

This font family is called NOTO (as in no tofu).


A package of all 100+ fonts weighs more than 470MB.

Instead, you might pick and choose which language/script you wish to support:


This post is brought to you by the Multilingual Eye Chart.


Do your web developers know about Globalize?

Screen Shot 2015-04-23 at 4.55.59 PM

Today, the JQuery Foundation has announced availability of Globalize 1.0:

Globalize provides developers with always up-to-date global number formatting and parsing, date and time formatting and parsing, currency formatting, and message formatting. Based on the Unicode Consortium standards and specifications, Globalize uses the Common Locale Data Repository (CLDR), the most extensive and widely-used standard repository of locale data. With Globalize, all developers can quickly reach global markets with confidence that their apps and sites will always have the most accurate and up-to-date locale data available.

I published a book a few years back on an early iteration of Globalize. I’m excited to see  jQuery moving forward with Globalize, as it has improved not only the lives of anyone who must internationalize and localize web apps and websites, but also the experience of web users around the world. Because users benefit from seeing dates and times and currencies displayed as they expect them to be displayed for their respective cultures — and displayed consistently across web applications.

If your developers aren’t aware of Globalize, point them to it today.

Designing a multi-script typeface


An interesting article on the development of a new multi-script font.

To create the font, four designers worked on a script each: Latin, Greek, Cyrillic, and Arabic.

The end result is a font that provides a consistent look and feel across good range of languages.

I like this quote from the lead designer:

To draw a parallel with the world of music, I see ourselves as four musicians who improvised together on a musical theme fixed by one of them – this implies a lot of freedom, but also a lot of effort, listening to the others and building upon their improvisations.”

In fact, the decentralized model is similar in many ways to that of successful web and software globalization projects. You need local-language experts to play an active role early on in the process, while still sharing global goals.



Q&A with Jukka Korpela, author of Going Global with JavaScript and Globalize.js

What’s the most important thing you want JavaScript developers to learn from this book?
By making use of free tools such as Globalize.js, developers can easily adapt their applications for new markets with a minimal amount of work. For example, adapting the format of a date or number for a different country requires a single library function call.

This book also goes into more complex operations and functions, but it’s important that developers first get a feel for simple data format localization.

What is Globalize.js and why is it so valuable for developing global software?
Globalize is a standalone, open source JavaScript library that help you to globalize your JavaScript code. Globalize lets you adapt your code to work with a multitude of human languages. You need not know the languages or their conventions and you do not need to manually code the notations.

Globalize includes locale data for more than 300 locales, including presentation of numbers, date notations, calendars, time zones. It is easily modifiable and extensible to cover new locales.

You devote a chapter to the finer points of Unicode. Why is it so important for developers to understand Unicode?
Unicode has become widely used on web pages, in applications, and in databases, but most IT professionals still have a rather limited understanding of it. The generality of Unicode—covering more than 100,000 characters from all kinds of writing systems—has its price: complexities and practical issues. These issues are often encountered in common operations such as string comparison and case conversions.

You’re based in Finland. What common mistakes do you see made by developers who have localized software for your locale?
The most common mistake is partial localization: a page or application appears to be in Finnish or Swedish, but on a closer examination, you’ll see English notations for data items. Even the most current software may use a date notation like 11/6/2012, which is not only incorrect by our language rules, but also ambiguous.

Often, menus contain a mix of Finnish and English items. You might also see a dropdown list of countries of the world, with names in Finnish but in an odd order, usually based on English-language alphabetization rules.

Mistranslations are not rare and may cause real harm, particularly in menus, buttons, and labels for form fields. An expert may understand the cause of the problem—someone has translated a short fragment of text with no idea of the context−but average users are simply confused and may revert to use the English-language site as a lesser of two evils.

HTML5 proposes new input attributes, such as date and number. But these elements pose challenges that many developers might not be aware of. Can you explain why?
Browser support is still limited, inconstant, and partly experimental. But in addition to that, these elements have not yet been defined and implemented with globalization in mind. They may be implemented using browser-driven localization, using the browser’s locale. Adequate localization would reflect the locale of the content, the web page.

These issues can be partly addressed using code that avoids improper localization. But although the new elements are promising in the long run, they should be regarded rather as interesting features to be tested and used in controlled situations, rather than used in normal production.

Going Global by JavaScript and Globalize.js

NOTE: We also offer an enterprise price for a PDF copy of the book to be shared across your company.