diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c index e1c79e61385..16f575bca3a 100644 --- a/dlls/usp10/usp10.c +++ b/dlls/usp10/usp10.c @@ -1794,3 +1794,37 @@ HRESULT WINAPI ScriptGetLogicalWidths(const SCRIPT_ANALYSIS *sa, int nbchars, in for (i = 0; i < nbchars; i++) widths[i] = glyph_width[i]; return S_OK; } + +/*********************************************************************** + * ScriptApplyLogicalWidth (USP10.@) + * + * Generate glyph advance widths. + * + * PARAMS + * dx [I] Array of logical advance widths. + * num_chars [I] Number of characters. + * num_glyphs [I] Number of glyphs. + * log_clust [I] Array of logical clusters. + * sva [I] Visual attributes. + * advance [I] Array of glyph advance widths. + * sa [I] Script analysis. + * abc [I/O] Summed ABC widths. + * justify [O] Array of glyph advance widths. + * + * RETURNS + * Success: S_OK + * Failure: a non-zero HRESULT. + */ +HRESULT WINAPI ScriptApplyLogicalWidth(const int *dx, int num_chars, int num_glyphs, + const WORD *log_clust, const SCRIPT_VISATTR *sva, + const int *advance, const SCRIPT_ANALYSIS *sa, + ABC *abc, int *justify) +{ + int i; + + FIXME("(%p, %d, %d, %p, %p, %p, %p, %p, %p)\n", + dx, num_chars, num_glyphs, log_clust, sva, advance, sa, abc, justify); + + for (i = 0; i < num_chars; i++) justify[i] = advance[i]; + return S_OK; +} diff --git a/dlls/usp10/usp10.spec b/dlls/usp10/usp10.spec index ac1506e9df0..54137f2292f 100644 --- a/dlls/usp10/usp10.spec +++ b/dlls/usp10/usp10.spec @@ -1,6 +1,6 @@ @ stub LpkPresent @ stdcall ScriptApplyDigitSubstitution(ptr ptr ptr) -@ stub ScriptApplyLogicalWidth +@ stdcall ScriptApplyLogicalWidth(ptr long long ptr ptr ptr ptr ptr ptr) @ stdcall ScriptBreak(ptr long ptr ptr) @ stdcall ScriptCPtoX(long long long long ptr ptr ptr ptr ptr) @ stdcall ScriptCacheGetHeight(ptr ptr ptr)