To: vim-dev@vim.org Subject: Patch 6.1.300 (extra) Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 6.1.300 (extra) Problem: Handling of ETO_IGNORELANGUAGE is confusing. Solution: Clean up the handling of ETO_IGNORELANGUAGE. (Glenn Maynard) Files: src/gui_w32.c *** ../vim61.299/src/gui_w32.c Sun Oct 27 20:38:46 2002 --- src/gui_w32.c Sun Jan 19 21:13:14 2003 *************** *** 1708,1713 **** --- 1708,1719 ---- padding[i] = gui.char_width; } + /* On NT, tell the font renderer not to "help" us with Hebrew and Arabic + * text. This doesn't work in 9x, so we have to deal with it manually on + * those systems. */ + if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT) + foptions |= ETO_IGNORELANGUAGE; + /* * We have to provide the padding argument because italic and bold versions * of fixed-width fonts are often one pixel or so wider than their normal *************** *** 1749,1760 **** i += utfc_ptr2len_check_len(text + i, len - i); ++clen; } ! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT) ! ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row), ! foptions | ETO_IGNORELANGUAGE, ! pcliprect, unicodebuf, clen, NULL); ! else ! ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row), foptions, pcliprect, unicodebuf, clen, NULL); len = cells; /* used for underlining */ } --- 1755,1761 ---- i += utfc_ptr2len_check_len(text + i, len - i); ++clen; } ! ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row), foptions, pcliprect, unicodebuf, clen, NULL); len = cells; /* used for underlining */ } *************** *** 1776,1792 **** #endif { #ifdef FEAT_RIGHTLEFT ! /* ron: fixed Hebrew on Win98/Win2000 */ ! if (curwin->w_p_rl) ! { ! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT) ! ExtTextOut(s_hdc, TEXT_X(col), TEXT_Y(row), ! foptions | ETO_IGNORELANGUAGE, ! pcliprect, (char *)text, len, padding); ! else ! RevOut(s_hdc, TEXT_X(col), TEXT_Y(row), foptions, pcliprect, (char *)text, len, padding); - } else #endif ExtTextOut(s_hdc, TEXT_X(col), TEXT_Y(row), --- 1777,1788 ---- #endif { #ifdef FEAT_RIGHTLEFT ! /* If we can't use ETO_IGNORELANGUAGE, we can't tell Windows not to ! * mess up RL text, so we have to draw it character-by-character. ! * Only do this if RL is on, since it's slow. */ ! if (curwin->w_p_rl && !(foptions & ETO_IGNORELANGUAGE)) ! RevOut(s_hdc, TEXT_X(col), TEXT_Y(row), foptions, pcliprect, (char *)text, len, padding); else #endif ExtTextOut(s_hdc, TEXT_X(col), TEXT_Y(row), *** ../vim61.299/src/version.c Sun Jan 19 20:06:08 2003 --- src/version.c Sun Jan 19 21:21:39 2003 *************** *** 608,609 **** --- 608,611 ---- { /* Add new patch number below this line */ + /**/ + 300, /**/ -- All good vision statements are created by groups of people with bloated bladders who would rather be doing anything else. (Scott Adams - The Dilbert principle) /// Bram Moolenaar -- Bram@moolenaar.net -- http://www.Moolenaar.net \\\ /// Creator of Vim - Vi IMproved -- http://www.Vim.org \\\ \\\ Project leader for A-A-P -- http://www.A-A-P.org /// \\\ Help AIDS victims, buy at Amazon -- http://ICCF.nl/click1.html ///