#include "usp10_internal.h"
-extern const unsigned short bidi_bracket_table[];
+extern const unsigned short bidi_bracket_table[] DECLSPEC_HIDDEN;
WINE_DEFAULT_DEBUG_CHANNEL(bidi);
plevel[j--] = baselevel;
plevel[i] = baselevel;
}
+ else if (pcls[i] == LRE || pcls[i] == RLE || pcls[i] == LRO || pcls[i] == RLO ||
+ pcls[i] == PDF || pcls[i] == BN)
+ {
+ plevel[i] = i ? plevel[i - 1] : baselevel;
+ }
if (i == eos &&
(pcls[i] == WS || pcls[i] == FSI || pcls[i] == LRI || pcls[i] == RLI ||
pcls[i] == PDI || pcls[i] == LRE || pcls[i] == RLE || pcls[i] == LRO ||
/* generated from http://www.unicode.org/Public/8.0.0/ucd/BidiBrackets.txt */
/* DO NOT EDIT!! */
-const unsigned short bidi_bracket_table[768] =
+const unsigned short DECLSPEC_HIDDEN bidi_bracket_table[768] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
WINE_DEFAULT_DEBUG_CHANNEL(uniscribe);
-extern const unsigned short wine_linebreak_table[];
+extern const unsigned short wine_linebreak_table[] DECLSPEC_HIDDEN;
enum breaking_types { b_BK=1, b_CR, b_LF, b_CM, b_SG, b_GL, b_CB, b_SP, b_ZW, b_NL, b_WJ, b_JL, b_JV, b_JT, b_H2, b_H3, b_XX, b_OP, b_CL, b_CP, b_QU, b_NS, b_EX, b_SY, b_IS, b_PR, b_PO, b_NU, b_AL, b_ID, b_IN, b_HY, b_BB, b_BA, b_SA, b_AI, b_B2, b_HL, b_CJ, b_RI};
/* and from http://www.unicode.org/Public/8.0.0/ucd/IndicPositionalCategory.txt */
/* DO NOT EDIT!! */
-const unsigned short indic_syllabic_table[3264] =
+const unsigned short DECLSPEC_HIDDEN indic_syllabic_table[3264] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110,
/* generated from http://www.unicode.org/Public/8.0.0/ucd/LineBreak.txt */
/* DO NOT EDIT!! */
-const unsigned short wine_linebreak_table[7216] =
+const unsigned short DECLSPEC_HIDDEN wine_linebreak_table[7216] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170,
#include <windef.h>
#include <winnt.h>
-const WCHAR wine_mirror_map[3292] =
+const WCHAR DECLSPEC_HIDDEN wine_mirror_map[3292] =
{
/* index */
0x01d8, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
*devX = (desX * emHeight) / (double)lpotm->otmEMSquare;
*devY = (desY * emHeight) / (double)lpotm->otmEMSquare;
if (lplogfont->lfWidth)
- FIXME("Font with lfWidth set no handled properly\n");
+ FIXME("Font with lfWidth set not handled properly\n");
}
static INT GPOS_get_value_record(WORD ValueFormat, const WORD data[], GPOS_ValueRecord *record)
ma = (const GPOS_MarkArray*)((const BYTE*)mbpf1 + offset);
if (mark_index > GET_BE_WORD(ma->MarkCount))
{
- ERR("Mark index exeeded mark count\n");
+ ERR("Mark index exceeded mark count\n");
return -1;
}
mr = &ma->MarkRecord[mark_index];
ma = (const GPOS_MarkArray*)((const BYTE*)mlpf1 + offset);
if (mark_index > GET_BE_WORD(ma->MarkCount))
{
- ERR("Mark index exeeded mark count\n");
+ ERR("Mark index exceeded mark count\n");
return;
}
mr = &ma->MarkRecord[mark_index];
la = (const GPOS_LigatureArray*)((const BYTE*)mlpf1 + offset);
if (ligature_index > GET_BE_WORD(la->LigatureCount))
{
- ERR("Ligature index exeeded ligature count\n");
+ ERR("Ligature index exceeded ligature count\n");
return;
}
offset = GET_BE_WORD(la->LigatureAttach[ligature_index]);
static void ShapeCharGlyphProp_Malayalam( HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *psa, const WCHAR* pwcChars, const INT cChars, const WORD* pwGlyphs, const INT cGlyphs, WORD *pwLogClust, SCRIPT_CHARPROP *pCharProp, SCRIPT_GLYPHPROP *pGlyphProp );
static void ShapeCharGlyphProp_Khmer( HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *psa, const WCHAR* pwcChars, const INT cChars, const WORD* pwGlyphs, const INT cGlyphs, WORD *pwLogClust, SCRIPT_CHARPROP *pCharProp, SCRIPT_GLYPHPROP *pGlyphProp );
-extern const unsigned short indic_syllabic_table[];
-extern const unsigned short wine_shaping_table[];
-extern const unsigned short wine_shaping_forms[LAST_ARABIC_CHAR - FIRST_ARABIC_CHAR + 1][4];
+extern const unsigned short indic_syllabic_table[] DECLSPEC_HIDDEN;
+extern const unsigned short wine_shaping_table[] DECLSPEC_HIDDEN;
+extern const unsigned short wine_shaping_forms[LAST_ARABIC_CHAR - FIRST_ARABIC_CHAR + 1][4] DECLSPEC_HIDDEN;
enum joining_types {
jtU,
/* generated from http://www.unicode.org/Public/8.0.0/ucd/ArabicShaping.txt */
/* DO NOT EDIT!! */
-const unsigned short wine_shaping_table[2848] =
+const unsigned short DECLSPEC_HIDDEN wine_shaping_table[2848] =
{
/* level 1 offsets */
0x0100, 0x0110, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160,
0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000
};
-const unsigned short wine_shaping_forms[256][4] =
+const unsigned short DECLSPEC_HIDDEN wine_shaping_forms[256][4] =
{
{ 0x0600, 0x0600, 0x0600, 0x0600 },
{ 0x0601, 0x0601, 0x0601, 0x0601 },
{ SCRIPT_UNDEFINED, 0, 0, 0}
};
-/* the must be in order so that the index matches the Script value */
+/* this must be in order so that the index matches the Script value */
const scriptData scriptInformation[] = {
{{SCRIPT_UNDEFINED, 0, 0, 0, 0, 0, 0, { 0,0,0,0,0,0,0,0,0,0,0}},
{LANG_NEUTRAL, 0, 0, 0, 0, ANSI_CHARSET, 0, 0, 0, 0, 0, 0, 0, 0, 0},
static const WCHAR chars[4] = {0x0020, 0x200B, 0xF71B, 0x0640};
/* U+0020: numeric space
U+200B: zero width space
- U+F71B: unknow char found by black box testing
+ U+F71B: unknown char found by black box testing
U+0640: kashida */
WORD gi[4];
static WCHAR mirror_char( WCHAR ch )
{
- extern const WCHAR wine_mirror_map[];
+ extern const WCHAR wine_mirror_map[] DECLSPEC_HIDDEN;
return ch + wine_mirror_map[wine_mirror_map[ch >> 8] + (ch & 0xff)];
}
if (str[index] == 0x2212 || str[index] == 0x2044)
return Script_Punctuation;
- /* Currency Symboles by Unicode point */
+ /* Currency Symbols by Unicode point */
switch (str[index])
{
case 0x09f2:
int item;
HRESULT hr;
- TRACE("(%p,%d,%d,0x%1x,%p,%d,%d,%d)\n",
- ssa, iX, iY, uOptions, prc, iMinSel, iMaxSel, fDisabled);
+ TRACE("(%p,%d,%d,0x%08x,%s,%d,%d,%d)\n",
+ ssa, iX, iY, uOptions, wine_dbgstr_rect(prc), iMinSel, iMaxSel, fDisabled);
if (!(analysis = ssa)) return E_INVALIDARG;
if (!(analysis->dwFlags & SSA_GLYPHS)) return E_INVALIDARG;
* use piAdvance to find the cluster we are looking at
* Find the character that is the first character of the cluster
* That is our base piCP
- * If the script snaps to cluster boundries (Hebrew, Indic, Thai) then we
- * are good Otherwise if the cluster is larger than 1 glyph we need to
+ * If the script snaps to cluster boundaries (Hebrew, Indic, Thai) then we
+ * are good. Otherwise if the cluster is larger than 1 glyph we need to
* determine how far through the cluster to advance the cursor.
*/
HRESULT WINAPI ScriptXtoCP(int iX,
*
* PARAMS
* chars [I] Array of characters.
- * sa [I] String analysis.
+ * sa [I] Script analysis.
* la [I] Array of logical attribute structures.
*
* RETURNS
* PARAMS
* hdc [I] Device context.
* psc [I/O] Opaque pointer to a script cache.
- * psa [I/O] String analysis.
+ * psa [I/O] Script analysis.
* tagScript [I] The OpenType tag for the Script
* tagLangSys [I] The OpenType tag for the Language
* rcRangeChars[I] Array of Character counts in each range
INT *lpDx;
WORD *reordered_glyphs = (WORD *)pwGlyphs;
- TRACE("(%p, %p, %d, %d, %04x, %p, %p, %p, %d, %p, %d, %p, %p, %p)\n",
- hdc, psc, x, y, fuOptions, lprc, psa, pwcReserved, iReserved, pwGlyphs, cGlyphs,
+ TRACE("(%p, %p, %d, %d, %08x, %s, %p, %p, %d, %p, %d, %p, %p, %p)\n",
+ hdc, psc, x, y, fuOptions, wine_dbgstr_rect(lprc), psa, pwcReserved, iReserved, pwGlyphs, cGlyphs,
piAdvance, piJustify, pGoffset);
if (!hdc || !psc) return E_INVALIDARG;
reactos/dll/win32/updspapi # Synced to WineStaging-1.9.4
reactos/dll/win32/url # Synced to WineStaging-1.9.4
reactos/dll/win32/urlmon # Synced to WineStaging-1.9.4
-reactos/dll/win32/usp10 # Synced to WineStaging-1.9.4
+reactos/dll/win32/usp10 # Synced to WineStaging-1.9.11
reactos/dll/win32/uxtheme # Forked
reactos/dll/win32/vbscript # Synced to WineStaging-1.9.4
reactos/dll/win32/version # Synced to WineStaging-1.9.4