Commit graph

1317 commits

Author SHA1 Message Date
Alexandre Julliard 5392bd303e dwrite: Use the Unix call helpers. 2022-11-25 10:11:36 +01:00
Rémi Bernon 0908161bbd dwrite: Avoid memcpy source overflow in GetFontAxisValues. 2022-11-21 12:58:31 +01:00
Nikolay Sivov e5bfd522d2 dwrite/tests: Use existing to create factory instance. 2022-10-18 23:52:30 +02:00
Alexandre Julliard 7ab46c4f21 unicode: Update to Unicode 15.0.0. 2022-09-14 22:38:34 +02:00
Nikolay Sivov 47b2750309 dwrite/layout: Limit text window passed to MapCharacters() to the range of characters to map.
Fallback instance does not get access to layout contents outside of given range. This could
be observed with a custom fallback.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-13 22:07:22 +02:00
Nikolay Sivov 31ab7f87db dwrite/layout: Constify some internal helpers arguments.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-13 22:07:22 +02:00
Nikolay Sivov b783100773 dwrite/layout: Use already resolved or last resort fonts when setting dummy line metrics.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-13 22:07:22 +02:00
Nikolay Sivov 8d2bca638d dwrite/layout: Keep system font collection for each layout.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-13 22:07:22 +02:00
Nikolay Sivov a10ae49292 dwrite/layout: Use same logic for mapping both non-visual and visual runs.
Both non-visual and visual runs go through fallback mapping process, and
could end up with hard coded default at the end if fallback was insufficient.

