{"push_id":665947584,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"a7bb5a84a6e089485577406728cac1944488e481","before":"faf4313f4f273cb3a3058e12a8844c0e6c276254","commits":[{"sha":"a7bb5a84a6e089485577406728cac1944488e481","author":{"email":"8e864f6891daea30887af7166abc194b98ea8641@tannerhelland.com","name":"Tanner"},"message":"Uniscribe interface: primary functions now return without crashing\n\nI'll take victories wherever I can, especially when working with cryptic\nAPIs!\n\nThe four most important Uniscribe steps now return success, and they\nprocess without crashing - which is something new, as they've crashed\nlike crazy over the past few days.  There were some weird reference\ncounter issues when passing arrays ByRef, but switching to naked\npointers seems to have resolved it (for now??).  Also, MSDN is really\ncryptic about various Uniscribe structures, so some trial and error has\nbeen required to figure out how to dimension various buffers.\n\nRight now, PD's Uniscribe interface only processes the first returned\nrun, so intermixing LTR and RTL languages won't work.  (Also, certain\npunctuation characters will cause runs to break.)  I'll obviously expand\nthis once I have single runs working, as some messy management is\nrequired to properly handle multiple runs intelligently.\n\nBut for now, my next challenge is figuring out ScriptBreak\n(https://msdn.microsoft.com/en-us/library/windows/desktop/dd319118%28v=vs.85%29.aspx)\nso I can predict character and word boundaries.  This is the last major\npiece of information I need for PD's glyph renderer, as it's necessary\nfor calculating line break positions.\n\nOnce that data is ready, the last step will be taking the relevant\ninformation returned by the HUGE variety of Uniscribe returns\n(seriously, there are at least a dozen different buffers with various\npieces of data), condensing them into some kind of VB-friendly struct,\nand then returning that to the glyph renderer.  Ideally, the current\nglyph renderer code shouldn't need to change too much; the main change\nwill be retrieving glyphs by glyph ID (instead of character ID), using\nthe improved Uniscribe positioning data for kerning and such, and\nimplementing smart line-breaks using the the output of ScriptBreak.\n\n(whew)","distinct":true,"url":"https://api.github.com/repos/tannerhelland/PhotoDemon/commits/a7bb5a84a6e089485577406728cac1944488e481"}]}