Commit Graph

125 Commits

Author SHA1 Message Date
Francois Gouget 7a9898344d gdiplus: GdipGetFamilyName() should not crash when given a NULL name.
It used to crash on Windows XP and Vista but does not since Windows 7.

Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
(cherry picked from commit ad663360fa)
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
2021-11-24 00:28:23 +01:00
Esme Povirk a0b7fb69e7 gdiplus: Implement reference counting for private font families.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50896
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
(cherry picked from commit a554079860)
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
2021-07-10 00:11:39 +02:00
Jeff Smith 6aea9b9d77 gdiplus: Guard initialization of installed font collection.
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 12:41:10 +01:00
Jeff Smith 4e395ba85b gdiplus: Fix function name typo in comment.
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 12:41:07 +01:00
Michael Stefaniuc 60c1035137 gdiplus: Use wide-char string literals.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-13 11:28:44 +01:00
Shawn M. Chapla 04d536267e gdiplus: Set font emSize to height minus internal leading.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codewevers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-15 20:06:37 +02:00
Dmitry Timoshkov b9307cfa61 gdiplus: Create FontFamily objects only once for the FontCollection.
.Net 4.7+ depends on this behaviour and expects to be able to do pointer
equality tests for FontFamily objects.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-02 16:21:45 +01:00
Alexandre Julliard a22d613321 gdiplus: Build with msvcrt.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-05 08:32:33 +02:00
Sven Baars 3d5036e317 gdiplus: Fix a memory leak (Valgrind).
Signed-off-by: Sven Baars <sven.wine@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-19 22:13:44 +01:00
Nikolay Sivov 455de70201 gdiplus: Skip failed font family when building system collection.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-01 21:50:57 +01:00
Nikolay Sivov 4aaa94111b gdiplus: Return actual code on failed attempt to add a font.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-01 21:50:57 +01:00
Nikolay Sivov 8463159344 gdiplus: Use ARRAY_SIZE() macro.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-14 23:51:27 +02:00
Fabian Maurer 89366f740f gdiplus: In GdipPrivateAddMemoryFont allow loading fonts with long names.
Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-30 20:44:33 +01:00
Owen Rudge 36c9ac3968 gdiplus: Check for null in GdipGetFontHeight.
Signed-off-by: Owen Rudge <orudge@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-03-08 21:40:31 +01:00
Vincent Povirk 50185949d8 gdiplus: Create the FontFamily before checking for duplicates.
Sometimes GdipCreateFontFamilyFromName stores a different name in the
GpFontFamily object, which breaks the duplicate check.

Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-02 11:43:03 +01:00
Vincent Povirk 0d6a4b06f9 gdiplus: Don't include rotated fonts in the installed font collection.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-02 11:42:57 +01:00
Sebastian Lackner ffa467691d gdiplus: Use helper function for remaining HeapFree calls.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-29 10:49:20 +09:00
Sebastian Lackner ff1b209be8 gdiplus: Use helper function for HeapAlloc calls.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-29 10:49:14 +09:00
Sebastian Lackner aa70a90c6e gdiplus: Do not use GdipAlloc and GdipFree in internal functions.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-11 13:44:22 +09:00
Dmitry Timoshkov 50b6b376cb gdi32: EnumFontFamilies should enumerate substituted fonts only when directly asked for. 2015-07-17 19:29:10 +09:00
Vincent Povirk 137128fa50 gdiplus: Fonts in UnitWorld shouldn't be scaled to the page unit. 2015-03-23 16:20:39 +09:00
Nikolay Sivov 62502d0670 gdiplus: Properly delete a DC. 2014-04-21 10:40:09 +02:00
Dmitry Timoshkov e7f6d77919 gdiplus: Implement GdipPrivateAddFontFile. 2013-11-06 12:01:55 +01:00
Piotr Caban f37027a947 gdiplus: Add support for more string formats while getting font name. 2013-07-08 15:15:43 +02:00
Dmitry Timoshkov 97b92fe12c gdiplus: Use an off-screen DC for font enumeration. 2013-02-20 18:21:18 +01:00
Dmitry Timoshkov 0a81a34643 gdiplus: Avoid GdipCloneMatrix calls for the graphics transformation matrix. 2012-11-07 11:58:27 +01:00
Dmitry Timoshkov 84ea75f1c6 gdiplus: GdipGetLogFont should use device scale and transform when appropriate. 2012-10-26 16:48:53 +02:00
Dmitry Timoshkov 71eb164482 gdiplus: Move internal helper get_log_fontW() out of public GdipGetLogFontW() export. 2012-10-26 16:47:01 +02:00
Dmitry Timoshkov 691be74f17 gdiplus: Take into account font substitution in GdipCreateFontFromLogfont. 2012-09-27 20:49:37 +02:00
Dmitry Timoshkov 65a966de76 gdiplus: Take into account font substitution in GdipCreateFontFamilyFromName. 2012-09-27 20:49:29 +02:00
Dmitry Timoshkov f8b1154226 gdiplus: GdipGetLogFontW should transform returned font height using font and device unit/resolution/scale. 2012-08-14 16:41:55 +02:00
Dmitry Timoshkov 9288acda1d gdiplus: GdipGetFontHeight should convert height from font to device units. 2012-07-18 17:17:38 +02:00
Dmitry Timoshkov ed8a3304c4 gdiplus: Factor out units_to_pixels() helper. 2012-07-18 17:17:31 +02:00
Dmitry Timoshkov ac38e69a92 gdiplus: Accept wider range of fonts. 2012-06-14 19:16:00 +02:00
Dmitry Timoshkov a4f79c347e gdiplus: Use font emSize to map to pixel size instead of using gdi32 font metrics. 2012-05-21 11:34:37 +02:00
Dmitry Timoshkov 5e4d64d18e gdiplus: Create 'const' friendly internal entries for font APIs. 2012-05-14 17:49:02 +02:00
Dmitry Timoshkov 83e88af325 gdiplus: Fetch font family metrics from truetype font data. 2012-05-11 15:43:42 +02:00
Dmitry Timoshkov c626528a91 gdiplus: Use OUTLINETEXTMETRIC instead of LOGFONT to store GpFont metrics. 2012-05-11 15:42:09 +02:00
Dmitry Timoshkov 915cd7b5b2 gdiplus: Use appropriate accessors to calculate font height instead of accessing GpFont internals directly. 2012-05-11 15:40:41 +02:00
Dmitry Timoshkov 54b69043eb gdiplus: Derive GpFont from GpFontFamily. 2012-05-09 12:03:33 +02:00
Dmitry Timoshkov 542e30b531 gdiplus: Add more traces to font APIs. 2012-05-01 14:45:38 +02:00
Dmitry Timoshkov 1e12570d72 gdiplus: Use symbolic name of the font style. 2012-04-24 19:10:42 +02:00
Dmitry Timoshkov e43fce0da9 gdiplus: Do not rely on an enumerated font size being equal to otmEMSquare. 2012-04-24 18:42:17 +02:00
Dmitry Timoshkov 44ec1a2e52 gdiplus: Use symbolic names of font styles. 2012-04-23 11:40:52 +02:00
Dmitry Timoshkov 9b5b04c1c1 gdiplus: Avoid saving negative values in pixel_size and emSize. 2012-04-23 11:40:37 +02:00
Francois Gouget 4c13e84a7c gdiplus: Use Liberation Mono as a fallback for Courier New for the monospace family. 2011-09-13 11:27:42 +02:00
Vincent Povirk 11f0662c60 gdiplus: Don't settle on a font size until absolutely necessary.
When we create a new font, we should store its height in a REAL field so
we don't have to round it. Further, when we calculate the width, we should
base the calculation on the metrics of a font at the height we will use, to
prevent rounding errors when the graphics transform will enlarge the font.
2011-04-05 13:36:56 +02:00
Vincent Povirk ca5b5d2a05 gdiplus: Fall back to Liberation Serif if Times New Roman is missing. 2011-03-30 13:28:04 +02:00
Francois Gouget 769dcd8447 gdiplus: Make load_ttf_name_id() static. 2011-03-16 14:14:23 +01:00
Maarten Lankhorst 8794f8f708 gdiplus: Implement in-memory font storage. 2011-02-22 12:27:59 +01:00