Chun-wei Fan
19256bef9d
hb-private.hh: Add fallback implementation for round()
...
For pre-C99 compilers that do not support round(), we need to have a
simplistic implementation for it, when it is not detected during build
configuration, either via CMake or autotools, by using floor() and
ceil(), which are provided in the pre-C99 compilers.
Please see discussion at commit 86a0ac2
for more details for re-adding
this patch.
2018-03-23 15:52:33 -07:00
Behdad Esfahbod
86a0ac284f
Revert "hb-private.hh: Add fallback implementation for round()"
...
This reverts commit b9dcbb1f83
.
This is gross. Should be only done if a specific macro is defined. Not the other way
around. This fails my build as autotools companions where not added anyway.
2018-03-15 07:47:02 -07:00
Chun-wei Fan
b9dcbb1f83
hb-private.hh: Add fallback implementation for round()
...
Add a simplistic round() implementation for our purposes, used when the
compiler does not support round() directly.
2018-03-13 20:17:52 +08:00
Behdad Esfahbod
97a7110215
Fix BitScanForward() usage
...
Should fix Win64 bot.
2018-02-18 10:50:24 -08:00
Behdad Esfahbod
cd11107bb4
Another bitops fallback fix
...
I'm confident that all bugs are hashed out now.
2018-02-16 18:28:58 -08:00
Behdad Esfahbod
4e517ecb6b
Another bitops fallback impl fix
2018-02-16 18:20:12 -08:00
Behdad Esfahbod
6a91a2eb04
Fix wide bitops implemenetation
2018-02-16 17:49:41 -08:00
Behdad Esfahbod
6d5c0bf8b1
Fix bitops fallback impl
2018-02-16 17:33:26 -08:00
Behdad Esfahbod
82eb1dac16
Flesh out other bit ops some more for 128bit as well
2018-02-16 16:52:09 -08:00
Behdad Esfahbod
864a2dddae
Clean up bit functions
...
Compile all code-paths possible, to better catch errors.
Also enable MSVC ones on mingw which seems to support them.
2018-02-16 16:09:38 -08:00
Behdad Esfahbod
978ace6fbb
Improve _hb_popcount()
...
Support 128bit type.
2018-02-16 16:08:45 -08:00
Arkady Shapkin
d37310ac5d
Remove checking macros __OPTIMIZE__ for MSVC
...
Visual C++ compiler doesn't define macros __OPTIMIZE__ when optimizations enabled
2018-02-16 12:40:11 -08:00
Ebrahim Byagowi
139c9928f6
Fix hb-private.hh compile issue
2018-02-16 13:27:26 +03:30
Arkady Shapkin
6c10328eb8
Use _BitScanForward and _BitScanReverse on MSVC
2018-02-15 14:31:25 -08:00
Behdad Esfahbod
90d1c740c3
Add MSVC to no-visibility list
2018-02-11 19:08:59 -08:00
Behdad Esfahbod
0db6c6f214
Add Sun compiler to no-visibility as well
...
Fixes https://github.com/harfbuzz/harfbuzz/pull/776
2018-02-11 18:29:01 -08:00
Behdad Esfahbod
cd32177a32
Try at fixing multiple-definition of NullPool
...
If we don't have visibility, make NullPool static.
2018-02-11 19:36:00 -06:00
Behdad Esfahbod
af274507c4
Minor
2018-02-10 13:25:49 -06:00
Behdad Esfahbod
570d523761
[subset] Merge remote-tracking branch 'googlefonts/master'
2018-02-10 13:24:22 -06:00
Rod Sheeter
4816064c0e
add missing return
2018-02-09 17:14:37 -08:00
Behdad Esfahbod
8cef3a6199
Try fixing build with Sun Studio
...
Trying to fix:
https://circleci.com/gh/harfbuzz/harfbuzz/6635
Also part of:
https://github.com/harfbuzz/harfbuzz/issues/630
2018-02-09 16:04:23 -06:00
Rod Sheeter
59c658c8d5
capture codepoints sorted so we can use them for cmap later. one day we will have a map
2018-02-08 19:22:47 -08:00
Behdad Esfahbod
931f8b7eb5
Fix another thinko
2018-02-07 21:42:03 -06:00
Behdad Esfahbod
c479a59988
[subset] Assemble font
2018-02-07 21:26:04 -06:00
Behdad Esfahbod
b87cbe2bec
Try fixing build for platforms that have no visibility attributes
2018-02-07 14:11:26 -05:00
Behdad Esfahbod
6804b61d2e
[subset] Add hb_subset_face
...
It's a hb_face_t that has add_table() and in the future knows how to
compile itself into a font blob.
2018-02-07 13:47:35 -05:00
Behdad Esfahbod
f41b92134a
Fix fallthrough compiler warning with gcc >= 7
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/755
2018-02-05 19:51:09 -05:00
Bruce Mitchener
e8859fca3e
Enable use of atexit() on macOS and related platforms.
...
The atexit() man page indicates that this is expected to behave
in the expected way on unloading of shared libraries.
2018-02-03 19:20:40 -08:00
Behdad Esfahbod
ca42d96129
[aat] Implement RearrangementSubtable
2018-01-11 10:43:30 +01:00
Ebrahim Byagowi
5dbbd0fdb9
Move the #define of _GNU_SOURCE to the top of hb-private.hh ( #697 )
...
This fixes the build on Cygwin.
2018-01-11 12:33:22 +03:30
Behdad Esfahbod
7cdd6ab068
Round, instead of floor, when applying variations
...
Hoping this would fix remaining text-rendering-tests failures,
but so far no luck.
2018-01-10 04:44:33 +01:00
Behdad Esfahbod
be59f3cbf4
Silence unused-variables warning on MSVC
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/635
2017-12-05 09:01:28 -08:00
ebraminio
7c6937e7c7
Move all references of old url to the new address ( #622 )
2017-11-20 14:49:22 -05:00
Behdad Esfahbod
40ec3bbb55
Consolidate debug stuff into hb-debug.hh
...
Part of fixing https://github.com/behdad/harfbuzz/pull/605
2017-11-03 17:18:17 -04:00
Behdad Esfahbod
384862d7ee
Remove NO_COPY()
2017-11-03 17:18:17 -04:00
Behdad Esfahbod
8eaff980fc
Remove HB_TAG_CHAR4
2017-10-31 16:54:31 -06:00
Behdad Esfahbod
c290ba5b7d
Define _GNU_SOURCE
...
Might help with https://github.com/behdad/harfbuzz/pull/592
Ie. bringing in qsort_r() prototype always.
2017-10-31 13:18:21 -06:00
Behdad Esfahbod
e35a763c07
[post] Implement glyph_from_name()
...
This concludes https://github.com/behdad/harfbuzz/pull/568
2017-10-30 13:15:05 -06:00
Behdad Esfahbod
e1a37f3db4
Add hb_string_t
2017-10-30 11:42:28 -06:00
Behdad Esfahbod
0712e915b4
Remove hb_compare_func_t
2017-10-29 17:01:47 -06:00
Behdad Esfahbod
51f4d4d5cd
Reduce prealloced number of user-data items from 2 to 1
...
Even 1 is too many but putting 0 breaks compile. Saves 3k in .so
2017-10-27 15:09:22 -06:00
Behdad Esfahbod
62e312ead8
Use NULL instead of polyfill, if nullptr is not available
...
Part of fixing https://github.com/behdad/harfbuzz/issues/585
2017-10-27 09:29:20 -06:00
Behdad Esfahbod
2a74968044
Add hb-string-array.hh
...
Used to build static string arrays that use no relocation.
2017-10-26 20:32:16 -06:00
Behdad Esfahbod
6f08b12bc3
Minor
2017-10-26 18:23:03 -06:00
Behdad Esfahbod
2ee710e02f
Minor
2017-10-23 08:37:48 -04:00
Behdad Esfahbod
ced86da7dd
Another try at fixing mingw32 build bot fail
2017-10-22 17:06:10 -04:00
Behdad Esfahbod
d8adaa97fb
Another try at fixing build bots
...
hb-ot-shape.cc:287:18: error: comparison of constant 32 with expression of type 'hb_unicode_general_category_t' is always true [-Werror,-Wtautological-constant-out-of-range-compare]
2017-10-20 13:57:43 -04:00
Behdad Esfahbod
6058f98825
Remove FLAG_SAFE()
...
No flag is safe, over time... See previous commit.
2017-10-19 11:39:52 -07:00
Behdad Esfahbod
221ce6c18f
Fix bots
2017-10-15 17:58:58 -04:00
Behdad Esfahbod
56ef4e0c52
Simplify hb_prealloced_array_t initialization
2017-10-15 16:38:29 -04:00
Behdad Esfahbod
7737e87ac4
Properly detect vector_size attribute and use fallback otherwise
2017-10-15 16:21:03 -04:00
Behdad Esfahbod
deed4a48d1
Faster hb_set_t
...
Fixes https://github.com/behdad/harfbuzz/pull/23
2017-10-15 16:45:33 -03:00
Behdad Esfahbod
5e74044b6b
Add bfind() to prealloaced_array_t
2017-10-15 16:28:34 -03:00
Behdad Esfahbod
db5f7ef189
Inline another bsearch()
2017-10-15 16:28:34 -03:00
Behdad Esfahbod
6fb4ac73f9
Add popcount for 64bit ints
2017-10-15 16:00:09 +02:00
Behdad Esfahbod
3c13e153fe
Try fixing AppVeyor bots
2017-10-15 14:02:58 +02:00
Behdad Esfahbod
dbdbfe3d7b
Use nullptr instead of NULL
2017-10-15 12:11:08 +02:00
Behdad Esfahbod
c3448e8d21
Use static_assert instead of custom ASSERT_STATIC
2017-10-15 12:02:00 +02:00
Behdad Esfahbod
76dcbf8b23
Add polyfill for static_assert and nullptr
...
Also fix hb_assert_constant_t.
2017-10-15 11:24:35 +02:00
Ebrahim Byagowi
76c4873e8c
Support branch prediction helpers on clang compiles ( #491 )
2017-06-02 13:23:10 -04:00
Sebastian Rasmussen
92e2c4baaf
Avoid using strdup inside library. ( #488 )
...
If an application provides a malloc replacement through
hb_malloc_impl() it is important that it is used to allocate
everything, but the use of strdup() circumvents this and
causes system malloc() to be called instead. This pairs
badly with the custom hb_free_impl() being called later.
2017-05-29 10:53:30 -07:00
Behdad Esfahbod
df98ce5fc8
Improve debug output with really deep nesting
2016-12-21 19:27:30 -06:00
Steve Lhomme
0b8f3ab022
clang in MSVC mode doesn't like when we redefine __attribute__ ( #283 )
2016-07-11 12:57:26 -07:00
Konstantin Ritt
5069062d0a
Unbreak build on Windows CE
...
0475ef2f97
broke the build by using
vsnprintf(), which is not defined on Windows CE
2016-04-26 12:02:26 +04:00
Behdad Esfahbod
91dd115652
Add HB_NDEBUG
...
API changes:
- If NDEBUG is defined, define HB_NDEBUG
- Disable costlier sanity checks if HB_NDEBUG is defined.
In 1.2.3 introduced some code to disable costly sanity checks if
NDEBUG is defined. NDEBUG, however, disables all assert()s as
well. With HB_NDEBUG, one can disable costlier checks but keep
assert()s.
I'll probably add a way to define HB_NDEBUG automatically in
release tarballs. But for now, production systems that do NOT
define NDEBUG, are encouraged to define HB_NDEBUG for our build.
2016-02-25 13:56:47 +09:00
Steven R. Loomis
a13b023dbf
AIX fixes
...
- use '-w' instead of '\<...\>' for check-header-guards
grep manpage says these are the same
- put '-q' first in the grep options
- move VAR into hb-private.hh
- hb-font-private.hh - use [VAR] instead of [] for variable array
2015-12-12 17:44:44 -08:00
Behdad Esfahbod
766963adba
Merge pull request #114 from ThePhD/vc++-fixes
...
Fix all VC++ warnings and errors
2015-11-24 15:38:43 -06:00
Behdad Esfahbod
1dc32ea4d2
Whitespace
2015-11-20 13:24:19 -08:00
Behdad Esfahbod
f94c0ecbb1
Define HB_MARK_AS_FLAG_T as a macro instead of using templates
...
The generic template operator overloading was causing more problems than it
solved. Eg:
https://github.com/behdad/harfbuzz/pull/163
https://github.com/behdad/harfbuzz/issues/175
So, just use macros.
Fixes https://github.com/behdad/harfbuzz/issues/175
Fixes https://github.com/behdad/harfbuzz/pull/178
2015-11-20 13:21:29 -08:00
Behdad Esfahbod
e0082ae60d
Move things around
2015-11-17 18:42:13 -08:00
Chun-wei Fan
167c327177
Fix build on MSVC >= 2012
...
Use the DEFINE_ENUM_FLAG_OPERATORS macro in winnt.h on Visual Studio,
which defines the bitwise operators for the enumerations that we want to
mark as hb_mark_as_flags_t, which will take care of the situation on newer
Visual Studio (>= 2012), where the build breaks with C2057 errors as the
underlying types of the enumerations is not clear to the compiler when we
do a bitwise op within the declaration of the enumerations themselves.
Also disable the C4200 (nonstandard extension used : zero-sized array in
struct/union) and C4800 ('type' : forcing value to bool 'true' or 'false'
(performance warning)) warnings as the C4200 is the intended scenario and
C4800 is harmless but is so far an unavoidable side effect of using
DEFINE_ENUM_FLAG_OPERATORS.
2015-11-17 12:19:22 +08:00
Behdad Esfahbod
6986208ba3
Optimize runs without Default_Ignorable's
...
Now that we have a buffer-wide scratch flags facility, use it to
optimize away a few passes.
2015-11-04 18:46:41 -08:00
Behdad Esfahbod
aa7044de0c
Generalize flags types
2015-11-04 16:25:57 -08:00
Behdad Esfahbod
672ca3b4e6
Use templates for making sure expression is constant
2015-10-26 14:05:05 -07:00
Behdad Esfahbod
50e5750bd8
Avoid unnecessary cast to 64-bit
...
Fixes https://github.com/behdad/harfbuzz/issues/146
Or I think it should.
2015-10-21 11:10:40 -02:00
Behdad Esfahbod
305d2fbf5a
Add HB_FALLTHROUGH
...
Borrowed from https://bugzilla.mozilla.org/show_bug.cgi?id=1215411
2015-10-21 11:04:28 -02:00
Behdad Esfahbod
cc6ea308d4
Extern "C" custom-allocator declerations
2015-10-12 17:21:52 -04:00
Behdad Esfahbod
52b418555b
Allow compiling with custom allocators
...
User can define hb_malloc_impl, etc, to name of custom allocator functions
that have the same signature as malloc.
2015-10-03 13:20:55 +01:00
Behdad Esfahbod
b47159011c
Define return_trace()
...
Not functional change (expected!).
2015-09-29 14:57:02 +01:00
Behdad Esfahbod
93099748e3
Minor
2015-09-01 16:11:27 +01:00
Behdad Esfahbod
85846b3de7
Use insertion-sort instead of bubble-sort
...
Needed for upcoming merge-clusters fix.
2015-09-01 15:07:52 +01:00
ThePhD
5c99cf93d6
Merge branch 'master' into vc++-fixes
2015-08-14 01:02:00 -04:00
Behdad Esfahbod
5b5617e066
Add FLAG_UNSAFE()
...
Unused right now.
2015-07-21 15:52:15 +01:00
Behdad Esfahbod
f8160a4959
Add FLAG_SAFE() for values known to be small-enough
...
And add check to FLAG()
2015-07-21 15:50:02 +01:00
Behdad Esfahbod
366aeaad00
Add note re ASSERT_STATIC_EXPR_ZERO()
2015-07-21 15:45:48 +01:00
Behdad Esfahbod
d6adca9fbb
Remove unused macro ASSERT_STATIC_EXPR()
2015-07-21 15:17:27 +01:00
Behdad Esfahbod
1025e1a9e7
Use unsigned in FLAG()
2015-07-21 15:05:35 +01:00
ThePhD
8ad89f057d
Spelling words is not my strong point.
2015-06-23 09:09:24 -04:00
ThePhD
e0a828ecbd
Back to using regular `strdup`, with an `hb-private.hh` fix that special-cases VC++'s
...
definition and usage of the words
2015-06-23 09:07:17 -04:00
Behdad Esfahbod
a5e4f6d608
Fix warnings: "member call on null pointer of type"
...
https://bugzilla.mozilla.org/show_bug.cgi?id=1167119
2015-06-10 10:57:46 -07:00
Behdad Esfahbod
3029e8b59d
Revert "Add MSVC pragma for UTF-8 source code"
...
This reverts commit 89cbd4d953
.
See discussion:
https://bugzilla.gnome.org/show_bug.cgi?id=747772
2015-04-14 13:32:22 -07:00
Behdad Esfahbod
89cbd4d953
Add MSVC pragma for UTF-8 source code
...
Not sure we have any right now; motivated by this:
https://bugzilla.gnome.org/show_bug.cgi?id=747772
2015-04-13 12:27:08 -07:00
Konstantin Ritt
855a5d7cb8
Fix build on WEC2013
...
Based on patch from Björn Breitmeyer
2015-04-10 17:18:01 +04:00
Behdad Esfahbod
ce01ad7c2f
MSVC 2015 supports snprintf and not _snprintf
2015-04-01 11:05:59 -07:00
Behdad Esfahbod
560718862f
Move WinCE define to better place
2015-04-01 11:04:58 -07:00
Behdad Esfahbod
5f541f8f7b
Minor refactoring
2015-02-25 15:43:35 -08:00
Behdad Esfahbod
68e04afbb1
Typo
2015-02-25 15:43:34 -08:00
Behdad Esfahbod
55553699b3
Minor
2015-02-25 15:43:34 -08:00
Konstantin Ritt
9768e651be
Fix build with MSVC on CE
...
This code is C++ only. There isn't a single C++ compiler that fails to
understand the "inline" keyword, since it's required by C++98. Any
compiler older than C++98 is likely to choke on the template usage
further down, so this isn't necessary.
Moreover, the C++ standard says you cannot define macros.
[lib.macro.names] says "Nor shall such a translation unit define macros
for names lexically identical to keywords." -- technically, it's a
promise that the Standard Library headers won't do it, the wording means
that the entire translation unit won't do it, which implies no source
can do it.
MSVC complains about it:
fatal error C1189: #error : The C++ Standard Library forbids macroizing
keywords. Enable warning C4005 to find the forbidden macro.
Author: Thiago Macieira <thiago.macieira@intel.com>
2015-02-14 00:58:51 +04:00
Konstantin Ritt
f3537b620b
Move some code around
...
Just to keep Windows specific workarounds in a single place.
2015-01-25 09:50:51 +04:00