summaryrefslogtreecommitdiff
path: root/pango/pango-ot-tag.c
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2007-05-14 04:02:58 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2007-05-14 04:02:58 +0000
commit5268099b137dee60aacc04cbeb5051242c35b256 (patch)
treec974955ad45cabb06fd7166f7507c1ba8541e547 /pango/pango-ot-tag.c
parent9f09571a932149e77ceeb7ccec8bd7bdea6aac4a (diff)
downloadpango-5268099b137dee60aacc04cbeb5051242c35b256.tar.gz
Part of Bug 325714 – Pango should respect $LANGUAGE
2007-05-13 Behdad Esfahbod <behdad@gnome.org> Part of Bug 325714 – Pango should respect $LANGUAGE * pango/pango-ot.h: * pango/pango-ot-private.h: * pango/pango-ot-tag.c (pango_ot_tag_from_script), (pango_ot_tag_from_language): * pango/pango-ot-info.c (pango_ot_info_find_script), (pango_ot_info_find_language), (pango_ot_info_find_feature), (pango_ot_info_list_languages), (pango_ot_info_list_features): * pango/pango-ot-ruleset.c (pango_ot_ruleset_new), (pango_ot_ruleset_new_for), (pango_ot_ruleset_add_feature), (pango_ot_ruleset_maybe_add_feature), (pango_ot_ruleset_maybe_add_features): Add new engine API: PANGO_OT_NO_FEATURE PANGO_OT_NO_SCRIPT PANGO_OT_TAG_DEFAULT_SCRIPT PANGO_OT_TAG_DEFAULT_LANGUAGE pango_ot_ruleset_new_for() pango_ot_ruleset_maybe_add_feature() pango_ot_ruleset_maybe_add_features() Using pango_ot_ruleset_new_for() and pango_ot_ruleset_maybe_add_features() drastically simplifies ruleset building in modules, and does correct script and language selection too. Modules need to be updated to use it though. * docs/pango-docs.sgml: * docs/pango-sections.txt: * docs/tmpl/opentype.sgml: Update. svn path=/trunk/; revision=2284
Diffstat (limited to 'pango/pango-ot-tag.c')
-rw-r--r--pango/pango-ot-tag.c49
1 files changed, 39 insertions, 10 deletions
diff --git a/pango/pango-ot-tag.c b/pango/pango-ot-tag.c
index c3d853d4..eb6a19d3 100644
--- a/pango/pango-ot-tag.c
+++ b/pango/pango-ot-tag.c
@@ -106,21 +106,21 @@ static const char ot_scripts[][4] = {
* The %PANGO_SCRIPT_COMMON, %PANGO_SCRIPT_INHERITED, and
* %PANGO_SCRIPT_UNKNOWN scripts are mapped to the OpenType
* 'DFLT' script tag that is also defined as
- * %PANGO_OT_DEFAULT_SCRIPT.
+ * %PANGO_OT_TAG_DEFAULT_SCRIPT.
*
* Note that multiple #PangoScript values may map to the same
* OpenType script tag. In particular, %PANGO_SCRIPT_HIRAGANA
* and %PANGO_SCRIPT_KATAKANA both map to the OT tag 'kana'.
*
* Return value: #PangoOTTag corresponding to @script or
- * %PANGO_OT_DEFAULT_SCRIPT if none found.
+ * %PANGO_OT_TAG_DEFAULT_SCRIPT if none found.
*
* Since: 1.18
**/
PangoOTTag
pango_ot_tag_from_script (PangoScript script)
{
- g_return_val_if_fail (script >= 0 && (guint)script < G_N_ELEMENTS (ot_scripts), PANGO_OT_DEFAULT_SCRIPT);
+ g_return_val_if_fail (script >= 0 && (guint)script < G_N_ELEMENTS (ot_scripts), PANGO_OT_TAG_DEFAULT_SCRIPT);
return GUINT32_FROM_BE (* (PangoOTTag *) ot_scripts[script]);
}
@@ -189,7 +189,9 @@ static const LangTag ot_languages[] = {
{"ay", "AYM "},
{"az", "AZE "},
{"ba", "BSH "},
+ {"bal", "BLI "},
{"bem", "BEM "},
+ {"ber", "BBR "},
{"bg", "BGR "},
{"bho", "BHO "},
{"bik", "BIK "},
@@ -198,6 +200,7 @@ static const LangTag ot_languages[] = {
{"bn", "BEN "},
{"bo", "TIB "},
{"br", "BRE "},
+ {"brh", "BRH "},
{"ca", "CAT "},
{"ce", "CHE "},
{"ceb", "CEB "},
@@ -212,18 +215,22 @@ static const LangTag ot_languages[] = {
{"cy", "WEL "},
{"da", "DAN "},
{"dar", "DAR "},
+ {"de", "DEU "},
{"din", "DNK "},
{"doi", "DGR "},
+ {"dsb", "LSB "},
{"dv", "DHV "},
{"dz", "DZN "},
{"ee", "EWE "},
{"efi", "EFI "},
+ {"el", "ELL "},
{"en", "ENG "},
{"eo", "NTO "},
{"es", "ESP "},
{"et", "ETI "},
{"eu", "EUQ "},
{"fa", "FAR "},
+ {"ff", "FUL "},
{"fi", "FIN "},
{"fil", "PIL "},
{"fj", "FJI "},
@@ -231,6 +238,7 @@ static const LangTag ot_languages[] = {
{"fon", "FON "},
{"fr", "FRA "},
{"fur", "FRL "},
+ {"fy", "FRI "},
{"ga", "IRI "},
{"gaa", "GAD "},
{"gd", "GAE "},
@@ -249,6 +257,8 @@ static const LangTag ot_languages[] = {
{"hy", "HYE "},
{"id", "IND "},
{"ig", "IBO "},
+ {"inc", "SRK "},
+ {"ine", "KHW "},
{"inh", "ING "},
{"is", "ISL "},
{"it", "ITA "},
@@ -262,6 +272,7 @@ static const LangTag ot_languages[] = {
{"ki", "KIK "},
{"kk", "KAZ "},
{"kl", "GRN "},
+ {"km", "KHM "},
{"kn", "KAN "},
{"ko", "KOR "},
{"kok", "KOK "},
@@ -273,15 +284,23 @@ static const LangTag ot_languages[] = {
{"ku", "KUR "},
{"kum", "KUM "},
{"ky", "KIR "},
+ {"la", "LAT "},
+ {"lad", "JUD "},
+ {"lbj", "LDK "},
{"ln", "LIN "},
+ {"lo", "LAO "},
{"lt", "LTH "},
+ {"lv", "LVI "},
{"mai", "MTH "},
{"mdf", "MOK "},
{"men", "MDE "},
{"mg", "MLG "},
{"mi", "MRI "},
+ {"mkh", "KUY "},
+ {"ml", "MLR "},
{"mnc", "MCH "},
{"mni", "MNI "},
+ {"mnk", "MND "},
{"mo", "MOL "},
{"mr", "MAR "},
{"ms", "MLY "},
@@ -289,10 +308,11 @@ static const LangTag ot_languages[] = {
{"mwr", "MAW "},
{"my", "BRM "},
{"myv", "ERZ "},
- {"nl", "FLE "},
+ {"ne", "NEP "},
{"nl", "NLD "},
{"no", "NOR "},
{"ny", "CHI "},
+ {"oc", "PRO "},
{"om", "ORO "},
{"or", "ORI "},
{"os", "OSS "},
@@ -326,7 +346,10 @@ static const LangTag ot_languages[] = {
{"sv", "SVE "},
{"sw", "SWK "},
{"syr", "SYR "},
+ {"ta", "TAM "},
+ {"te", "TEL "},
{"tg", "TAJ "},
+ {"th", "THA "},
{"ti", "TGY "},
{"tig", "TGR "},
{"tk", "TKM "},
@@ -344,6 +367,7 @@ static const LangTag ot_languages[] = {
{"wo", "WLF "},
{"xal", "KLM "},
{"xh", "XHS "},
+ {"yi", "JII "},
{"yo", "YBA "},
{"zh-cn", "ZHS "},
{"zh-hk", "ZHH "},
@@ -377,19 +401,24 @@ lang_compare_first_component (gconstpointer pa,
* Finds the OpenType language-system tag best describing @language.
*
* Return value: #PangoOTTag best matching @language or
- * %PANGO_OT_DEFAULT_LANGUAGE if none found.
+ * %PANGO_OT_TAG_DEFAULT_LANGUAGE if none found.
*
* Since: 1.18
**/
PangoOTTag
pango_ot_tag_from_language (PangoLanguage *language)
{
- const char *lang_str = pango_language_to_string (language);
+ const char *lang_str;
+ LangTag *lang_tag;
+
+ g_return_val_if_fail (language != NULL, PANGO_OT_TAG_DEFAULT_LANGUAGE);
+
+ lang_str = pango_language_to_string (language);
/* find a language matching in the first component */
- LangTag *lang_tag = bsearch (lang_str, ot_languages,
- G_N_ELEMENTS (ot_languages), sizeof (LangTag),
- lang_compare_first_component);
+ lang_tag = bsearch (lang_str, ot_languages,
+ G_N_ELEMENTS (ot_languages), sizeof (LangTag),
+ lang_compare_first_component);
/* we now need to find the best language matching */
if (lang_tag)
@@ -421,7 +450,7 @@ pango_ot_tag_from_language (PangoLanguage *language)
if (lang_tag)
return GUINT32_FROM_BE (* (PangoOTTag *) lang_tag->tag);
- return PANGO_OT_DEFAULT_LANGUAGE;
+ return PANGO_OT_TAG_DEFAULT_LANGUAGE;
}
/**