Visual runs are using custom fallback and then the system one, non-visual ones
are using only system fallback.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-12 17:28:32 +02:00
Nikolay Sivov c8592b97e3 dwrite: Set initial justification value for default shaper.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-09 23:21:40 +02:00
Nikolay Sivov a23b1dbf39 dwrite/tests: Add some tests for glyph justification values.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-08 18:42:12 +02:00
Nikolay Sivov 28efff3855 dwrite: Handle higher planes characters in line breaking logic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-06 21:40:39 +02:00
Nikolay Sivov 4a7a979e79 dwrite/bidi: Prepare for characters above BMP.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-06 21:40:39 +02:00
Nikolay Sivov d8584a16ed dwrite: Handle higher planes when setting DWRITE_SCRIPT_SHAPES_NO_VISUAL.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-06 21:40:39 +02:00
Alexandre Julliard aeff5099fb unicode: Add data for high Unicode planes to the Arabic shaping table. 2022-09-05 18:41:47 +02:00
Alexandre Julliard 24da06789e unicode: Add data for high Unicode planes to the bidi direction table. 2022-09-05 18:41:47 +02:00
Alexandre Julliard ba58338b21 unicode: Add data for high Unicode planes to the linebreak table. 2022-09-05 18:41:47 +02:00
Alexandre Julliard c848f42aa0 unicode: Add data for high Unicode planes to the scripts table. 2022-09-05 18:41:47 +02:00
Nikolay Sivov eddf252aff dwrite: Fix spans length reported by AnalyzeScript() for characters above BMP.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-02 22:10:21 +02:00
Nikolay Sivov 5d9f0be001 dwrite: Handle variation selectors 17-256 in MapCharacters().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-09-01 17:42:49 +02:00
Nikolay Sivov 8e1278684a dwrite: Add NNBSP (202F) to Mongolian fallback range.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-08-31 21:52:25 +02:00
Nikolay Sivov 55439cc3ef dwrite: Skip variation selectors in MapCharacters().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-08-31 21:52:25 +02:00
Nikolay Sivov 857ec56f45 dwrite/fallback: Add Georgian and Armenian ranges.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-08-11 16:51:00 +02:00
Nikolay Sivov 1795fd7af9 dwrite/fallback: Fill in some more fallback ranges for various scripts.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-08-10 14:07:35 +02:00
Nikolay Sivov 5b46a8a065 dwrite/fallback: Add mappings for some CJK ranges.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-08-09 15:53:32 +02:00
Nikolay Sivov 2879930172 dwrite/tests: Add a helper to create analyzer instance.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-08-09 15:53:32 +02:00
Nikolay Sivov 1bff5e5859 dwrite/fallback: Make sure all consecutively mapped characters belong to the same mapping.
Picked fallback font often has wider character support than the ranges it's configured for.
Desired behavior is to stop at the first character that doesn't belong to current mapping.
For example, in texts like "abc<some CJK sequence>abc" we'd want the same for both "abc" sequences,
as opposed to using fallback CJK font for trailing Latin range.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-08-08 18:51:25 +02:00
Nikolay Sivov e25ff734cf dwrite/fallback: Consider character size for returned mapped length.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-08-08 18:51:23 +02:00
Nikolay Sivov c4c3e9fee4 dwrite: Add ff00-ffef range to the fallback configuration.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-08-05 20:13:33 +02:00
Nikolay Sivov 2dd903885b dwrite: Fix stretch value validation in CreateTextFormat().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-08-03 15:09:02 +02:00
Nikolay Sivov f6f2a1a3e5 dwrite: Fix fallback config ranges text parsing.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-29 18:55:38 +02:00
Nikolay Sivov 9ff62cb30a dwrite: Add Arabic fallback ranges.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-27 23:07:06 +02:00
Nikolay Sivov b32acacb4f dwrite: Add a few more fallback ranges.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-25 22:47:47 +02:00
Nikolay Sivov 5259c1a1dc dwrite: Use correct ranges to set DWRITE_SCRIPT_SHAPES_NO_VISUAL.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-25 22:47:47 +02:00
Nikolay Sivov dcb8094a37 dwrite: Use u32-reads for AnalyzeScript().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-25 22:47:47 +02:00
Nikolay Sivov d8fa0ff148 dwrite: Add some mappings for Tahoma in the system fallback.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-22 17:54:10 +02:00
Nikolay Sivov 26e717c565 dwrite: Remove old system fallback logic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-22 17:54:10 +02:00
Nikolay Sivov d37eb0f144 dwrite: Implement MapCharacters() for custom fallback.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-22 17:54:09 +02:00
Nikolay Sivov d800cd7437 dwrite: Extend matching font creation helper.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-22 17:54:09 +02:00
Nikolay Sivov fcbb0f6c61 dwrite: Duplicate mapping data when creating fallback object.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-22 17:54:09 +02:00
Nikolay Sivov f2ad1d8b93 dwrite: Override existing ranges with AddMapping().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-22 17:54:09 +02:00
Nikolay Sivov 76e675a011 dwrite: Keep locales separate for fallback data.
Each locale entry contains a "list" of its mappings.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-22 17:54:08 +02:00
Nikolay Sivov 78846236b9 dwrite: Filter out unusable ranges on AddMapping().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-22 17:54:08 +02:00
Nikolay Sivov 1cf2ac20c8 dwrite: Add additional structure for mappings array.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-22 17:54:08 +02:00
Nikolay Sivov c4af69e0b7 dwrite: Use older interface version for fallback system collection.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2022-07-22 17:54:07 +02:00
Alexandre Julliard 194e09baec makefiles: Add separate variables for Unix flags and libraries.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-29 23:23:41 +02:00
Nikolay Sivov 295599e2c2 dwrite/opentype: Fix GPOS PairSet array offset.
Passed offset already includes subtable offset.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-19 20:52:32 +02:00
Nikolay Sivov 979868aed5 dwrite/opentype: Do not include base advance to the mark advance offset.
This is handled later using attachment chains, after all positional features are applied.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 11:34:14 +02:00
Nikolay Sivov d2d91fba55 dwrite/opentype: Fix incorrect MarkGlyphSets table handling.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 11:34:09 +02:00
Nikolay Sivov e71920d2f4 dwrite/opentype: Correct flags field size for layout lookup structure.
Higher 16 bits are used for mark filtering set index.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 11:34:05 +02:00