Kaydet (Commit) 3bd7d552 authored tarafından Khaled Hosny's avatar Khaled Hosny Kaydeden (comit) Fridrich Strba

Update internal HarfBuzz to 0.9.19

Change-Id: I520832508a8d419e394817a0e25949071928f612
Reviewed-on: https://gerrit.libreoffice.org/5478Reviewed-by: 's avatarFridrich Strba <fridrich@documentfoundation.org>
Tested-by: 's avatarFridrich Strba <fridrich@documentfoundation.org>
üst acd9f66f
......@@ -77,6 +77,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR)
$(call fetch_Optional,LIBATOMIC_OPS,LIBATOMIC_OPS_TARBALL) \
$(call fetch_Optional,CDR,CDR_TARBALL) \
$(call fetch_Optional,FIREBIRD,FIREBIRD_TARBALL) \
$(call fetch_Optional,HARFBUZZ,HARFBUZZ_TARBALL) \
$(call fetch_Optional,MSPUB,MSPUB_TARBALL) \
$(call fetch_Optional,MWAW,MWAW_TARBALL) \
$(call fetch_Optional,VISIO,VISIO_TARBALL) \
......@@ -114,7 +115,6 @@ $(WORKDIR)/download: $(BUILDDIR)/config_host.mk $(SRCDIR)/download.lst $(SRCDIR)
$(call fetch_Optional,GLIBC,$(GLIBC_TARBALL)) \
$(call fetch_Optional,HSQLDB,$(HSQLDB_TARBALL)) \
$(call fetch_Optional,HUNSPELL,$(HUNSPELL_TARBALL)) \
$(call fetch_Optional,HARFBUZZ,$(HARFBUZZ_TARBALL)) \
$(call fetch_Optional,HYPHEN,$(HYPHEN_TARBALL)) \
$(call fetch_Optional,ICU,$(ICU_TARBALL)) \
$(call fetch_Optional,ICU,$(ICU_51_LAYOUT_FIX_TARBALL)) \
......
......@@ -1246,6 +1246,7 @@ $(call gb_LinkTarget_use_package,$(1),\
)
$(call gb_LinkTarget_use_static_libraries,$(1),\
harfbuzz \
harfbuzz-icu \
)
endef
......
......@@ -8910,11 +8910,7 @@ AC_MSG_CHECKING([whether to enable HarfBuzz support])
if test "$_os" != "WINNT" -a "$_os" != "Darwin"; then
AC_MSG_RESULT([yes])
ENABLE_HARFBUZZ="TRUE"
if $PKG_CONFIG --atleast-version 0.9.18 harfbuzz; then
libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.18])
else
libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz >= 0.9.10])
fi
libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.18])
else
AC_MSG_RESULT([no])
fi
......
......@@ -10,6 +10,8 @@ FIREBIRD_MD5SUM := 21154d2004e025c8a3666625b0357bb5
export FIREBIRD_TARBALL := Firebird-2.5.2.26540-0.tar.bz2
# FIREBIRD_MD5SUM := b259c2d1c60a03bd104108405ae990a7
# export FIREBIRD_TARBALL := Firebird-3.0-alpha1-20130302.tar.gz
HARFBUZZ_MD5SUM := 9782581ee6ef972554772e84ca448131
export HARFBUZZ_TARBALL := harfbuzz-0.9.19.tar.bz2
LIBATOMIC_OPS_MD5SUM := c0b86562d5aa40761a87134f83e6adcf
export LIBATOMIC_OPS_TARBALL := libatomic_ops-7_2d.zip
......@@ -44,7 +46,6 @@ export GRAPHITE_TARBALL := f5ef3f7f10fa8c3542c6a085a233080b-graphite2-1.2.0.tgz
export GLIBC_TARBALL := 4a660ce8466c9df01f19036435425c3a-glibc-2.1.3-stub.tar.gz
export HSQLDB_TARBALL := 17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
export HUNSPELL_TARBALL := 3121aaf3e13e5d88dfff13fb4a5f1ab8-hunspell-1.3.2.tar.gz
export HARFBUZZ_TARBALL := c48827713e93539dc7285f9e86ffbdc5-harfbuzz-0.9.17.tar.bz2
export HYPHEN_TARBALL := a2f6010987e1c601274ab5d63b72c944-hyphen-2.8.4.tar.gz
export ICU_TARBALL := 6eef33b229d0239d654983028c9c7053-icu4c-51_1-src.tgz
export ICU_51_LAYOUT_FIX_TARBALL := 7650341b04f05ff2595bf064f3e41f41-icu-51-layout-fix-10107.tgz
......
......@@ -11,7 +11,10 @@ $(eval $(call gb_ExternalPackage_ExternalPackage,harfbuzz,harfbuzz))
$(eval $(call gb_ExternalPackage_use_external_project,harfbuzz,harfbuzz))
$(eval $(call gb_ExternalPackage_add_file,harfbuzz,lib/libharfbuzz.a,src/.libs/libharfbuzz.a))
$(eval $(call gb_ExternalPackage_add_files,harfbuzz,lib,\
src/.libs/libharfbuzz.a \
src/.libs/libharfbuzz-icu.a \
))
# vim: set noet sw=4 ts=4:
......@@ -25,8 +25,12 @@ $(call gb_ExternalProject_get_state_target,harfbuzz,build) :
--enable-static \
--disable-shared \
--with-pic \
--with-icu=yes \
--with-freetype=no \
--with-cairo=no \
--with-glib=no \
$(if $(filter YES,$(CROSS_COMPILING)),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
&& (cd $(EXTERNAL_WORKDIR)/src && $(MAKE) libharfbuzz.la) \
&& (cd $(EXTERNAL_WORKDIR)/src && $(MAKE)) \
)
# vim: set noet sw=4 ts=4:
......@@ -11,9 +11,4 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,harfbuzz))
$(eval $(call gb_UnpackedTarball_set_tarball,harfbuzz,$(HARFBUZZ_TARBALL),,harfbuzz))
$(eval $(call gb_UnpackedTarball_add_patches,harfbuzz, \
harfbuzz/harfbuzz.configure.patch.1 \
harfbuzz/harfbuzz-0.9.16-winxp.patch.1 \
))
# vim: set noet sw=4 ts=4:
--- harfbuzz-0.9.16/src/hb-uniscribe.cc 2013-04-19 03:36:12.000000000 +0200
+++ harfbuzz-0.9.16/src/hb-uniscribe.cc 2013-05-08 17:13:37.874217344 +0200
@@ -44,6 +44,10 @@
#endif
+typedef HRESULT WINAPI (*SIOT)(const WCHAR*,int,int,const SCRIPT_CONTROL*,const SCRIPT_STATE*,SCRIPT_ITEM*,OPENTYPE_TAG*,int*);
+typedef HRESULT WINAPI (*SSOT)(HDC,SCRIPT_CACHE*,SCRIPT_ANALYSIS*,OPENTYPE_TAG,OPENTYPE_TAG,int*,TEXTRANGE_PROPERTIES**,int,const WCHAR*,int,int,WORD*,SCRIPT_CHARPROP*,WORD*,SCRIPT_GLYPHPROP*,int*);
+typedef HRESULT WINAPI (*SPOT)(HDC,SCRIPT_CACHE*,SCRIPT_ANALYSIS*,OPENTYPE_TAG,OPENTYPE_TAG,int*,TEXTRANGE_PROPERTIES**,int,const WCHAR*,const WORD*,const SCRIPT_CHARPROP*,int,const WORD*,const SCRIPT_GLYPHPROP*,int,int*,GOFFSET*,ABC*);
+
/*
DWORD GetFontData(
__in HDC hdc,
@@ -240,6 +244,11 @@
hb_face_t *face = font->face;
hb_uniscribe_shaper_face_data_t *face_data = HB_SHAPER_DATA_GET (face);
hb_uniscribe_shaper_font_data_t *font_data = HB_SHAPER_DATA_GET (font);
+ SIOT siot = NULL;
+ SSOT ssot = NULL;
+ SPOT spot = NULL;
+ HMODULE hinstLib = GetModuleHandle("usp10.dll");
+
#define FAIL(...) \
HB_STMT_START { \
@@ -249,6 +258,15 @@
HRESULT hr;
+ if (hinstLib)
+ {
+ siot = (SIOT)GetProcAddress(hinstLib, "ScriptItemizeOpenType");
+
+ ssot = (SSOT)GetProcAddress(hinstLib, "ScriptShapeOpenType");
+
+ spot = (SPOT)GetProcAddress(hinstLib, "ScriptPlaceOpenType");
+ }
+
retry:
unsigned int scratch_size;
@@ -291,6 +309,7 @@
ALLOCATE_ARRAY (WORD, glyphs, glyphs_size);
ALLOCATE_ARRAY (SCRIPT_GLYPHPROP, glyph_props, glyphs_size);
+ ALLOCATE_ARRAY (SCRIPT_VISATTR, vis_attr, glyphs_size);
ALLOCATE_ARRAY (int, advances, glyphs_size);
ALLOCATE_ARRAY (GOFFSET, offsets, glyphs_size);
ALLOCATE_ARRAY (uint32_t, vis_clusters, glyphs_size);
@@ -312,7 +331,8 @@
bidi_state.uBidiLevel = HB_DIRECTION_IS_FORWARD (buffer->props.direction) ? 0 : 1;
bidi_state.fOverrideDirection = 1;
- hr = ScriptItemizeOpenType (wchars,
+ if (siot && ssot && spot) {
+ hr = siot (wchars,
chars_len,
MAX_ITEMS,
&bidi_control,
@@ -320,6 +340,16 @@
items,
script_tags,
&item_count);
+ }
+ else {
+ hr = ScriptItemize(wchars,
+ chars_len,
+ MAX_ITEMS,
+ &bidi_control,
+ &bidi_state,
+ items,
+ &item_count);
+ }
if (unlikely (FAILED (hr)))
FAIL ("ScriptItemizeOpenType() failed: 0x%08xL", hr);
@@ -344,7 +374,8 @@
unsigned int item_chars_len = items[i + 1].iCharPos - chars_offset;
retry_shape:
- hr = ScriptShapeOpenType (font_data->hdc,
+ if (siot && ssot && spot) {
+ hr = ssot (font_data->hdc,
&font_data->script_cache,
&items[i].a,
script_tags[i],
@@ -361,6 +392,20 @@
glyphs + glyphs_offset,
glyph_props + glyphs_offset,
(int *) &glyphs_len);
+ }
+ else {
+ hr = ScriptShape (font_data->hdc,
+ &font_data->script_cache,
+ wchars + chars_offset,
+ item_chars_len,
+ glyphs_size - glyphs_offset,
+ &items[i].a,
+ /* out */
+ glyphs + glyphs_offset,
+ log_clusters + chars_offset,
+ vis_attr + glyphs_offset,
+ (int *) &glyphs_len);
+ }
if (unlikely (items[i].a.fNoGlyphIndex))
FAIL ("ScriptShapeOpenType() set fNoGlyphIndex");
@@ -386,7 +431,8 @@
for (unsigned int j = chars_offset; j < chars_offset + item_chars_len; j++)
log_clusters[j] += glyphs_offset;
- hr = ScriptPlaceOpenType (font_data->hdc,
+ if (siot && ssot && spot) {
+ hr = spot (font_data->hdc,
&font_data->script_cache,
&items[i].a,
script_tags[i],
@@ -405,6 +451,19 @@
advances + glyphs_offset,
offsets + glyphs_offset,
NULL);
+ }
+ else {
+ hr = ScriptPlace (font_data->hdc,
+ &font_data->script_cache,
+ glyphs + glyphs_offset,
+ glyphs_len,
+ vis_attr + glyphs_offset,
+ &items[i].a,
+ /* out */
+ advances + glyphs_offset,
+ offsets + glyphs_offset,
+ NULL);
+ }
if (unlikely (FAILED (hr)))
FAIL ("ScriptPlaceOpenType() failed: 0x%08xL", hr);
diff -ur harfbuzz.org/configure harfbuzz/configure
--- harfbuzz.org/configure 2013-04-22 20:45:32.738213297 +0200
+++ harfbuzz/configure 2013-04-22 20:46:56.334209801 +0200
@@ -16813,7 +16885,7 @@
-have_hb_old=true
+have_hb_old=false
if $have_hb_old; then
$as_echo "#define HAVE_HB_OLD 1" >>confdefs.h
@@ -16829,7 +16901,7 @@
-have_ucdn=true
+have_ucdn=false
if $have_ucdn; then
$as_echo "#define HAVE_UCDN 1" >>confdefs.h
@@ -16914,7 +16986,7 @@
GLIB_LIBS=$pkg_cv_GLIB_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- have_glib=true
+ have_glib=false
fi
if $have_glib; then
@@ -16999,7 +17071,7 @@
GOBJECT_LIBS=$pkg_cv_GOBJECT_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- have_gobject=true
+ have_gobject=false
fi
if $have_gobject; then
@@ -17087,7 +17159,7 @@
CAIRO_LIBS=$pkg_cv_CAIRO_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- have_cairo=true
+ have_cairo=false
fi
if $have_cairo; then
@@ -17172,7 +17244,7 @@
CAIRO_FT_LIBS=$pkg_cv_CAIRO_FT_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- have_cairo_ft=true
+ have_cairo_ft=false
fi
if $have_cairo_ft; then
@@ -17457,7 +17529,7 @@
ICU_LE_LIBS=$pkg_cv_ICU_LE_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- have_icu_le=true
+ have_icu_le=false
fi
if test "$have_icu_le" != "true"; then
if test -n "$ac_tool_prefix"; then
@@ -17555,12 +17555,12 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICU_LE by using icu-config fallback" >&5
$as_echo_n "checking for ICU_LE by using icu-config fallback... " >&6; }
if test "$ICU_CONFIG" != "no" && "$ICU_CONFIG" --version >/dev/null; then
- have_icu_le=true
+ have_icu_le=false
# We don't use --cflags as this gives us a lot of things that we don't
# necessarily want, like debugging and optimization flags
# See man (1) icu-config for more info.
ICU_LE_CFLAGS=`$ICU_CONFIG --cppflags`
- ICU_LE_LIBS=`$ICU_CONFIG --ldflags-searchpath --ldflags-libsonly --ldflags-layout`
+ ICU_LE_LIBS=`$ICU_CONFIG --ldflags-searchpath --ldflags-libsonly --ldflags-layout | tr "\n" " "`
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -17654,7 +17654,7 @@
GRAPHITE2_LIBS=$pkg_cv_GRAPHITE2_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- have_graphite=true
+ have_graphite=false
fi
if $have_graphite; then
@@ -17740,7 +17812,7 @@
FREETYPE_LIBS=$pkg_cv_FREETYPE_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- have_freetype=true
+ have_freetype=false
fi
if $have_freetype; then
@@ -17825,7 +17897,7 @@
ac_fn_c_check_type "$LINENO" "CTFontRef" "ac_cv_type_CTFontRef" "#include <ApplicationServices/ApplicationServices.h>
"
if test "x$ac_cv_type_CTFontRef" = xyes; then :
- have_coretext=true
+ have_coretext=false
else
have_coretext=false
fi
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment