Skip to content

Conversation

ebraminio
Copy link
Collaborator

@ebraminio ebraminio commented Jun 21, 2016

This patch changes DirectWrite backend to use dwrite font file stream API instead falling back to Uniscribe suited solution, and also improves the backend to not create dwrite font object each shape time which have led to a significant performance boost on my tests. As the result of these changes the incorporated tricks to create HFONT objects are no longer needed on this backend so most of GDI backend shared codes are also removed.

In case no review would be given, I think this is ready to merge.

@ebraminio ebraminio force-pushed the master branch 20 times, most recently from 5972772 to 59c7f9d Compare June 23, 2016 07:46
@ebraminio ebraminio changed the title [dwrite] Use stripped down stream font loader instead gdi compat [dwrite] Use stream font loader instead GDI interop Jun 23, 2016
@ebraminio
Copy link
Collaborator Author

ebraminio commented Jun 23, 2016

Also all the ifdefs are removed now as you wished so 😊. Despite the fact it now needs newer version of Win SDK in order to build but executable output works on older Windows versions also (I've tested it on Win 7)

@ebraminio ebraminio force-pushed the master branch 4 times, most recently from 7d78342 to 13c7c1c Compare June 23, 2016 12:54
This reduces memory consumption of my iterated font create/destroy cycle test
significantly and makes it much better than uniscribe backend even
@ebraminio ebraminio force-pushed the master branch 5 times, most recently from e847899 to d61b41a Compare June 24, 2016 08:35
No longer noticeable memory increase on create/destroy iterations,
highly better than current state of uniscribe backend
Addressing Nikolay Sivov reviews on harfbuzz mailing list
@behdad
Copy link
Member

behdad commented Jun 27, 2016

Thanks Ebrahim!

@behdad behdad merged commit abae93f into harfbuzz:master Jun 27, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants