[pango] [fc] Use FcWeightTo/FromOpenType() if available
- From: Behdad Esfahbod <behdad src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango] [fc] Use FcWeightTo/FromOpenType() if available
- Date: Sat, 26 Jul 2014 20:40:56 +0000 (UTC)
commit 40f5c151e911464cb9da569d8ceee88f52fcbfbf
Author: Behdad Esfahbod <behdad behdad org>
Date: Sat Jul 26 16:27:59 2014 -0400
[fc] Use FcWeightTo/FromOpenType() if available
This makes the weight mapping a continuous, as ooposed to a step function.
Last piece of Bug 733764 - Support more / free font weights
configure.ac | 6 ++++++
pango/pangofc-fontmap.c | 8 ++++++++
2 files changed, 14 insertions(+), 0 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 34e0eb9..77c6291 100644
--- a/configure.ac
+++ b/configure.ac
@@ -224,6 +224,12 @@ have_fontconfig=false
if $have_harfbuzz ; then
PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.10.91, have_fontconfig=true, AC_MSG_RESULT([no]))
fi
+if $have_fontconfig ; then
+ pango_save_libs=$LIBS
+ LIBS="$LIBS $FONTCONFIG_LIBS"
+ AC_CHECK_FUNCS(FcWeightFromOpenType)
+ LIBS=$pango_save_libs
+fi
#
# Checks for FreeType
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c
index 6da934c..e703458 100644
--- a/pango/pangofc-fontmap.c
+++ b/pango/pangofc-fontmap.c
@@ -1375,6 +1375,9 @@ pango_fc_font_map_list_families (PangoFontMap *fontmap,
static int
pango_fc_convert_weight_to_fc (PangoWeight pango_weight)
{
+#ifdef HAVE_FCWEIGHTFROMOPENTYPE
+ return FcWeightFromOpenType (pango_weight);
+#else
if (pango_weight <= (PANGO_WEIGHT_THIN + PANGO_WEIGHT_ULTRALIGHT) / 2)
return FC_WEIGHT_THIN;
else if (pango_weight <= (PANGO_WEIGHT_ULTRALIGHT + PANGO_WEIGHT_LIGHT) / 2)
@@ -1399,6 +1402,7 @@ pango_fc_convert_weight_to_fc (PangoWeight pango_weight)
return FC_WEIGHT_BLACK;
else
return FC_WEIGHT_EXTRABLACK;
+#endif
}
static int
@@ -2061,6 +2065,9 @@ pango_fc_font_map_shutdown (PangoFcFontMap *fcfontmap)
static PangoWeight
pango_fc_convert_weight_to_pango (int fc_weight)
{
+#ifdef HAVE_FCWEIGHTFROMOPENTYPE
+ return FcWeightToOpenType (fc_weight);
+#else
if (fc_weight <= (FC_WEIGHT_THIN + FC_WEIGHT_EXTRALIGHT) / 2)
return PANGO_WEIGHT_THIN;
else if (fc_weight <= (FC_WEIGHT_EXTRALIGHT + FC_WEIGHT_LIGHT) / 2)
@@ -2085,6 +2092,7 @@ pango_fc_convert_weight_to_pango (int fc_weight)
return PANGO_WEIGHT_HEAVY;
else
return PANGO_WEIGHT_ULTRAHEAVY;
+#endif
}
static PangoStyle
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]