Commit graph

77 commits

Author SHA1 Message Date
Brendan Shanks e8ea81cf7a dwrite: Ensure unixlib function tables and enum stay in sync. 2023-09-14 11:12:36 +02:00
Zhiyi Zhang f2df5a6c5d dwrite: Use cache when font transform matrix contains only translation offsets.
Word 2016 queries a lot of font glyph bounding boxes and bitmaps with translation matrices. The
result of these queries is not cached because the transform matrix is not the identity matrix.
However, the translation offsets don't affect FreeType font operations at all, which can be
verified in ft_matrix_from_dwrite_matrix() called by get_glyph_transform(). So these results with
translation matrices can be cached as well. With this patch, Word 2016 stuttering is reduced
significantly.
2023-03-31 19:00:30 +02:00
Nikolay Sivov a005d43b98 dwrite: Implement Wow64 entry points for unixlib.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-08 22:14:44 +01:00
Nikolay Sivov 275a2d71d6 dwrite: Switch to unixlib syscall interface.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-08 22:14:44 +01:00
Nikolay Sivov 06742814ed dwrite: Remove unixlib callbacks.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-07 16:19:48 +01:00
Nikolay Sivov b1dc908aa5 dwrite: Move bitmap cache to PE side.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-07 16:19:48 +01:00
Nikolay Sivov b3ad9000c0 dwrite: Move glyph box cache to PE side.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-07 16:19:48 +01:00
Nikolay Sivov 4ae2058e0b dwrite: Use separate argument for cache key for get_bbox/get_bitmap calls.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-07 16:19:48 +01:00
Nikolay Sivov eef8a44db7 dwrite: Move glyph advances cache to PE side.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-06 16:14:10 +01:00
Nikolay Sivov 1a8d6f55f2 dwrite: Allocate outline buffers on PE side.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-02 20:20:39 +01:00
Nikolay Sivov 6356717c47 dwrite: Do not use freetype cache for design glyph metrics.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-02 20:20:39 +01:00
Nikolay Sivov 822a49d524 dwrite: Use per-instance font object for GetGlyphCount().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-02 20:20:39 +01:00
Nikolay Sivov 7639820cfb dwrite: Create backend font objects for faces.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-02 20:20:39 +01:00
Alexandre Julliard ef6e33f89f include: Don't include wine/port.h in Unix libraries.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-03 21:06:48 +01:00
Nikolay Sivov db516804cc dwrite: Build with msvcrt.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-30 17:10:03 +02:00
Nikolay Sivov 8bcdac04a8 dwrite: Move outline dumping helpers.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-30 17:10:03 +02:00
Nikolay Sivov aab6ebb734 dwrite: Use ntdll exports for freetype mutex.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 10:07:12 +02:00
Nikolay Sivov 3bb778a637 dwrite: Pass simulation mask when getting a glyph outline.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 10:07:12 +02:00
Nikolay Sivov ca08a5e722 dwrite: Introduce interface to font backend.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 10:07:12 +02:00
Nikolay Sivov d77110a40c dwrite: Use FT_MulDiv() in freetype integration.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 10:07:12 +02:00
Nikolay Sivov f3d777ba7d dwrite: Introduce callback interface to initialize freetype face objects.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 10:07:12 +02:00
Nikolay Sivov ae3422c615 dwrite: Return complete outline data from freetype integration code.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 18:52:57 +01:00
Nikolay Sivov 0ed0fd05c3 dwrite: Request one glyph outline at a time in GetGlyphRunOutline().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-15 10:51:54 +01:00
Nikolay Sivov 968a9e6b0c dwrite: Read legacy kerning table directly.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 12:01:52 +01:00
Nikolay Sivov 76f421b090 dwrite: Use correct glyph origins during rendering.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-22 19:59:16 +01:00
Alexandre Julliard 9d7a710fc0 dwrite: Avoid a compiler warning when FreeType is missing.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-23 22:07:50 +01:00
Nikolay Sivov a767467d2e dwrite: Get rid of cmap cache.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-09 21:23:33 +02:00
Alexandre Julliard 51903ba30e dwrite: Use standard dlopen() instead of the libwine wrappers.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-06 21:21:41 +02:00
Nikolay Sivov fec78e62ee dwrite: Evaluate IsMonospacedFont() flag at font level.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-23 16:39:15 +01:00
Nikolay Sivov 0b0a2ce8fd dwrite: Evaluate IsSymbolFont() flag at font level.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-23 16:39:09 +01:00
Nikolay Sivov 9808b91df7 dwrite: Update to IDWriteFontFace5.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-02 22:02:57 +01:00
Nikolay Sivov 421c83cd7b dwrite: Improve returned design glyph metrics.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-13 13:46:24 +02:00
Francois Gouget 1e819f00a5 dwrite: Remove freetype_get_design_glyph_bbox(). It's not used anymore.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-22 10:10:34 +01:00
Nikolay Sivov 215ad4e99e dwrite: Store outline offset as a vector.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-08 12:11:50 +01:00
Nikolay Sivov 808152b73b dwrite: Fix positions in outline mode.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-08 12:11:48 +01:00
Nikolay Sivov d933afc4a4 dwrite/layout: Improve overhangs metrics computation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 23:09:08 +01:00
Nikolay Sivov c4917bdbdf dwrite: Use 8bpp bitmaps in grayscale mode.
Problem analyzed by Kimmo Myllyvirta.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-09-05 17:47:34 +02:00
Nikolay Sivov 1df4e64bbf dwrite: Improve empty contours handling in GetGlyphRunOutline().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-25 08:06:55 +02:00
Nikolay Sivov 18fe44c7af dwrite: Avoid repeated method calls during run rendering.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-07-11 18:25:36 +02:00
Michael Stefaniuc 5a4cb67db9 dwrite: Use SetRectEmpty() instead of memset().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-12 19:03:14 +02:00
Nikolay Sivov 1809ff9004 dwrite: Use user transform when rendering individual glyphs.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-04 14:54:48 +02:00
Nikolay Sivov 7d18bbe860 dwrite: Added support for bold simulation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-15 22:06:34 +01:00
Nikolay Sivov 2175cdc306 dwrite: Added support for oblique simulation in bitmap rendering mode.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-13 19:28:57 +01:00
Nikolay Sivov 426a5d4a5f dwrite: Implement GetOverhangMetrics().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-27 16:31:41 +01:00
Nikolay Sivov 274a82b33c dwrite: Let freetype face cache manage lifetime of requested file fragments.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-18 23:07:22 +01:00
Nikolay Sivov 9bf1114d71 dwrite: Update to IDWriteFontFace4.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-10-30 17:07:38 +01:00
Nikolay Sivov e0e937e19a dwrite: Be prepared for 0 face_id passed to face requester.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-18 19:39:19 +09:00
Michael Stefaniuc 41729840e4 dwrite: Use SetRect() instead of open coding it.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-04 01:03:28 +09:00
Nikolay Sivov 77c5ed607a dwrite: Update to IDWriteFontFace3.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-03 15:26:29 +09:00
Nikolay Sivov f26b4a3575 dwrite: Fetch all glyphs at once instead of locking/unlocking for every glyph.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-09 23:26:21 +09:00