diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2007-05-14 07:53:07 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2007-05-14 07:53:07 +0000 |
commit | 1e54ba144dd8ded33a443e0845d2016b7c9c9981 (patch) | |
tree | f43a329e1ec11dcf65167c2e1c005016356cbf01 /pango/pango-language.c | |
parent | 82e04d3696977d11611f9356707f9e00ea1e04d4 (diff) | |
download | pango-1e54ba144dd8ded33a443e0845d2016b7c9c9981.tar.gz |
Move pango_script_get_sample_language() from pango-script.c to
2007-05-14 Behdad Esfahbod <behdad@gnome.org>
* pango/pango-language.c (pango_script_get_sample_language):
* pango/pango-script.c: Move pango_script_get_sample_language()
from pango-script.c to pango-language.c. Fits better.
svn path=/trunk/; revision=2293
Diffstat (limited to 'pango/pango-language.c')
-rw-r--r-- | pango/pango-language.c | 134 |
1 files changed, 133 insertions, 1 deletions
diff --git a/pango/pango-language.c b/pango/pango-language.c index b04ad21a..7e5d11cc 100644 --- a/pango/pango-language.c +++ b/pango/pango-language.c @@ -428,7 +428,8 @@ script_for_lang_compare (gconstpointer key, * applications in most circumstances. * * Return value: %TRUE if @script is one of the scripts used - * to write @language, or if nothing is known about @language. + * to write @language, or if nothing is known about @language, + * %FALSE otherwise. * * Since: 1.4 **/ @@ -495,3 +496,134 @@ pango_language_includes_script (PangoLanguage *language, return FALSE; } + +/** + * pango_script_get_sample_language: + * @script: a #PangoScript + * + * Given a script, finds a language tag that is reasonably + * representative of that script. This will usually be the + * most widely spoken or used language written in that script: + * for instance, the sample language for %PANGO_SCRIPT_CYRILLIC + * is <literal>ru</literal> (Russian), the sample language + * for %PANGO_SCRIPT_ARABIC is <literal>ar</literal>. + * + * For some + * scripts, no sample language will be returned because there + * is no language that is sufficiently representative. The best + * example of this is %PANGO_SCRIPT_HAN, where various different + * variants of written Chinese, Japanese, and Korean all use + * significantly different sets of Han characters and forms + * of shared characters. No sample language can be provided + * for many historical scripts as well. + * + * Return value: a #PangoLanguage that is representative + * of the script, or %NULL if no such language exists. + * + * Since: 1.4 + **/ +PangoLanguage * +pango_script_get_sample_language (PangoScript script) +{ + /* Note that in the following, we want + * pango_language_includes_script() for the sample language + * to include the script, so alternate orthographies + * (Shavian for English, Osmanya for Somali, etc), typically + * have no sample language + */ + static const char sample_languages[][4] = { + "", /* PANGO_SCRIPT_COMMON */ + "", /* PANGO_SCRIPT_INHERITED */ + "ar", /* PANGO_SCRIPT_ARABIC */ + "hy", /* PANGO_SCRIPT_ARMENIAN */ + "bn", /* PANGO_SCRIPT_BENGALI */ + /* Used primarily in Taiwan, but not part of the standard + * zh-tw orthography */ + "", /* PANGO_SCRIPT_BOPOMOFO */ + "chr", /* PANGO_SCRIPT_CHEROKEE */ + "cop", /* PANGO_SCRIPT_COPTIC */ + "ru", /* PANGO_SCRIPT_CYRILLIC */ + /* Deseret was used to write English */ + "", /* PANGO_SCRIPT_DESERET */ + "hi", /* PANGO_SCRIPT_DEVANAGARI */ + "am", /* PANGO_SCRIPT_ETHIOPIC */ + "ka", /* PANGO_SCRIPT_GEORGIAN */ + "", /* PANGO_SCRIPT_GOTHIC */ + "el", /* PANGO_SCRIPT_GREEK */ + "gu", /* PANGO_SCRIPT_GUJARATI */ + "pa", /* PANGO_SCRIPT_GURMUKHI */ + "", /* PANGO_SCRIPT_HAN */ + "ko", /* PANGO_SCRIPT_HANGUL */ + "he", /* PANGO_SCRIPT_HEBREW */ + "ja", /* PANGO_SCRIPT_HIRAGANA */ + "kn", /* PANGO_SCRIPT_KANNADA */ + "ja", /* PANGO_SCRIPT_KATAKANA */ + "km", /* PANGO_SCRIPT_KHMER */ + "lo", /* PANGO_SCRIPT_LAO */ + "en", /* PANGO_SCRIPT_LATIN */ + "ml", /* PANGO_SCRIPT_MALAYALAM */ + "mn", /* PANGO_SCRIPT_MONGOLIAN */ + "my", /* PANGO_SCRIPT_MYANMAR */ + /* Ogham was used to write old Irish */ + "", /* PANGO_SCRIPT_OGHAM */ + "", /* PANGO_SCRIPT_OLD_ITALIC */ + "or", /* PANGO_SCRIPT_ORIYA */ + "", /* PANGO_SCRIPT_RUNIC */ + "si", /* PANGO_SCRIPT_SINHALA */ + "syr", /* PANGO_SCRIPT_SYRIAC */ + "ta", /* PANGO_SCRIPT_TAMIL */ + "te", /* PANGO_SCRIPT_TELUGU */ + "dv", /* PANGO_SCRIPT_THAANA */ + "th", /* PANGO_SCRIPT_THAI */ + "bo", /* PANGO_SCRIPT_TIBETAN */ + "iu", /* PANGO_SCRIPT_CANADIAN_ABORIGINAL */ + "", /* PANGO_SCRIPT_YI */ + "tl", /* PANGO_SCRIPT_TAGALOG */ + /* There are no ISO-636 language codes for the following + * Phillipino languages/scripts */ + "", /* PANGO_SCRIPT_HANUNOO */ + "", /* PANGO_SCRIPT_BUHID */ + "", /* PANGO_SCRIPT_TAGBANWA */ + + "", /* PANGO_SCRIPT_BRAILLE */ + "", /* PANGO_SCRIPT_CYPRIOT */ + "", /* PANGO_SCRIPT_LIMBU */ + /* Used for Somali (so) in the past */ + "", /* PANGO_SCRIPT_OSMANYA */ + /* The Shavian alphabet was designed for English */ + "", /* PANGO_SCRIPT_SHAVIAN */ + "", /* PANGO_SCRIPT_LINEAR_B */ + "", /* PANGO_SCRIPT_TAI_LE */ + "uga", /* PANGO_SCRIPT_UGARITIC */ + + "", /* PANGO_SCRIPT_NEW_TAI_LUE */ + "bug", /* PANGO_SCRIPT_BUGINESE */ + /* The original script for Old Church Slavonic (chu), later + * written with Cyrillic */ + "", /* PANGO_SCRIPT_GLAGOLITIC */ + /* Used for for Berber (ber), but Arabic script is more common */ + "", /* PANGO_SCRIPT_TIFINAGH */ + /* Syloti Nagri is used for Sylheti, no ISO 639 code */ + "", /* PANGO_SCRIPT_SYLOTI_NAGRI */ + "peo", /* PANGO_SCRIPT_OLD_PERSIAN */ + "", /* PANGO_SCRIPT_KHAROSHTHI */ + + "", /* PANGO_SCRIPT_UNKNOWN */ + "", /* PANGO_SCRIPT_BALINESE */ + "", /* PANGO_SCRIPT_CUNEIFORM */ + "", /* PANGO_SCRIPT_PHOENICIAN */ + "", /* PANGO_SCRIPT_PHAGS_PA */ + "nqo" /* PANGO_SCRIPT_NKO */ + }; + const char *sample_language; + + g_return_val_if_fail (script >= 0, NULL); + g_return_val_if_fail ((guint)script < G_N_ELEMENTS (sample_languages), NULL); + + sample_language = sample_languages[script]; + + if (!sample_language[0]) + return NULL; + else + return pango_language_from_string (sample_language); +} |